Specification matching of software components

Specification matching is a way to compare two software components, based on descriptions of the component's 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 postconditions 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.

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

[2]  Daniel M. Yellin,et al.  Interfaces, protocols, and the semi-automatic construction of software adaptors , 1994, OOPSLA 1994.

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

[4]  R. Prieto-Diaz,et al.  Classification of reusable modules , 1989 .

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

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

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

[8]  Jack C. Wileden,et al.  Specification-level interoperability , 1991, CACM.

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

[10]  Dimitri Konstantas Object Oriented Interoperability , 1993, ECOOP.

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

[12]  David Garlan,et al.  Architectural Mismatch: Why Reuse Is So Hard , 1995, IEEE Softw..

[13]  Bertrand Meyer,et al.  Object-Oriented Software Construction, 2nd Edition , 1997 .

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

[15]  A. Mili,et al.  Storing and retrieving software components: a refinement based system , 1994, Proceedings of 16th International Conference on Software Engineering.

[16]  Alberto O. Mendelzon,et al.  Visualizing and querying software structures , 1992, International Conference on Software Engineering.

[17]  Atul Prakash,et al.  A Framework for Source Code Search Using Program Patterns , 1994, IEEE Trans. Software Eng..

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

[19]  Dewayne E. Perry The inscape environment , 1989, ICSE '89.

[20]  Stephen J. Garland,et al.  A Guide to LP, The Larch Prover , 1991 .

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

[22]  Satish R. Thatte,et al.  Automated synthesis of interface adapters for reusable classes , 1994, POPL '94.

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

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

[25]  Jeannette M. Wing,et al.  Signature and specification matching , 1996 .

[26]  Gary T. Leavens,et al.  Forcing behavioral subtyping through specification inheritance , 1996, Proceedings of IEEE 18th International Conference on Software Engineering.

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

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

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

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

[31]  Matthias Jarke,et al.  On the retrieval of reusable software components , 1993, [1993] Proceedings Advances in Software Reuse.

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

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

[34]  Steven S. Popovich,et al.  Inquire: predicate-based use and reuse , 1993, Proceedings of 8th Knowledge-Based Software Engineering Conference.

[35]  Luqi,et al.  Software component search , 1996, J. Syst. Integr..

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

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

[38]  David Garlan,et al.  Formalizing architectural connection , 1994, Proceedings of 16th International Conference on Software Engineering.

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