Speci cation Matching of Software

Speciication 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 how one can be modiied to t the requirements of the other. In the context of object-oriented programming , it can help determine when one type is a be-havioral subtype of another. In the context of system interoperability, it can help determine whether the interfaces of two components mismatch. We use formal speciications to describe the behavior of software components, and hence, to determine whether two components match. We give precise deenitions of not just exact match, but more relevantly , various avors of relaxed match. These deeni-tions capture the notions of generalization, specialization , substitutability, subtyping, and interoperability of software components. We write our formal speciications 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 speciication matching using the Larch Prover. Speciication matching is a process of determining if two software components are related. It underlies understanding this seemingly diverse set of questions: Retrieval. How can I retrieve a component from a software library based on its semantics, rather than syntactic structure? 0 Reuse. How might I adapt a component from a software library to t the needs of a given sub-system? Substitution. When can I replace one software component with another without aaecting the observable behavior of the entire system? Subtype. When is an object of one type a subtype of another? Interoperation. Why is it so diicult to make two independently developed components work together? In retrieval, we search for all library components that satisfy a given query. In reuse, we adapt a component to t its environmental constraints, based on how well the component meets our requirements. In substitution, we expect the behavior of one component to be observably equivalent to the other's; a special case of substitution is when a subtype object is the component substituting for the supertype object. In interoperation, we want one component to interact properly with the other. Common to answering these questions is deciding when one component matches another, where \matches" generically stands for \sat-isses," \meets," \is equivalent to," or \interacts properly with." Common to these kinds of matches is the need to characterize the dynamic behavior, i.e., semantics , of …

[1]  Jeannette M. Wing,et al.  Thoughts on a Larch/ML and a New Application for LP , 1992, Larch.

[2]  Susan P. Arnold,et al.  The Reuse System: Cataloging and Retrieval of Reusable Software , 1988, IEEE Computer Society International Conference.

[3]  簡聰富,et al.  物件導向軟體之架構(Object-Oriented Software Construction)探討 , 1989 .

[4]  Charles Richter,et al.  PARIS: a system for reusing partially interpreted schemas , 1987, ICSE '87.

[5]  Gerhard Fischer,et al.  Cognitive tools for locating and comprehending software objects for reuse , 1991, [1991 Proceedings] 13th International Conference on Software Engineering.

[6]  William B. Frakes,et al.  Software reuse through information retrieval , 1986, SIGF.

[7]  Gail E. Kaiser,et al.  An Information Retrieval Approach For Automatically Constructing Software Libraries , 1991, IEEE Trans. Software Eng..

[8]  Roland Mittermeir,et al.  Storing and retrieving software components: a refinement based system , 1994, ICSE '94.

[9]  Roberto Di Cosmo,et al.  Type isomorphisms in a type-assignment framework , 1992, POPL '92.

[10]  Robert R. Korfhage,et al.  Visualization of a Document Collection: The VIBE System , 1993, Inf. Process. Manag..

[11]  Todd Leavens Gary Verifying object-oriented programs that use subtypes , 1989 .

[12]  Jeannette M. Wing,et al.  Signature matching: a tool for using software libraries , 1995, TSEM.

[13]  Jeannette M. Wing,et al.  Specifications as Search Keys for Software Libraries , 1991, ICLP.

[14]  D. Perry The Inscape Environment , 1989, 11th International Conference on Software Engineering.

[15]  Colin Runciman,et al.  Retrieving re-usable software components by polymorphic type , 1989, Journal of Functional Programming.

[16]  Gary T. Leavens,et al.  Reasoning about object-oriented programs that use subtypes , 1990, OOPSLA/ECOOP '90.

[17]  Gary T. Leavens,et al.  Subtyping for Mutable Types in Object-Oriented Programming Languages , 1992 .

[18]  Bernd Fischer,et al.  VCR: A VDM-based software component retrieval tool , 1994 .

[19]  James A. Hendler,et al.  Computing similarity in a reuse library system: an AI-based approach , 1992, TSEM.

[20]  Pierre America,et al.  Designing an Object-Oriented Programming Language with Behavioural Subtyping , 1990, REX Workshop.

[21]  Stephen J. Garland,et al.  Larch: Languages and Tools for Formal Specification , 1993, Texts and Monographs in Computer Science.

[22]  Michael McGill,et al.  Introduction to Modern Information Retrieval , 1983 .

[23]  Jeannette M. Wing,et al.  A behavioral notion of subtyping , 1994, TOPL.

[24]  Barbara Liskov,et al.  Data Abstraction and Hierarchy , 1987 .

[25]  Mikael Rittri Retrieving Library Identifiers via Equational Matching of Types , 1990, CADE.