The Impact of Pair Programming and Test-Driven Development on Package Dependencies in Object-Oriented Design — An Experiment

  • Lech Madeyski
Part of the Lecture Notes in Computer Science book series (LNCS, volume 4034)


Background: Test-driven development (TDD) and pair programming are software development practices popularized by eXtreme Programming methodology. The aim of the practices is to improve software quality.

Objective: Provide an empirical evidence of the impact of both practices on package dependencies playing a role of package level design quality indicators.

Method: An experiment with a hundred and eighty eight MSc students from Wroclaw University of Technology, who developed finance-accounting system in different ways (CS — classic solo, TS — TDD solo, CP — classic pairs, TP — TDD pairs).

Results: It appeared that package level design quality indicators (namely package dependencies in an object-oriented design) were not significantly affected by development method.

Limitations: Generalization of the results is limited due to the fact that MSc students participated in the study.

Conclusions: Previous research revealed that using test-driven development instead of classic (test-last) testing approach had statistically significant positive impact on some class level software quality indicators (namely CBO and RFC metrics) in case of solo programmers as well as pairs. Combined results suggest that the positive impact of test-driven development on software quality may be limited to class level.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Beck, K.: Test Driven Development: By Example. Addison-Wesley, Reading (2002)Google Scholar
  2. 2.
    Williams, L., Kessler, R.: Pair Programming Illuminated. Addison-Wesley, Reading (2002)Google Scholar
  3. 3.
    Beck, K.: Extreme Programming Explained: Embrace Change, 2nd edn. Addison-Wesley, Reading (2004)Google Scholar
  4. 4.
    Nosek, J.T.: The case for collaborative programming. Communications of the ACM 41(3), 105–108 (1998)CrossRefGoogle Scholar
  5. 5.
    Williams, L., Kessler, R.R., Cunningham, W., Jeffries, R.: Strengthening the case for pair programming. IEEE Software 17(4), 19–25 (2000)CrossRefGoogle Scholar
  6. 6.
    Williams, L.: The Collaborative Software Process. PhD thesis, University of Utah (2000)Google Scholar
  7. 7.
    Nawrocki, J.R., Wojciechowski, A.: Experimental evaluation of pair programming. In: ESCOM 2001: European Software Control and Metrics, pp. 269–276 (2001)Google Scholar
  8. 8.
    Nawrocki, J.R., Jasiński, M., Olek, L., Lange, B.: Pair Programming vs. Side-by-Side Programming. In: Richardson, I., Abrahamsson, P., Messnarz, R. (eds.) EuroSPI 2005. LNCS, vol. 3792, pp. 28–38. Springer, Heidelberg (2005)CrossRefGoogle Scholar
  9. 9.
    Williams, L., Maximilien, E.M., Vouk, M.: Test-Driven Development as a Defect-Reduction Practice. In: ISSRE 2003: Proceedings of the 14th International Symposium on Software Reliability Engineering, Washington, DC, USA, pp. 34–48. IEEE Computer Society, Los Alamitos (2003)CrossRefGoogle Scholar
  10. 10.
    Maximilien, E.M., Williams, L.A.: Assessing Test-Driven Development at IBM. In: ICSE 2003: Proceedings of the 25th International Conference on Software Engineering, pp. 564–569. IEEE Computer Society, Los Alamitos (2003)Google Scholar
  11. 11.
    George, B., Williams, L.A.: An Initial Investigation of Test Driven Development in Industry. In: SAC 2003: Proceedings of the 2003 ACM Symposium on Applied Computing, pp. 1135–1139. ACM, New York (2003)Google Scholar
  12. 12.
    George, B., Williams, L.A.: A structured experiment of test-driven development. Information and Software Technology 46(5), 337–342 (2004)CrossRefGoogle Scholar
  13. 13.
    Madeyski, L.: Preliminary Analysis of the Effects of Pair Programming and Test-Driven Development on the External Code Quality. In: Zieliński, K., Szmuc, T. (eds.) Software Engineering: Evolution and Emerging Technologies. Frontiers in Artificial Intelligence and Applications, vol. 130, pp. 113–123. IOS Press, Amsterdam (2005)Google Scholar
  14. 14.
    Müller, M.M., Hagner, O.: Experiment about test-first programming. IEE Proceedings - Software 149(5), 131–136 (2002)CrossRefGoogle Scholar
  15. 15.
    Müller, M.M.: Are Reviews an Alternative to Pair Programming? In: EASE 2003: Conference on Empirical Assessment In Software Engineering (2003)Google Scholar
  16. 16.
    Müller, M.M.: Are Reviews an Alternative to Pair Programming? Empirical Software Engineering 9(4), 335–351 (2004)CrossRefGoogle Scholar
  17. 17.
    Janzen, D.S.: Software Architecture Improvement through Test-Driven Development. In: OOPSLA 2005: Companion to the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, pp. 222–223. ACM Press, New York (2005)CrossRefGoogle Scholar
  18. 18.
    Kaufmann, R., Janzen, D.: Implications of Test-Driven Development: A Pilot Study. In: OOPSLA 2003: Companion of the 18th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, pp. 298–299. ACM Press, New York (2003)CrossRefGoogle Scholar
  19. 19.
    Madeyski, L.: An empirical analysis of the impact of pair programming and test-driven development on CK design complexity metrics. Technical Report PRE I31/05/P-004, Institute of Applied Informatics, Wroclaw University of Technology (2005)Google Scholar
  20. 20.
    Chidamber, S.R., Kemerer, C.F.: A Metrics Suite for Object Oriented Design. IEEE Transactions on Software Engineering 20(6), 476–493 (1994)CrossRefGoogle Scholar
  21. 21.
    Hulkko, H., Abrahamsson, P.: A Multiple Case Study on the Impact of Pair Programming on Product Quality. In: ICSE 2005: Proceedings of the 27th International Conference on Software Engineering, pp. 495–504. ACM Press, New York (2005)CrossRefGoogle Scholar
  22. 22.
    Object Mentor, Inc.: Test Driven Development (2005),
  23. 23.
    Wikipedia, the free encyclopedia: Test-driven development (2005),
  24. 24.
    Wikipedia, the free encyclopedia: Pair programming (2005),
  25. 25.
    Martin, R.C.: OO Design Quality Metrics, An Analysis of Dependencies (1994)Google Scholar
  26. 26.
    Martin, R.C.: Agile Software Development, Principles, Patterns, and Practices. Prentice-Hall, Englewood Cliffs (2004)Google Scholar
  27. 27.
    Wroclaw University of Technology, e-Informatyka and Tigris developers: aopmetrics project (2005),
  28. 28.
    Briand, L.C., Wüst, J., Ikonomovski, S.V., Lounis, H.: Investigating quality factors in object-oriented designs: an industrial case study. In: ICSE 1999: Proceedings of the 21st International Conference on Software Engineering, pp. 345–354. IEEE Computer Society Press, Los Alamitos (1999)CrossRefGoogle Scholar
  29. 29.
    Emam, K.E., Melo, W.L., Machado, J.C.: The Prediction of Faulty Classes Using Object-Oriented Design Metrics. Journal of Systems and Software 56(1), 63–75 (2001)CrossRefGoogle Scholar
  30. 30.
    Wohlin, C., Runeson, P., Höst, M., Ohlsson, M.C., Regnell, B., Wesslén, A.: Experimentation in Software Engineering: An Introduction. Kluwer Academic Publishers, Norwell (2000)zbMATHGoogle Scholar
  31. 31.
    Williams, L.A., Kessler, R.R.: All I really need to know about pair programming I learned in kindergarten. Commun. ACM 43(5), 108–114 (2000)CrossRefGoogle Scholar
  32. 32.
    Erdogmus, H., Morisio, M., Torchiano, M.: On the Effectiveness of the Test-First Approach to Programming. IEEE Transactions on Software Engineering 31(3), 226–237 (2005)CrossRefGoogle Scholar
  33. 33.
    Shadish, W.R., Cook, T.D., Campbell, D.T.: Experimental and Quasi-Experimental Designs for Generalized Causal Inference. Houghton Mifflin (2002)Google Scholar
  34. 34.
    Kitchenham, B., Pfleeger, S.L., Pickard, L., Jones, P., Hoaglin, D.C., Emam, K.E., Rosenberg, J.: Preliminary Guidelines for Empirical Research in Software Engineering. IEEE Transactions on Software Engineering 28(8), 721–734 (2002)CrossRefGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2006

Authors and Affiliations

  • Lech Madeyski
    • 1
  1. 1.Institute of Applied InformaticsWroclaw University of TechnologyWroclawPoland

Personalised recommendations