Signature and specification matching

Large libraries of software components hold great potential as a resource for software engineers, but to utilize them fully, we need to be able: (1) to locate components in the library; (2) to organize the library in a way that facilitates browsing and improves e ciency of retrieval; and (3) to compare the description of a library component to the description of what we want. A key requirement in all of these problems is to be able to compare two software components to see whether they match. In this dissertation, we consider two di erent kinds of semantic descriptions of components to determine whether components match: signatures (type information) and speci cations (behavioral information). Semantic descriptions o er advantages over either textual descriptions, such as variable names, or structural descriptions, such as control ow graphs. Using semantic information focuses on what the components do rather than how they do it. Signatures and speci cations are natural ways of describing software components and have well-understood properties, such as type equivalence and logical relations between formal speci cations, that enable us both to de ne matches precisely and to automate the match. This dissertation makes the following contributions: Foundational. Within a general, highly modular, and extensible framework, we de ne matching for two kinds of semantic information (signatures and speci cations) and two granularities of components (functions and modules). Each kind of matching has a generic form, within which all of the matches are related and may, in some cases, be composed. The orthogonality of the matches allows us to de ne match on modules independently of the particular match used on functions in the modules. Applications. We show how the de nitions of matching can be applied to the problems of retrieval from libraries, indexing libraries, and reuse of components. We demonstrate the various signature and speci cation matches with examples of typical uses in each application. Engineering. We describe our implementations of function and module signature match, function speci cation match, function signature-based indexing, and function signaturebased retrieval. These implementations demonstrate the feasibility of our approach and allow us to illustrate the applications with results from a moderately-sized component library.

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

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

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

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

[5]  Jeffrey S. Poulin,et al.  Melding structured abstracts and World Wide Web for retrieval of reusable components , 1995, SSR '95.

[6]  B. Cheng,et al.  Specification matching for software reuse: a foundation , 1995, SSR '95.

[7]  Jeannette M. Wing,et al.  Specification matching of software components , 1995, TSEM.

[8]  Jeffrey S. Poulin,et al.  Integrated support for software reuse in Computer-Aided Software Engineering (CASE) , 1993, SOEN.

[9]  W. W. Agresti,et al.  The Minnowbrook workshop on software reuse: a summary report , 1988 .

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

[11]  L.S. Sorumgard,et al.  Experiences from application of a faceted classification scheme , 1993, [1993] Proceedings Advances in Software Reuse.

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

[13]  Gregor Snelting,et al.  Inference-Based Support for Programming in the Large , 1991, ESEC.

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

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

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

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

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

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

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

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

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

[23]  Andy Podgurski,et al.  Behavior sampling: a technique for automated retrieval of reusable components , 1992, International Conference on Software Engineering.

[24]  Mikael Rittri,et al.  Using types as search keys in function libraries , 1989, Journal of Functional Programming.

[25]  David Berry The Edinburgh SML Library , 1991 .

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

[27]  Keith E. Gorlen An object‐oriented class library for C++ programs , 1987, Softw. Pract. Exp..

[28]  Colin Runciman,et al.  Retrieving Reusable Software Components by Polymorphic Type , 1991, J. Funct. Program..

[29]  Ali Mili,et al.  Reusing Software: Issues and Research Directions , 1995, IEEE Trans. Software Eng..

[30]  Stephen J. Garland,et al.  Debugging Larch Shared Language Specifications , 1990, IEEE Trans. Software Eng..

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

[32]  Yuk Fung Chang,et al.  An Information Retrieval System for Reusable Software , 1993, Inf. Process. Manag..

[33]  Robert J. Hall,et al.  Generalized behavior-based retrieval , 1993, ICSE '93.

[34]  Robin Milner,et al.  A Theory of Type Polymorphism in Programming , 1978, J. Comput. Syst. Sci..

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

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

[37]  Angela Lo Surdo,et al.  An integrated approach to software reuse practice , 1995, SSR '95.

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

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

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

[41]  Maria Grazia Fugini,et al.  Retrieval of reusable components in a development information system , 1993, [1993] Proceedings Advances in Software Reuse.

[42]  Yoelle Maarek,et al.  Integrating information retrieval and domain specific approaches for browsing and retrieval in object-oriented class libraries , 1991, OOPSLA '91.

[43]  Mary Shaw,et al.  An Introduction to Software Architecture , 1993, Advances in Software Engineering and Knowledge Engineering.

[44]  J. Michael Spivey,et al.  Understanding Z : A specification language and its formal semantics , 1985, Cambridge tracts in theoretical computer science.

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

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

[47]  Richard M. Stallman,et al.  Gnu Emacs Manual , 1996 .

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

[49]  Jeannette M. Wing,et al.  Signature matching: a key to reuse , 1993, SIGSOFT '93.

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

[51]  Philip Wadler,et al.  Theorems for free! , 1989, FPCA.

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

[53]  Jack J. Dongarra,et al.  Location-independent naming for virtual distributed software repositories , 1995, SSR '95.

[54]  Mikael Rittri Retrieving Library Functions by Unifying Types Modulo Linear Isomorphism , 1993, RAIRO Theor. Informatics Appl..