Results 1 - 10
of
23
Specification Matching of Software Components
- ACM Transactions on Software Engineering and Methodology
, 1996
"... Specification matching is a way to compare two software components based on descriptions of the components' behaviors. In the context of software reuse and library retrieval, it can help determine whether one component can be substituted for another or how one can be modified to fit the requireme ..."
Abstract
-
Cited by 252 (4 self)
- Add to MetaCart
Specification matching is a way to compare two software components based on descriptions of the components' behaviors. In the context of software reuse and library retrieval, it can help determine whether one component can be substituted for another or how 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. 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, and substitutability of software components. Since our formal specifications are pre- and post-conditions written as predicates in firstorder logic, we rely on theorem proving to determine match and mismatch. We give examples from our impleme...
Signature Matching: a Tool for Using Software Libraries
- ACM Transactions on Software Engineering and Methodology
, 1995
"... this document are those of the authors and should not be interpreted as necessarily representing the official policies or endorsements, either expressed or implied, of Wright Laboratory or the U. S. Government. The U. S. Government is authorized to reproduce and distribute reprints for Government pu ..."
Abstract
-
Cited by 106 (2 self)
- Add to MetaCart
this document are those of the authors and should not be interpreted as necessarily representing the official policies or endorsements, either expressed or implied, of Wright Laboratory or the U. S. Government. The U. S. Government is authorized to reproduce and distribute reprints for Government purposes notwithstanding any copyright notation thereon. This manuscript is submitted for publication with the understanding that the U. S. Government is authorized to reproduce and distribute reprints for Governmental purposes. Authors' address: School of Computer Science, Carnegie Mellon University, 5000 Forbes Avenue, Pittsburgh, PA 15213; email: amy;wing@cs.cmu.edu. To appear, ACM Transactions on Software Engineering and Methodology (TOSEM), April 1995. Permission to copy without fee all or part of this material is granted provided that the copies are not made or distributed for direct commercial advantage, the ACM copyright notice and the title of the publication and its date appear, and notice is given that copying is by permission of the Association for Computing Machinery. To copy otherwise, or to republish, requires a fee and/or specific permission. c fl 1995 ACM xxxx-xxxx/xx/xxxx-xxxx $xx.xx 2 \Delta A. Moormann Zaremski and J. M. Wing ware libraries successfully, especially as libraries increase in size, is the availability of good tools to organize, navigate through, and retrieve from libraries. Currently many libraries use the file system for their only organization (directories and files) and file system and editor commands for navigation and retrieval. For example, the local ML library is organized with categories of components as directories (e.g., local/lib/Container/, local/lib/Threads/); one uses ls and
Signature Matching: A Key to Reuse
, 1993
"... Software reuse is only effective if it is easier to locate (and appropriately modify) a reusable component than to write it from scratch. We present signature matching as a method for achieving this goal by using signature information easily derived from the component. We consider two kinds of softw ..."
Abstract
-
Cited by 32 (2 self)
- Add to MetaCart
Software reuse is only effective if it is easier to locate (and appropriately modify) a reusable component than to write it from scratch. We present signature matching as a method for achieving this goal by using signature information easily derived from the component. We consider two kinds of software components, functions and modules, and hence two kinds of matching, function matching and module matching. The signature of a function is simply its type; the signature of a module is a multiset of user-defined types and a multiset of function signatures. For both functions and modules, we consider not just exact match, but also various flavors of relaxed match. We briefly describe an experimental facility written in Standard ML for performing signature matching over a library of ML functions. This research was sponsored by the Avionics Laboratory, Wright Research and Development Center, Aeronautical Systems Division (AFSC), U.S. Air Force, Wright-Patterson AFB, Ohio 45433-6543 under Con...
Aster: A Framework for Sound Customization of Distributed Runtime Systems
- In Proceedings of the Sixteenth IEEE International Conference on Distributed Computing Systems
, 1996
"... This paper introduces the Aster distributed configuration -based programming system that is aimed at easing the development of emerging distributed applications having quality of service requirements. Our approach is based on high-level customization: given the specification of application requireme ..."
Abstract
-
Cited by 30 (9 self)
- Add to MetaCart
This paper introduces the Aster distributed configuration -based programming system that is aimed at easing the development of emerging distributed applications having quality of service requirements. Our approach is based on high-level customization: given the specification of application requirements using the Aster interconnection language, a distributed runtime system, customized for meeting these requirements is built. So as to make the customization process sound, we propose a formal method that allows to reason about specification matching of a customized distributed runtime system with the application's requirements. 1 Introduction Progress in processor and network technology leads to an evolution of distributed computing systems: they are now eligible for supporting a wide class of applications, ranging from online multimedia services to massively parallel applications. However, for this use of computing systems to become effective, open issues relevant to the programming sys...
Concept-Based Component Retrieval
- WORKING NOTES OF THE IJCAI-95 WORKSHOP: FORMAL APPROACHES TO THE REUSE OF PLANS, PROOFS, AND PROGRAMS
, 1995
"... Reusable software components from a library are individually indexed with a set of keywords. To retrieve components the user incrementally specifies a set of keywords that the searched components are required to have. After each step the selected components and the exact set of remaining significant ..."
Abstract
-
Cited by 26 (2 self)
- Add to MetaCart
Reusable software components from a library are individually indexed with a set of keywords. To retrieve components the user incrementally specifies a set of keywords that the searched components are required to have. After each step the selected components and the exact set of remaining significant keywords needed to refine the query further are presented to the user. The process ensures that at least one component is found and the user cannot specify conflicting keywords. The efficient computation of retrieved components and significant keywords is based on the precalculated concepts of the library, which are natural pairs of component and keyword sets. The concepts form a lattice of super- and subconcepts and are obtained by formal concept analysis of the relation over components and keywords. The two main theorems state how to calculate the result of a query and the remaining significant keywords using the concept lattice. An implementation of the proposed approach shows that the u...
Achieving Middleware Customization in a Configuration-Based Development Environment: Experience with the Aster Prototype
- In Proceedings of ICCDS ‘98
, 1998
"... Middleware configurations provide a means to make accessible a wide range of applications on a (possibly large) distributed heterogeneous platform. However, as new application areas appear, middleware configurations will have to evolve to accommodate those new applications' needs. This paper discuss ..."
Abstract
-
Cited by 23 (5 self)
- Add to MetaCart
Middleware configurations provide a means to make accessible a wide range of applications on a (possibly large) distributed heterogeneous platform. However, as new application areas appear, middleware configurations will have to evolve to accommodate those new applications' needs. This paper discusses the implementation of the Aster development environment that realizes automatic configuration of middleware which are customized to the applications' needs from the standpoint of provided non-functional properties (e.g., fault-tolerance, security). The environment relies on two main tools. The first tool retrieves the software constituting the middleware that meets application requirements, by means of software specification matching. The second tool implements the interfacing of the application's software components with the customized middleware. Interfacing is discussed in the framework of the CORBA environment, hence addressing construction of customized middleware on top of an ORB, po...
VCR: A VDM-based software component retrieval tool
, 1994
"... We present a tool which allows implicit VDM specifications to be used as search keys for the retrieval of software components. A preprocessing phase utilizes signature matching to filter promising candidates out of a component library. The actual specification matching phase builds proof obligations ..."
Abstract
-
Cited by 23 (0 self)
- Add to MetaCart
We present a tool which allows implicit VDM specifications to be used as search keys for the retrieval of software components. A preprocessing phase utilizes signature matching to filter promising candidates out of a component library. The actual specification matching phase builds proof obligations from the specifications of key and candidates and feeds them into a theorem prover. Validated obligations denote matching components. First experiments clearly demonstrate the feasibility of this approach. We thus get a high-precision retrieval tool which helps programmers in locating components which exactly match their needs. Keywords: formal methods, software component retrieval, signature matching, specification matching, theorem proving, model searching. 1 Introduction Effective software component retrieval methods play a key role in reuse. Most methods grew out of classical information retrieval (e. g. [13, 10]) but recently semantic-based methods have gained more attention. As oppo...
Deduction-Based Software Component Retrieval
- In Proceedings of IJCAI '95 Workshop on Formal Approaches to the Reuse of Plans, Proofs, and Programs
, 1994
"... We present a retrieval approach which allows pre- and postconditions of software components to be used as search keys. A component qualifies, if it has a weaker precondition and a stronger postcondition than the search key. In contrast to previous work, our tool NORA/HAMMR allows for configurable ch ..."
Abstract
-
Cited by 22 (8 self)
- Add to MetaCart
We present a retrieval approach which allows pre- and postconditions of software components to be used as search keys. A component qualifies, if it has a weaker precondition and a stronger postcondition than the search key. In contrast to previous work, our tool NORA/HAMMR allows for configurable chains of deduction-based filters such as signature matchers, model checkers -- which will be our main subject here --, and resolution provers; the latter can be run with dynamically adjusted axiom sets and inference rules. Hence, instead of feeding the search key and all components ' specifications to a theorem prover in a batch-like fashion, NORA/HAMMR allows for incremental narrowing of the search space along the filter chain, and interactive inspection of intermediate results.
Retrieving Library Functions By Unifying Types Modulo Linear Isomorphism
, 1992
"... An improved method to retrieve a library function via its Hindley/Milner type is described. Previous retrieval systems have identified types that are isomorphic in any Cartesian closed category (CCC), and have retrieved library functions of types that are either isomorphic to the query, or have ..."
Abstract
-
Cited by 18 (0 self)
- Add to MetaCart
An improved method to retrieve a library function via its Hindley/Milner type is described. Previous retrieval systems have identified types that are isomorphic in any Cartesian closed category (CCC), and have retrieved library functions of types that are either isomorphic to the query, or have instances that are. Sometimes it is useful to instantiate the query too, which requires unification modulo isomorphism. Although unifiability modulo CCCisomorphism is undecidable, it is decidable modulo linear isomorphism, that is, isomorphism in any symmetric monoidal closed (SMC) category. We argue that the linear isomorphism should retrieve library functions almost as well as CCC-isomorphism, and we report experiments with such retrieval from the Lazy ML library. When unification is used, the system retrieves too many functions, but sorting by the sizes of the unifiers tends to place the most relevant functions first. R'esum'e Ce papier pr'esente une nouvelle m'ethode pour la re...
Inquire: Predicate-Based Use and Reuse
- In Proceedings of the 8th Knowledge-Based Software Engineering Conference
, 1993
"... 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, initially at least, is that of conceptualization. The Inscape Environment is a specification-based software d ..."
Abstract
-
Cited by 18 (2 self)
- Add to MetaCart
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, initially at least, is that of conceptualization. The Inscape Environment is a specification-based software development environment (SDE) integrated by the constructive use of formal interface specifications. The purpose of the formal interface specifications and the semantic interconnections (created and maintained as software is built and evolved) 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 i...

