Locating relevant examples for example-based software design
Scott Henninger · 1993
Software reuse has long been touted as an effective method for developing software products. But reuse technologies for software have not lived up to expectations. Among the barriers are high costs of building software repositories and the need for effective tools to support the location, comprehension, and modification of reusable software. Many of the proposed design-for-reuse and software classification methods involve labor-intensive techniques that cannot effectively take advantage of large stores of design artifacts that many development organizations have accumulated. Methods are needed to organize and use these valuable resources in a cost-effective manner. This dissertation describes an approach to designing tools that help software designers build and use large repositories of software examples. The approach couples re-engineering techniques to isolate reusable components with retrieval tools that need little structure to effectively support locating relevant components. Tools are also provided to help users modify the repository in the context of use. This approach was investigated through the design and evaluation of C scODEF scINDER, an intelligent retrieval tool, and P scEEL (Parse and Extract E scMACS L scISP), a tool for building repositories in the domain of E scMACS L scISP customizations for an E scMACS text editor. C scODEF scINDER supports the process of retrieving software objects when information needs are ill-defined and users are not familiar with the vocabulary of the repository through an innovative integration of retrieval by reformulation, a method for iteratively constructing queries, and spreading activation, a retrieval mechanism that finds information associatively related to a query. An evaluation of C scODEF scINDER and two other retrieval systems revealed that C scODEF scINDER effectively supported users in the process of locating E scMACS L scISP source code. C scODEF scINDER was more effective than the others when tasks were ill-defined or the vocabulary of the task did not match the vocabulary of objects in the repository. This makes the C scODEF scINDER approach ideal for early phases of the design process where designers may be interested in exploring potential design alternatives, and are unfamiliar with terminology previous designers used. The work has also showed that software artifacts can be stored in a locatable form without a costly up-front effort to classify or structure the code.