A survey of software reuse repositories
---
paper_title: Storing and retrieving software components: a refinement based system

paper_content:

Software libraries are repositories which contain software components; as such, they represent a precious resource for the software engineer. As software libraries grow in size, it becomes increasingly difficult to maintain adequate precision and recall with informal retrieval algorithms. In this paper, we discuss the design and implementation of a storage and retrieval structure for software components that is based on formal specifications and on the refinement ordering between specifications.
---
paper_title: Toward automated retrieval for a software component repository

paper_content:

Retrieval methods for software component repository are important for software reuse. Many researchers have done a lot of work in this field in the past fifteen years. The paper discusses the improvement of two different aspects of retrieval methods for software components. One is profile matching and the other is signature matching. We show some experimental results assessing the effect of the improvements.
---
paper_title: Specification matching of software components

paper_content:

Abstract : Specification matching is a way to compare two software components. In the context of software reuse and library retrieval it can help determine whether one component can be substituted for another or bow one can be modified to fit the requirements of the other. In the context of object-oriented programming, it can help determine when one type is a behavioral subtype of another. In the context of system interoperability, it can help determine whether the interfaces of two components mismatch. We use formal specifications to describe the behavior of software components, and hence, to determine whether two components match. We give precise definitions of not just exact match, but more relevantly, various flavors of relaxed match. These definitions capture the notions of generalization, specialization, substitutability, subtyping, and interoperability of software components. We write our formal specifications of components in terms of pre-and post-condition predicates. Thus, we rely on theorem proving to determine match and mismatch. We give examples from our implementation of specification matching using the Larch Prover.
---
paper_title: Integrating Structured Databases into the Web: The MORE System

paper_content:

Abstract Administering large quantities of information will be an increasing problem as the World Wide Web grows in size and popularity. The MORE system is a meta-data based repository employing Mosaic and the Web as its sole user interface. We describe here our design and implementation experience in migrating a repository system onto the Web. A demonstration instance of MORE is accessible.
---
paper_title: Toward automated retrieval for a software component repository

paper_content:

Retrieval methods for software component repository are important for software reuse. Many researchers have done a lot of work in this field in the past fifteen years. The paper discusses the improvement of two different aspects of retrieval methods for software components. One is profile matching and the other is signature matching. We show some experimental results assessing the effect of the improvements.
---
paper_title: Implementing faceted classification for software reuse

paper_content:

Experience with the development, implementation, and deployment of reuse library technology is reported. The focus is on organizing software collections for reuse using faceted classifications. Briefly described are the successfully GTE Data Services' Asset Management Program and the steps taken at Contel for furthering reuse technology. The technology developed for reuse libraries is presented, followed by a description of how it was transferred. The experience described indicates that reuse library technology is available and transferable, and that it definitely has a positive financial impact on the organization implementing it. >
---
paper_title: Integrating Structured Databases into the Web: The MORE System

paper_content:

Abstract Administering large quantities of information will be an increasing problem as the World Wide Web grows in size and popularity. The MORE system is a meta-data based repository employing Mosaic and the Web as its sole user interface. We describe here our design and implementation experience in migrating a repository system onto the Web. A demonstration instance of MORE is accessible.
---
paper_title: Inquire: predicate-based use and reuse

paper_content:

There are four fundamental aspects of use and reuse in building systems from components: conceptualization, retrieval, selection and correct use. The most important barrier to use and reuse is that of conceptualization. The Inscape environment is a specification-based software development environment integrated by the constructive use of formal interface specifications. The purpose of the formal interface specifications and the semantic interconnections is to make explicit the invisible semantic dependencies that result in conventionally-built systems. The important ingredient provided by Inquire in conceptualization, retrieval, selection and use is the set of predicates that describe the semantics of the elements in the interface. These predicates define the abstractions that are germane to the module interface and describe the properties of data objects and the assumptions and results of operations in a module. Use and reuse of components is based on a component's ability to provide needed semantics at a particular point in a system. It is the purpose of Inquire, the browser and predicate-based search mechanism, to aid both the environment and the user in the search for the components that will provide the desired predicates that are required to build and evolve an implementation correctly. >
---
paper_title: A computer-aided prototyping system

paper_content:

A description is given of an approach to rapid prototyping that uses a specification language (the Prototype-System Description Language, PSDL) integrated with a set of software tools. including an execution support system, a rewrite system, a syntax-directed editor with graphics capabilities, a software base, a design database, and a design-management system. The prototyping language lets the designer use dataflow diagrams with nonprocedural control constraints as part of the specification of a hierarchically structured prototype. The resulting description is free from programming-level details, in contrast to prototypes constructed with a programming language. The discussion covers the language and method, rewrite subsystem, design manager, software base, and execution support. >
---
paper_title: Automated Interface for Retrieving Reusable Software Components

paper_content:

Abstract : The Computer Aided Prototyping System (CAPS) software base contains software components described by formal specifications written in the Prototype System Description Language (PSDL). One problem addressed by this thesis is to develop a retrieval mechanism for extracting components that match user-provided PSDL specifications. Another problem addressed is the integration of a retrieved component into a software prototype. The approach taken was to match specifications by comparing operations and parameter types to include indirect subtype relations. Integrating a selected software base component required generating mappings to account for different operation and parameter orderings and, for generic components, automatic instantiation. The result was a tool which implements automated assistance for finding reusable components in a large software repository. Methods were developed for parameter and operator mapping, parameter type matching, and ensuring instantiation of a generic was possible. Upon receipt of a PSDL specification query, these methods are employed to automate the retrieval of all matching components and the integration of the selected component into the software prototype. This has been fully implemented for operator components and partially implemented for type components. The retrieval mechanism, a potential processing bottleneck, is extremely accurate and reasonably fast. A query on 1,000 component repository retrieved all 50 possible matches in under 3 minutes. Software reuse, Component retrieval, Type matching, Generic instantiation, Syntactic matching, Type hierarchy, Prototype system description language.
---
paper_title: Using English to Retrieve Software

paper_content:

This article describes ROSA, a software reuse system based on the processing of the natural language descriptions of software artifacts. Lexical, syntactic, and semantic analysis of software descriptions is performed to automatically extract both verbal and nominal phrases from descriptions and to use this information to create frame-based indexing units for software components. Retrieval similarity measures provide good retrieval effectiveness by supporting semantic matching and processing of lexical relationships between terms. Some results from an experiment evaluating retrieval effectiveness are discussed.
---
paper_title: CASE tool for reusable software component storage and retrieval in rapid prototyping

paper_content:

Abstract Rapid prototyping has become an accepted software development method to construct and adapt software, validate and refine requirements, and check the consistency of proposed designs rapidly. A computer-aided software engineering (CASE) tool is described that is used in conjunction with the Computer Aided Prototyping System (CAPS), which will retrieve reusable components from a software base using a given specification. The specification language used is the Prototype System Description Language (PSDL). Reusable Ada components will be stored in an object-oriented database management system with an appropriate PSDL specification. Each component's PSDL specification will be normalized to facilitate search retrieval. The database architecture, specification normalization, and matching techniques are described.
---
paper_title: A metaprogramming method and its economic justification

paper_content:

Metaprogramming, defined as creating application programs by writing programs that produce programs, is presented as the basis of a method for reducing software costs and improving software quality. The method starts with a rapid prototyping phase in which selected representative parts of the application are prototyped; this is followed by a tooling up phase, during which the metaprogramming occurs. The final phase is the production of the application programs using the software tools and techniques of the metaprogramming phase. The author summarizes the experience of two projects that support the assertion that metaprogramming is an efficient way to produce programs, since these projects used metaprogramming in their development. An economic theory which justifies this approach is outlined. It is shown how to do a cost/benefit analysis of the method.
---
paper_title: An Architectural Model for Software Component Search.

paper_content:

Abstract : An important problem in software development process is to make better use of software libraries by improving the search and retrieval process, that is, by making it easier to find the few components you may want among the many you do not want. The problem with the current production approaches is that they do not consider the behavior of components as a part of the retrieval process. As the result, it is impossible to obtain high recall and precision. In contrast, research approaches using syntactic and specification can be used to improve upon recall and precision. However, these approaches require a lot more computational effort. Without a library structure to support a retrieval process, they would be impractical. This dissertation concentrates on two major themes. First, how to provide efficient and effective retrieval capabilities and an interactive friendly interface to support users to search for software components. Second, how to construct a library that can assist the librarian with cataloging software components and help to facilitate the search process. The first prototype has been implemented to verify the proposed ideas. Several studies have been performed to measure the system performance. The result confirms and strongly supports the proposed ideas.
---
paper_title: Toward automated retrieval for a software component repository

paper_content:

Retrieval methods for software component repository are important for software reuse. Many researchers have done a lot of work in this field in the past fifteen years. The paper discusses the improvement of two different aspects of retrieval methods for software components. One is profile matching and the other is signature matching. We show some experimental results assessing the effect of the improvements.
---
paper_title: Toward automated retrieval for a software component repository

paper_content:

Retrieval methods for software component repository are important for software reuse. Many researchers have done a lot of work in this field in the past fifteen years. The paper discusses the improvement of two different aspects of retrieval methods for software components. One is profile matching and the other is signature matching. We show some experimental results assessing the effect of the improvements.
---

Title: A Survey of Software Reuse Repositories

Section 1: Introduction
Description 1: Provide background information on software reuse repositories, their purpose, and importance in software engineering.

Section 2: Library Mechanism
Description 2: Describe the critical capabilities of reuse libraries, including automated support, classification schemes, and system documentation.

Section 3: Library Operation
Description 3: Discuss the operational aspects of reuse libraries, including domain analysis activities, metrics collection, reuse engineering support, and user support services.

Section 4: Commercial Repositories
Description 4: Detail specific examples of commercial software reuse repositories, their features, and functionalities.

Section 5: Comparison
Description 5: Compare the features of commercial and government-supported reusable component repositories and discuss the trends.

Section 6: Conclusion
Description 6: Summarize the trends in software component repositories and their future prospects.