Eugene McGuire (editor),
Idea Group, Hershey and London, 1999
ISBN 1878289543
Buy it from Amazon.com
Buy it from Amazon.co.uk
Other Reviews
Like many collections of chapters, this book is both somewhat uneven and somewhat difficult to review as a whole. Chapter authors inevitably tend to blow their own trumpets, and the reader is left wondering what partial evaluation of computer programs has to do with using the CMM on small projects. The cover blurb cheerfully talks about "the opportunity for rich sociotechnical and interdisciplinary studies", which is probably enough to make nearly all industrial practitioners put the book down at once.
McGuire has contributed to one of the chapters as well as pushing the book through publication, and he is presumably responsible for the tidy arrangement of the chapters, the author 'bios', and the useful but rather brief index.
Software Process Improvement (SPI) is part of the continuing response to the software crisis of the 1960s and '70s, along with a mixed bag of tools, techniques and methods including better compilers, programming languages, COTS products and the Capability Maturity Model (CMM). This combined effort has in one sense plainly been successful. While projects still fail, overrun their schedules and budgets, and deliver less than expected, businesses do now routinely implement databases, management information systems, e-commerce websites, and other commercial systems reliably and effectively.
So is research still needed? Each success raises as many questions as it solves - which is not to say that all research is productive. This book attempts the near-impossible: to give an overview of SPI work in fields as diverse as software inspection, tool support for CMM, project cost/benefit modelling, software quality, programming paradigms, soft systems and agents of change - this last co-written by McGuire.
If there is a dominant paradigm in SPI, is is the business-oriented CMM, which is curious, as software is by no means confined to business, while the CM is quite weak on several software issues, notably software engineering practices and requirements engineering.
The editor admits in his preface that "the effectiveness and potential impact of process improvement efforts have been debated, but not fully tested or validated." The root claim is that product quality depends on process quality. This may seem intuitively reasonable but is far from demonstrated. We have all seen careful and detailed quality assurance and configuration management, along with impressive project management plans and weekly meetings, amidst all the symptoms of sick projects such as demoralized staff, ill-conceived requirements, unworkable designs and fragmentary testing.
SPI, in short, risks attempting to offer solutions when the nature and scope of the problem is far from agreed. Like a group of 18th century doctors discussing whether to try cupping, purging, or blood-letting, the process improvement researchers offer varied therapies. In chapter 1 Rick Gibson looks at process modelling, classifying SPI approaches under three headings: modelling, techniques, and assessments. The other chapters certainly exemplify all of these to some degree: the editor has wisely placed Gibson's chapter where it can serve as a readable introduction.
Soft systems methodology is discussed by Peter Bennetts, Trevor Wood-harper, and Stella Mills in the only British, indeed the only non-American chapter.
Checkland's work is central; the chapter's references go back to 1973 but only one - by the authors - is post-1995. The emphasis on stakeholders is welcome but the discussion seems needlessly theoretical.
Shirley Becker and Mitchell Bostelman introduce the Goal Question Metric (GQM) approach. It might seem obvious that businesses should relate their operational goals to their strategies, but they often do not do this effectively. GQM helps managers set goals, ask sensible questions about them, and measure whether their goals are being met. This engaging approach takes some of the powerful conceptual tools used to specify software and applies them in a practical way to the software process - or, as illustrated rather paradoxically in the chapter, to strategic planning.
P. Kawalek and D.G. Wastell look at organizational issues affecting software quality. They explain Beer's Viable System Model (VSM) which he has proposed "in a series of original and challenging books". Beer suggested a diagrammatic notation reminiscent of electronics: these are rather badly drawn with text straying out of boxes and over lines. The authors claim that the VSM "helped to reveal the rational basis" of some contentious organizational changes. The VSM illustrated how information such as market requirements was controlled and owned: it was dangerous for it to be purely technical with no "holistic view across different parts of the product". What the study showed was that successive changes had compromised the integrity of the organizational structure.
Mark Paulk of the Software Engineering Institute (home of the CMM) describes quite practically how to apply the CMM on small projects or in small organizations. This is timely as the CMM has quite a reputation for being slow, cumbersome, and costly. A book such as this is not, perhaps, the ideal platform for such a message, but at least it's in print.
McGuire and Kim Randall examine agents of change in SPI. After the usual discussion of the problems of today's rate of change and the edge of chaos, they look through reactions such as the CMM, process work, quality, teamwork, and change itself. All of this leads to the need for people to go on learning throughout their careers, so "competency needs of IS professionals" go on growing. Unsurprisingly, domain knowledge, project and change management, quality, metrics, teamwork, and interpersonal communication are found to be important. It does seem to be rather a jargon-rich environment.
Christopher Landauer and Kirstie Bellman present their ideas on generic programming and partial evaluation. The discussion focuses on an extended example in Prolog, not a language much used today. The idea of automatically making programs more efficient has its attractions, and may one day bear fruit, but it remains blue-sky research for now.
David McComb and Jill Smith Slater have written an interesting chapter on communicating project drift through cost/benefit scenarios. They use a simple benefit (on the y axis) against cost graph, annotated with round or elliptical regions for projects, and GANTT chart-like symbols for inception, software completion, and at final implementation. The graphs form thought-provoking patterns to which they give names such as De-scoped Project, Constructive Changes, and Unanticipated Benefits.
A team from the University of Arizona writes at length on group-enabled software inspections. They have a tool in Java which enables groups to share and inspect software over the web; more interesting, perhaps, is their method and survey, where they look at what makes a good software inspector.
Shirley Becker (again) and Daniel Ladino write about a technical infrastructure for process support.
They very sensibly go through the requirements for such a thing, then sketch its architecture, and finally look at tools. The core is naturally a database, and as they say the problem is to make good use of the data that organizations already have in reams. Like the Arizona team, they propose a Web tool, in this case an Oracle web server application enabling teams to browse project plans over an intranet.
It should be clear from these brief sketches that the book offers disconnected glimpses of ideas, methods, and tools selected somehow from mainly American work in the vast field of SPI. There is obviously something unsatisfactory in any such selection; but as a sample it is quite illuminating.
This book does not claim to do more than "represent some important ideas and current work" in SPI. It is not a complete textbook and as such is not suitable for newcomers to the field. Advanced students and researchers may find interesting material in its pages; practitioners will skip the more researchy chapters but may find others useful, including perhaps Mark Paulk's short introduction to small-project CMM. Software project managers may find McComb and Slater's chapter on cost/benefit scenarios worthwhile.
In summary, this is a collection of research-oriented chapters with some industrial relevance. It is reasonably up to date and well produced. Research libraries will want to have a copy.
© Ian Alexander 1998 and 2000
A version of this review appeared in the European Journal of Information Systems.