Problem Statement

It seems to be a commonly held view today that the real barriers to software reuse are not technical in nature, but rather are managerial, legal, social, and psychological. While there are barriers in these areas, there are still significant technical challenges associated with software reuse.

Two problems that have persisted in the reuse arena are those of easily identifying and incorporating reusable components into new applications. Significant resources have been expended in developing cataloging and library schemes, but effective software reuse requires more than a library of available components. One problem with the traditional approach to software reuse catalogs and libraries is that the user needs to have a fairly good idea of the types of components that he is looking for in order to construct appropriate queries. This poses a barrier to reuse because early in the lifecycle, when software reuse must first be considered (e.g., during system concept development and software requirements analysis), the developer may not have sufficient information about the application to get meaningful information out of a catalog or library.

The application developer faces another barrier to reuse when, after identifying candidate reusable components, he tries to adapt or tailor them to fit his requirements. Obviously, this is not a problem with low-level, black box components, but can become apparent when the application developer is working with higher level families of components. These higher level components may be at the subsystem or system level, and thus, have the potential for significantly higher payback than low-level, black box components. The developer faces a further challenge when trying to compose lower level components into higher level entities. Despite high quality documentation, it may still be difficult for the application developer to easily and correctly tailor and compose existing components into new applications.