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.
- 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 ScholarDigital Library
- E. V. Berard. Essays on object-oriented software engineering (vol. 1). Prentice-Hall, Inc., 1993. Google ScholarDigital Library
- G. Booch. Object-Oriented Analysis and Design: with Applications. Addison-Wesley, 2nd edition, 1994. Google ScholarDigital Library
- 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 ScholarDigital Library
- M. Bunge. Treatise on Basic Philosophy: Ontology I: The Furniture of the World. Springer, 1977.Google Scholar
- S. R. Chidamber and C. F. Kemerer. A metrics suite for object oriented design. IEEE Trans. Softw. Eng., 20(6):476--493, 1994. Google ScholarDigital Library
- 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 ScholarDigital Library
- N. E. Fenton and M. Neil. A critique of software defect prediction models. IEEE Trans. Softw. Eng., 25(5):675--689, 1999. Google ScholarDigital Library
- M. Fowler. Refactoring: Improving the Design of Existing Code. Addison-Wesley, 1999. Google ScholarDigital Library
- E. Gamma, R. Helm, R. Johnson, and J. Vlissides. Design Patterns. Addison Wesley Publishing Company, 1994.Google Scholar
- J. A. Gliner and G. A. Morgan. Methods in Applied Settings: An Integrated Approach to Design and Analysis. Lawrence Erlbaum Associates, 2000.Google ScholarCross Ref
- T. Gorschek, P. Garre, S. Larsson, and C. Wohlin. A model for technology transfer in practice. IEEE Softw., 23(6):88--95, 2006. Google ScholarDigital Library
- L. Hatton. Reexamining the fault density-component size connection. IEEE Softw., 14(2):89--97, 1997. Google ScholarDigital Library
- A. Holub. Why getter and setter methods are evil: Make your code more maintainable by avoiding accessors. JavaWorld.com, Sept. 2003.Google Scholar
- R. E. Johnson and B. Foote. Designing reusable classes. Journal of Object-Oriented Programming, June/July 1988.Google Scholar
- M. Lorenz and J. Kidd. Object-oriented software metrics: a practical guide. Prentice-Hall, 1994. Google ScholarDigital Library
- D. L. Parnas. On the criteria to be used in decomposing systems into modules. Commun. ACM, 15(12):1053--1058, 1972. Google ScholarDigital Library
- 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 ScholarDigital Library
- A. Riel. Object-oriented design heuristics. Addison-Wesley, 1996. Google ScholarDigital Library
- C. Robson. Real World Research: A Resource for Social Scientists and Practitioner-Researchers. Wiley-Blackwell, 2nd edition, 2002.Google Scholar
- 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 ScholarDigital Library
- R. Sedgewick and K. Wayne. Introduction to Programming in Java. Addison-Wesley, 2006. Google ScholarDigital Library
- C. Szyperski. Component Software: Beyond Object-Oriented Programming. Addison-Wesley, 2nd edition, 2002. Google ScholarDigital Library
- E. Tempero. How fields are used in Java: An empirical study. In Australian Software Engineering Conference (ASWEC), pages 91--100, Apr. 2009. Google ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
Recommendations
Barriers to refactoring
Developers know refactoring improves their software, but many find themselves unable to do so when they want to.
Comments