skip to main content
10.1145/1806799.1806820acmconferencesArticle/Chapter ViewAbstractPublication PagesicseConference Proceedingsconference-collections
research-article

A large-scale empirical study of practitioners' use of object-oriented concepts

Published:01 May 2010Publication History

ABSTRACT

We present the first results from a survey carried out over the second quarter of 2009 examining how theories in object-oriented design are understood and used by software developers. We collected 3785 responses from software developers world-wide, which we believe is the largest survey of its kind. We targeted the use of encapsulation, class size as measured by number of methods, and depth of a class in the inheritance hierarchy. We found that, while overall practitioners followed advice on encapsulation, there was some variation of adherence to it. For class size and depth there was substantially less agreement with expert advice. In addition, inconsistencies were found within the use and perception of object-oriented concepts within the investigated group of developers. The results of this survey has deep reaching consequences for both practitioners and researchers as they highlight and confirm central issues.

References

  1. G. Baxter, M. Frean, J. Noble, M. Rickerby, H. Smith, M. Visser, H. Melton, and E. Tempero. Understanding the shape of Java software. In W. Cook, editor, OOPSLA, pages 397--412, Oct. 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. E. V. Berard. Essays on object-oriented software engineering (vol. 1). Prentice-Hall, Inc., 1993. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. G. Booch. Object-Oriented Analysis and Design: with Applications. Addison-Wesley, 2nd edition, 1994. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. F. Brito e Abreu and W. Melo. Evaluating the impact of object-oriented design on software quality. In METRICS '96: Proceedings of the 3rd International Symposium on Software Metrics, page 90, Washington, DC, USA, 1996. IEEE Computer Society. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. M. Bunge. Treatise on Basic Philosophy: Ontology I: The Furniture of the World. Springer, 1977.Google ScholarGoogle Scholar
  6. S. R. Chidamber and C. F. Kemerer. A metrics suite for object oriented design. IEEE Trans. Softw. Eng., 20(6):476--493, 1994. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. K. El Emam, S. Benlarbi, N. Goel, W. Melo, H. Lounis, and S. N. Rai. The optimal class size for object-oriented software. IEEE Trans. Softw. Eng., 28(5):494--509, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. N. E. Fenton and M. Neil. A critique of software defect prediction models. IEEE Trans. Softw. Eng., 25(5):675--689, 1999. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. M. Fowler. Refactoring: Improving the Design of Existing Code. Addison-Wesley, 1999. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. E. Gamma, R. Helm, R. Johnson, and J. Vlissides. Design Patterns. Addison Wesley Publishing Company, 1994.Google ScholarGoogle Scholar
  11. J. A. Gliner and G. A. Morgan. Methods in Applied Settings: An Integrated Approach to Design and Analysis. Lawrence Erlbaum Associates, 2000.Google ScholarGoogle ScholarCross RefCross Ref
  12. T. Gorschek, P. Garre, S. Larsson, and C. Wohlin. A model for technology transfer in practice. IEEE Softw., 23(6):88--95, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. L. Hatton. Reexamining the fault density-component size connection. IEEE Softw., 14(2):89--97, 1997. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. A. Holub. Why getter and setter methods are evil: Make your code more maintainable by avoiding accessors. JavaWorld.com, Sept. 2003.Google ScholarGoogle Scholar
  15. R. E. Johnson and B. Foote. Designing reusable classes. Journal of Object-Oriented Programming, June/July 1988.Google ScholarGoogle Scholar
  16. M. Lorenz and J. Kidd. Object-oriented software metrics: a practical guide. Prentice-Hall, 1994. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. D. L. Parnas. On the criteria to be used in decomposing systems into modules. Commun. ACM, 15(12):1053--1058, 1972. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. T. Punter, M. Ciolkowski, B. Freimut, and I. John. Conducting on-line surveys in software engineering. In ISESE '03: Proceedings of the 2003 International Symposium on Empirical Software Engineering, page 80, Washington, DC, USA, 2003. IEEE Computer Society. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. A. Riel. Object-oriented design heuristics. Addison-Wesley, 1996. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. C. Robson. Real World Research: A Resource for Social Scientists and Practitioner-Researchers. Wiley-Blackwell, 2nd edition, 2002.Google ScholarGoogle Scholar
  21. N. Schärli, A. P. Black, and S. Ducasse. Object-oriented encapsulation for dynamically typed languages. In Proceedings of the 19th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, pages 130--149, New York, NY, USA, 2004. ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. R. Sedgewick and K. Wayne. Introduction to Programming in Java. Addison-Wesley, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. C. Szyperski. Component Software: Beyond Object-Oriented Programming. Addison-Wesley, 2nd edition, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. E. Tempero. How fields are used in Java: An empirical study. In Australian Software Engineering Conference (ASWEC), pages 91--100, Apr. 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. E. Tempero, J. Noble, and H. Melton. How do Java programs use inheritance? an empirical study of inheritance in Java software. In J. Vitek, editor, 22nd European Conference on Object-Oriented Programming (ECOOP), pages 667--691, Paphos, Cyprus, July 2008. Springer Berlin / Heidelberg. Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. C. Wohlin, P. Runeson, M. Höst, M. C. Ohlsson, R. B., and A. Wesslén. Experimental Software Engineering - An Introduction. Kluwer Academic Publishers, 2000. Google ScholarGoogle ScholarDigital LibraryDigital Library

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
    ICSE '10: Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume 1
    May 2010
    627 pages
    ISBN:9781605587196
    DOI:10.1145/1806799

    Copyright © 2010 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: 1 May 2010

    Permissions

    Request permissions about this article.

    Request Permissions

    Check for updates

    Qualifiers

    • research-article

    Acceptance Rates

    Overall Acceptance Rate276of1,856submissions,15%

    Upcoming Conference

    ICSE 2025

PDF Format

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader