Journal of Systems Integration

, Volume 6, Issue 1–2, pp 93–134

Software component search

  • Joseph Goguen
  • Doan Nguyen
  • José Meseguer
  • Luqi
  • Du Zhang
  • Valdis Berzins
Computer-Aided Prototyping


An important problem in software development is to make better use of software libraries by improving the search and retrieval process, that is, by making it easier to find the few components you may want among the many you do not want. This paper suggests some ideas to improve this process: (1) Associate analgebraic specification with each software component; these specifications should include complete syntactic information, but need have onlypartial semantic information. (2) User queries consist of syntactic declarations plus results forsample executions. (3) User queries may be posed in standard programming notation, which is then automatically translated into algebraic notation. (4) Search is organized asranked multi-level filtering, where each level yields aranked set of partial matches. (5) Early stages of filtering narrow the search space by using computationally simple procedures, such as checking that the number of types is adequate. (6) Middle levels may findpartial signature matches. (7) Pre-computedcatalogues (i.e., indexes) can speed up early and middle level filtering. (8) Semantic information is used in a final filter withterm rewriting, but complete verification is not attempted. (9) The series of filters is implementedincrementally, so as to backtrack to lower ranked components in case of failure. This approach avoids the need for complex theorem proving, and does not require any knowledge of algebraic specification from the user. Moreover, it does not require either specifications or queries to be complete or even fully correct, because it yields partial matches ranked by how well they fit the query. The paper concludes with a description of some preliminary experiments and some suggestions for further experiments.


Component search retrieval software library reuse computer aided prototyping 


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    R. Diaconescu, “Category-Based Operational Semantics of Equational Logic Programming”, PhD thesis, Programming Research Group, Oxford University, 1994.Google Scholar
  2. 2.
    S. J. Dolgoff, “Automated interface for retrieving reusable software components”, Master's thesis, Naval Postgraduate School, Monterey, California, 1992.Google Scholar
  3. 3.
    G. Fischer, S. Henninger, and D. Redmiles, “Cognitive tools for locating and comprehending software objects for resue”, inProceedings, 13th International Conference on Software Engineering, May 1991.Google Scholar
  4. 4.
    W. B. Frakes and T. P. Pole, “An empirical study of representation methods for reusable software components”.IEEE Transactions on Software Engineering 20(8), pp. 617–630, August 1994.CrossRefGoogle Scholar
  5. 5.
    W. B. Frakes and I. Sadahiro, “Success factors for systematic reuse”.IEEE Software, pp. 15–19, September 1994.Google Scholar
  6. 6.
    K. Futatsugi, J. Goguen, J.-P. Jouannaud, and J. Meseguer, “Principles of OBJ2”, in B. Reid, editor,Proceedings, Twelfth ACM Symposium on Principles of Programming Languages. Association for Computing Machinery, 1985, pp. 52–66.Google Scholar
  7. 7.
    J. Goguen, “Suggestions for using and organizing libraries in software development”, in S. Kartashev and S. Kartashev, editors,Proceedings, First International Conference on Supercomputing Systems, IEEE Computer Society, 1985, pp. 349–360. Also inSupercomputing Systems, S. and S. Kartashev, Eds., Elsevier, 1986.Google Scholar
  8. 8.
    J. Goguen and R. Diaconescu, “A short Oxford survey of order sorted algebra”,Bulletin of the European Association for Theoretical Computer Science, 48, pp. 121–133, October 1992. Guest column in the “Algebraic Specification Column”. Also inCurrent Trends in Theoretical Computer Science: Essays and Tutorials. World Scientific, 1993, pp. 209–221.Google Scholar
  9. 9.
    J. Goguen and R. Diaconescu, “Towards an algebraic semantics for the object paradigm”, in Hartmut Ehrig and Fernando Orejas, editors,Proceedings, Tenth Workshop on Abstract Data Types, Springer, 1994, pp. 1–29.Lecture Notes in Computer Science, Vol. 785.Google Scholar
  10. 10.
    J. Goguen, C. Kirchner, H. Kirchner, A. Mégrelis, and J. Meseguer, “An introduction to OBJ3”, in J.-P. Jouannaud and S. Kaplan, editors,Proceedings, Conference on Conditional Term Rewriting. Springer, 1988, pp. 258–263.Lecture Notes in Computer Science, Vol. 308.Google Scholar
  11. 11.
    J. Goguen and G. Malcolm, “Proof of correctness of object representation”, in A. W. Roscoe, ed.,A Classical Mind: Essays in Honour of C.A.R. Hoare. Prentice-Hall, 1994, pp. 119–142.Google Scholar
  12. 12.
    J. Goguen and J. Meseguer, “Universal realization, persistent interconnection and implementation of abstract modules”, in M. Nielsen and E. M. Schmidt, eds.,Proceedings, 9th International Conference on Automata, Languages and Programming. Springer, 1982, pp. 265–281.Lecture Notes in Computer Science, Vol. 140.Google Scholar
  13. 13.
    J. Goguen and J. Meseguer, “Order-sorted algebra I: Equational deduction for multiple inheritance, overloading, exceptions and partial operations”,Theoretical Computer Science 105(2), pp. 217–273, 1992. AlsoProgramming Research Group Technical Monograph PRG-80. Oxford University, December 1989, and Technical Report SRI-CSL-89-10, SRI International, Computer Science Lab, July 1989; originally given as lecture atSeminar on Types, Carnegie-Mellon University, June 1983; many draft versions exist, from as early as 1985.CrossRefGoogle Scholar
  14. 14.
    J. Goguen and J. Meseguer, “Software component search”, Technical report, SRI International, Computer Science Lab, September 1994.Google Scholar
  15. 15.
    J. Goguen, J. Thatcher, and E. Wagner, “An initial algebra approach to the specification, correctness and implementation of abstract data types”, Technical Report RC 6487, IBM T.J. Watson Research Center, October 1976. InCurrent Trends in Programming Methodology, IV. Raymond Yeh, ed., Prentice-Hall, 1978, pp. 80–149.Google Scholar
  16. 16.
    J. Goguen, T. Winkler, J. Meseguer, K. Futatsugi, and J.-P. Jouannaud, “Introducing OBJ”, in Joseph Goguen and Grant Malcolm, editors,Algebraic Specification with OBJ: An Introduction with Case Studies. Cambridge, to appear. Also Technical Report, SRI International.Google Scholar
  17. 17.
    P. Hall and C. Boldyreff, 1991.Software Engineer's Reference Book. Butterworth-Heinemann, 1991.Google Scholar
  18. 18.
    S. Henninger, “Using iterative refinement to find reusable software”,IEEE Software, pp. 48–59, September 1994.Google Scholar
  19. 19.
    Luqi, “Normalized specifications for identifying resable software”, inProceedings of the 1987 Fall Joint Computer Conference, IEEE, October 1987, pp. 46–49.Google Scholar
  20. 20.
    Luqi, V. Berzins, and R. Yeh, “A prototyping language for real-time software”,IEEE Transactions on Software Engineering 14(10), pp. 1409–1423, 1988.CrossRefGoogle Scholar
  21. 21.
    Luqi and Y. Lee, “Towards automated retrieval of reusable software components”, inProceedings, AAAI Workshop on Artificial Intelligence and Automated Program Understanding, July 1992.Google Scholar
  22. 22.
    Luqi and M. Ketabchi, “A computer-aided prototyping system”.IEEE Software, pp. 66–72, March 1988.Google Scholar
  23. 23.
    Y. Matsumoto, “A software factory: An overall approach to software production”, in P. Freeman, ed.,Tutorial on Software Reusability, pp. 155–178, 1987.Google Scholar
  24. 24.
    J. Meseguer and J. Goguen, “Initiality, induction and computability”, in M. Nivat and J. Reynolds, eds.,Algebraic Methods in Semantics. Cambridge, 1985, pp. 459–541.Google Scholar
  25. 25.
    A. Mili, R. Mili, and R. Mittermeir. “Storing and retrieving software components”, inProceedings, 16th International Conference on Software Engineering, 1984, pp. 15–19.Google Scholar
  26. 26.
    D. Nguyen, “Multi-Level Filtering for Software Component Retrieval”, PhD. thesis, Naval Postgraduate School, 1995.Google Scholar
  27. 27.
    E. Ostertag, J. Hendler, R. Prieto-Diaz, and C. Braun, “Computing similarity in a reuse library system”.ACM Transaction on Software Engineering and Methodology, pp. 205–228, July 1992.Google Scholar
  28. 28.
    D. Ozdemir, “The design and implementation of a reusable component library and a retrieval/integration system”, Master's thesis, Naval Postgraduate School, Monterey, California, 1992.Google Scholar
  29. 29.
    A. Podgurski and L. Pierce, “Retrieving reusable software by sampling behavior”.ACM Transactions on Software Engineering and Methodology 2(3), pp. 286–303, 1993.CrossRefGoogle Scholar
  30. 30.
    R. Prieto-Diaz, “Implementing faceted classification for sofware reuse”.Communication of the ACM, pp. 89–97, May 1991.Google Scholar
  31. 31.
    E. J. Rollins and J. M. Wing, “Specifications as search keys for software libraries”, inProceedings of the Eighth International Conference on Logic Programming, 1991.Google Scholar
  32. 32.
    R. Steigerwald, Luqi, and J. McDowell, “CASE tool for reusable software component storage and retrieval in rapid prototyping”.Information and Software Technology, pp. 698–705, 1991.Google Scholar
  33. 33.
    R. A. Steigerwald, “Reusable Software Component Retrieval via Normalized Algebraic Specifications”, PhD thesis, Naval Postgraduate School, 1991.Google Scholar
  34. 34.
    A. M. Zaremski and J. M. Wing, “Signature matching, a tool for using software libraries”, inProceedings, ACM Symposium on Foundations of Software Engineering, 1993. To appear,Transactions on Software Engineering and Methodology.Google Scholar
  35. 35.
    A. M. Zaremski and J. M. Wing, “Specification matching of software components”, Technical Report CMU-CS-95-127, School of Computer Science, Carnegie-Mellon University, 1995.Google Scholar

Copyright information

© Kluwer Academic Publishers 1996

Authors and Affiliations

  • Joseph Goguen
    • 1
  • Doan Nguyen
    • 3
  • José Meseguer
    • 4
  • Luqi
    • 5
  • Du Zhang
    • 6
  • Valdis Berzins
    • 5
  1. 1.University of California at San DiegoLaJolla
  2. 2.Computing LabOxford UniversityOxfordUK
  3. 3.McClellan Air Force BaseSacramento
  4. 4.SRI InternationalMenlo Park
  5. 5.Naval Postgraduate SchoolMonterey
  6. 6.California State UniversitySacramento

Personalised recommendations