Code Decay in Legacy Software Systems: Measurement, Models, and Statistical Strategies

Case Study

fading numbers

Challenges

Over time, software code can lose quality and begin having errors and problems working properly. It is more difficult to keep changing the code and has become much more expensive as well. Eventually the hardware fails and there is no way to update or port the software to newer tools. Lucent Technologies, along with the National Science Foundation hired NISS to look at a way to quantify, measure, predict and reverse or retard code decay.

Solutions

NISS helped to improve the development process for large legacy software systems by application of statistical strategies to model and control the effects of design decisions, software architecture and organizational factors. NISS also looked at finding reductions in cost and development time, increases in software quality and improved capability to predict cost, schedule and quality.


Research Project

Technical Report 63: One of the main features 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. This phenomenon, which NISS called code decay, was studied by the team. They proposed 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), they found persuasive statistical evidence of code decay, which is corroborated by developers of the code.

Technical Report(s):

Technical Report 63: An Empirical Study of Regression Test Selection Techniques
Technical Report 64: WEB-Based Text Visualization
Technical Report 80: Predicting Fault Incidence Using Software Change History
Technical Report 81: Does Code Decay? Assessing the Evidence from Change Management Data
Technical Report 84: Inferring Change Effort from Configuration Management Databases
Technical Report 94: Finding Clusters in Network Link Strength Data

Project Goal: 

At what point does code in software decay? How fast does it start to have problems due to its age? These and similar questions, were explored by a NISS research team.

Research Team: 

Funding Sponsor(s): National Science Foundation, Lucent Technologies

Principal Investigator(s):  Alan Karr, NISS; Stephen Eick, Bell Laboratories

Senior Investigator(s): J.S. Marron, UNC-Chapel Hill; Audris Mockus, Lucent; Adam Porter, Maryland; Nancy Staudenmayer, Duke; Harvey Siy, Lucent; Lawrence Votta, Lucent; David Weiss, Lucent

Post Doctoral Fellow(s): Todd Graves

Individual Team Members: 
Alan F. KarrTodd Graves