Sunday, December 19, 2010

A Discipline for Software Engineering

Author:      Watts S. Humphrey
Published:   1995
Publisher:    Pearson Education, Inc.
Paperback: 816 Pages
Readers in India:

The author Watts Humphrey needs no introduction to the software engineering community. He was a real "process innovator" whose pioneering work led to the development of the widely known and implemented Capability Maturity Model (CMM/ CMMI). While this model helped in instilling some discipline to the chaotic way of developing software  which existed in the organizations, Watts Humphrey believed in catching the software engineers young in their schools itself  and  teach them a disciplined  way of developing software.
Thus Personal Software Process (PSP) was born and this book is a complete guide to this process.
In Watts Humphrey's own words in the preface to this book:
"The principal goal of this book is to guide you in developing personal software engineering skills that you will need for large-scale software work. You will learn how to make accurate plans, how to estimate the accuracy of these plans, and how to track your performance against them. You will use defect management, design and code reviews, design templates and process analysis. You will do this with a defined and measured personal software process. These measurement and analysis disciplines will then help you to evaluate your performance, to understand your strengths, and to see where you should try to improve. From all of this you will develop the tools to continue your personal improvement throughout your professional career"

PSP is taught in this book through a series of 10 programming exercises, requiring progressively higher levels of process discipline. All the required forms, templates,checklists, process scripts  for this purpose are made available in the appendices (which forms almost 40 % of the book's bulk !).

This book is almost a text book and definitely not for light reading. At the same time it is not too difficult to grasp for any software engineer.

In my view this book should form a mandatory part of  any software engineering curriculum. 
A must read for all software engineers and proponents of Agile  too (since I could sense the principles of  agile development throughout the process) !

However it  needs to be revisited and overhauled to fit  the current scenario of software development (this book was written 1995 !). It requires too much of a discipline which while is nice to have is rather difficult to inculcate for e.g. 
a) the recommended practice of reviewing the code before compiling (Temptation to compile first is impossible to curb !).
b) recording time to the accuracy of 1 minute (Going back to Time and Motion studies of Taylorian era ! In my view an accuracy of  5-15 minutes is quite acceptable. )
c) rigorous statistical analysis (Good to do; but a software engineer should focus more on the requirements, architecture, implementation. Statistical analysis can be delegated to a specialist or to an appropriate tool)

But all said and done hats off to Watts Humphrey for such a pioneering work. 

May his soul rest in peace.
(He passed away this year (2010) in October).

No comments:

Post a Comment