Skip to main content

A Series of Controlled Experiments on Software Maintenance

  • Chapter
  • First Online:
Simula Research Laboratory
  • 812 Accesses

Abstract

Software maintenance entails the comprehension of often large, complex systems under constant change, and consumes the majority of software development resources [39]. The ISO 9126 model defines maintainability as “a set of attributes that bear on the effort needed to make specified modifications.” It can also be viewed as a two-dimensional characteristic involving both the effort expended on implementing changes and the resulting quality of the changes [3]. The effort required to make correct changes to a software system depends on many factors, including characteristics of the software system itself (e.g., code, design, architecture, and documentation), the development environment and tools, the software engineering process used, and human skills and experience. To better understand how maintenance performance is affected by such a complex combinations of factors, empirical studies are needed. As will be demonstrated in this chapter, once a credible body of empirical evidence has been developed, it can be used to propose improvements that can result in large cost savings and, as it turns out, carried out by quite simple means.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 84.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 109.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info
Hardcover Book
USD 109.99
Price excludes VAT (USA)
  • Durable hardcover edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. C. Alexander. A Pattern Language: Towns, Buildings, Construction. Oxford University Press Inc, 1978.

    Google Scholar 

  2. B. Anda, K. Hansen, I. Gullesen, and H. Thorsen. Experiences from using a uml-based development method in a large safety-critical project. Empirical Software Engineering, 11(4):555–581, 2006.

    Article  Google Scholar 

  3. E. Arisholm. Empirical assessment of changeability in object-oriented software. Master’s thesis, University of Oslo, 2001.

    Google Scholar 

  4. E. Arisholm, L. C. L. Briand, S. E. Hove, and Y. Labiche. The impact of uml documentation on software maintenance: An experimental evaluation. IEEE Transactions on Software Engineering, 32(6):365–381, 2006.

    Article  Google Scholar 

  5. E. Arisholm, H. Gallis, T. Dybå, and D. I. Sjøberg. Evaluating pair programming with respect to system complexity and programmer expertise. IEEE Transactions on Software Engineering, 33(2):65–86, feb 2007.

    Article  Google Scholar 

  6. E. Arisholm, D. Sjøberg, G. J. Carelius, and Y. Lindsjørn. A web-based support environment for software engineering experiments. Nordic Journal of Computing, 9(4):231–247, 2002.

    Google Scholar 

  7. E. Arisholm, D. Sjøberg, and M. Jørgensen. Assessing the changeability of two object-oriented design alternatives - a controlled experiment. Empirical Software Engineering, 6(3):231–277, 2001.

    Article  MATH  Google Scholar 

  8. E. Arisholm and D. I. K. Sjøberg. Evaluating the effect of a delegated versus centralized control style on the maintainability of object-oriented software. IEEE Transactions on Software Engineering, 30(8):521–534, aug 2004.

    Article  Google Scholar 

  9. V. Basili. The role of experimentation in software engineering: past, current, and future. proc. IEEE International Conference on Software Engineering, pages 442–449, 1996.

    Google Scholar 

  10. V. Basili, F. Shull, and F. Lanubile. Building knowledge through families of experiments. IEEE Transactions on Software Engineering, 25(4):456–473, July/August 1999.

    Article  Google Scholar 

  11. K. Beck. Extreme Programming Explained. Addison Wesley, 2001.

    Google Scholar 

  12. K. Beck. Embrace change with extreme programming. IEEE Computer, 32(10):70–77, 1999.

    Google Scholar 

  13. C. F. Bond and L. J. Titus. Social facilitation: A meta-analysis of 241 studies. Psychological Bulletin, 94(2):265–292, 1983.

    Article  Google Scholar 

  14. G. Booch, J. Rumbaugh, and I. Jacobson. The Unified Modeling Language User Guide. Addison Wesley, 1999.

    Google Scholar 

  15. L. Briand. Software documentation: How much is enough? proc. IEEE European Conference on Software Maintenance and Reengineering, pages 13–15, 2003.

    Google Scholar 

  16. R. Brooks. Towards a theory of the cognitive processes in computer programming. Int. Journal on Man-Machine Studies, 9:737–751, 1977.

    Article  Google Scholar 

  17. R. Brown. Group Processes. Blackwell Publishing, 2 edition, 2000.

    Google Scholar 

  18. B. Bruegge and A. Dutoit. Object-Oriented Software Engineering Using UML, Patterns, and Java. Prentice Hall, 2nd edition, 2004.

    Google Scholar 

  19. F. Buschmann, R. Meunier, H. Rohnert, P. Sommerlad, and M. Stal. Pattern-Oriented Software Architecture. Wiley, 1996.

    Google Scholar 

  20. A. Cockburn. The coffee machine design problem: Part 1 & 2. C/C++ User’s Journal, (May/June), 1998.

    Google Scholar 

  21. L. L. Constantine. Constantine on Peopleware. Prentice-Hall, 1995.

    Google Scholar 

  22. T. D. Cook and D. Campbell. Quasi-Experimentation - Design & Analysis Issues for Field Settings. Houghton Mifflin Company, 1979.

    Google Scholar 

  23. J. Dzidek, E. Arisholm, and L. C. Briand. A realistic empirical evaluation of the costs and benefits of uml in software maintenance. IEEE Transaction on Software Engineering, 34(3):407–432, 2008.

    Article  Google Scholar 

  24. N. V. Flor and E. L. Hutchins. Analyzing distributed cognition in software teams: A case study of team programming during perfective software maintenance. proc. Fourth Workshop on Empirical Studies of Programmers, pages 36–64, December 7-9 1991.

    Google Scholar 

  25. D. R. Forsyth. Group Dynamics. Wadsworth Publishing Company, 3 edition, 1999.

    Google Scholar 

  26. H. Gallis, E. Arisholm, and T. Dybå. An initial framework for research on pair programming. proc. 2003 ACM-IEEE International Symposium on Empirical Software Engineering (ISESE 2003, pages 132–142, September 30 - October 1 2003.

    Google Scholar 

  27. E. Gamma, R. Helm, R. Johnson, and J. Vlissides. Design Patterns: Elements of reusable object-oriented software. Addison-Wesley, 1995.

    Google Scholar 

  28. T. Hærem. Task complexity and expertise as determinants of task perceptions and performance. Master’s thesis, Norwegian School of Management BI, 2002.

    Google Scholar 

  29. C. Judd, E. Kidder, and L. Smith. Research methods in social relations. Holt, Rinehart and Winston, Inc., 6th edition, 1991.

    Google Scholar 

  30. S. J. Karau and K. D. Williams. Social loafing: A meta-analytic review and theoretical integration. Journal of Personality and Social Psychology, 65(4):681–706, 1993.

    Article  Google Scholar 

  31. A. Kleppe, J. Warmer, and W. Bast. MDA Explained - The Model Driven Architecture: Practice and Promise. Addison-Wesley, 2003.

    Google Scholar 

  32. A. Lakhotia and J.-C. Deprez. Restructuring functions with low cohesion. proc. IEEE Working Conference on Reverse Engineering (WCRE), pages 36–46, October 6–8 1999.

    Google Scholar 

  33. S. Letovsky and E. Soloway. Delocalized plans and program comprehension. IEEE Software, 3(3):41–49, 1986.

    Article  Google Scholar 

  34. K. M. Lui and K. C. Chan. When Does a Pair Outperform Two Individuals? Extreme Programming and Agile Processes in Software Engineering, volume 2675/2003, pages 225–233. Springer Lecture Notes on Computer Science (LNCS), 2003.

    Google Scholar 

  35. M. M. Müller. Two controlled experiments concerning the comparison of pair programming to peer review. Journal of Systems and Software, 78(2):166–179, nov 2005.

    Article  Google Scholar 

  36. J. Nawrocki and A. Wojciechowski. Experimental evaluation of pair programming. proc. European Software Control and Metrics (Escom), April 2-4 2001.

    Google Scholar 

  37. J. T. Nosek. The case for collaborative programming. Communications of the ACM, 41(3):105–108, 1998.

    Article  Google Scholar 

  38. L. Prechelt, B. Unger, W. F. Tichy, P. Brossler, and L. G. Votta. A controlled experiment in maintenance comparing design patterns to simpler solutions. IEEE Transactions on Software Engineering, 27(12):1134–1144, 2001.

    Article  Google Scholar 

  39. R. Pressman. Software Engineering - A Practitioner’s Approach. McGraw Hill, 7th edition, 2005.

    Google Scholar 

  40. R. Pressmann. Software Engineering. A Practitioner’s Approach. McGraw-Hill, 1997.

    Google Scholar 

  41. S. D. Sheetz. Identifying the difficulties of object-oriented development. Journal of Systems and Software, 64(1):23–36, 2002.

    Article  Google Scholar 

  42. D. I. K. Sjøberg, J. E. Hannay, O. Hansen, A. Kampenes, A. Karahasanovic, K. L. N, and A. C. Rekdal. A survey of controlled experiments in software engineering. IEEE Transactions on Software Engineering, 31(9):1–21, 2005.

    Article  Google Scholar 

  43. E. Soloway, R. Lampert, S. Letowski, D. Littman, and J. Pinto. Designing documentation to compensate for delocalized plans. Communications of the ACM, 31(11):1259–1267, 1988.

    Article  Google Scholar 

  44. M. Vokác, W. Tichy, D. I. K. Sjøberg, E. Arisholm, and M. Aldrin. A controlled experiment comparing the maintainability of programs designed with and without design patterns – a replication in a real programming environment,. Empirical Software Engineering, 9(3):149–195, 2004.

    Article  Google Scholar 

  45. A. I. Wang and E. Arisholm. The effect of task order on the maintainability of object-oriented software. Information and Software Technology, 51(3):293–305, 2009.

    Article  Google Scholar 

  46. G. M. Weinberg. The Psychology of Computer Programming. Van Nostrand Reinhold Company, 1971.

    Google Scholar 

  47. L. A. Williams. The collaborative software process. Master’s thesis, University of Utah, 2000.

    Google Scholar 

  48. L. Williams, R. R. Kessler, W. Cunningham, and R. Jeffries. Strengthening the case for pair programming. IEEE Software, 17(4):19–25, 2000.

    Article  Google Scholar 

  49. R. Wirfs-Brock. Characterizing your application’s control style. Report on Object Analysis and Design, 1(3), Sept/Oct 1994.

    Google Scholar 

  50. R. Wirfs-Brock and B. Wilkerson. Object-oriented design: A responsibility driven approach. SIGPLAN Notices, 24(10):71–75, 1989.

    Article  Google Scholar 

  51. R. B. Zajonc. Social facilitation. Science, (149):269–274, 1965.

    Article  Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2010 Springer-Verlag Berlin Heidelberg

About this chapter

Cite this chapter

Arisholm, E. (2010). A Series of Controlled Experiments on Software Maintenance. In: Tveito, A., Bruaset, A., Lysne, O. (eds) Simula Research Laboratory. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-01156-6_30

Download citation

Publish with us

Policies and ethics