Walker Royce is the vice president of IBM's Worldwide Rational Lab Services. He has managed large software engineering projects, consulted with a broad spectrum of IBM's worldwide customer base, and developed a software management approach that exploits an iterative life cycle, industry best practices, and architecture-first priorities. He is the author of Software Project Management: A Unified Framework (Addison-Wesley, 1998) and a principal contributor to the management philosophy inherent in Rational's Unified Process. He received his BA in physics from the University of California, and his MS in computer information and control engineering from the University of Michigan.
Kurt Bittner is chief technical officer for the Americas at Ivar Jacobson Consulting. He has worked in the software industry for more than 26 years in a variety of roles, including developer, team leader, architect, project manager, and business leader. He has led agile projects, run a large division of a software development company, survived and thrived in several start-ups, and worked with clients in a variety of industries including insurance, banking, and energy. He is the co-author of two books with Ian Spence, Use Case Modeling (Addison-Wesley, 2003) and Managing Iterative Software Development Projects (Addison-Wesley, 2007), as well as many articles, especially in the areas of improving requirements and software development management practices.
Mike Perrow is a writer and editor for the Rational organization within the IBM Software Group. He is the founding editor of The Rational Edge online magazine. In that role, he has worked closely with Rational methodologists and thought leaders, including Walker Royce, Kurt Bittner, and many others, to explain the concepts of iterative software development that underlie the Rational Unified Process and related toolset. He began his career as a technical writer on mainframe systems while teaching technical writing at Old Dominion University. Since then, he has taught periodically and served as an evangelist and marketer for Imagination Systems, Powersoft, and Sybase, Inc. In his parallel life as a creative writer, he has published poems in leading literary journals, including The Southern Review, Shenandoah, and Boston Review.
Preface xiii
About the Authors xvii
Part I: The Software-Driven Economy 1
Chapter 1: The Challenge of Software Project Management 3
The High Stakes in Software Development 4
Institutional Focus 5
Traditional Software ProjectManagement 7
Problems with theWaterfall Approach 8
Summary 11
Chapter 2: Achieving Results: The Case for Software Economics 13
Iterative Development 15
Benefits of the Results-Based Approach 16
TheMark of Success 18
Summary 19
Part II: Improving Software Development Economics 21
Chapter 3: Trends in Software Economics 23
A SimplifiedModel of Software Economics 24
Software Engineering: A 40-Year History 26
Keys to Improvement: A Balanced Approach 28
Summary 30
Chapter 4: Reducing Software Project Size or Complexity 33
Managing Scope 33
Reducing the Size of Human-Generated Code 35
Improving Reuse Using Service-Oriented Architectures 36
Summary 36
Chapter 5: Improving the Development Process 39
Project Processes 39
Using an Iterative Process 40
Attacking Significant Risks Early 43
Improve Practices Incrementally to Meet Goals 46
Summary 48
Chapter 6: Improving Team Proficiency 51
Enhancing Individual Performance 52
Improving Project Teamwork 52
Advancing Organizational Capability 55
Summary 57
Chapter 7: Improving Automation Through Integrated Tools 59
Improving Human Productivity 60
Eliminating Error Sources 61
Enabling Process Improvements 62
Summary 63
Chapter 8: Accelerating Culture Change Through Common Sense 65
Profiles of Successful Organizations 65
Keys to Success 67
Recommendation: Select the Right Project, the Right
People, and the Right Goals 73
Summary 73
Part III: Practical Measurement for Software Engineering 77
Chapter 9: A Practical View of Software Development Metrics 79
Measurements and Goals 80
Variability and Goals 80
Measurement and Iterative Development 81
WhenMeasurement GoesWrong 83
What'sWrong with Detailed Up-front Planning? 85
DecidingWhat toMeasure, Phase by Phase 86
Summary 87
Chapter 10: What to Measure in the Inception Phase 89
Assessing Financial Viability 90
Assessing Technical Viability and Estimating Overall
Project Cost 91
Iteration in the Inception Phase 93
OtherMeasures 94
Summary 96
Chapter 11: What to Measure in the Elaboration and Construction Phases 99
Measurement in the Elaboration Phase 99
Measuring Risk Reduction 102
Measuring Progress 104
Measurement in the Construction Phase 106
Measuring the Project Backlog 107
Measuring Test Coverage 107
Measuring Build Stability 108
Expected Progress Trends in the Construction Phase 109
Summary 110
Chapter 12: What to Measure in the Transition Phase 113
Measurement in the Transition Phase 114
Concluding the Transition Phase 118
Summary 119
Chapter 13: Measuring Projects Embedded in Programs 123
Organizing Projects into Programs 124
Measuring Program Stages 127
Summary 127
Appendix: Getting Started with Iterative Project Management 129
Embarking on Your First Iterative Project 130
Adopting an Iterative Approach Iteratively 144
Conclusion 154
Suggested Reading 157
Index 161
Results-Based Software Management: Achieve Better Outcomes with Finite Resources
Effective software development is no longer merely an IT concern: today, it is crucial to the entire enterprise. However, most businesspeople are not ready to make informed decisions about software initiatives. The Economics of Iterative Software Development: Steering Toward Better Business Results will prepare them. Drawing on decades of software development and business experience, the authors demonstrate how to utilize practical, economics-based techniques to plan and manage software projects for maximum return on technology investments.
The authors begin by dispelling widespread myths about software costs, explaining why traditional, "engineering-based" software management introduces unacceptable inefficiencies in today's development environments. Next, they show business and technical managers how to combine the principles of economics and iterative development to achieve optimal results with limited resources. Using their techniques, readers will learn how to build systems that enable maximum business innovation and process improvement-and implement software processes that allow them to do so consistently.
Highlights include
How to repeatedly quantify the value a project is delivering and quickly adjust course as needed
How to reduce software project size, complexity, and other "project killers"
How to identify and eliminate software development processes that don't work
How to improve development processes, reduce rework, mitigate risk, and identify inefficiencies
How to create more proficient teams by improving individual skills, team interactions, and organizational capability
Where to use integrated, automated tools to improve effectiveness
What to measure, and when: specific metrics for project inception, elaboration, construction, and transition
The Economics of Iterative Software Development: Steering Toward Better Business Results will help both business and technical managers make better decisions throughout the software development process-and it will help team and project leaders keep any project or initiative on track, so they can deliver more value faster.