skip to main content
10.1145/1167473.1167507acmconferencesArticle/Chapter ViewAbstractPublication PagessplashConference Proceedingsconference-collections
Article

Understanding the shape of Java software

Authors Info & Claims
Published:16 October 2006Publication History

ABSTRACT

Large amounts of Java software have been written since the language's escape into unsuspecting software ecology more than ten years ago. Surprisingly little is known about the structure of Java programs in the wild: about the way methods are grouped into classes and then into packages, the way packages relate to each other, or the way inheritance and composition are used to put these programs together. We present the results of the first in-depth study of the structure of Java programs. We have collected a number of Java programs and measured their key structural attributes. We have found evidence that some relationships follow power-laws, while others do not. We have also observed variations that seem related to some characteristic of the application itself. This study provides important information for researchers who can investigate how and why the structural relationships we find may have originated, what they portend, and how they can be managed.

References

  1. A. Barabasi. Linked: the New Science of Networks. Perseus Press, New York, 2002.]]Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. A. L. Barabasi and R. Albert. Emergence of scaling in random networks. Science, 286:509--512, 1999.]]Google ScholarGoogle ScholarCross RefCross Ref
  3. D. W. Clark and C. C. Green. An empirical study of list structure in lisp. Commun. ACM, 20(2):78--87, 1977.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. C. Collberg, G. Myles, and M. Stepp. An empirical study of Java bytecode programs. Technical Report TR04-11, Department of Computer Science, Univeristy of Arizona, 2004.]]Google ScholarGoogle Scholar
  5. S. Dieckmann and U. Hölzle. A study of the allocation behavior of the SPECjvm98 Java benchmarks. In 13th European Conference on Object-Oriented Programming, pages 92--115, 1999.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. K. Ehrlich and E. Soloway. Human factors in computer systems, chapter An empirical investigation of the tacit plan knowledge in programming, pages 113--133. Ablex Publishing Corp., Norwood, NJ, USA, 1984.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. N. E. Fenton and S. L. Pfleeger. Software Metrics: A Rigorous & Practical Approach. PWS Publishing Company, second edition, 1997.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. J. Frederick P. Brooks. Three great challenges for half-century-old computer science. J. ACM, 50(1):25--26, 2003.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. E. Gamma, R. Helm, R. Johnson, and J. Vlissides. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley Professional Computing Series. Addison-Wesley, 1995.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. J. Y. Gil and I. Maman. Micro patterns in Java code. In OOPSLA '05: Proceedings of the 20th annual ACM SIGPLAN conference on Object oriented programming systems languages and applications, pages 97--116, New York, NY, USA, 2005. ACM Press.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. J. Gosling, B. Joy, G. Steele, and G. Bracha. The Java (tm) Language Specification. Addison-Wesley, 2000.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. C. Grothoff, J. Palsberg, and J. Vitek. Encapsulating objects with confined types. In OOPSLA '01: Proceedings of the 16th ACM SIGPLAN conference on Object oriented programming, systems, languages, and applications, pages 241--255, New York, NY, USA, 2001. ACM Press.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. J. Heering. Quantification of structural information: on a question raised by Brooks. SIGSOFT Softw. Eng. Notes, 28(3):6--6, 2003.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. S. Hunston. Corpora in Applied Linguistics. Cambridge University Press, 2002.]]Google ScholarGoogle ScholarCross RefCross Ref
  15. C. Jones. Programming productivity. McGraw-Hill, Inc., New York, NY, USA, 1986.]]Google ScholarGoogle Scholar
  16. D. E. Knuth. An empirical study of FORTRAN programs. Software - Practice and Experience, 1(2):105--133, 1971.]]Google ScholarGoogle Scholar
  17. P. Kruchten. The Rational Unified Process: An Introduction, Second Edition. Addison-Wesley, United States of America, 2000.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. J. Laherrere and D. Sornette. Stretched exponential distributions in nature and economy: "fat tails" with characteristic scales. The European Physical Journal B, 2:525, 1998.]]Google ScholarGoogle ScholarCross RefCross Ref
  19. H. Melton and E. Tempero. An empirical study of cycles among classes in Java. Technical Report UoA-SE-2006-1, Department of Computer Science, University of Auckland, 2006.]]Google ScholarGoogle Scholar
  20. H. Melton and E. Tempero. Identifying refactoring opportunities by identifying dependency cycles. In V. Estivill-Castro and G. Dobbie, editors, Twenty-Ninth Australasian Computer Science Conference, Hobart, Tasmania, Australia, Jan. 2006. Proceedings published as "Conferences in Research and Practice in Information Technology, Vol. 48".]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. M. E. J. Newman. Power laws, Pareto distributions and Zipf's law. Contemporary Physics, 46(5):323--351, Sept. 2005.]]Google ScholarGoogle ScholarCross RefCross Ref
  22. J. Noble and R. Biddle. Visualising 1,051 visual programs module choice and layout in the nord modular patch language. In CRPITS '01: Australian symposium on Information visualisation, pages 121--127, Darlinghurst, Australia, Australia, 2001. Australian Computer Society, Inc.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. J. Noble and R. Biddle. Software Visualization, chapter Visual Program Visualisation. Kluwer, 2003.]]Google ScholarGoogle Scholar
  24. Object Management Group. Unified Modeling Language (UML ) 1.5 specification, 2004.]]Google ScholarGoogle Scholar
  25. A. Potanin, J. Noble, and R. Biddle. Checking ownership and confinement. Concurrency - Practice and Experience, 16(7):671--687, 2004.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. A. Potanin, J. Noble, M. Frean, and R. Biddle. Scale-free geometry in OO programs. Commun. ACM, 48(5):99--103, 2005.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. S. Purao and V. Vaishnavi. Product metrics for object-oriented systems. ACM Comput. Surv., 35(2):191--221, 2003.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. R. V. Solé, R. Ferrer-Cancho, J. M. Montoya, and S. Valverde. Selection, tinkering, and emergence in complex networks. Complex., 8(1):20--33, 2002.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. C. Szyperski. Component Software: Beyond Object-Oriented Programming. Addison-Wesley, 1998.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. S. Valverde, R. Ferrer-Cancho, and R. V. Solé. Scale-free networks from optimal design. Europhysics Letters, 60(4):512--517, Nov. 2002.]]Google ScholarGoogle ScholarCross RefCross Ref
  31. S. Valverde and R. V. Solé. Hierarchical small-worlds in software architecture. Under review, IEEE Transactions in Software Engineering. An earlier versino is available as Sante Fe Institute Working Paper 03-07-044, 2005.]]Google ScholarGoogle Scholar
  32. W. Weibull. A statistical distribution function of wide applicability. ASME Journal Of Applied Mechanics, pages 293--297, Sept. 1951.]]Google ScholarGoogle Scholar
  33. G. M. Weinberg. The Psychology of Computer Programming. John Wiley & Sons, Inc., New York, NY, USA, 1985.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  34. R. Wheeldon and S. Counsell. Power law distributions in class relationships. In Third IEEE International Workshop on Source Code Analysis and Manipulation (SCAM03), 2003.]]Google ScholarGoogle ScholarCross RefCross Ref

Index Terms

  1. Understanding the shape of Java software

      Recommendations

      Comments

      Login options

      Check if you have access through your login credentials or your institution to get full access on this article.

      Sign in
      • Published in

        cover image ACM Conferences
        OOPSLA '06: Proceedings of the 21st annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications
        October 2006
        514 pages
        ISBN:1595933484
        DOI:10.1145/1167473
        • cover image ACM SIGPLAN Notices
          ACM SIGPLAN Notices  Volume 41, Issue 10
          Proceedings of the 2006 OOPSLA Conference
          October 2006
          480 pages
          ISSN:0362-1340
          EISSN:1558-1160
          DOI:10.1145/1167515
          Issue’s Table of Contents

        Copyright © 2006 ACM

        Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

        Publisher

        Association for Computing Machinery

        New York, NY, United States

        Publication History

        • Published: 16 October 2006

        Permissions

        Request permissions about this article.

        Request Permissions

        Check for updates

        Qualifiers

        • Article

        Acceptance Rates

        Overall Acceptance Rate268of1,244submissions,22%

        Upcoming Conference

      PDF Format

      View or Download as a PDF file.

      PDF

      eReader

      View online with eReader.

      eReader