search menu icon-carat-right cmu-wordmark

A Reuse-Based Software Development Methodology

January 1992 Special Report
Kyo C. Kang (Pohang University of Science and Technology), Sholom G. Cohen, Robert R. Holibaugh, James M. Perry, A. Spencer Peterson

This 1992 paper outlines the direction and progress of reuse-based software development methodology.


Software Engineering Institute

CMU/SEI Report Number



Software has been reused in applications development ever since programming started. However, the reuse practices have mostly been ad hoc, and the potential benefits of reuse have never been fully realized. Most of the available software development methodologies do not explicitly identify reuse activities. The Application of Reusable Software Components Project of the Software Engineering Institute is developing a reuse-based software development methodology, and the current direction and the progress of the methodology work are discussed in this paper.

The methodology is based on the life cycle model in DoD-STD-2167A with refinement of each phase to identify reuse activities. The reuse activities that are common across the life cycle phases are identified as: 1) studying the problem and available solutions to the problem and developing a reuse plan or strategy, 2) identifying a solution structure for the problem following the reuse plan, 3) reconfiguring the solution structure to improve reuse at the next phase, 4) acquiring, instantiating, and/or modifying existing reusable components, 5) integrating the reused and any newly developed components into the products for the phase, and 6) evaluating the products. These activities are used as the base model for defining the specific activities at each phase of the life cycle.  

This methodology focuses more on identification and application of reusable resources than on construction of reusable resources, and some enhancements in the construction aspect might be necessary to make it more complete. 

This methodology has never been applied; it will be used in an application redevelopment experiment and then will be improved based on our experience.