UMLDiff: an algorithm for object-oriented design differencing

This paper presents UMLDiff, an algorithm for automatically detecting structural changes between the designs of subsequent versions of object-oriented software. It takes as input two class models of a Java software system, reverse engineered from two corresponding code versions. It produces as output a change tree, i.e., a tree of structural changes, that reports the differences between the two design versions in terms of (a) additions, removals, moves, renamings of packages, classes, interfaces, fields and methods, (b) changes to their attributes, and (c) changes of the dependencies among these entities. UMLDiff produces an accurate report of the design evolution of the software system, and enables subsequent design-evolution analyses from multiple perspectives in support of various evolution activities. UMLDiff and the analyses it enables can assist software engineers in their tasks of understanding the rationale of design evolution of the software system and planning future development and maintenance activities. We evaluate UMLDiff's correctness and robustness through a real-world case stud.

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

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

[3]  Martin Fowler,et al.  Refactoring - Improving the Design of Existing Code , 1999, Addison Wesley object technology series.

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

[5]  Philippe Kruchten,et al.  The 4+1 View Model of Architecture , 1995, IEEE Softw..

[6]  Klaus Simon,et al.  An Improved Algorithm for Transitive Closure on Acyclic Digraphs , 1986, Theor. Comput. Sci..

[7]  Eleni Stroulia,et al.  Understanding phases and styles of object-oriented systems' evolution , 2004, 20th IEEE International Conference on Software Maintenance, 2004. Proceedings..

[8]  Frank Tip,et al.  Change impact analysis for object-oriented programs , 2001, PASTE '01.

[9]  Eleni Stroulia,et al.  Understanding class evolution in object-oriented software , 2004, Proceedings. 12th IEEE International Workshop on Program Comprehension, 2004..

[10]  Eleni Stroulia,et al.  Towards Mentoring Object-Oriented Evolutionary Development , 2005 .

[11]  Jeannette M. Wing,et al.  Signature matching: a key to reuse , 1993, SIGSOFT '93.

[12]  James A. Hendler,et al.  Computing similarity in a reuse library system: an AI-based approach , 1992, TSEM.

[13]  Eleni Stroulia,et al.  Towards experience-based mentoring of evolutionary development , 2005, 21st IEEE International Conference on Software Maintenance (ICSM'05).

[14]  Hyoseob Kim,et al.  Reconciliation of Object Interaction Models , 2001, OOIS.

[15]  Alessandro Orso,et al.  A differencing algorithm for object-oriented programs , 2004 .

[16]  J. Henkel,et al.  CatchUp! Capturing and replaying refactorings to support API evolution , 2005, Proceedings. 27th International Conference on Software Engineering, 2005. ICSE 2005..

[17]  Alexander Egyed,et al.  Scalable consistency checking between diagrams - the VIEWINTEGRA approach , 2001, Proceedings 16th Annual International Conference on Automated Software Engineering (ASE 2001).

[18]  Michele Lanza,et al.  The evolution matrix: recovering software evolution using software visualization techniques , 2001, IWPSE '01.

[19]  Harald C. Gall,et al.  Populating a Release History Database from version control and bug tracking systems , 2003, International Conference on Software Maintenance, 2003. ICSM 2003. Proceedings..

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

[21]  Zhenchang Xing,et al.  Design mentoring based on design evolution analysis , 2004, eclipse '04.

[22]  Audris Mockus,et al.  Does Code Decay? Assessing the Evidence from Change Management Data , 2001, IEEE Trans. Software Eng..

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

[24]  Michael W. Godfrey,et al.  An integrated approach for studying architectural evolution , 2002, Proceedings 10th International Workshop on Program Comprehension.

[25]  Udo Kelter,et al.  Difference tools for analysis and design documents , 2003, International Conference on Software Maintenance, 2003. ICSM 2003. Proceedings..

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

[27]  Stephen G. Eick,et al.  Seesoft-A Tool For Visualizing Line Oriented Software Statistics , 1992, IEEE Trans. Software Eng..