| | This Article | |
| |
| |
| | Share | |
| |
| |
| | Bibliographic References | |
| |
| |
| | Add to: | |
| |
Digg
Furl
Spurl
Blink
Simpy
Google
Del.icio.us
Y!MyWeb
| |
| | Search | |
| |
| |
| | |
Does Code Decay? Assessing the Evidence from Change Management Data
January 2001 (vol. 27 no. 1)
pp. 1-12
Abstract—A central feature of the evolution of large software systems is that change—which is necessary to add new functionality, accommodate new hardware, and repair faults—becomes increasingly difficult over time. In this paper, we approach this phenomenon, which we term code decay, scientifically and statistically. We define code decay and propose a number of measurements (code decay indices) on software and on the organizations that produce it, that serve as symptoms, risk factors, and predictors of decay. Using an unusually rich data set (the fifteen-plus year change history of the millions of lines of software for a telephone switching system), we find mixed, but on the whole persuasive, statistical evidence of code decay, which is corroborated by developers of the code. Suggestive indications that perfective maintenance can retard code decay are also discussed.
[1] A. Mockus, S.G. Eick, T.L. Graves, and A.F. Karr, “On Measurement and Analysis of Software Changes,” technical report, National Inst. of Statistical Sciences. 1999.
[2] L.A. Belady and M.M. Lehman, “Programming System Dynamics, or the Meta-Dynamics of Systems in Maintenance and Growth,” technical report, IBM T.J. Watson Research Center, 1971.
[3] L.A. Belady and M.M. Lehman, “A Model of Large Program Development,” IBM Systems J., pp. 225–252, 1976.
[4] M.M. Lehman and L.A. Belady, Program Evolution: Processes of Software Change.London: Academic Press, 1985.
[5] I. Vessey and R. Weber, “Some Factors Affecting Program Repair Maintenance: An Empirical Study,” Comm. ACM, vol. 26, pp. 128–134, 1983.
[6] S. Bendifallah and W. Scacchi, “Understanding Software Maintenance Work,” IEEE Trans. Software Eng., vol. 24, pp. 311–323, 1987.
[7] W.S. Scacchi, “Managing Software Engineering Projects: A Social Analysis,” IEEE Trans. Software Eng., vol. 10, no. 1, pp. 49–59, Jan. 1984.
[8] C.F. Kemerer and A.K. Ream, “Empirical Research on Software Maintenance: 1981–1990,” technical report, Mass. Inst. of Technology, 1992.
[9] D.L. Parnas, "Software Aging," Proc. 16th Int'l Conf. Software Eng., IEEE CS Press, Los Alamitos, Calif., Order No. 5855, 1994 pp. 279-287.
[10] N. Ohlsson and H. Alberg, “Predicting Error-Prone Software Modules in Telephone Switches,” IEEE Trans. Software Eng., vol. 22, no. 12, pp. 886–894, Dec. 1996.
[11] V.R. Basili and B.T. Perricone,“Software errors and complexity: An empirical investigation,” Comm. ACM, vol. 27, no. 1, pp. 42-52, Jan. 1984.
[12] V.R. Basili and D.M. Weiss, “A Methodology for Collecting Valid Software Engineering Data,” IEEE Trans. Software Eng., vol. 10, no. 6, pp. 728–737, 1984.
[13] E.B. Swanson, "The Dimensions of Maintenance," Proc. Second Int'l Conf. Software Eng., pp. 492-497, 1976.
[14] K.H. An, D.A. Gustafson, and A.C. Melton, “A Model for Software Maintenance,” Proc. Conf. Software Maintenance, pp. 57-62, Sept. 1987.
[15] D.E. Perry, H.P. Siy, and L.G. Votta, “Parallel Changes in Large Scale Software Development: An Observational Case Study,” Proc. Int'l Conf. Software Eng. (ICSE '98), pp. 251-260, 1998.
[16] N. Staudenmayer, T.L. Graves, J.S. Marron, A. Mockus, H. Siy, L.G. Votta, and D.E. Perry, “Adapting to a New Environment: How a Legacy Software Organization Copes with Volatility and Change,” Proc. Fifth Int'l Product Development Conf., 1998.
[17] S.L. Pfleeger, R. Jeffery, B. Curtis, and B. Kitchenham, “Status Report on Software Measurement,” IEEE Software, vol. 14, no. 2, 1997.
[18] H. Zuse,Software Complexity.Berlin: Walter de Gruyter, 1991.
[19] T.A. Ball and S.G. Eick, “Software Visualization in the Large,” Computer, vol. 29, no. 4, pp. 33–43, 1996.
[20] T.L. Graves, A.F. Karr, J.S. Marron, and H. Siy, “Predicting Fault Incidence Using Software Change History,” IEEE Trans. Software Eng., vol. 26, no. 7, pp. 653–661, July 2000.
[21] M.P. Wand and M.C. Jones, Kernel Smoothing. London: Chapman and Hall, 1995.
[22] J. Fan and I. Gijbels, Local Polynomial Modelling and Its Applications. London: Chapman and Hall, 1996.
[23] P. Chaudhuri and J.S. Marron, “SiZer for Exploration of Structures in Curves,” J. Am. Statistical Assoc., vol. 94, no. 447, pp. 807-823, Sept. 1999.
[24] G.J. Wills, “Nicheworks—Interactive Visualization of Very Large Graphs,” J. of Computational and Graphical Statistics, vol. 8, no. 2, pp. 190-212, June 1999.
[25] T.L. Graves and A. Mockus, ”Inferring Change Effort from Configuration Management Databases,” Proc. Metrics 98, 1998.
Index Terms:
Software maintenance, metrics, statistical analysis, fault potential, span of changes, effort modeling.
Citation:
Stephen G. Eick, Todd L. Graves, Alan F. Karr, J.s. Marron, Audris Mockus, "Does Code Decay? Assessing the Evidence from Change Management Data," IEEE Transactions on Software Engineering, vol. 27, no. 1, pp. 1-12, Jan. 2001, doi:10.1109/32.895984