Specifications as search keys for software libraries : a case study using Lambda Prolog

Searching through a large repository of objects can be a tedious activity if a user cannot easily identify the object of interest. In the context of software development, we describe a method of searching through program libraries using specification matching. We use signature information along with preand postcondition specifications as search keys to increase the recall and precision of a query. This paper details a case study of specification matching where we use Lambda Prolog as our specification and query language and higher-order unification to retrieve from a library of ML functions. We discuss the significance of specification matching in general and point out some open issues. ©1990 E. J. Rollins and J. M. Wing This research was sponsored by the Defense Advanced Research Projects Agency (DOD) and monitored by the Avionics Laboratory, Air Force Wright Aeronautical Laboratories, Aeronautical Systems Division (AFSQ, Wright-Patterson AFB, OH 45433-6543 under Contract F33615-87-C-1499, ARPA Order No. 4976, Amendment 20. The views and conclusions contained in this document are those of the authors and should not be interpreted as representing the official policies, either expressed or implied, of the Defense Advanced Research Projects Agency or the U.S. Government.

[1]  Barbara Liskov,et al.  Guardians and Actions: Linguistic Support for Robust, Distributed Programs , 1983, TOPL.

[2]  James J. Horning,et al.  The Larch Family of Specification Languages , 1985, IEEE Software.

[3]  Hans H. Kron,et al.  Programming-in-the-Large Versus Programming-in-the-Small , 1975, IEEE Transactions on Software Engineering.

[4]  Władysław Turski,et al.  The specification of computer programs , 1987 .

[5]  David Robson,et al.  Smalltalk-80: The Language and Its Implementation , 1983 .

[6]  Malcolm P. Atkinson,et al.  PS-algol: an algol with a persistent heap , 1982, SIGP.

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

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

[9]  Jeff Conklin,et al.  Hypertext: An Introduction and Survey , 1987, Computer.

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

[11]  José Meseguer,et al.  EQLOG: Equality, Types, and Generic Modules For Logic Programming , 1986, Logic Programming: Functions, Relations, and Equations.

[12]  Maurice Herlihy,et al.  Inheritance of synchronization and recovery properties in Avalon/C++ , 1988, Computer.

[13]  Donald E. Knuth,et al.  Literate Programming , 1984, Comput. J..

[14]  David Lorge Parnas,et al.  On a 'Buzzword': Hierarchical Structure , 2001, IFIP Congress.

[15]  Alexander A. Stepanov,et al.  The Ada® Generic Library , 1989, Springer Compass International.

[16]  David C. J. Matthews,et al.  Poly manual , 1985, SIGP.

[17]  Robin Milner,et al.  Definition of standard ML , 1990 .