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.
Review By: Vivek Vaishampayan 11/07/2005"PSP: A Self-Improvement Process for Software Engineers" describes the personal software process (PSP) and explains the practices and methods for software engineers to deliver quality products on predictable schedules. Author Watts S. Humphrey provides guidelines for developing personal software engineering skills so one can perform at his best level. The author describes methods and tips on assessing individual performance, identifying ways to improve, and how to make the improvements.
"PSP" presents the process in carefully crafted steps. The first chapter describes the overall principles and strategies. Next Humphrey explains how to follow a defined process and how to gather and use the data required for managing a programming job. The author covers estimating and planning, quality management, and design. The last two chapters show how to put the PSP to work on a team project.
The author has thoroughly described the project-planning framework, and has strongly suggested incorporating a personal plan as part of a software project plan. This is the essential central theme of PSP. Describing the PSP scheduling procedure in depth, Humphrey shows how to estimate tasks, plan task dependencies, make the schedule, and define milestones. The task-planning template is quite helpful, among many templates and detailed procedures to make the PSP crystal clear.
To get the maximum benefit out of this book, the readers should complete a few module-size programming assignments in any language they prefer. You should follow the prescribed PSPs, gather and measure the data, use the data repeatedly for process improvements, and then use it iteratively in all your project work to deliver quality products on predictable schedules.
"PSP" serves as an excellent reference for its latest iteration specified by SEI and a definitive guide for learning the PSP. This process includes defect management, comprehensive planning, and precise project tracking and reporting. The author's approach encourages applying the PSP to module-sized programs development, and then walks through a progressive sequence of practices that provide a sound foundation for large-scale software development. Software engineers using the PSP methods will be well prepared to apply these methods on even larger and more critical projects.
Within the PSP, design reviews and code reviews are used to find defects. Humphrey explains that when proper reviews and inspections are done, PSP teams typically find close to 99 percent of defects before even starting system level testing, thereby cutting the test times by ten times or more. The author stresses that a truly effective review follows an orderly process, uses sound review practices, and measures the work. To streamline a new thought, such as "review the review process to do a better review next time," the author provides excellent scripts and checklists, for both the PSP code review and PSP2 design review process. The PSP's recommended personal quality management strategy to use plans and historical data to guide the future work is relevant to QA and testing.
PSP may be successful at module level programs, but the real challenge will be to prove that it can withstand the large complex software project development demands and pressures while utilizing all project resources at optimum level.