The Adaptive Approach to Software Reuse

The most common form of reuse in practice is the sharing of design and code between similar projects. Most organizations performing software development build new applications using previous developments as a starting point. In some cases, such as prototyping or modification, this adaptive approach is planned, and reuse of software is a natural occurrence. In others, the ability to reuse software from one development to the next is assumed, but often not fully realized due to inconsistencies between current and previous projects.

In adapting previous designs to new requirements, developers must be aware that these new requirements will mean significant modification to the existing application. If the application was not built to support subsequent modification and reuse, the adaptation may be as costly as a complete redesign. This was the lesson learned from the P-7A project, and it applies in software development, as well.

\begin{figure}\vspace{11in}
\end{figure}

A process model for adaptive software reuse (Figure 1-a) shows different paths that this approach may support. For example, a developer may wish to modify an existing software system to incorporate new requirements. The software taken from the original system is ``reused software,'' in the sense that it has come from a previous development. Similarly, when porting an existing system to a new platform, developers reuse the old software, making necessary changes to achieve compatibility. While the reuse of software not explicitly designed for reuse has been called ``software scanvenging'' such reuse is very common [Trac 90].

The adaptive approach can be systematized for process improvement by:

While the adaptive process can be ad hoc, these steps will improve the value of existing software and increase the ability to reuse that software.