Skip to main content

Reuse-Oriented Code Recommendation Systems

  • Chapter
  • First Online:

Abstract

Effective software reuse has long been regarded as an important foundation for a more engineering-like approach to software development. Proactive recommendation systems that have the ability to unobtrusively suggest immediately applicable reuse opportunities can become a crucial step toward realizing this goal and making reuse more practical. This chapter focuses on tools that support reuse through the recommendation of source code—reuse-oriented code recommendation systems (ROCR). These support a large variety of common code reuse approaches from the copy-and-paste metaphor to other techniques such as automatically generating code using the knowledge gained by mining source code repositories. In this chapter, we discuss the foundations of software search and reuse, provide an overview of the main characteristics of ROCR systems, and describe how they can be built.

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

Buying options

Chapter
USD   29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD   129.00
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD   169.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info
Hardcover Book
USD   169.99
Price excludes VAT (USA)
  • Durable hardcover edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Learn about institutional subscriptions

Notes

  1. 1.

    The acronym ROCR is meant to be pronounced “rocker.”

  2. 2.

    The Merobase repository of reusable assets contains approximately 2.5 million Java source files with around 22 million methods [18].

References

  1. Atkinson, C., Bostan, P., Brenner, D., Falcone, G., Gutheil, M., Hummel, O., Juhasz, M., Stoll, D.: Modeling components and component-based systems in KobrA. In: Rausch, A., Reussner, R., Mirandola, R., Plášil, F. (eds.) The Common Component Modeling Example. Lecture Notes in Computer Science, vol. 5153, pp. 54–84. Springer, Heidelberg (2008). doi:10.1007/978-3-540-85289-6_4

    Chapter  Google Scholar 

  2. Atkinson, C., Hummel, O., Janjic, W.: Search-enhanced testing. In: Proceedings of the ACM/IEEE International Conference on Software Engineering, pp. 880–883 (2011). doi:10.1145/1985793.1985932

    Google Scholar 

  3. Bajracharya, S., Ngo, T., Linstead, E., Dou, Y., Rigor, P., Baldi, P., Lopes, C.: Sourcerer: a search engine for open source code supporting structure-based search. In: Companion to the ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, pp. 681–682 (2006). doi:10.1145/1176617.1176671

    Google Scholar 

  4. Begel, A., Phang, K.Y., Zimmermann, T.: Codebook: discovering and exploiting relationships in software repositories. In: Proceedings of the ACM/IEEE International Conference on Software Engineering, pp. 125–134 (2010). doi:10.1145/1806799.1806821

    Google Scholar 

  5. Bruch, M., Monperrus, M., Mezini, M.: Learning from examples to improve code completion systems. In: Proceedings of the European Software Engineering Conference/ACM SIGSOFT International Symposium on Foundations of Software Engineering, pp. 213–222 (2009). doi:10.1145/1595696.1595728

    Google Scholar 

  6. Brun, Y., Holmes, R., Ernst, M.D., Notkin, D.: Speculative analysis: exploring future development states of software. In: Proceedings of the FSE/SDP Workshop on the Future of Software Engineering Research, pp. 59–64 (2010). doi:10.1145/1882362.1882375

    Google Scholar 

  7. de Almeida, E.S., Alvaro, A., Lucrédio, D., Garcia, V., de Lemos Meira, S.R.: RiSE project: towards a robust framework for software reuse. In: Proceedings of the IEEE International Conference on Information Reuse and Integration, pp. 48–53 (2004). doi:10.1109/IRI.2004.1431435

    Google Scholar 

  8. Fischer, G., Henninger, S., Redmiles, D.: Cognitive tools for locating and comprehending software objects for reuse. In: Proceedings of the ACM/IEEE International Conference on Software Engineering, pp. 318–328 (1991). doi:10.1109/ICSE.1991.130658

    Google Scholar 

  9. Frakes, W.B., Pole, T.: An empirical study of representation methods for reusable software components. IEEE Trans. Software Eng. 20(8), 617–630 (1994). doi:10.1109/32.310671

    Article  Google Scholar 

  10. Holmes, R., Walker, R.J.: Systematizing pragmatic software reuse. ACM Trans. Software Eng. Meth. 21(4), 20:1–20:44 (2012). doi:10.1145/2377656.2377657

    Google Scholar 

  11. Holmes, R., Walker, R.J., Murphy, G.C.: Approximate structural context matching: an approach to recommend relevant examples. IEEE Trans. Software Eng. 32(12), 952–970 (2006). doi:10.1109/TSE.2006.117

    Article  Google Scholar 

  12. Hummel, O., Atkinson, C., Schumacher, M.: Artifact representation techniques for large-scale software search engines. In: Sim, S.E., Gallardo-Valencia, R.E. (eds.) Finding Source Code on the Web for Remix and Reuse. Springer, Heidelberg (2013). doi:10.1007/978-1-4614-6596-6_5

    Google Scholar 

  13. Hummel, O., Janjic, W., Atkinson, C.: Evaluating the efficiency of retrieval methods for component repositories. In: Proceedings of the International Conference on Software Engineering and Knowledge Engineering, pp. 404–409 (2007)

    Google Scholar 

  14. Hummel, O., Janjic, W., Atkinson, C.: Code Conjurer: pulling reusable software out of thin air. IEEE Software 25(5), 45–52 (2008). doi:10.1109/MS.2008.110

    Article  Google Scholar 

  15. Janjic, W.: Realising high-precision component recommendations for software-development environments. Diploma thesis, University of Mannheim (2007)

    Google Scholar 

  16. Janjic, W., Atkinson, C.: Utilizing software reuse experience for automated test recommendation. In: Proceedings of the International Workshop on Automation of Software Test (2013)

    Google Scholar 

  17. Janjic, W., Hummel, O., Atkinson, C.: More archetypal usage scenarios for software search engines. In: Proceedings of the Workshop on Search-Driven Development: Users, Infrastructure, Tools, and Evaluation, pp. 21–24 (2010). doi:10.1145/1809175.1809181

    Google Scholar 

  18. Janjic, W., Hummel, O., Schumacher, M., Atkinson, C.: An unabridged source code dataset for research in software reuse. In: Proceedings of the International Working Conference on Mining Software Repositories, pp. 339–342 (2013)

    Google Scholar 

  19. Krueger, C.W.: Software reuse. ACM Comput. Surv. 24(2), 131–183 (1992). doi:10.1145/130844.130856

    Article  MathSciNet  Google Scholar 

  20. Lange, B.M., Moher, T.G.: Some strategies of reuse in an object-oriented programming environment. In: Proceedings of the ACM SIGCHI Conference on Human Factors in Computing Systems, pp. 69–73 (1989). doi:10.1145/67449.67465

    Google Scholar 

  21. Lazzarini Lemos, O.A., Bajracharya, S., Ossher, J., Masiero, P.C., Lopes, C.: A test-driven approach to code search and its application to the reuse of auxiliary functionality. Inform. Software Tech. 53(4), 294–306 (2011). doi:10.1016/j.infsof.2010.11.009

    Article  Google Scholar 

  22. Mandelin, D., Xu, L., Bodík, R., Kimelman, D.: Jungloid mining: helping to navigate the API jungle. In: Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation, pp. 48–61 (2005). doi:10.1145/1065010.1065018

    Google Scholar 

  23. McIlroy, M.D.: Mass-produced software components. In: Software Engineering: Report on a Conference by the NATO Science Committee, pp. 138–155 (1968)

    Google Scholar 

  24. Menzies, T.: Data mining: a tutorial. In: Robillard, M., Maalej, W., Walker, R.J., Zimmermann, T. (eds.) Recommendation Systems in Software Engineering, Springer, Heidelberg, Chap. 3 (2014)

  25. Mili, A., Mili, R., Mittermeir, R.T.: A survey of software reuse libraries. Ann. Software Eng. 5, 349–414 (1998). doi:10.1023/A:1018964121953

    Article  Google Scholar 

  26. Murphy-Hill, E., Murphy, G.C.: Recommendation delivery: getting the user interface just right. In: Robillard, M., Maalej, W., Walker, R.J., Zimmermann, T. (eds.) Recommendation Systems in Software Engineering, Springer, Heidelberg, Chap. 9 (2014)

  27. Reiss, S.P.: Semantics-based code search. In: Proceedings of the ACM/IEEE International Conference on Software Engineering, pp. 243–253 (2009). doi:10.1109/ICSE.2009.5070525

    Google Scholar 

  28. Robillard, M.P., Walker, R.J., Zimmermann, T.: Recommendation systems for software engineering. IEEE Software 27(4), 80–86 (2010). doi:10.1109/MS.2009.161

    Article  Google Scholar 

  29. Seacord, R.: Software engineering component repositories. In: Proceedings of the International Workshop on Component-Based Software Engineering (1999)

    Google Scholar 

  30. Umarji, M., Sim, S.E., Lopes, C.V.: Archetypal internet-scale source code searching. In: Proceedings of the IFIP World Computer Conference, IFIP—The International Federation for Information Processing, vol. 275, pp. 257–263. Springer, Heidelberg (2008). doi:10.1007/978-0-387-09684-1_21

    Google Scholar 

  31. Ye, Y.: Supporting component-based software development with active component repository systems. Ph.D. thesis, Department of Computer Science, University of Colorado, Boulder (2001)

    Google Scholar 

  32. Ye, Y., Fischer, G.: Supporting reuse by delivering task-relevant and personalized information. In: Proceedings of the ACM/IEEE International Conference on Software Engineering, pp. 513–523 (2002). doi:10.1145/581339.581402

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Werner Janjic .

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2014 Springer-Verlag Berlin Heidelberg

About this chapter

Cite this chapter

Janjic, W., Hummel, O., Atkinson, C. (2014). Reuse-Oriented Code Recommendation Systems. In: Robillard, M., Maalej, W., Walker, R., Zimmermann, T. (eds) Recommendation Systems in Software Engineering. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-45135-5_14

Download citation

  • DOI: https://doi.org/10.1007/978-3-642-45135-5_14

  • Published:

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-642-45134-8

  • Online ISBN: 978-3-642-45135-5

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics