A Classification System for Software Reuse

Thumbnail Image


PhD_92-18.pdf (7.48 MB)
No. of downloads: 515

Publication or External Link






Software reuse has been claimed to be one of the most promising approaches to enhance programmer productivity and software quality. One of the problems to be addressed to achieve high software reuse is organizing databases of software experience, in which information on software products and processes is stored and organized to enhance reuse.

This dissertation presents a system to define and construct such databases called the Extensible Description Formalism (EDF). The formalism is a generalization of the faceted index approach to classification in the sense that it provides facilities to define facets, terms, and object descriptions. Unlike the faceted approach, objects in EDF can be described in terms of different sets of facets and in terms of other object descriptions. This allows software library to contain different classes of objects, to represent various types of relations among these classes, and to refine classification schemes by adding more detail supporting a growing application domain and reducing the impact of initial domain analysis.

EDF incorporates a similarity-based retrieval mechanism that helps reuser locate candidate reuse objects that best match the specifications of a target object. Similarity between two objects is qualified by a non-negative magnitude called similarity distance, which represents the estimated amount of effort required to construct one given the other. Because of this, similarity distances are not necessarily symmetric.

EDF was designed to overcome the limitations of software reuse library systems based on controlled vocabularies. In particular, EDF provides a specification language based on concepts of set theory capable of representing a rich variety of software and non-software domains; it provides a retrieval mechanism based on exact matches and similarity metrics which can be customized to specific domains; and it provides a mechanism for defining and ensuring certain semantic relations between attribute values. A prototype application of this system has been implemented in ANSI C.