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.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
C. Alexander. A Pattern Language: Towns, Buildings, Construction. Oxford University Press Inc, 1978.
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.
E. Arisholm. Empirical assessment of changeability in object-oriented software. Master’s thesis, University of Oslo, 2001.
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.
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.
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.
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.
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.
V. Basili. The role of experimentation in software engineering: past, current, and future. proc. IEEE International Conference on Software Engineering, pages 442–449, 1996.
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.
K. Beck. Extreme Programming Explained. Addison Wesley, 2001.
K. Beck. Embrace change with extreme programming. IEEE Computer, 32(10):70–77, 1999.
C. F. Bond and L. J. Titus. Social facilitation: A meta-analysis of 241 studies. Psychological Bulletin, 94(2):265–292, 1983.
G. Booch, J. Rumbaugh, and I. Jacobson. The Unified Modeling Language User Guide. Addison Wesley, 1999.
L. Briand. Software documentation: How much is enough? proc. IEEE European Conference on Software Maintenance and Reengineering, pages 13–15, 2003.
R. Brooks. Towards a theory of the cognitive processes in computer programming. Int. Journal on Man-Machine Studies, 9:737–751, 1977.
R. Brown. Group Processes. Blackwell Publishing, 2 edition, 2000.
B. Bruegge and A. Dutoit. Object-Oriented Software Engineering Using UML, Patterns, and Java. Prentice Hall, 2nd edition, 2004.
F. Buschmann, R. Meunier, H. Rohnert, P. Sommerlad, and M. Stal. Pattern-Oriented Software Architecture. Wiley, 1996.
A. Cockburn. The coffee machine design problem: Part 1 & 2. C/C++ User’s Journal, (May/June), 1998.
L. L. Constantine. Constantine on Peopleware. Prentice-Hall, 1995.
T. D. Cook and D. Campbell. Quasi-Experimentation - Design & Analysis Issues for Field Settings. Houghton Mifflin Company, 1979.
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.
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.
D. R. Forsyth. Group Dynamics. Wadsworth Publishing Company, 3 edition, 1999.
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.
E. Gamma, R. Helm, R. Johnson, and J. Vlissides. Design Patterns: Elements of reusable object-oriented software. Addison-Wesley, 1995.
T. Hærem. Task complexity and expertise as determinants of task perceptions and performance. Master’s thesis, Norwegian School of Management BI, 2002.
C. Judd, E. Kidder, and L. Smith. Research methods in social relations. Holt, Rinehart and Winston, Inc., 6th edition, 1991.
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.
A. Kleppe, J. Warmer, and W. Bast. MDA Explained - The Model Driven Architecture: Practice and Promise. Addison-Wesley, 2003.
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.
S. Letovsky and E. Soloway. Delocalized plans and program comprehension. IEEE Software, 3(3):41–49, 1986.
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.
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.
J. Nawrocki and A. Wojciechowski. Experimental evaluation of pair programming. proc. European Software Control and Metrics (Escom), April 2-4 2001.
J. T. Nosek. The case for collaborative programming. Communications of the ACM, 41(3):105–108, 1998.
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.
R. Pressman. Software Engineering - A Practitioner’s Approach. McGraw Hill, 7th edition, 2005.
R. Pressmann. Software Engineering. A Practitioner’s Approach. McGraw-Hill, 1997.
S. D. Sheetz. Identifying the difficulties of object-oriented development. Journal of Systems and Software, 64(1):23–36, 2002.
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.
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.
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.
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.
G. M. Weinberg. The Psychology of Computer Programming. Van Nostrand Reinhold Company, 1971.
L. A. Williams. The collaborative software process. Master’s thesis, University of Utah, 2000.
L. Williams, R. R. Kessler, W. Cunningham, and R. Jeffries. Strengthening the case for pair programming. IEEE Software, 17(4):19–25, 2000.
R. Wirfs-Brock. Characterizing your application’s control style. Report on Object Analysis and Design, 1(3), Sept/Oct 1994.
R. Wirfs-Brock and B. Wilkerson. Object-oriented design: A responsibility driven approach. SIGPLAN Notices, 24(10):71–75, 1989.
R. B. Zajonc. Social facilitation. Science, (149):269–274, 1965.
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights 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
DOI: https://doi.org/10.1007/978-3-642-01156-6_30
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-642-01155-9
Online ISBN: 978-3-642-01156-6
eBook Packages: Mathematics and StatisticsMathematics and Statistics (R0)