software process dynamics frontcover

Wiley-IEEE Press

Buy the book

Software Process Dynamics

Raymond J. Madachy

"Not only the best software engineering book of 2007, but quite possibly the most important book of this entire decade."
—Ed Yourdon, internationally recognized consultant and author of twenty-seven books, including Death March

"A major and much needed new textbook. . . . [It] contains a wealth of material covering all important aspects of software project dynamics."
—Dr. Tarek Abdel-Hamid, Professor in the Graduate School of Business and Public Policy, the Naval Postgraduate School

"Brings together a tremendous amount of useful process modeling material and experience in using it in practical software decision situations. . . . [It] will serve as a standard reference for the software process dynamics field."
—Dr. Barry Boehm, Professor in the Computer Science and Industrial Systems Engineering Departments, University of Southern California

Full reviews

Models, tools and updates for book owners

Book Description

This book is designed for professionals and students in software engineering or information technology who are interested in understanding the dynamics of software development in order to assess and optimize their own process strategies. Software Process Dynamics successfully explains how simulation of interrelated technical and social factors can provide a means for organizations to vastly improve their processes. It is structured for readers to approach the subject from different perspectives, and includes descriptive summaries of the best research and applications. This self-contained book:
Software Process Dynamics is complete with exercises and executable models available on a related Web site that allow readers to learn hands-on and with the flexibility to go at their own pace. Furthermore, updates to the book's chapters will be available on this Web site to keep readers up-to-date with the most current and emerging models and techniques. This is an invaluable reference for software engineers, IT practitioners, engineering process groups, project planners, managers, and executives who wish to improve their processes and be better informed. It also serves as an effective textbook for students in related courses at the upper-undergraduate and graduate levels.

Foreword by Barry W. Boehm
Preface

Table of Contents

Introduction and Background

Brooks’s Law Example

Preface

This book is designed for professionals and students in software engineering or information technology who are interested in understanding the dynamics of software development, or in assessing and optimizing process strategies.  The purpose is to improve decision making about projects and organizational policies by being better informed about the dynamic consequences of decisions.  Decisions may involve setting project budgets and schedules, return-on-investment analysis, tradeoffs between cost/schedule/quality or other factors, personnel hiring, risk management decisions, make/buy/reuse, process improvement strategies, etc.

The importance of process dynamics is hard to refute given the well-known (but too often ignored) combined effects of schedule pressure, communication overhead, changing business conditions, requirements volatility and user requests, experience, work methods such as reviews and quality assurance activities, task underestimation, bureaucratic delays, organizational shifts, demotivating events, other socio-technical phenomena and the feedback therein.  These complex and interacting process effects are elegantly modeled with system dynamics using continuous quantities interconnected in loops of information feedback and circular causality.  Knowledge of the interrelated technical and social factors coupled with simulation tools can provide a means for organizations to improve their processes. 

The objectives of this book are to:

The book is mostly new material, except for some example applications, and synthesizes previous work in the area.  There has been much growth in the field, it has evolved to a state of maturity, and this book addresses the need to communicate findings.  It draws from over 100 publications from practitioners and researchers experienced in system dynamics modeling of processes in organizations (all of them summarized in Appendix B).  It is written to be a self-contained learning experience, and a comprehensive reference for modeling practitioners.  The sections are structured so that readers can approach the subject from several perspectives, and gain valuable knowledge for further study and practice depending on their needs.

A constructive understanding of process dynamics is provided by the illustrated models.  Where appropriate, guidelines are presented for process improvement and general software management strategies (common threads include risk management and concentrating on people).  The perspective in the book addresses the dynamics of software development, and best practices are described from that view.  Some of these practices are illuminated through simulation experiments herein, and some will become foci of further study.

Readers may be involved in software process improvement, project planning and management, software development, testing, quality assurance, strategic corporate planning, organizational learning, education or simply desire to understand the interrelated factors of software development.  There is no need for sophisticated math skills, but a passing knowledge of numerical integration concepts will make the introductory material easier. Readers will increase their understanding of the complexities of software development and be able to use system dynamics for modeling and improving processes in their particular organizations.  They will gain insight into the real-world mechanics behind the modeling equations. 

For academic uses, this book may serve as an upper-level or graduate textbook for Software Process Modeling or other simulation courses.  It can be used to support curriculums in Software Engineering, Software Project Management, Software Quality Assurance, Systems Engineering or related subjects. 

Part 1 of the book presents modeling fundamentals for software processes.  These chapters may constitute an entire course for those new to system dynamics modeling.  Advanced students should cover applications and future directions in Part 2.  These topics can be studied in whole or as selected subjects.   Other disciplines or focused studies may choose relevant application topics.  E.g. researchers in organizations or sociology might want to cover people applications; engineering process groups may investigate selected process applications; while senior managers could focus on project or organizational applications. 

The sequence and depth of subjects should be tailored accordingly for any of these uses.  The variety of exercises in the book may serve as homework assignments, exam questions or even major research projects.  Except for the introductory chapters, detailed equations are generally left out of the text for the reader to study from the models.

Though a primary objective is to instruct in computer-aided analysis, several identified exercises early in the book should be done without a computer.  This is to help develop intuition of process dynamics, and to strike a balance by not becoming overly reliant on blindly using the computer during model development and evaluation of simulation results.  The structure of the book is explained in more detail below.

Book Organization and Highlights

This section provides a sequential outline of topics with selected highlights.  Each chapter includes numerous graphics, charts and tables to help illustrate the material.  The book is also supplemented with an Internet site containing the sample models and simulation tools, exercises, extra references and there is an interactive web site for updates to the material.  The book is structured into two major parts per the outline below:

Part 1 - Fundamentals

Chapter 1 - Introduction and Background
Chapter 2 - The Modeling Process with System Dynamics
Chapter 3 - Model Structures and Behavior for Software Processes

Part 2 – Applications and Future Directions

Introduction to Applications Chapters
Chapter 4 - People Applications
Chapter 5 - Process and Product Applications
Chapter 6 - Project and Organization Applications
Chapter 7 - Current and Future Directions.

Appendices and References

Appendix A - Introduction to Statistics of Simulation
Appendix B - Annotated Bibliography
Appendix C - Provided Models
References

Chapter 1 establishes the context and foundation of the book, with a goal of having people use models to quantitatively evaluate processes in order to make better decisions   The chapter presents an introduction and background including motivational issues and a capsule history of the field.  Definitions of terms are provided for reference throughout the book. The concepts of systems thinking are introduced, so one can see how simulation can be used to leverage learning efforts and improve organizational performance.  Control systems principles are introduced, and then a simple motivational example of modeling Brooks’s Law is shown.  A review of software process technology covers process modeling, lifecycle models and process improvement.

A description of the iterative modeling process with the system dynamics simulation methodology is provided in Chapter 2.  Basic modeling elements and classical system behaviors are shown. The underlying mathematical formulation of system dynamics is covered with its ramifications for software process models.

The activities of problem definition, model formulation (including calibration), simulation, assessment, communication to others, and challenging the model for the next iteration are elaborated on.  Since simulation is both art and science, guidelines and modeling heuristics are discussed.  It is seen that there is much in common with software engineering principles in general such as iteration, abstraction, aggregation, etc., yet there are also aspects of simulation that require somewhat different skills.

This chapter also details the multi-perspective validation of system dynamics models, which is of paramount importance before drawing policy conclusions from simulation experiments.  Different modeling tools and environments are overviewed to help modelers in choosing appropriate tools for their different needs.  Also see Appendix A on the use of statistics in the modeling process.

Chapter 3 presents patterns of model structures and behaviors for software processes. Included is a detailed description of levels, flows, auxiliaries, infrastructures, and feedback loops instantiated for software processes.  State variables of interest include software work artifacts, defect levels, personnel levels, effort expenditure, schedule date and others.  Corresponding rates over time include software productivity, defect introduction and elimination rates, financial flows for costs and revenue, etc.  Project reference behaviors for different structures and management policies are introduced.

An important contribution of this chapter is the explication of basic flow processes for software development. Common structures for software processes ferreted out of the major models (upcoming in Chapter 4 through 6) are shown.  Together with prototypical feedback loops such as learning and project controlling, these infrastructures can be (re)used to develop models relevant to any software process.  This section also illustrates a major advantage in system dynamics models over other modeling techniques: inherent cost, schedule and quality tradeoffs by modeling their interactions. 

Part 2 covers modeling applications in the field and future directions.  Chapter 4 focuses on people applications, Chapter 5 covers process and product applications, and Chapter 6 is about project and organizational management.  Each chapter contains applications of varying complexity.  An overview of applications and research to-date is provided, including history, a list of different implementations, and critiques of the various work.  Modeling examples from the field are shown with sample insights.  The examples are further instances of the generic structures from Chapter 3.

The application examples show threads of simulation modeling with actual model implementations and worked out examples.  These original examples should be of particular value to system dynamics novices, and more experienced modelers can study them for additional ideas.  Many also amplify some lessons learned regarding the software process.  Some of the example models are also contained on the accompanying web site.  Additional exercises are provided for students to work out and practitioners to implement.  Note that the applications chapters will also be updated online to keep up with new work.

Chapter 7 presents current and future directions in software process modeling and simulation.  These include advances in simulation environments and tools, model structures and component-based model development, new and emerging trends for application models, model integration (not just system dynamics models), empirical research, theory building, and putting it all together in process mission control centers and training facilities. 

Appendix A introduces statistics for simulation as an addendum to the modeling fundamentals, which analysts, researchers and graduate students studying broader aspects of simulation should be knowledgeable about.  Statistical methods are used to handle the stochastic inputs and outputs of simulation models.  The appendix covers principles of probability distributions, sample size, confidence intervals and experimental design applied to continuous system simulation.  Monte-Carlo simulation is described, and recommended probability distributions for software process modeling are provided. 

Appendix B is an annotated bibliography of using system dynamics for software processes, and is the most complete set of references for the field.  It demonstrates well the breadth of applications to-date, and is a convenient place to start researching particular topics.  These same citations are identified in the References in boldface.

Appendix C lists the provided models referenced in the chapters or exercises.  These go along with the examples, and can be executed and modified by readers for their own purposes.  These models will updated and replaced on the Internet as improvements are made.  Models provided by other readers will also be posted.

Internet Site

The referenced models, tools, updates, discussion, errata, other links, and color book information are at http://csse.usc.edu/softwareprocessdynamics.  A mirror site is at http://softwareprocessdynamics.org.

Acknowledgements

I would like to extend sincere appreciation to all the other people who contributed to this work.  I initially learned system dynamics for physiological modeling in a graduate biomedical engineering course at UCSD in 1982 under the excellent direction of Drs. Alan Schneider and James Bush.  This book would not be complete without the accomplishments of other researchers and support of colleagues including Dr. Tarek Abel-Hamid, Richard Adams, Dr. Vic Basili, Dr. James Collofello, Scott Duncan, Dr. Susan Ferreira, Dr. David Ford, Tobias Haberlein, Jim Hart, Dr. Dan Houston, Dr. Marc Kellner, Peter Lakey, Dr. Manny Lehman, Dr. Robert Martin, Dr. Margaret Johnson, Emily oh Navarro, Dr. Nathaniel Osgood, Dr. Dietmar Pfahl, Oliver Pospisil, Dr. David Raffo, Dr. Juan Ramil, Dr. Stan Rifkin, Dr. Ioana Rus, Dr. Walt Scacchi, Dr. Neil Smith, Greg Twaites, Dr. Wayne Wakeland, Dr. Gerry Weinberg, Dr. Paul Wernick; Litton personnel including Dr. Denton Tarbet, Wayne Sebera, Larry Bean, Frank Harvey and Roy Nakahara; Charles Leinbach from C-bridge Institute; Benny Barbe from Cost Xpert Group; and Dr. Julian Richardson and Dr. Michael Lowry for their support at NASA.  USC graduate students who contributed to this work are Ashwin Bhatnagar, Cyrus Fakharzadeh, Jo Ann Lane, Dr. Nikunj Mehta, Kam Wing Lo, Jason Ho, Leila Kaghazian, Dr. Jongmoon Baik (also including post-graduate contributions), and Wook Kim.  Profound thanks goes to Dr. Barry Boehm, a highly distinguished pioneer who has served as a mentor and been my biggest influence since the middle of my Ph.D. studies.  This book owes much to his continual support, penetrating insights and role modeling.  Many thanks to the anonymous IEEE reviewers for their long hours and detailed constructive reviews; and IEEE staff including Jeanne Audino, Cathy Faduska, Chrissy Kuhnen, Cheryl Baltes, and Matt Loeb.  I also owe much to my wife Nancy for her long-term support and lots of patience.

Book Updates and Making Contributions

The field of software process modeling itself is quite dynamic, with much happening in conjunction with other software process work.  It has been a challenge keeping up with the times as this book has progressed, and the rate of change in the industry has increased over these years.  It is inevitable that some things will continue to change, so the reader is urged to access the Internet site for updates at any time including new and improved models.

Updates to the chapters will be put on the book’s Internet site until the next published edition.  The application Chapters 4-6 will have substantial updates and entire sections replaced as the field keeps changing and work matures.  The goal is to keep the applications current and presented in a uniform format.  Chapter 7 on current and future directions is a wild card in terms of predicted changes, and the annotated bibliography will be updated continuously.

It is an exciting time with much opportunity and more work to be done.  Hopefully some of the ideas and exercises in this book will be used as a basis for further practice and research.  People will provide new and better exercises and those will be posted too.  Your comments on this book and experiences with modeling actual processes are of great interest to this author, and your feedback will help in developing the next edition.  You are encouraged to send any ideas, improvement suggestions, new and enhanced models, or worked out exercises from this book.  They will be included in future editions as appropriate. 

Dr. Raymond J. Madachy
USC Center for Systems and Software Engineering
University of Southern California
941 W. 37th Place, SAL 318
Los Angeles, CA 90089-0781
email: madachy@usc.edu

TABLE OF CONTENTS

FOREWORD BY BARRY BOEHM

3

PREFACE

5

 

 

 

1

INTRODUCTION AND BACKGROUND

13

 

 

 

1.1

SYSTEMS, PROCESSES, MODELS AND SIMULATION

14

1.2

SYSTEMS THINKING

16

1.2.1

The Fifth Discipline and Common Models

17

1.2.2

Systems Thinking Compared to System Dynamics

17

1.2.3

Weinberg's Systems Thinking

18

1.3

BASIC FEEDBACK SYSTEMS CONCEPTS APPLIED TO THE SOFTWARE PROCESS

18

1.3.1

Using Simulation Models for Project Feedback

21

1.3.2

System Dynamics Introductory Example

22

1.4

BROOKS’S LAW EXAMPLE

23

1.4.1

Brooks’s Law Model Behavior

26

1.5

SOFTWARE PROCESS TECHNOLOGY OVERVIEW

29

1.5.1

Software Process Modeling

29

1.5.2

Process Lifecycle Models

34

1.5.3

Process Improvement

44

1.6

CHALLENGES FOR THE SOFTWARE INDUSTRY

48

1.7

MAJOR REFERENCES

49

1.8

CHAPTER 1 SUMMARY

50

1.9

EXERCISES

51

 

 

 

2

THE MODELING PROCESS WITH SYSTEM DYNAMICS

54

 

 

 

2.1

SYSTEM DYNAMICS BACKGROUND

54

2.1.1

Conserved Flows vs. Non-conserved Information

55

2.1.2

The Continuous View vs. Discrete Event Modeling

55

2.1.3

Model Elements and Notations

56

2.1.4

Mathematical Formulation of System Dynamics

58

2.1.5

Using Heuristics

59

2.1.6

Potential Pitfalls

59

2.2

GENERAL SYSTEM BEHAVIORS

60

2.2.1

Goal-Seeking Behavior

60

2.2.2

Information Smoothing

61

2.2.3

Example: Basic Structures for General Behaviors

62

2.3

MODELING OVERVIEW

66

2.3.1

An Iterative Process

66

2.3.2

Applying the WinWin Spiral Model

68

2.4

PROBLEM DEFINITION

69

2.4.1

Defining the Purpose

70

2.4.2

Reference Behavior

71

2.4.3

Example: Model Purpose and Reference Behavior

71

2.5

MODEL CONCEPTUALIZATION

72

2.5.1

Identification of System Boundary

74

2.5.2

Causal Loop Diagrams

75

2.6

MODEL FORMULATION AND CONSTRUCTION

78

2.6.1

Top-Level Formulation

79

2.6.2

Basic Patterns and Rate Equations

84

2.6.3

Graph and Table Functions

89

2.6.4

Assigning Parameter Values

91

2.6.5

Model Building Principles

93

2.6.6

Model Integration

95

2.6.7

Example: Construction Iterations

95

2.7

SIMULATION

100

2.7.1

Steady-state Conditions

102

2.7.2

Test Functions

103

2.7.3

Reference Behavior

105

2.8

MODEL ASSESSMENT

106

2.8.1

Model Validation

107

2.8.2

Model Sensitivity Analysis

110

2.8.3

Monte-Carlo Analysis

113

2.9

POLICY ANALYSIS

114

2.9.1

Policy Parameter Changes

115

2.9.2

Policy Structural Changes

116

2.9.3

Policy Validity and Robustness

116

2.9.4

Policy Suitability and Feasibility

117

2.9.5

Example: Policy Analysis

117

2.10

CONTINUOUS MODEL IMPROVEMENT

118

2.10.1

Disaggregation

118

2.10.2

Feedback Loops

119

2.10.3

Hypotheses

119

2.10.4

When to Stop?

119

2.10.5

Example: Model Improvement Next Steps

119

2.11

SOFTWARE METRICS CONSIDERATIONS

120

2.11.1

Data Collection

120

2.11.2

Goal-Question-Metric Framework

121

2.11.3

Integrated Measurement and Simulation

122

2.12

PROJECT MANAGEMENT CONSIDERATIONS

124

2.12.1

Modeling Communication and Team Issues

124

2.12.2

Risk Management of Modeling Projects

125

2.12.3

Modeling Documentation and Presentation

126

2.12.4

Modeling Work Breakdown Structure

127

2.13

MODELING TOOLS

128

2.14

MAJOR REFERENCES

129

2.15

CHAPTER 2 SUMMARY

130

2.15.1

Summary of Modeling Heuristics

131

2.16

EXERCISES

133

 

 

 

3

MODEL STRUCTURES AND BEHAVIORS FOR SOFTWARE PROCESSES

139

 

 

 

3.1

INTRODUCTION

139

3.2

MODEL ELEMENTS

140

3.2.1

Levels (Stocks)

140

3.2.2

Rates (Flows)

142

3.2.3

Auxiliaries

142

3.2.4

Connectors and Feedback Loops

142

3.3

GENERIC FLOW PROCESSES

143

3.3.1

Rate and Level System

143

3.3.2

Flow Chain with Multiple Rates and Levels

143

3.3.3

Compounding Process

144

3.3.4

Draining Process

145

3.3.5

Production Process

145

3.3.6

Adjustment Process

146

3.3.7

Co-Flow Process

147

3.3.8

Split Flow Process

147

3.3.9

Cyclic Loop

148

3.4

INFRASTRUCTURES AND BEHAVIORS

148

3.4.1

Exponential Growth

149

3.4.2

S-shaped Growth and S-curves

150

3.4.3

Delays

152

3.4.4

Balancing Feedback

157

3.4.5

Oscillation

159

3.4.6

Smoothing

161

3.4.7

Production and Rework

163

3.4.8

Integrated Production Structure

164

3.4.9

Personnel Learning Curve

165

3.4.10

Rayleigh Curve Generator

166

3.4.11

Attribute Tracking

167

3.4.12

Attribute Averaging

168

3.4.13

Effort Expenditure Instrumentation

168

3.4.14

Decision Structures

169

3.5

SOFTWARE PROCESS CHAIN INFRASTRUCTURES

173

3.5.1

Software Products

174

3.5.2

Defects

177

3.5.3

People

183

3.6

MAJOR REFERENCES

185

3.7

CHAPTER 3 SUMMARY

185

3.8

EXERCISES

185

 

 

 

 

INTRODUCTION TO APPLICATIONS CHAPTERS

190

 

 

 

4

PEOPLE APPLICATIONS

193

 

 

 

4.1

INTRODUCTION

193

4.2

OVERVIEW OF APPLICATIONS

196

4.3

PROJECT WORKFORCE MODELING

196

4.3.1

Example: Personnel Sector Model

196

4.4

EXHAUSTION AND BURNOUT

199

4.4.1

Example: Exhaustion Model

199

4.5

LEARNING

202

4.5.1

Example: Learning Curve Models

205

4.6

TEAM COMPOSITION

209

4.6.1

Example: Assessing Agile Team Size for a Hybrid Process

209

4.7

OTHER APPLICATION AREAS

223

4.7.1

Motivation

223

4.7.2

Personnel Hiring and Retention

226

4.7.3

Skills and Capabilities

229

4.7.4

Team Communication

230

4.7.5

Negotiation and Collaboration

230

4.7.6

Simulation for Personnel Training

232

4.8

MAJOR REFERENCES

233

4.9

CHAPTER 4 SUMMARY

233

4.10

EXERCISES

235