This Article 
 Bibliographic References 
 Add to: 
Analyzing the Evolutionary History of the Logical Design of Object-Oriented Software
October 2005 (vol. 31 no. 10)
pp. 850-868
Today, most object-oriented software systems are developed using an evolutionary process model. Therefore, understanding the phases that the system's logical design has gone through and the style of their evolution can provide valuable insights in support of consistently maintaining and evolving the system, without compromising the integrity and stability of its architecture. In this paper, we present a method for analyzing the evolution of object-oriented software systems from the point of view of their logical design. This method relies on UMLDiff, a UML-structure differencing algorithm, which, given a sequence of UML class models corresponding to the logical design of a sequence of system code releases, produces a sequence of "change records” that describe the design-level changes between subsequent system releases. This change-records sequence is subsequently analyzed from the perspective of each individual system class, to produce the class-evolution profile, i.e., a class-specific change-records' sequence. Three types of longitudinal analyses—phasic, gamma, and optimal matching analysis—are applied to the class-evolution profiles to recover a high-level abstraction of distinct evolutionary phases and their corresponding styles and to identify class clusters with similar evolution trajectories. 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] A. Abbott and A. Hyrcak, “Measuring Resemblance in Sequence Data: An Optimal Matching Analysis of Musicians' Careers,” Am. J. Sociology, vol. 96, pp. 144-185, 1990.
[2] D. Barnard, G. Clarke, and N. Duncan, “Tree-to-Tree Correction for Document Trees,” Technical Report 95-375, Queen's Univ., Jan. 1995.
[3] E.J. Barry, C.F. Kemerer, and S.A. Slaughter, “On the Uniformity of Software Evolution Patterns,” Proc. 25th Int'l Conf. Software Eng., pp. 106-113, 2003.
[4] E.J. Chikofsky and J.H. Cross, “Reverse Engineering and Design Recovery: A Taxonomy,” IEEE Software, pp 13-17, Jan. 1990.
[5] S. Demeyer, S. Ducasse, and O. Nierstrasz, “Finding Refactorings via Change Metrics,” ACM SIGPLAN Notices, vol. 35, no. 10, pp. 166-177, 2000.
[6] A. Egyed, “Scalable Consistency Checking between Diagrams— The VIEWINTEGRA Approach,” Proc. 16th IEEE Int'l Conf. Automated Software Eng., 2001.
[7] S.G. Eick, T.L. Graves, A.F. Karr, J.S. Marron, and A. Mockus, “Does Code Decay? Assessing the Evidence from Change Management Data,” IEEE Trans. Software Eng., vol. 27, no. 1, pp. 1-12, Jan. 2001.
[8] S.G. Eick, T.L. Graves, A.F. Karr, A. Mockus, and P. Schuster, “Visualizing Software Changes,” Software Eng., vol. 28, no. 4, pp. 396-412, Feb. 2002.
[9] M. Fowler, Refactoring: Improving the Design of Existing Code. Addison-Wesley, 1999.
[10] H. Gall, K. Hajek, and M. Jazayeri, “Detection of Logical Coupling Based on Product Release History,” Proc. 14th Int'l Conf. Software Maintenance, Nov. 1998.
[11] D.M. German and A. Hindle, “Visualizing the Evolution of Software Using softChange,” Proc. 16th Int'l Conf. Software Eng. and Knowledge Eng., pp. 336-341, 2004.
[12] M.W. Godfrey and Q. Tu, “Evolution of Open Source Software: A Case Study,” Proc. 16th Int'l Conf. Software Maintenance, 2000.
[13] M. Godfrey and L. Zou, “Using Origin Analysis to Detect Merging and Splitting of Source Code Entities,” IEEE Trans. Software Eng., vol. 31, no 2, pp. 166-181, Feb. 2005.
[14] J. Gosling, B. Joy, G. Steele, and G. Bracha, The Java Language Specification, third ed. Addison-Wesley, 2005.
[15] A.E. Hassan and R.C. Holt, “Studying the Chaos of Code Development,” Proc. 10th Working Conf. Reverse Eng., pp. 123-133, 2003.
[16] M.E. Holmes and M.S. Poole, “Longitudinal Analysis,” Studying Interpersonal Interaction, S. Duck and B. Montgomery, eds., pp. 286-302, 1991.
[17] P. Kruchten, “The 4+1 View Model of Architecture,” IEEE Software, vol. 12, no. 6, pp. 42-50, 1995.
[18] M. Lanza, “The Evolution Matrix: Recovering Software Evolution using Software Visualization Techniques,” Proc. Int'l Workshop Principles of Software Evolution, 2001.
[19] M.M. Lehman and L.A. Belady, Program Evolution-Processes of Software Change. London: Academic Press, 1985.
[20] OMG Unified Modeling Language Specification, formal/03-03-01, Version 1.5, 2003, http:/
[21] D.C. Pelz, “Innovation Complexity and the Sequence of Innovating Stages,” Knowledge: Creation, Diffusion, Utilization, vol. 6, pp. 261-291, 1985.
[22] B.G. Ryder and F. Tip, “Change Impact Analysis for Object-Oriented Programs,” Proc. Workshop Program Analysis for Software Tools and Eng., 2001.
[23] F.V. Rysselberghe and S. Demeyer, “Reconstruction of Successful Software Evolution Using Clone Detection,” Proc. Int'l Workshop Principles of Software Evolution, pp. 126-130, 2003.
[24] R. Sabherwhal and D. Robey, “An Empirical Taxonomy of Implementation Processes Based on Sequences of Events in Information System Development,” Organization Science, vol. 4, pp. 548-576, 1993.
[25] P. Selonen, K. Koskimies, and M. Sakkinen, “Transformations between UML Diagrams,” J. Database Management, vol. 14, no. 3, 2003.
[26] K. Simon, “An Improved Algorithm for Transitive Closure on Acyclic Digraphs,” Theoretical Computer Science 58, Automata, Languages and Programming, pp. 376-386, 1986.
[27] J.S. Shirabad, T.C. Lethbridge, and S. Matwin, “Supporting Software Maintenance by Mining Software Update Records,” Proc. 17th Int'l Conf. Software Maintenance, pp. 22-31, 2001.
[28] E. Stroulia and R. Kapoor, “Metrics of Refactoring-Based Development: An Experience Report,” Proc. Seventh Int'l Conf. Object-Oriented Information Systems, pp. 113-122, Aug. 2001.
[29] Q. Tu and M.W. Godfrey, “An Integrated Approach for Studying Architectural Evolution,” Proc. 10th Int'l Workshop Program Comprehension, pp. 127-136, 2002.
[30] R.A. Wagner and M.J. Fischer, “The String-to-String Correction Problem,” J. ACM, vol. 21, no. 1, pp. 168-173, Jan. 1974.
[31] Z. Xing and E. Stroulia, “Understanding Class Evolution in Object-Oriented Software,” Proc. 12th Int'l Workshop Program Comprehension, June 2004.
[32] Z. Xing and E. Stroulia, “Data-Mining in Support of Detecting Class Co-Evolution,” Proc. 16th Int'l Conf. Software Eng. and Knowledge Eng., June 2004.
[33] Z. Xing and E. Stroulia, “Understanding Phases and Styles of Object-Oriented Systems' Evolution,” Proc. 20th Int'l Conf. Software Maintenance, pp. 242-251, 2004.
[34] Z. Xing and E. Stroulia, “Design Mentoring Based on Design Evolution Analysis,” Proc. OOPSLA ETX Workshop (ACM Digital Library), 2004.
[35] Z. Xing and E. Stroulia, “Towards Mentoring Object-Oriented Evolutionary Development,” Proc. 21st Int'l Conf. Software Maintenance, 2005.
[36] T. Zimmermann, S. Diehl, and A. Zeller, “How History Justifies System Architecture (or not),” Proc. Int'l Workshop Principles of Software Evolution, Sept. 2003.
[37] Eclipse, http:/, 2005.
[38] JFreeChart, http://www.jfree.orgjfreechart, 2005.
[39] JCommon, http://www.jfree.orgjcommon, 2005.
[40] Rational Rose, http:/, 2005.
[41] Together, http:/, 2005.

Index Terms:
Index Terms- Restructuring, reverse engineering, and reengineering.
Zhenchang Xing, Eleni Stroulia, "Analyzing the Evolutionary History of the Logical Design of Object-Oriented Software," IEEE Transactions on Software Engineering, vol. 31, no. 10, pp. 850-868, Oct. 2005, doi:10.1109/TSE.2005.106
Usage of this product signifies your acceptance of the Terms of Use.