An empirical analysis of software evolution profiles and outcomes
Evelyn J. Barry, Sandra A. Slaughter, Chris F. Kemerer · 1999
If anything good can be said to have come from the Year 2000 systems problem, it is that it has created a heightened awareness of how-long lived most software is and how extensively software maintenance efforts span a system's productive life. One of the most important maintenance processes deserving study is software evolution,described as the dynamic behavior, growth and change of software systems over their productive lives. Due to the difficulties in obtaining longitudinal data for empirical analysis of software evolution, little scientific knowledge is available about how software systems evolve and the consequences of different evolutionary patterns. Our objectives in this program of research are to identify software evolution profiles (or patterns of maintenance activities) and to link these evolution profiles to important maintenance outcomes such as software errors and costs. Traditionally, researchers classified software maintenance activities in three major categories: corrective, adaptive and enhancement. We expand this classification scheme to identify six enhancement subcategories related to major software functions (data handling, control flow, initialization, user interface, computation and module interface). After building software lifecycle maintenance profiles described by these classifications, we link these profiles to maintenance outcomes by developing a two-stage model. The first stage links software complexity to variables such as application size, maintenance team size, and the influence of purchased (vs. in-house) software applications; The second stage links software errors to software maintenance profiles, application usage and software complexity. We conducted an empirical study of the software lifecycle maintenance activities in a large Mid...