Yesterday's Weather: guiding early reverse engineering efforts by summarizing the evolution of changes

Knowing where to start reverse engineering a large software system, when no information other than the system's source code itself is available, is a daunting task. Having the history of the code (i.e., the versions) could be of help if this would not imply analyzing a huge amount of data. We present an approach for identifying candidate classes for reverse engineering and reengineering efforts. Our solution is based on summarizing the changes in the evolution of object-oriented software systems by defining history measurements. Our approach, named Yesterday's Weather, is an analysis based on the retrospective empirical observation that classes which changed the most in the recent past also suffer important changes in the near future. We apply this approach on two case studies and show how we can obtain an overview of the evolution of a system and pinpoint its classes that might change in the next versions.

[1]  Dewayne E. Perry,et al.  Implications of evolution metrics on software maintenance , 1998, Proceedings. International Conference on Software Maintenance (Cat. No. 98CB36272).

[2]  Tom Mens,et al.  Future trends in software evolution metrics , 2001, IWPSE '01.

[3]  Nicolas E. Gold,et al.  A framework for understanding conceptual changes in evolving source code , 2003, International Conference on Software Maintenance, 2003. ICSM 2003. Proceedings..

[4]  Serge Demeyer,et al.  FAMIX 2. 1-the FAMOOS information exchange model , 1999 .

[5]  Harald C. Gall,et al.  Detection of logical coupling based on product release history , 1998, Proceedings. International Conference on Software Maintenance (Cat. No. 98CB36272).

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

[7]  Houari A. Sahraoui,et al.  Predicting software stability using case-based reasoning , 2002, Proceedings 17th IEEE International Conference on Automated Software Engineering,.

[8]  Malcolm Munro,et al.  An initial approach towards measuring and characterising software evolution , 1999, Sixth Working Conference on Reverse Engineering (Cat. No.PR00303).

[9]  Stéphane Ducasse,et al.  Moose: an Extensible Language-Independent Environment for Reengineering Object-Oriented Systems , 2000 .

[10]  Houari A. Sahraoui,et al.  Predicting class libraries interface evolution: an investigation into machine learning approaches , 2000, Proceedings Seventh Asia-Pacific Software Engeering Conference. APSEC 2000.

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

[12]  Harald C. Gall,et al.  Software evolution observations based on product release history , 1997, 1997 Proceedings International Conference on Software Maintenance.

[13]  Stéphane Ducasse,et al.  Understanding software evolution using a combination of software visualization and software metrics , 2002, Obj. Logiciel Base données Réseaux.

[14]  Harald C. Gall,et al.  Analyzing and relating bug report data for feature tracking , 2003, 10th Working Conference on Reverse Engineering, 2003. WCRE 2003. Proceedings..

[15]  Oscar Nierstrasz,et al.  Object-oriented reengineering patterns , 2004, Proceedings. 26th International Conference on Software Engineering.

[16]  Mehdi Jazayeri On Architectural Stability and Evolution , 2002, Ada-Europe.

[17]  M. E. Conway HOW DO COMMITTEES INVENT , 1967 .

[18]  Serge Demeyer,et al.  Studying software evolution information by visualizing the change history , 2004, 20th IEEE International Conference on Software Maintenance, 2004. Proceedings..

[19]  Andreas Zeller,et al.  Mining Version Histories to Guide Software Changes , 2004 .