Experimental Study of Quantitative Analysis of Maintenance Effort Using Program Slicing-Based Metrics

During the software development lifecycle, studies have shown that over 75% of project costs originate from the maintenance phase. Analysis of the processes within the maintenance phase could prove beneficial since most maintenance activities revolve around source code. Accurate estimations of the maintenance effort spent on code changes would enable cost effective management of resources. In this research, we investigate a quantitative approach to express maintenance effort, for which a set of program-sliced metrics is proposed. Using the time to resolve an issue as a measure of maintenance effort, we evaluated our proposed metrics against the basic code-based metrics Lines of Code and McCabe's Cyclomatic Complexity. To eliminate outside factors, we performed an experimental case study on a set of pre-defined maintenance activities. Results suggest that program slicing metrics have the strongest correlation with maintenance effort, exhibiting a moderate degree of correlation with maintenance effort. In contrast, Lines of Code has a weak correlation with maintenance effort. This study contributes to our ongoing research into the analysis of maintenance processes.

[1]  Nachiappan Nagappan,et al.  Using Software Dependencies and Churn Metrics to Predict Field Failures: An Empirical Case Study , 2007, First International Symposium on Empirical Software Engineering and Measurement (ESEM 2007).

[2]  Kent Johnson,et al.  Interpreting the CMMI : A Process Improvement Approach , 2003 .

[3]  Tom Lam,et al.  A software maintenance survey , 1994, Proceedings of 1st Asia-Pacific Software Engineering Conference.

[4]  Keith Brian Gallagher,et al.  Using Program Slicing in Software Maintenance , 1991, IEEE Trans. Software Eng..

[5]  Khaled El Emam,et al.  Spice: The Theory and Practice of Software Process Improvement and Capability Determination , 1997 .

[6]  Paul Anderson,et al.  Tool Support for Fine-Grained Software Inspection , 2003, IEEE Softw..

[7]  Yi Zhang,et al.  Classifying Software Changes: Clean or Buggy? , 2008, IEEE Transactions on Software Engineering.

[8]  Sandip C. Patel,et al.  A metrics-based software maintenance effort model , 2004, Eighth European Conference on Software Maintenance and Reengineering, 2004. CSMR 2004. Proceedings..

[9]  Shinji Kusumoto,et al.  Experimental Evaluation of Program Slicing for Fault Localization , 2002, Empirical Software Engineering.

[10]  Gail C. Murphy,et al.  Predicting source code changes by mining change history , 2004, IEEE Transactions on Software Engineering.

[11]  John E. Gaffney,et al.  Software Function, Source Lines of Code, and Development Effort Prediction: A Software Science Validation , 1983, IEEE Transactions on Software Engineering.

[12]  Tsutomu Ishida,et al.  Metrics and Models in Software Quality Engineering , 1995 .

[13]  Gerardo Canfora,et al.  Fine grained indexing of software repositories to support impact analysis , 2006, MSR '06.

[14]  Norman E. Fenton,et al.  Software metrics: successes, failures and new directions , 1999, J. Syst. Softw..

[15]  Lowell Jay Arthur Software evolution: the software maintenance challenge , 1988 .

[16]  Jorge Marcelo Montagna,et al.  Framework to Evaluate Software Process Improvement in Small Organizations , 2008, ICSP.

[17]  Sunghun Kim,et al.  Bug Classification Using Program Slicing Metrics , 2006, 2006 Sixth IEEE International Workshop on Source Code Analysis and Manipulation.

[18]  Onur Demirörs,et al.  Conceptual Differences Among Functional Size Measurement Methods , 2007, ESEM 2007.

[19]  Mario Piattini,et al.  A Process for Driving Process Improvement in VSEs , 2009, ICSP.

[20]  Dewayne E. Perry,et al.  Metrics and laws of software evolution-the nineties view , 1997, Proceedings Fourth International Software Metrics Symposium.

[21]  Vangalur S. Alagar,et al.  Assessment of maintainability in object-oriented software , 2001, Proceedings 39th International Conference and Exhibition on Technology of Object-Oriented Languages and Systems. TOOLS 39.

[22]  Sunghun Kim,et al.  How long did it take to fix bugs? , 2006, MSR '06.

[23]  V. Malheiros,et al.  A Visual Text Mining approach for Systematic Reviews , 2007, ESEM 2007.

[24]  Juan Li,et al.  Requirement-Centric Traceability for Change Impact Analysis: A Case Study , 2008, ICSP.

[25]  Nachiappan Nagappan,et al.  Predicting defects using network analysis on dependency graphs , 2008, 2008 ACM/IEEE 30th International Conference on Software Engineering.

[26]  Liguo Yu Mining Change Logs and Release Notes to Understand Software Maintenance and Evolution , 2009, CLEI Electron. J..

[27]  Hajimu Iida,et al.  Analysis of Bug Fixing Processes Using Program Slicing Metrics , 2010, PROFES.

[28]  T J. Mccabe,et al.  Structured Testing: A Software Testing Methodology Using the Cyclomatic Complexity Metric , 1982 .

[29]  Matthew B. Dwyer,et al.  Differential symbolic execution , 2008, SIGSOFT '08/FSE-16.

[30]  Paul Anderson,et al.  The CodeSurfer software understanding platform , 2005, 13th International Workshop on Program Comprehension (IWPC'05).

[31]  P. Wernick,et al.  Program slicing metrics and evolvability: an initial study , 2005, IEEE International Workshop on Software Evolvability (Software-Evolvability'05).

[32]  David W. Binkley,et al.  Slice-based cohesion metrics and software intervention , 2004, 11th Working Conference on Reverse Engineering.

[33]  Andreas Zeller,et al.  How Long Will It Take to Fix This Bug? , 2007, Fourth International Workshop on Mining Software Repositories (MSR'07:ICSE Workshops 2007).

[34]  Mark Harman,et al.  Locating dependence clusters and dependence pollution , 2005, 21st IEEE International Conference on Software Maintenance (ICSM'05).

[35]  James D. Arthur,et al.  Assessing the adequacy of documentation through document quality indicators , 1989, Proceedings. Conference on Software Maintenance - 1989.