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]  Michael McGill,et al.  Introduction to Modern Information Retrieval , 1983 .

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

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

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

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

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

[7]  Luca Cardelli,et al.  Typeful Programming , 1989, Formal Description of Programming Concepts.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

[36]  David Garlan,et al.  Formalizing Architectural Connection , 1994, ICSE.

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

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

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

[40]  J. Huisman The Netherlands , 1996, The Lancet.

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

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