Skip to main content
Log in

Software component search

  • Computer-Aided Prototyping
  • Published:
Journal of Systems Integration

Abstract

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.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Institutional subscriptions

Similar content being viewed by others

References

  1. R. Diaconescu, “Category-Based Operational Semantics of Equational Logic Programming”, PhD thesis, Programming Research Group, Oxford University, 1994.

  2. S. J. Dolgoff, “Automated interface for retrieving reusable software components”, Master's thesis, Naval Postgraduate School, Monterey, California, 1992.

    Google Scholar 

  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.

  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.

    Article  Google Scholar 

  5. W. B. Frakes and I. Sadahiro, “Success factors for systematic reuse”.IEEE Software, pp. 15–19, September 1994.

  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.

  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.

  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. 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.

  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.

  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.

  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.

  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.

    Article  Google Scholar 

  14. J. Goguen and J. Meseguer, “Software component search”, Technical report, SRI International, Computer Science Lab, September 1994.

  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.

  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.

  17. P. Hall and C. Boldyreff, 1991.Software Engineer's Reference Book. Butterworth-Heinemann, 1991.

  18. S. Henninger, “Using iterative refinement to find reusable software”,IEEE Software, pp. 48–59, September 1994.

  19. Luqi, “Normalized specifications for identifying resable software”, inProceedings of the 1987 Fall Joint Computer Conference, IEEE, October 1987, pp. 46–49.

  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.

    Article  Google Scholar 

  21. Luqi and Y. Lee, “Towards automated retrieval of reusable software components”, inProceedings, AAAI Workshop on Artificial Intelligence and Automated Program Understanding, July 1992.

  22. Luqi and M. Ketabchi, “A computer-aided prototyping system”.IEEE Software, pp. 66–72, March 1988.

  23. Y. Matsumoto, “A software factory: An overall approach to software production”, in P. Freeman, ed.,Tutorial on Software Reusability, pp. 155–178, 1987.

  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.

  25. A. Mili, R. Mili, and R. Mittermeir. “Storing and retrieving software components”, inProceedings, 16th International Conference on Software Engineering, 1984, pp. 15–19.

  26. D. Nguyen, “Multi-Level Filtering for Software Component Retrieval”, PhD. thesis, Naval Postgraduate School, 1995.

  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.

  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. A. Podgurski and L. Pierce, “Retrieving reusable software by sampling behavior”.ACM Transactions on Software Engineering and Methodology 2(3), pp. 286–303, 1993.

    Article  Google Scholar 

  30. R. Prieto-Diaz, “Implementing faceted classification for sofware reuse”.Communication of the ACM, pp. 89–97, May 1991.

  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.

  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.

  33. R. A. Steigerwald, “Reusable Software Component Retrieval via Normalized Algebraic Specifications”, PhD thesis, Naval Postgraduate School, 1991.

  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.

  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.

Download references

Author information

Authors and Affiliations

Authors

Rights and permissions

Reprints and permissions

About this article

Cite this article

Goguen, J., Nguyen, D., Meseguer, J. et al. Software component search. Journal of Systems Integration 6, 93–134 (1996). https://doi.org/10.1007/BF02262753

Download citation

  • Issue Date:

  • DOI: https://doi.org/10.1007/BF02262753

Keywords

Navigation