On the Extent and Nature of Software Reuse in Open Source Java Projects

  • Lars Heinemann
  • Florian Deissenboeck
  • Mario Gleirscher
  • Benjamin Hummel
  • Maximilian Irlbeck
Part of the Lecture Notes in Computer Science book series (LNCS, volume 6727)

Abstract

Code repositories on the Internet provide a tremendous amount of freely available open source code that can be reused for building new software. It has been argued that only software reuse can bring the gain of productivity in software construction demanded by the market. However, knowledge about the extent of reuse in software projects is only sparse. To remedy this, we report on an empirical study about software reuse in 20 open source Java projects with a total of 3.3 MLOC. The study investigates (1) whether open source projects reuse third party code and (2) how much white-box and black-box reuse occurs. To answer these questions, we utilize static dependency analysis for quantifying black-box reuse and code clone detection for detecting white-box reuse from a corpus with 6.1 MLOC of reusable Java libraries. Our results indicate that software reuse is common among open source Java projects and that black-box reuse is the predominant form of reuse.

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 1.
    Basili, V., Briand, L., Melo, W.: How reuse influences productivity in object-oriented systems. Communications of the ACM 39(10), 116 (1996)CrossRefGoogle Scholar
  2. 2.
    Clements, P., Northrop, L.M.: Software Product Lines: Practices and Patterns, 6th edn. Addison-Wesley, Reading (2007)Google Scholar
  3. 3.
    Frakes, W., Kang, K.: Software reuse research: Status and future. IEEE Transactions on Software Engineering 31(7), 529–536 (2005)CrossRefGoogle Scholar
  4. 4.
    Haefliger, S., Von Krogh, G., Spaeth, S.: Code Reuse in Open Source Software. Management Science 54(1), 180–193 (2008)CrossRefGoogle Scholar
  5. 5.
    Hummel, B., Juergens, E., Heinemann, L., Conradt, M.: Index-Based Code Clone Detection: Incremental, Distributed, Scalable. In: ICSM 2010 (2010)Google Scholar
  6. 6.
    Hummel, O., Atkinson, C.: Using the web as a reuse repository. In: Morisio, M. (ed.) ICSR 2006. LNCS, vol. 4039, pp. 298–311. Springer, Heidelberg (2006)CrossRefGoogle Scholar
  7. 7.
    Jacobson, I., Griss, M., Jonsson, P.: Software reuse: architecture, process and organization for business success. Addison-Wesley, Reading (1997)Google Scholar
  8. 8.
    Kelly, S., Tolvanen, J.-P.: Domain-Specific Modeling. Wiley, Chichester (2008)CrossRefGoogle Scholar
  9. 9.
    Krueger, C.: Software reuse. ACM Comput. Surv. 24(2), 131–183 (1992)CrossRefGoogle Scholar
  10. 10.
    Lee, N., Litecky, C.: An empirical study of software reuse with special attention to Ada. IEEE Transactions on Software Engineering 23(9), 537–549 (1997)CrossRefGoogle Scholar
  11. 11.
    Lim, W.: Effects of reuse on quality, productivity, and economics. IEEE Software 11(5), 23–30 (2002)CrossRefGoogle Scholar
  12. 12.
    Lindholm, T., Yellin, F.: Java virtual machine specification. Addison-Wesley Longman Publishing Co., Inc., Boston (1999)Google Scholar
  13. 13.
    McIlroy, M., Buxton, J., Naur, P., Randell, B.: Mass produced software components. In: Software Engineering Concepts and Techniques, pp. 88–98 (1969)Google Scholar
  14. 14.
    Mili, H., Mili, A., Yacoub, S., Addy, E.: Reuse-Based Software Engineering: Techniques, Organizations, and Controls. Wiley Interscience, Hoboken (2001)Google Scholar
  15. 15.
    Mili, H., Mili, F., Mili, A.: Reusing software: Issues and research directions. IEEE Transactions on Software Engineering 21(6), 528–562 (1995)CrossRefMATHGoogle Scholar
  16. 16.
    Mockus, A.: Large-scale code reuse in open source software. In: FLOSS 2007 (2007)Google Scholar
  17. 17.
    Ravichandran, T., Rothenberger, M.: Software reuse strategies and component markets. Communications of the ACM 46(8), 109–114 (2003)CrossRefGoogle Scholar
  18. 18.
    Sojer, M., Henkel, J.: Code Reuse in Open Source Software Development: Quantitative Evidence, Drivers, and Impediments. JAIS (to appear, 2011)Google Scholar
  19. 19.
    von Krogh, G., Spaeth, S., Haefliger, S.: Knowledge Reuse in Open Source Software: An Exploratory Study of 15 Open Source Projects. In: HICSS 2005 (2005)Google Scholar
  20. 20.
    Wohlin, C., Runeson, P., Höst, M.: Experimentation in software engineering: An introduction. Kluwer Academic, Dordrecht (2000)CrossRefMATHGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2011

Authors and Affiliations

  • Lars Heinemann
    • 1
  • Florian Deissenboeck
    • 1
  • Mario Gleirscher
    • 1
  • Benjamin Hummel
    • 1
  • Maximilian Irlbeck
    • 1
  1. 1.Institut für InformatikTechnische Universität MünchenGermany

Personalised recommendations