HAPPY BOOKSGIVING
Use code BOOKSGIVING during checkout to save 40%-55% on books and eBooks. Shop now.
Register your product to gain access to bonus material or receive a coupon.
This eBook includes the following formats, accessible from your Account page after purchase:
EPUB The open industry format known for its reflowable content and usability on supported mobile devices.
PDF The popular standard, used most often with the free Acrobat® Reader® software.
This eBook requires no passwords or activation to read. We customize your eBook by discreetly watermarking it with your name, making it uniquely yours.
Most software-development groups have embarrassing records: By some accounts, more than half of all software projects are significantly late and over budget, and nearly a quarter of them are cancelled without ever being completed. Although developers recognize that unrealistic schedules, inadequate resources, and unstable requirements are often to blame for such failures, few know how to solve these problems. Fortunately, the Personal Software Process (PSP) provides a clear and proven solution. Comprising precise methods developed over many years by Watts S. Humphrey and the Software Engineering Institute (SEI), the PSP has successfully transformed work practices in a wide range of organizations and has already produced some striking results.
This book describes the PSP and is the definitive guide and reference for its latest iteration. PSP training focuses on the skills required by individual software engineers to improve their personal performance. Once learned and effectively applied, PSP-trained engineers are qualified to participate on a team using the Team Software Process (TSP), the methods for which are described in the final chapter of the book. The goal for both PSP and TSP is to give developers exactly what they need to deliver quality products on predictable schedules.
PSPSM: A Self-Improvement Process for Software Engineers presents a disciplined process for software engineers and anyone else involved in software development. This process includes defect management, comprehensive planning, and precise project tracking and reporting.
The book first scales down industrial software practices to fit the needs of the module-sized program development, then walks readers through a progressive sequence of practices that provide a sound foundation for large-scale software development. By doing the exercises in the book, and using the PSP methods described here to plan, evaluate, manage, and control the quality of your own work, you will be well prepared to apply those methods on ever larger and more critical projects.
Drawing on the author’s extensive experience helping organizations to achieve their development goals, and with the PSP benefits well illustrated, the book presents the process in carefully crafted steps. The first chapter describes overall principles and strategies. The next two explain how to follow a defined process, as well as how to gather and use the data required to manage a programming job. Several chapters then cover estimating and planning, followed by quality management and design. The last two chapters show how to put the PSP to work, and how to use it on a team project. A variety of support materials for the book, as described in the Preface, are available on the Web.
If you or your organization are looking for a way to improve your project success rate, the PSP could well be your answer.
1.1. The PSP’s Purpose 3
1.2. The Logic for a Software Engineering Discipline 4
1.3. Using Disciplined Development Practices 6
1.4. Operational Processes 6
1.5. Defining and Using a Personal Process 7
1.6. Learning to Use a Personal Process 8
1.7. Preparing for the Team Software Process 9
1.8. Summary 9
Reference 10
2.1. What Is a Process? 12
2.2. Defining Your Own Process 13
2.3. Baseline Process Contents 14
2.4. Why Forms Are Helpful 16
2.5. The PSP Process Elements 17
2.6. The PSP0 Process 18
2.7. PSP0 Measures 20
2.8. Time Recording 21
2.9. Defect Recording 24
2.10. The PSP0 Project Plan Summary 30
2.11. The Compile Phase 31
2.12. Incremental Development 32
2.13. PSP Tool Support 34
2.14. Summary 34
2.15. Exercises 34
3.1. Size Measures 35
3.2. Establishing a Database Counting Standard 40
3.3. Establishing a Line-of-Code Counting Standard 40
3.4. Size Accounting 42
3.5. Using Size Data 45
3.6. Calculating Productivity 47
3.7. Size Counters 48
3.8. Other Size Measures 53
3.9. Summary 54
3.10. Exercises 54
References 55
4.1. The Planning Process 58
4.2. Why Make Plans? 59
4.3. What Is a Plan? 60
4.4. The Contents of a Software Plan 60
4.5. Planning a Software Project 62
4.6. The Conceptual Design 63
4.7. Plan Quality 65
4.8. Planning Issues 65
4.9. Summary 66
Reference 67
5.1. Size Estimating Principles 69
5.2. The Conceptual Design 70
5.3. Proxy-Based Estimating 71
5.4. Using Proxies in Estimating 75
5.5. Producing the Relative-Size Table 78
5.6. Estimating Considerations 80
5.7. Summary 84
6.1. Estimating from Data 85
6.2. Proxy-Based Estimating 87
6.3. Estimating with Limited Data 95
6.4. An Estimating Example 100
6.5. Estimating Nonprogramming Tasks 102
6.6. Considerations in Using PROBE 105
6.7. Summary 108
6.8. Exercises 108
7.1. Plan Requirements 109
7.2. Project and Period Plans 111
7.3. Producing the Schedule 113
7.4. Making the Schedule 115
7.5. Earned Value 119
7.6. An Earned Value Example 120
7.7. Comments on the EV Example 123
7.8. Estimating Accuracy 125
7.9. The Prediction Interval 126
7.10. Alerting Management to Changes 128
7.11. Planning Considerations 129
7.12. Summary 131
7.13. Exercises 132
References 132
8.1. The PSP Quality Strategy 135
8.2. What Is Software Quality? 135
8.3. The Economics of Software Quality 136
8.4. Defect Types 141
8.5. Personal Quality Practices 142
8.6. Quality Measures 143
8.7. Quality Management 153
8.8. Personal Quality Management 154
8.9. Managing Product Quality 156
8.10. PSP Improvement Practices 157
8.11. Defect Prevention 158
8.12. Summary 160
References 161
9.1. What Are Reviews? 164
9.2. Why Review Programs? 164
9.3. Review Principles 168
9.4. The PSP Code Review Process 173
9.5. The Code Review Checklist 176
9.6. Design Reviews 181
9.7. Design Review Principles 183
9.8. Review Measures 187
9.9. Review Issues 194
9.10. Summary 201
9.11. Exercises 202
References 202
10.1. What Is Design? 204
10.2. Why Design? 206
10.3. The Design Process 207
10.4. Design Levels 210
10.5. Design and Development Strategies 216
10.6. Design Quality 220
10.7. Summary 223
References 224
11.1. Design Representation 226
11.2. The Design Templates 229
11.3. The Operational Specification Template (OST) 230
11.4. The Functional Specification Template (FST) 233
11.5. The State Specification Template (SST) 236
11.6. The Logic Specification Template (LST) 240
11.7. A State-Machine Design Example 241
11.8. Using the PSP Design Templates 246
11.9. Using the Design Templates in Large-Scale Design 248
11.10. Summary 250
11.11. Exercises 250
References 250
12.1. Why Verify Programs? 254
12.2. Design Standards 257
12.3. Execution-Table Verification 258
12.4. Trace-Table Verification 262
12.5. Verifying State Machines 265
12.6. Loop Verification 271
12.7. Other Analytical Verification Methods 277
12.8. Verification Considerations 280
12.9. Summary 284
12.10. Exercises 284
References 285
13.1. Customizing the Development Process 289
13.2. Why Define a Process? 290
13.3. The PSP Process Strategy 291
13.4. Defining a Process 291
13.5. Process Evolution 294
13.6. Example Processes 298
13.7. Process Development Considerations 306
13.8. Summary 307
13.9. Exercises 308
References 308
14.1. Development Challenges 309
14.2. The Team Software Process (TSP) 313
14.3. The Logic of the TSP 314
14.4. Teambuilding 314
14.5. The TSP Launch Process 316
14.6. The TSP Coach 317
14.7. Managing Your Own Project 318
14.8. TSP Results 322
14.9. The Rewards of Teamwork 322
14.10. The TSP Team of One 323
14.11. Your Future in Software Engineering 326
References 327