A Discipline for Software Engineering
This book provides an in-depth means for software engineers to improve their own practice of software engineering. A variety of small projects are designed to lead the reader to identify specific ways their own work can benefit from process improvement based on measurement and statistical analyses.
Review By: C. W. (Bill) Kearney
08/15/2002Inside the front and back covers, this book provides the Personal Software Process (PSP) Definitions, Logs, and Templates that the book summarizes and describes. The book itself includes fourteen chapters and four appendices that are “designed as a text for graduate level and senior-level undergraduate university courses. It is also designed to help experienced engineers work through the material on their own. The book is self-contained....”
The first three chapters deal with the Personal Software Process Strategy, the Baseline Personal Process, and the Planning Process. The next chapters (four to seven) treat Measuring Software Size, Estimating Software Size, Resource and Schedule Estimating, and Measurements in the Personal Software Process. Chapter eight discusses Design and Code Reviews, and chapter nine talks about Software Quality Management. Chapter ten, entitled Software Design, delves into issues associated with moving from requirements to suitable designs. Scaling Up the Personal Software Process is the title of chapter eleven. Chapter twelve, Design Verification, deals with a number of verification issues, including my personal favorites: program tracing and verifying program correctness. And without process, software development is not impossible but is extremely difficult; therefore, Defining the Software Process (chapter thirteen) is important to consider. Chapter fourteen (Using the Personal Software Process) argues that commitment to and use of PSP can have costs and benefits for both the individual and the organization.
Each chapter has a summary, and chapters two through thirteen have exercises that support the chapter’s discussion and lead the reader through an evolutionary process toward process discipline. In addition, the appendices (approx. 290 pages) provide information, data, and process to the book and the exercises.
The author’s intent in this book was to add process to principle. The years of study that he has engaged in, both for the production of this book and elsewhere, have come together in fine and usable fashion.
The completeness of the text will be no surprise to those who have read other books by this author. For example, the chapter on Software Design includes design process, design quality, structuring the design process, design notation, multiple templates, and design guidelines. The rest of the chapters are equally comprehensive.
This book has the ingredients required to enable consistent productivity and quality improvement in one’s work. It is not easy, but if one is serious about gaining proficiency through a personal process, then this is the work to use. If you cannot commit the time and effort required to accomplish the goals set out for the book, then at least read the preface so that the outline can be appreciated, then read chapters one, two and fourteen to get concepts reinforced, then pass the book along to others.