Measuring the Software Process: Statistical Process Control for Software Process Improvement
Here is a guidebook that demonstrates how an organization can employ measurements to manage and improve software processes.
Specifically, this book explains how quality characteristics of software products and processes can be quantified, plotted, and analyzed so that the performance of software development activities can be predicted, controlled, and guided to achieve both business and technical goals. The measurement methods presented, based on the principles of statistical quality control (SQC), are illuminated by helpful application examples and illustrative case studies taken from industry.
This book's primary goal is to outline the steps an organization can take to attain broad-reaching, long-term success in software development.
Review By: Mark L. Johns
11/27/2002
This is an outstanding book that serves as a guide to implementing Statistical Process Control (SPC) techniques for measuring software processes.
The book begins with a general overview of process measurement concepts and sets up a general strategy for process management based upon the infamous PDCA cycle concepts. This is followed by in-depth discussions of process measurement planning, selection of what data to collect, and how to analyze the data using scatter diagrams, run charts, Ishikawa diagrams, histograms, Pareto charts, and bar charts.
After laying the groundwork and educating the reader, the authors delve into the world of SPC, first introducing the generic concepts, then relating them specifically to the world of software process. Eight different control charts are individually discussed. Real-world software process measurement examples are used to illustrate construction and interpretation of each chart.
The final two chapters, 7 and 8, discuss what to do with the information being provided by the process behavior charts, and how to get started applying the techniques to achieve continual process improvement within your organization.
The appendixes contain additional information related to the control chart formulas and control chart tables (constants), detailed discussions of 3 sigma, central limit theory, and additional information of the calculations used in several of the book’s examples. This information was not critical for understanding the concepts and techniques discussed in the main text.
The book is very informative. The authors took a potentially recondite subject, SPC, and dissected it into digestible “chunks” using nontechnical language. They appeared to have no preconceived notion of the knowledge level of their audience, covering their topics in enough detail to inform and educate the beginner without boring the more advanced readers.
Using this book as a guideline, software professionals should be able to begin a process-improvement effort or enhance an existing effort. Using the strategies and techniques described in the book, you will be able to see relatively quickly the effects of changes to your existing processes. Even more important, you will be able to see if your processes are stable, the first step in determining capability. Once you can determine capability, correct data-based expectations can be set.
This book is a must read for anyone interested in continual software process improvement based upon real measurement. SPC is relied upon extensively in the manufacturing department to help ensure decreased variability and increased quality. The authors of this book have opened the door for the scientific measurement of the software process: the first step in turning the software creation process from being an “art” to being a “science” as well.
User Comments
As any engineer who works with the "manufacturing department" identified above will tell you, a "measurement" is a single number, a raw datum, one dimension of a vector. It is "metrics" that make measurement useful, by combining two or more measurements arithmetically to derive a metric.
A typical metric is a rate: number of labor hours to deliver one widget; number of defective widgets discovered in a batch of 1,000; number of customer complaints or returns per 1,000 widgets shipped. In other words, a typical metric is a fraction whose numerator or denominator is a measure of the quantity of product delivered.
One of the key differences between software engineering and manufacturing is that we do not deliver generic widgets. Almost every project has a unique deliverable. Therefore, in order to derive metrics, we need a unit of measurement that can be applied to unique deliverables rather than one that simply counts generic deliverables.
The cornerstone of any software metrics program is the Function Point methodology, which not only measures software with satisfactory accuracy but does so in units that can be understood in both the developer's and the end user's context.
This book appears to be well grounded in the SEI Capability Maturity Model, whose long-term goal is the "continual software process improvement based upon real measurement" noted by the reviewer. One would hope that it introduces the Function Point methodology to those who may not already be familiar with it -- a rather large percentage of the IT community. One would assume that the reviewer's failure to mention this merely reflects his own membership in the more enlightened community who have already adopted Function Points.