With the techniques in this book, you will have the tools you need to design afar more effective reuse program, prove its bottom-line profitability, and promote software reuse within your organization. Written by a leading software reuse practitioner, Measuring Software Reuse brings together all of the latest concepts, tools, and methods for software reuse metrics, presenting concrete quantitative techniques for accurately measuring the level of reuse in a software project and objectively evaluating its financial benefits.
The book addresses all of the many factors involved in a software reuse program: determining what constitutes software reuse-looking at COTS software, operating systems services, tools, code libraries, and more; how to measure the level of reuse in a project; and how to analyze the costs incurred by a software reuse program. You will also find detailed explanations of the various economic models used to evaluate the financial benefits of a reuse program such as cost avoidance, value added, payoff threshold, return-on-investment, and cost-benefit analysis.
To further your understanding, the book presents experience-tested techniques for implementing a metrics program by incorporating a recommended reuse metric "starter set." It also includes an extensive discussion on the metrics for reuse libraries and examines the issue of measuring reuse throughout the software life cycle.
(Most chapters conclude with "Conclusion".)
1. Motivating Software Reuse Through Metrics.
Expected Levels of Reuse.
Expected Benefits of Reuse.
This Book Will Explain....
2. A Reuse Metrics Overview.
Metric Goals and Requirements.
Reuse Percent-The De Facto Standard Measure of Reuse Level.
Reuse Leverage Models.
Reuse Economic Models.
3. The Relative Costs of Developing with and for Reuse.
The Relative Cost of Reuse.
The Relative Cost of Writing for Reuse.
Calculating Your Own Values for RCR and RCWR.
4. Defining Reuse from a Metrics Point of View.
The Boundary Problem.
What to Measure as Reuse.
Applying the Counting Rules to Object-Oriented Software.
Common Questions About What to Count.
5. Measuring Reuse and Reuse Benefits.
Banker et al.: Reuse Metrics.
Frakes and Terry: Reuse Level.
Gaffney and Durek: Reuse Economics.
Balda and Gustafson: Estimation Using Modified COCOMO.
Barnes and Bollinger: Cost-Benefit Analysis.
Henderson-Sellers: Cost-Benefit Analysis.
Malan and Wentzel: Cost-Benefit Analysis with NPV.
Poulin and Caruso: Reuse Metrics and ROI.
Defense Information Systems Agency: Reuse Metrics and ROI.
6. Implementing a Metrics Program.
Management Structure for Software Reuse.
The Software Development Process with Reuse.
A Reuse Metric Starter Set.
Case Study: Applying Reuse Metrics on a Project.
Maintaining a Reuse Metrics Program.
7. Measuring Software Reusability.
A Taxonomy of Reusability Metrics.
A Common Model for Reusability.
8. Metrics for Reuse Libraries.
Reuse Library Efficiency.
9. Measuring Reuse Across the Life Cycle.
LOC Works as an Overall Indicator.
A Method to Quantify Total Life-Cycle Reuse.
10. Conclusions and Future Directions.
Where Do We Go from Here?
Appendix A. Reuse Metric Worksheets.
Appendix B. Reuse Metric Calculator.
Appendix C. Reuse Metric Glossary.
Appendix D. Acronyms.
Appendix E. Recommended Reading.
This book explains the most important issue in reuse measurement-defining what to count as reuse, how to count it, and why. Without a uniform understanding of what to count, all reports of reuse levels and benefits become automatically suspect. By addressing this issue, this book puts reuse measurement into a reliable and consistent context. Furthermore, it emphasizes a fundamental truth in software reuse:
Metrics make business decisions possible by quantifying and justifying the investments necessary to make reuse happen. Metrics put into numbers the significant contribution that reuse can make to an organization's software development competitive advantage and survival. Once an organization collects the data and shows the return on investment, the business decision will support the most cost-effective way of building software!
This book aims to give the reader the background necessary to implement and understand reuse metrics. Part of this understanding includes an introduction to major metric models. However, this book adds value to the original presentations of each model by explaining each model within a common framework and by helping to explain when to apply a particular model.
In Chapter 1, "Motivating Software Reuse through Metrics," we introduce the reader to reuse and to the importance of metrics, both in a reuse program and in evaluating experience reports published by others. Chapter 2, "A Reuse Metrics Overview," serves as an introduction to the issues surrounding reuse metrics: the types of metrics, economic models, return-on-investment analysis, and cost-benefit analysis. Chapter 3, "The Relative Costs of Developing with and for Reuse," presents quantitative data on the relative benefits and costs of reuse. This data, pulled from numerous sources and experiences, establishes the foundation for many of the economic models presented in this book.
Chapter 4, "Defining Reuse from a Metrics Point of View," contains perhaps the most important material in the field of reuse metrics; it explores the issue of what to count as reuse. This chapter reveals how the values reported in reuse metrics can range from realistic representations of reuse activity to the extremely misleading. Chapter 5, "Measuring Reuse and Reuse Benefits," pulls all the models together by summarizing the models, discussing the strengths of each, and recommending when to apply each one.
Chapter 6, "Implementing a Metrics Program," gives a recommended set of metrics for a reuse program. The chapter gives examples of how to use the metrics, as well as an extensive case study of how to apply the metrics on a project. Along with sample worksheets given in an appendix, this chapter can help readers apply the information in this book to their own reuse programs.
From there, the book provides a discussion of different approaches to software reusability metrics. Although these approaches have been successful and innovative in identifying attributes of reusability, Chapter 7, "Measuring Software Reusability," explains why a general reusability metric will probably never exist. Nonetheless, we can use the attributes of reusability in many useful ways, such as to provide guidance when developing components for use by many organizations.
Chapter 8, "Metrics for Reuse Libraries," looks at different metrics to consider when working with reuse libraries. Throughout the early history of software reuse, reuse library issues drove the research and technology in the field. This chapter explains the metrics that an organization will find useful when evaluating the success and use of a reuse library.
Finally, Chapter 9, "Measuring Reuse Across the Life Cycle, " discusses measuring software in all phases of the software life cycle. As with reuse metrics for code, much of the difficulty with measuring reuse in other phases comes from trying to determine what counts as reuse and from gathering the necessary data.
Although metrics aim to objectively quantify the activities of an organization, applying metrics often leads to difficulties that extend far beyond the quantifiable. Every organization will face these difficult questions when putting together a metrics suite for its reuse program. This book addresses these issues in a straightforward, common-sense way that organizations can immediately put to use.
Reuse rarely succeeds without management support. Fortunately, the Owego reuse program has always had managers and executives dedicated to reuse. I feel especially grateful for the professional and personnal support that I have received from Dr. Rodger Fritz and Dave Wales.
In many ways I have built on the hard work of others. To them I owe the experiences and much of the data that has gone into this book. This includes special thanks to Karen Parker, Reuse Coordinator of the Lockheed Martin CCTT program. However, I owe a debt to the entire former Reuse Technology Support Center (RTSC) and Corporate Reuse Council (CRC) of the IBM Corporation.
This book would not have happened without the excellent support of the publication team at Addison-Wesley. I would also like to thank the other reviewers for their valuable comments and suggestions. This book benefited from the insights of Kevin Benner, Allen Briggs, Dr. Scott Henninger, Andrew Rood, and Robin Rowe. I sincerely appreciate the work they put into their reviews.
Finally, I would like to thank my parents, family, and friends for encouraging me in everything I do.
Jeffrey S. Poulin
10 June 1996