How much does unused code matter for maintenance?

Software systems contain unnecessary code. Its maintenance causes unnecessary costs. We present tool-support that employs dynamic analysis of deployed software to detect unused code as an approximation of unnecessary code, and static analysis to reveal its changes during maintenance. We present a case study on maintenance of unused code in an industrial software system over the course of two years. It quantifies the amount of code that is unused, the amount of maintenance activity that went into it and makes the potential benefit of tool support explicit, which informs maintainers that are about to modify unused code.

[1]  Alessandro Orso,et al.  Techniques for Classifying Executions of Deployed Software to Support Software Engineering Tasks , 2007, IEEE Transactions on Software Engineering.

[2]  Miryung Kim,et al.  Discovering and representing systematic code changes , 2009, 2009 IEEE 31st International Conference on Software Engineering.

[3]  Michael I. Jordan,et al.  Bug isolation via remote program sampling , 2003, PLDI '03.

[4]  David F. Redmiles,et al.  Large-scale collection of application usage data and user feedback to inform interactive software development , 1999 .

[5]  H. Dieter Rombach,et al.  Toward full life cycle control: Adding maintenance measurement to the SEL , 1992, J. Syst. Softw..

[6]  Lance M. Berc,et al.  Continuous profiling: where have all the cycles gone? , 1997, TOCS.

[7]  Alessandro Orso,et al.  Gamma system: continuous evolution of software after deployment , 2002, ISSTA '02.

[8]  Standard Glossary of Software Engineering Terminology , 1990 .

[9]  Claes Wohlin,et al.  Experimentation in software engineering: an introduction , 2000 .

[10]  Judith E. Grass Cdiff: A Syntax Directed Differencer for C++ Programs , 1992, C++ Conference.

[11]  Alfred V. Aho,et al.  Compilers: Principles, Techniques, and Tools , 1986, Addison-Wesley series in computer science / World student series edition.

[12]  Michael I. Jordan,et al.  Scalable statistical bug isolation , 2005, PLDI '05.

[13]  H. D. Rombach,et al.  The Goal Question Metric Approach , 1994 .

[14]  Victor R. Basili,et al.  Understanding and predicting the process of software maintenance releases , 1996, Proceedings of IEEE 18th International Conference on Software Engineering.

[15]  Susan Horwitz,et al.  Identifying the semantic and textual differences between two versions of a program , 1990, PLDI '90.

[16]  Andrew W. Appel,et al.  Modern Compiler Implementation in Java , 1997 .

[17]  Bjorn De Sutter,et al.  Compiler techniques for code compaction , 2000, TOPL.

[18]  Susan L. Graham,et al.  Gprof: A call graph execution profiler , 1982, SIGPLAN '82.

[19]  Dowming Yeh,et al.  An empirical study of the influence of departmentalization and organizational position on software maintenance , 2002, J. Softw. Maintenance Res. Pract..

[20]  Markus Herrmannsdoerfer,et al.  Feature Profiling for Evolving Systems , 2011, 2011 IEEE 19th International Conference on Program Comprehension.

[21]  Wuu Yang,et al.  Identifying syntactic differences between two programs , 1991, Softw. Pract. Exp..

[22]  Michael D. Smith,et al.  Ephemeral Instrumentation for Lightweight Program Profiling , 1997 .

[23]  Daniel Jackson,et al.  Semantic Diff: a tool for summarizing the effects of modifications , 1994, Proceedings 1994 International Conference on Software Maintenance.

[24]  Madeline Diep,et al.  Profiling deployed software: assessing strategies and testing opportunities , 2005, IEEE Transactions on Software Engineering.