A Discipline for Software Engineering

by Watts S. Humphrey

These days, almost everyone in the software field is aware of the Software Engineering Institute's capability maturity model (CMM); and though that model is the joint effort of a team of many talented people at the SEI, many of us view Watts Humphrey as the "father" of that model and the spokesman for many of its principles. This is not only because of the pioneering work that Humphrey has done in the field and the leadership that he exerted within the SEI, but also because of his ground-breaking book, Managing the Software Process, which described the SEI model in detail.

But that book was published in 1989, and time marches on: the SEI published an updated, revision to the model (known as Version 1.1) in 1993, and has recently begun focusing on the "peopleware" component of software processes. And the introduction of the SEI model has sparked considerable controversy in the industry, as evidenced by the debate between Bill Curtis and James Bach in the September 1994 issue of American Programmer. In addition to the controversy about the relevance of the SEI model for any form of software development, much of the discussion in the field has focused on the question of where the SEI's recommendations for a formalized software process is practical only for large organizations and military agencies, or whether it can be used for small organizations, too.

Indeed, the latter complaint arose almost as soon as Humphrey's book was published in 1989, and by 1990, Humphrey was already researching the applicability of the SEI model to groups as small as one — thus leading to the concept of a "personal" software process. This has culminated in an important new book, A Discipline for Software Engineering. As Humphrey described the effort in a recent article (in the December 1994 issue of American Programmer),

Many viewed the CMM as designed for large organizations and did not see how it could be applied to individual work or to small project teams. ... The SEI thus started a process research project to examine ways individual software engineers could apply level-5 process principles. After several years of research, means were devised to adapt 12 of the 18 CMM key process areas to the work of individual software engineers.

To reach the "repeatable" level on the CMM, for example, an organization needs to implement such key processes as software configuration management, oftware quality assurance, software subcontract management, and requirements management. In many software projects, these activities are beyond the ability and the "charter" of the individual software professional: they only exist, and are only carried out in a repeatable fashion, if the organization defines the processes, and assigns people and resources to carry them out. But some of the other CMM level-2 key process areas — e.g., software project planning and software project tracking/oversight — are areas where personal processes are meaningful for the one-person project, or for the activities of an individual within a larger project. Equally important, within the framework of Humphrey's PSP, they can be measured and monitored from a mathematical, statistical perspective. Similarly, peer reviews, which are one of the CMM level-3 key process areas, can be arranged and organized with an individual's peers, on his or her own initiative. Obviously, software engineerings have to decide for themselves that this is useful and worthwhile, but once they've made this decision, they can probably proceed without the approval or knowledge of the organization.

In the same fashion, quality management, and quantitative process management are key process areas at CMM level-4 — and while they have traditionally been associated with organizational efforts, Humphrey's new PSP emphasizes that documenting, measuring, and keeping track of one's own "cost of quality" (COQ) can be a significant basis for improvement of the individual software process. Humphrey argues that COQ has three components: failure costs (the costs of diagnosing a failure, making necessary repairs, recompiling, re-testing the software, and getting back into operation), appraisal costs (the costs of evaluating the product to determine its quality level, including design/code reviews and inspections), and prevention costs (the costs associated with identifying the causes of the defects and the actions taken to prevent them in the future).

As with the organizational-level CMM activities, there is a level of formalism and discipline to all of this that will probably not appeal to the "cowboy culture" of software develoment. But even those who are prepared to be open-minded about Humprehy's PSP will naturally ask: "What's the payoff for all of this extra work?" Humphrey's experiments, summarized in his December 1994 American Programmer article, have reported productivity iprovements averaging 75 percent, and defect reductions averaging 59 percent. The signiicant point here is that these are improvements experienced by individuals, not by the organization as a whole. Perhaps that's why the reaction from some of the software engineers who have gone through Humphrey's training and put the ideas into practice is, "I'm doing this for me, not for the organization."

I should warn you in advance that A Discipline for Software Engineering is no lightweight piece of reading: it's 789 pages long, with a list of mathematical terms and equations on the inside cover. Most software engineers are be overwhelmed initially with the level of mathematical effort Humphrey recommends for estimating program sizes, project schdules, defect densities, etc. But if you're an educator, it's also worth noting that additional support materials are available. A support diskette is available for the modest price of $14.95; it contains copies of the forms illustrated in the book, plus data analysis spreadsheets for the exercises. An instructor's guide and instructor's diskette is also available, with notes, lecture slides, and spreadsheets to review and analyze student data.

Having seen Humphrey's material first as a manuscript, and more recently in published form, I am convinced that it will be even more influential than his last book. My only criticism is the title; in my opinion, it should have been called PSP: A Personal Software Process, because that's what everyone in the industry will be calling it. But that's a minor complaint; the main point is that if you believe software development is something more serious than extemporaneous coding in Visual Basic or PowerBuilder, then Humphrey's new book is one that you need to understand, and whose advice and guidance you need to follow.

 

For more information, please visit Ed's companion site here.
You may also visit Ed's blog here.