Identifying high maintenance legacy software

Legacy software maintenance is a significant cost item for many engineering organizations. This study is a preliminary report on work to investigate maintenance data, usage, and source code for legacy software used by an engineering design company to support a variety of functions, including electromagnetic, thermal, mechanical loading, vibration, and aerodynamic analysis. The results verify the applicability to legacy engineering software of previous research that concluded that size and structural metrics alone are not good indicators of high maintenance costs. Unlike previous research, the study also evaluates the effect of program usage on maintenance cost. Over the three-year period of this study of 71 legacy engineering programs, 11 of the programs (15%) accounted for 80% of all maintenance and 67% of all program runs. The highest maintenance programs were not always the largest programs or the worst structured programs. 49 % of the programs accounted for only 1% of total maintenance but 42 % of the total lines of code (LOC) thus invalidating LOC as an indicator for maintenance cost. While additional work is needed to validate these findings across other organizations and other code sets, these preliminary results provide strong evidence that expected program usage can be a useful indicator of long-term maintenance cost.

[1]  Martin Shepperd,et al.  Foundations of software measurement , 1995 .

[2]  Anas N. Al-Rabadi,et al.  A comparison of modified reconstructability analysis and Ashenhurst‐Curtis decomposition of Boolean functions , 2004 .

[3]  Harlan D. Mills,et al.  Certifying the reliability of software , 1986, IEEE Transactions on Software Engineering.

[4]  Alexandra Poulovassilis,et al.  Classical and Object-Oriented Software Engineering with UML and C++, Stephen R. Schach, McGraw-Hill, 1998 (Book Review) , 2000, Softw. Test. Verification Reliab..

[5]  Jeff Tian,et al.  A comparison of measurement and defect characteristics of new and legacy software systems , 1998, J. Syst. Softw..

[6]  David N. Card,et al.  Resolving the software science anomaly , 1987, J. Syst. Softw..

[7]  Jesse H. Poore,et al.  Statistical testing of software based on a usage model , 1995, Softw. Pract. Exp..

[8]  Michael B. O'Neal An empirical study of three common software complexity measures , 1993, SAC '93.

[9]  Stephen R. Schach,et al.  Object-oriented and classical software engineering , 1995 .

[10]  Harlan D. Mills Certifying the correctness of software , 1992, Proceedings of the Twenty-Fifth Hawaii International Conference on System Sciences.

[11]  Norman E. Fenton,et al.  Quantitative Analysis of Faults and Failures in a Complex Software System , 2000, IEEE Trans. Software Eng..

[12]  Taghi M. Khoshgoftaar,et al.  Predicting the order of fault-prone modules in legacy software , 1998, Proceedings Ninth International Symposium on Software Reliability Engineering (Cat. No.98TB100257).

[13]  Darrel C. Ince,et al.  A critique of three metrics , 1994, J. Syst. Softw..

[14]  John D. Musa,et al.  Operational profiles in software-reliability engineering , 1993, IEEE Software.

[15]  Rajiv D. Banker,et al.  Software complexity and maintenance costs , 1993, CACM.

[16]  Edward N. Adams,et al.  Optimizing Preventive Service of Software Products , 1984, IBM J. Res. Dev..

[17]  Jeff Tian,et al.  Measurement and defect modeling for a legacy software system , 1995, Ann. Softw. Eng..