AuthorsE. Arisholm
EditorsA. Tveito, A. M. Bruaset and O. Lysne
TitleA Series of Controlled Experiments on Software Maintenance
AfilliationSoftware Engineering, Software Engineering
Publication TypeBook Chapter
Year of Publication2009
Book TitleSimula Research Laboratory - by thinking constantly about it
Place PublishedHeidelberg
ISBN Number978-3-642-01155-9

Research background Software maintenance is both difficult and costly, and software organizations have little tangible evidence with regards to how they can improve their software maintenance practices and precisely what elements comprise the tradeoffs, the expected costs, and the benefits of alternative solutions. Scientific challenges The effort required to maintain software systems depends on many interacting factors, such as the software system's structural properties; the use of analysis, design principles and patterns; available documentation of requirements; design and code; tool support; and developer skills. Given the complexities of the problems at hand, empirical studies in realistic yet controlled settings are needed to better understand how such factors drive the costs of software maintenance and the quality of the software artefacts. In the Maintenance of Object-Oriented Software (MOOSE) project at Simula Research Laboratory, we have pursued large-scale, controlled experiments that combine a high degree of realism with the necessary degree of control, so as to obtain credible results that are applicable to the problems faced by the software industry. Obtained and expected results The studies reported herein contribute to a significantly improved understanding of software maintenance performance by pushing the boundaries of state-of-the-art empirical software engineering research. The results can help software maintenance organizations improve the efficiency of their maintenance processes and the quality of the products being maintained. Specifically, the results provide empirical evidence on tradeoffs and expected costs and benefits when applying design principles and patterns, simple task prioritization techniques, the Unified Modelling Language (UML), and pair programming in different maintenance contexts.