On the Resilience of Classes to Change

Software systems evolve over time incrementally and sections of code are modified. But, how much does code really change? Lehman's laws suggest that software must be continuously adapted to be useful. We have studied the evolution of several public domain object-oriented software systems and analyzed the rate as well as the amount of change that individual classes undergo as they evolve. Our observations suggest that although classes are modified, the majority of changes are minor and only a small proportion of classes undergo significant modification.

[1]  Markus Lumpe,et al.  Patterns of Component Evolution , 2007, SC@ETAPS.

[2]  R. Ferrer i Cancho,et al.  Scale-free networks from optimal design , 2002, cond-mat/0204344.

[3]  Oscar Nierstrasz,et al.  The Inevitable Stability of Software Change , 2007, 2007 IEEE International Conference on Software Maintenance.

[4]  David R. Cox,et al.  The statistical analysis of series of events , 1966 .

[5]  Serge Demeyer,et al.  Reconstruction of successful software evolution using clone detection , 2003, Sixth International Workshop on Principles of Software Evolution, 2003. Proceedings..

[6]  Chris F. Kemerer,et al.  On the uniformity of software evolution patterns , 2003, 25th International Conference on Software Engineering, 2003. Proceedings..

[7]  Tudor Gîrba,et al.  Modeling History to Understand Software Evolution , 2005 .

[8]  Giuliano Antoniol,et al.  Information retrieval models for recovering traceability links between code and documentation , 2000, Proceedings 2000 International Conference on Software Maintenance.

[9]  Renato De Mori,et al.  Pattern matching for clone and concept detection , 2004, Automated Software Engineering.

[10]  Meir M. Lehman,et al.  Program evolution: processes of software change , 1985 .

[11]  Chris F. Kemerer,et al.  Determinants of software maintenance profiles: an empirical investigation , 1997 .

[12]  J. Howard Johnson,et al.  Substring matching for clone detection and change tracking , 1994, Proceedings 1994 International Conference on Software Maintenance.

[13]  Oscar Nierstrasz,et al.  Finding refactorings via change metrics , 2000, OOPSLA '00.

[14]  Andrew Cain,et al.  Detecting structural changes in object oriented software systems , 2005, 2005 International Symposium on Empirical Software Engineering, 2005..

[15]  Michael W. Godfrey,et al.  Using origin analysis to detect merging and splitting of source code entities , 2005, IEEE Transactions on Software Engineering.