Understanding the Evolution and Co-evolution of Classes in Object-oriented Systems

As software systems evolve over a long time, non-trivial and often unintended relationships among system classes arise, which cannot be easily perceived through source-code reading. As a result, the developers' understanding of continuously evolving, large, long-lived systems deteriorates steadily. A most interesting relationship is class co-evolution: because of implicit design dependencies clusters of classes change in "parallel" ways and recognizing such co-evolution is crucial in effectively extending and maintaining the system. In this paper, we propose a data-mining method for recovering "hidden" co-evolutions of system classes. This method relies on our UML-aware structural differencing algorithm, UMLDiff, which, given a sequence of UML class models of an object-oriented software system, produces a sequence of "change records" that describe the design-level changes over its life span. The change records are analyzed from the perspective of each individual system class to extract "class change profiles". Each phase of a class change profile is then discretized and classified into one of two general change types: function extension or refactoring. Finally, the Apriori association-rule mining algorithm is applied to the database of categorical class change profiles, to elicit co-evolution patterns among two or more classes, which may be as yet undocumented and unknown. The recovered knowledge facilitates the overall understanding of system evolution and the planning of future maintenance activities. We report on one real world case study evaluating our approach.

[1]  Eleni Stroulia,et al.  Data-mining in Support of Detecting Class Co-evolution , 2004, SEKE.

[2]  Erik Thomsen,et al.  OLAP Solutions - Building Multidimensional Information Systems , 1997 .

[3]  Eleni Stroulia,et al.  Design mentoring based on design evolution analysis , 2004, Proceedings. 27th International Conference on Software Engineering, 2005. ICSE 2005..

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

[5]  James H. Cross,et al.  Reverse engineering and design recovery: a taxonomy , 1990, IEEE Software.

[6]  David F. Bacon,et al.  Fast static analysis of C++ virtual function calls , 1996, OOPSLA '96.

[7]  P. Patel-Schneider Small can be beautiful in knowledge representation , 1984 .

[8]  Rakesh Agarwal,et al.  Fast Algorithms for Mining Association Rules , 1994, VLDB 1994.

[9]  U. Nonnenmann,et al.  KITSS-a functional software testing system using a hybrid domain model , 1992, Proceedings Eighth Conference on Artificial Intelligence for Applications.

[10]  Stan Matwin,et al.  Supporting software maintenance by mining software update records , 2001, Proceedings IEEE International Conference on Software Maintenance. ICSM 2001.

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

[12]  Premkumar Devanbu,et al.  The use of description logics in KBSE systems , 1994, Proceedings of 16th International Conference on Software Engineering.

[13]  Kostas Kontogiannis,et al.  Workshop report: The two-day workshop on Research Issues in the Intersection between Software Engineering and Artificial Intelligence (held in conjunction with ICSE-16) , 1995, Automated Software Engineering.

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

[15]  Harald C. Gall,et al.  An evaluation of reverse engineering tool capabilities , 1998, J. Softw. Maintenance Res. Pract..

[16]  James McGuire,et al.  Commitment-Based Software Development , 1992, IEEE Trans. Software Eng..

[17]  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..

[18]  E. James Whitehead,et al.  Identification of software instabilities , 2003, 10th Working Conference on Reverse Engineering, 2003. WCRE 2003. Proceedings..

[19]  Linda M. Wills,et al.  Recognizing a program's design: a graph-parsing approach , 1990, IEEE Software.

[20]  Barbara G. Ryder,et al.  Parameterized object sensitivity for points-to and side-effect analyses for Java , 2002, ISSTA '02.

[21]  Kai Koskimies,et al.  Transformation Between UML Diagrams , 2003, J. Database Manag..

[22]  David Notkin,et al.  Software reflexion models: bridging the gap between source and high-level models , 1995, SIGSOFT FSE.

[23]  James Gosling,et al.  The Java Language Specification, 3rd Edition , 2005 .

[24]  Guy L. Steele,et al.  Java(TM) Language Specification, The (3rd Edition) (Java (Addison-Wesley)) , 2005 .

[25]  Richard C. Holt,et al.  Studying the chaos of code development , 2003, 10th Working Conference on Reverse Engineering, 2003. WCRE 2003. Proceedings..

[26]  Premkumar T. Devanbu,et al.  LaSSIE—a knowledge-based software information system , 1991, ICSE '90.

[27]  Andreas Zeller,et al.  How history justifies system architecture (or not) , 2003, Sixth International Workshop on Principles of Software Evolution, 2003. Proceedings..

[28]  Guy L. Steele,et al.  The Java Language Specification , 1996 .

[29]  Alessandro Bianchi,et al.  Evaluating software degradation through entropy , 2001, Proceedings Seventh International Software Metrics Symposium.

[30]  Barbara G. Ryder,et al.  Points-to analysis for Java using annotated constraints , 2001, OOPSLA '01.

[31]  Petra Perner,et al.  Data Mining - Concepts and Techniques , 2002, Künstliche Intell..

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

[33]  Jiawei Han,et al.  DBMiner: A System for Mining Knowledge in Large Relational Databases , 1996, KDD.

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