|
|
Software Process DynamicsRaymond J.
Madachy
|
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.
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 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.
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
|
FOREWORD BY BARRY BOEHM |
3 |
|
|
5 |
||
|
|
|
|
|
1 |
13 |
|
|
|
|
|
|
1.1 |
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 |
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
|
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 |
|
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 |
|
147 |
|
3.3.9 |
Cyclic
|
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 |
|
|
|
|