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 first-order logic, we rely on theorem proving to determine match and mismatch. We give examples from our implementation of specification matching using the Larch Prover. Categories and Subject Descriptors: D.2.1 [Software Engineering]: Requirements/Specifications;
|
2217
|
J.: Introduction to Modern Information Retrieval
– Salton, Macgill
- 1983
|
|
1190
|
Object-oriented Software Construction
– Meyer
- 1988
|
|
348
|
A behavioral notion of subtyping
– Liskov, Wing
- 1994
|
|
274
|
Larch: Languages and Tools for Formal Specifications
– Guttag, Horning
- 1993
|
|
241
|
Formalizing architectural connection
– Allen, Garlan
- 1994
|
|
163
|
Typefull programming
– Cardelli
- 1989
|
|
148
|
Architectural mismatch: Why reuse is so hard
– Garlan, Allen, et al.
- 1995
|
|
139
|
An information retrieval approach for automatically constructing software libraries
– Maarek, Berry, et al.
- 1991
|
|
134
|
Designing an object-oriented programming language with behavioural subtyping
– America
- 1990
|
|
113
|
Forcing behavioral subtyping through specification inheritance
– Dhara, Leavens
- 1996
|
|
96
|
Signature Matching: A Tool for Using Software Libraries
– Zaremski, Wing
- 1995
|
|
93
|
The Inscape environment
– PERRY
- 1989
|
|
92
|
Data abstraction and hierarchy
– Liskov
- 1988
|
|
84
|
Storing and Retrieving Software Components: A Refinement Based System
– Mili, Mili, et al.
- 1994
|
|
82
|
A Framework for Source Code Search Using Program Patterns
– Paul, Prakash
- 1994
|
|
74
|
C.: Computing similarity in a reuse library system: an AI-based approach
– Ostertag, Hendler, et al.
|
|
63
|
Visualizing and querying software structures
– Consens, Mendelzon, et al.
- 1992
|
|
53
|
Reasoning about object-oriented programs that use subtypes
– Leavens, Weihl
- 1990
|
|
46
|
Software reuse through information retrieval
– Frakes, Nejmeh
- 1987
|
|
45
|
Interfaces, Protocols, and the Semi-Automatic Construction of Software
– Yellin, Strom
- 1994
|
|
32
|
Redmiles. Cognitive tools for locating and comprehending software objects for reuse
– Fischer, Henninger, et al.
- 1991
|
|
32
|
Verifying Object-Oriented Programs that Use Subtypes
– Leavens
- 1989
|
|
31
|
Specifications as search keys for software libraries
– Rollins, Wing
- 1991
|
|
28
|
Retrieving re-usable software components by polymorphic type
– Runciman, Toyn
- 1989
|
|
26
|
Classification of reusable modules
– Prieto-D'iaz
- 1989
|
|
25
|
VCR: A VDM-based software component retrieval tool
– Fischer, Kievernagel, et al.
- 1994
|
|
24
|
Retrieving library identifiers via equational matching of types
– Rittri
- 1990
|
|
24
|
Visualization of a document collection: The VIBE system
– Olsen, Korfhage, et al.
- 1993
|
|
19
|
On the retrieval of reusable software components
– Chen, Hennicker, et al.
- 1993
|
|
18
|
Inquire: Predicate-Based Use and Reuse
– Perry, Popovich
- 1993
|
|
18
|
Signature and Specification Matching
– Zaremski
- 1996
|
|
17
|
Type isomorphisms in a type assignment framework
– Cosmo
- 1992
|
|
16
|
Paris: A system for reusing partially interpreted schemas
– Katz, Richter
- 1987
|
|
15
|
Web-agent related research at the CMT
– Mauldin, Leavitt
- 1994
|
|
13
|
Thoughts on a larch/ML and a new application for LP
– Wing, Rollins, et al.
- 1993
|
|
13
|
A System for Reusing Partially Interpreted Schemas
– KATZ, RICHTER, et al.
- 1987
|
|
13
|
Software component search
– Goguen, Nguyen, et al.
- 1996
|
|
12
|
Automated synthesis of interface adapters for reusable classes
– Thatte
- 1994
|
|
10
|
The reuse system: Cataloging and retrieval of reusable software
– Arnold, Stepoway
- 1987
|
|
10
|
Subtyping for mutable types in object-oriented programming languages
– Dhara, Leavens
- 1992
|
|
10
|
Formal methods applied to reuse
– Jeng, Cheng
- 1992
|
|
7
|
Specification-Level Interoperability
– WILEDEN, WOLF, et al.
- 1991
|
|
5
|
Signature matching for Ada software reuse
– STRINGER-CALVERT
- 1994
|
|
4
|
Design Representation for Automating Software Component Reuse
– Penix, Alexander
- 1995
|
|
3
|
Object-Oriented Interoperability
– Konstantas
- 1993
|
|
3
|
Classification of reusable modules
– iaz, R
- 1989
|
|
3
|
Thatt'e: Automated Synthesis of Interface Adapters for Reusable Classes
– R
- 1994
|
|
2
|
Prieto-D ' iaz. Classification of reusable modules
– Rub'en
- 1989
|
|
1
|
Typeful programming. Report 45
– Cardelli
- 1989
|
|
1
|
Logic-based retrieval and reuse of software modules
– Katoh, Yoshida, et al.
- 1986
|