"While it is usually helpful to launch improvement programs, many such programs soon get bogged down in detail. They either address the wrong problems, or they keep beating on the same solutions, wondering why things don't improve. This is when you need an objective way to look at the problems. This is the time to get some data."
Watts S. Humphrey, from the Foreword
This book, drawing on work done at the Software Engineering Institute and other organizations, shows how to use measurements to manage and improve software processes. The authors explain specifically how quality characteristics of software products and processes can be quantified, plotted, and analyzed so 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, are illuminated by application examples taken from industry.
Although many of the methods discussed are applicable to individual projects, the book's primary focus is on the steps software development organizations can take toward broad-reaching, long-term success. The book particularly addresses the needs of software managers and practitioners who have already set up some kind of basic measurement process and are ready to take the next step by collecting and analyzing software data as a basis for making process decisions and predicting process performance.
Highlights of the book include:
If you have responsibilities for product quality or process performance and you are ready to use measurements to manage, control, and predict your software processes, this book will be an invaluable resource.
1. Managing and Measuring Process Behavior.
What Is a Software Process?
What Is Software Process Management?
The Role of Software Process Management.
Issues on the Road to Process Improvement.
The Need for Software Process Measurement.
Measuring Process Behavior.
A Framework for Process Behavior Measurement.
Identifying Process Issues.
Selecting and Defining Measures.
Integrating Measures with the Software Process.
The Specifics of Collecting Software Process Data.
Reviewing and Assessing Collected Data.
Tools for Understanding Your Data.
Separating Signals from Noise.
Evaluating Process Stability.
Control Chart Basics.
Control Charts for Variables or Discrete Data.
Control Charts for Attributes Data.
How Much Data Is Enough?
Anomalous Process Behavior Patterns.
Rational Sampling and Homogeneity of Subgroups.
The Problem of Insufficient Granularity in Recorded Values.
Aggregation and Decomposition of Process Performance Data.
Finding and Correcting Assignable Causes.
Process Capability Analysis.
Improving the Process.
Improvement and Investment.
Ten Steps for Getting Started.
Frequently Asked Questions Regarding SPC.
Enumerative Versus Analytic Studies.
Three-Sigma Control Limits.
Central Limit Theorem and Role of the Normal Distribution.
This book is about using statistical process control (SPC) and control charts to measure and analyze software processes. It shows how characteristics of software products and processes can be measured and analyzed using statistical process control so that the performance of activities that produce the products can be managed, predicted, controlled, and improved to achieve business and technical goals.
If you are a software manager or practitioner who has responsibilities for product quality or process performance, and if you are ready to define, collect, and use measurements to manage, control, and predict your software processes, then this book is for you. It will put you on the road to using measurement data to control and improve process performance. Not only will the discussions here introduce you to important concepts, but also they will introduce you to tried-and-true process measurement and analysis methods as set forth in a software environment.
On the other hand, if your organization does not yet have basic measurement processes in place, you should make establishing measures for planning and managing projects your first priority. Handbooks such as Practical Software Measurement: A Foundation for Objective Project Management McGarry 1998 and Goal-Driven Software Measurement Park 1996 make excellent starting points, as do the examples and advice found in books by people such as Watts S. Humphrey and Robert B. Grady Humphrey 1989; Grady 1987, 1992.
This book is an extension and elaboration of the Software Engineering Institute (SEI) guidebook Practical Software Measurement: Measuring for Process Management and Improvement Florac 1997. The guidebook grew out of a collaborative effort with the authors of Practical Software Measurement: A Foundation for Objective Project Management McGarry 1998. Both publications were written to encourage and guide software organizations to use measurements to quantitatively manage software projects and processes.
This book is organized into eight chapters. The focus of Chapter 1 is to introduce you to the primary concepts associated with managing, measuring, controlling, and improving software processes. The motivation for using statistical process control is also discussed--that is, utilizing control charts for making process decisions and for predicting process behavior. This chapter begins by characterizing the term software process, especially as it is used in SPC applications. Issues of process performance, stability, compliance, capability, and improvement are briefly introduced (and elaborated throughout the book) since these form the basis for improving process performance. A section on measuring process behavior then follows. A framework for measuring process behavior is presented next and serves as the guiding structure for the rest of the book. The remaining chapters follow this framework with more detailed discussions, expanding on the activities associated with using statistical process control techniques for improving the software process.
The focus of Chapter 2 is to discuss the activities associated with measuring the software process. They include identifying process management issues, selecting and defining the measures, and integrating the measurement activities with the organization's processes. The idea here is to understand what you want to measure and why and to select appropriate measures that will provide insight into your issues.
In Chapter 3, we discuss the specifics associated with collecting software process data. The principal tasks include designing methods and obtaining tools for data collection, training staff to execute the data collection procedures, and capturing and recording the data. Additionally, there is a discussion of many of the important tools available to analyze, understand, and explain causal relationships to the process performance data.
In Chapter 4, we embark on the initial discussion of analyzing process behavior with Shewhart's control charts by graphically illustrating the concepts of process variation and stability. The basics of constructing control charts, calculating limits, and detecting anomalous process behavior are given to provide a basis for the ensuing chapters.
Chapter 5 is dedicated to providing the information to construct and calculate limits for the several different control charts applicable to software processes. Examples of the calculations and charts are set in familiar software settings.
Chapter 6 discusses a number of topics that arise when using control charts. Guidelines are offered for how much data is necessary for control charting, recognizing anomalous process behavior patterns, rational subgrouping, aggregation of data, and insufficient data granularity.
Chapter 7 provides insight on what actions to take after you have plotted your data on process behavior charts. The actions involve removing assignable causes of instability, changing the process to make it more capable, or seeking ways to continually improve the process.
The book concludes with Chapter 8. It provides ten steps for getting started using statistical process control, cites the experiences by some of those who have used statistical process control in a software environment, and addresses a number of frequently asked questions.
The appendixes include several of the more commonly used tables for calculation of control chart limits and a special topics section that contains detailed discussions addressing statistical process control fundamentals. For those who wish to learn more about the topics addressed in this book, we have included an extensive list of references following the appendixes.
Everything in this book has its roots in experience--often that of the authors, at times that of others. Much of the experience comes from software settings, while other lessons are adapted from other service- and industrial-oriented environments. Some of the numerical examples are composed rather than factual; in others, the names of organizations providing the data are disguised to maintain confidentiality. We have tried to ensure that the examples represent reasonable extensions of practices that have been demonstrated to be meaningful and successful in software settings.
The focus, then, is on the acquisition of quantitative information and the use of statistical process control methods to help you to reliably identify the problems (and the opportunities) present in the processes you operate. When the methods are properly used, you can confidently use the results to control and predict your process behavior and guide your improvement actions. We recognize that much more can be said about the use of measurements and statistical methods for controlling and improving processes than this book addresses. On the other hand, we have striven to provide the information, ideas, and methods that are sufficient for you to get started using statistical process control to better understand the behavior of your software processes. We trust that it will encourage you and others to begin applying the concepts that it explains and illustrates.