Make software reuse a profitable reality in your organization.
In Managing Software Reuse, expert Wayne C. Lim tackles the strategic planning, economic, organizational, and metric issues that limit reuse in so many companies. He covers the entire lifecycle, offering "best practices" strategies that really work, and sharp insights into the organizational issues that make or break reuse projects.
Managing Software Reuse shows exactly how to:
If you want proven strategies for implementing reuse in every stage of the software development cycle, this book is required reading.
1. The Software Development Crunch.
Improving Software Productivity and Quality. References.
Basic Definitions. Reusable Assets. A Framework for Reuse. References.
The Industrial Revolution and the Software Development. Process-An Analogy. The Evolution of Reuse. References.
The Upstream Value of Reuse. Trends Which Enable Software Reuse. References.
Overview. Industry Reuse Programs. Government Reuse Programs. Other Reuse Efforts. References.
A Reuse Adoption Strategy. Summary. References. Appendix 6-A: A Survey of Reuse Adoption Strategies. References.
Responsibilities of a Corporate Reuse Program.Other Issues. References.
Reuse Potential and Aptitude Model. Reuse Potential. Reuse Aptitude. Case Studies. Summary. Note. References. Appendix 8-A: A Survey of Prior Research on Reuse Success Factors. References.
Criteria for Selecting Pilot Projects. Summary. References.
Reuse Benefits. Economic Benefits. Reuse Costs. Economic Costs of Reuse. Economic Savings from Reuse. Economic Analysis for Future Assets. Summary. References.
The Producer and the Consumer: An Important Distinction. Net Present Value. Internal Rate of Return Method. A Process for Conducting a Reuse Return-On-Investment Analysis. Summary. Reference. For Further Reading. Appendix 12-A: A Survey of Reuse Economic Models. Introduction. Note. References.
Levels of Reuse. Competitive Software Engineering-A Process for Deciding on a Software Development Strategy. Industry Analysis. Company and Organization Analysis. Business and Product Strategy. Competitive Software Engineering Strategy Formulation. Summary. References. Appendix 13-A: A Survey of Reuse and Maturity Models. References.
Organizational Reengineering for Reuse Assessment (ORRA). The Assessment Process. Reuse Needs Analysis. Reuse Gap Analysis. Reuse Potential. Reuse Metrics. Baselining and Analyzing the Process for Reengineering. Cost/Benefit Analysis. Product Software Quality Factors. Frakes's Reuse Failure Modes. Summary. References. Appendix 14-A: A Survey of Reuse Assessments. Summary. References.
Creating a Vision and Mission Statement. Examples of Reuse Vision and Mission Statements. Summary. References.
Introduction. Creating an Effective Reuse Environment. Roles and Responsibilities. Motivation and Incentives. Reuse Training and Education. Summary. References.
Organizational Structures for Reuse: A Continuum. Reuse Functional Organization. Case Studies of Reuse Functional Organizations. Reuse Project Organization. Case Study of a Reuse Project Organization. Case Study of a Reuse Hybrid Organization. Reuse Matrix Organization. Case Studies of Reuse Matrix Organizations. Test and Measurement Group of the Hewlett-Packard Company. The Horizontal Reuse Organization. Summary. Acknowledgments. References. Appendix 17-A: A Survey of Prior Research on Reuse Organizational Structures.
Introduction. The Role of Finance and Accounting in Software Reuse. Finance. Accounting. Finance and Accounting Issues by Scope of Reuse. Summary. References.
Introduction. Goals of Chapter. The Rationale for Reuse Metrics. Goal-Question-Metric Paradigm. The Dashboard of Metrics. Key Considerations in Measuring Software Reuse. Reuse Metrics. A Process for Identifying an Appropriate Set of Metrics. Recommended Minimal Set of Reuse Metrics. Reuse Metrics by Scope of Reuse. Summary. References. For Further Reading. Appendix 19-A: A Survey of Reuse Metrics. References.
Reuse Marketing Defined. The Importance of Reuse Marketing. The Market. The Product. The Price. Distribution. Promotion. Marketing Issues by Scope of Reuse. Summary. References.
Introduction. Definitions. An Overview of Legal and Contractual Issues. Legal Issues. Implications of Intellectual Property for Software Reuse Activities. Contractual Issues. Conclusion. Summary. References. For Further Reading.
Analogy of Manufacturing to Software Development. Manufacturing Strategy. Manufacturing Concepts.The Software Factory. Summary. References.
Definitions. Producing, Brokering, and Consuming Assets. Tradeoffs in Software Reuse. Managing the Reuse Infrastructure. Producing Reusable Assets. Brokering Reusable Assets. Consuming Reusable Assets. Summary. References. Appendix 23-A: A Survey of Reuse Processes. Appendix 23-B: A Survey of Domain Analysis Approaches. Appendix 23-C: A Survey of Reusability Guidelines.
Reuse Library. Application Templates. CASE. Generators. Language-Based Systems. Object-Oriented. Parameterized Systems. Software Architectures. Software Schemas. Summary. References. Appendix 24-A: A Survey of Information Elements (Prologues). Appendix 24-B: A Survey of Certification Levels.
Maturation Transaction Model. Receptivity and Commitment. Dynamics of Organizational Change. Change Management. Technology Transfer Group of the Workshop on Software Reuse. Approaches for Implementation. Summary. References.
Monitoring. Continuous Improvement. Learning and Innovation. Summary. References.
Introduction. Where We Are Now. Where We Are Headed. The Future of Reuse. Summary. References. For Further Reading. Appendix A: A Reuse Infrastructure and Implementation Plan Outline. Software Reuse Infrastructure and Implementation Plan.
The importance and prevalence of software has increased significantly in nearly every aspect of everyday life, from automation of offices to control of electronics at home. Both consumer and industrial products increasingly depend upon software for controlling and monitoring functions. This importance has naturally driven demand-and expenditures for complex, quality software. Its demand continues to grow at rates which outpace current software production capacity. Software expenditures in 1985 were estimated to be at about $70 billion in the U.S. and $125 billion worldwide. Such expenditures in 1990 were estimated to be $125 billion in the U.S. and $250 billion globally 1. As a result of such a crisis, engineers have been challenged to develop ways of increasing productivity without compromising quality. One very promising solution is the reuse of previously developed software.
The explosive growth in demand for software dictates that it can no longer be developed as a throw-away product. Quality software reflects many person-hours of development, testing, and debugging and as such, should no longer be viewed as an expense but rather treated as an investment. Active use of reusable software is recognized as one of the most promising avenues for preserving and utilizing the value inherent in software.
The goal of this book is to provide the practitioner with a handbook for implementing software reuse within an organization or across multiple organizations. The book offers an integrated, yet flexible, reuse adoption and institutionalization model which encompasses the managerial, organizational, and economic aspects of software reuse, and describes the various tools and techniques used in its implementation. It is not meant as a technical manual but rather, a managerial handbook for both managers and engineering professionals who wish to gain an understanding of the non-technical areas in reuse. Its purpose is not only to provide its readers with an overview of reuse issues but also to help them identify important factors to consider in deciding and embarking on reuse and to discuss ways of managing, organizing, and marketing a reuse program. Whenever possible, real-life examples are used to illustrate the concepts.
The book is organized into nine major sections.
The first section discusses the supply and demand predicament in software development; describes the sources from which productivity and quality may come; defines the terms which will be used in this book; examines how the concept of reuse has evolved; surveys how reuse has been utilized in various industries; and finally, describes a reuse adoption and institutionalization model.
The second section covers issues in initiating reuse. Topics discussed include establishing the role of a corporate reuse program; identifying reuse potential at the organizational level; and selecting a reuse pilot project among candidates.
The third section focuses on investigating whether reuse is appropriate for the targeted organization. It describes how to conduct a cost-benefit analysis; how to decide on whether to pursue reuse as a strategy; and a description of various reuse assessments used to determine the suitability of an organization for reuse.
The fourth section spotlights planning for software reuse. This entails creating a reuse vision; determining the necessary staff members, training and incentives; designing the appropriate organizational structure; handling funding and accounting issues as they relate to reuse; marketing reusable software internally in the organization; managing the legal and contractual issues in reuse; and understanding manufacturing concepts as they relate to reuse.
The fifth section discusses the processes and tools used in implementing reuse. This includes processes for producing, brokering, and consuming assets and tools such as reuse repositories.
The sixth section discusses implementation strategies for reuse. Areas explored include change management and technology transfer.
The seventh section describes the phase after implementation: monitoring and improving the reuse program.
The eighth section covers future trends in software reuse. This includes discussions on the rate of technology adoption and the factors necessary for accelerating the assimilation of reuse.
The final section surveys reuse efforts both in industry and academia.
In order to provide readers with a comprehensive exposure to the full body of reuse research, we include surveys of other practitioners' and researchers' works in appendices at the end of each chapter when appropriate. Specifically, the areas surveyed include:
1) adoption models, 2) success factors, 3) economic models, 4) maturity models, 5) assessments, 6) metrics, 7) processes, 8) domain analyses, 9) guidelines, 10) certification levels, and 11) prologues. Readers may wish to skim or skip these sections at first and return to them later for further study.
We begin this section with a discussion of systemic industry problems and challenges confronting software developers, followed by a brief examination of the possible solutions for meeting those challenges. This will be followed by the definition and discussion of the reuse terms used throughout the book and an investigation into the evolution of the software reuse concept. The section closes with an overview of current applications of reuse in industry.
1 Boehm, Barry, Understanding and Controlling Software Costs, IEEE Transactions on Software Engineering, vol. 14, no. 10, October 1988.