Combining Metrics and Graphs for Object Oriented Reverse Engineering

A software system may become very large during its evolution, getting less maintainable while its complexity rises. Since replacing the system with a new one is often out of question because of economic considerations, reengineering techniques are being developed to change the system into a form which makes it easier to maintain and to further develop. However, before a system can be reengineered, it has to be reverse engineered in order to understand its nature and inner logic. This work deals with a lightweight approach to software reverse engineering combining simple graphs with simple object oriented metrics. Our goal is to obtain a simple and scalable graphical display of a system and its parts through which we succeed to visually extract information, which is useful to the understanding of the system and the detection of its design problems. The primary goal of this work is to put up a repository of combinations of graphs and metrics which are useful to reverse engineer an object oriented system. To validate our approach we implemented a tool called CodeCrawler, which can graphically display source code while providing a layer of interactivity to the user: we use the term navigating the code. We ran CodeCrawler on two Smalltalk case studies and one large industrial case study written in C++. The positive experiences and reactions which we obtained are a proof of the usefulness of our idea.

[1]  Kent L. Beck Smalltalk best practice patterns , 1996 .

[2]  Spencer Rugaber,et al.  Using visualization for architectural localization and extraction , 2000, Sci. Comput. Program..

[3]  Norman Wilde,et al.  Maintenance Support for Object-Oriented Programs , 1992, IEEE Trans. Software Eng..

[4]  Ralph E. Johnson,et al.  A Refactoring Tool for Smalltalk , 1997, Theory Pract. Object Syst..

[5]  T. Dean Hendrix,et al.  Scalable visualizations to support reverse engineering: a framework for evaluation , 1998, Proceedings Fifth Working Conference on Reverse Engineering (Cat. No.98TB100261).

[6]  Hausi A. Müller,et al.  Manipulating and documenting software structures using SHriMP views , 1995, Proceedings of International Conference on Software Maintenance.

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

[8]  Ralph E. Johnson,et al.  Documenting frameworks using patterns , 1992, OOPSLA '92.

[9]  Doug Kimelman,et al.  Visualizing the behavior of object-oriented systems , 1993, OOPSLA '93.

[10]  Michael F. Kleyn,et al.  GraphTrace—understanding object-oriented systems using concurrently animated views , 1988, OOPSLA '88.

[11]  Joseph W. Yoder,et al.  Big Ball of Mud , 1997 .

[12]  Hans Albert Muller,et al.  Rigi: a model for software system construction, integration, and evolution based on module interface specifications , 1986 .

[13]  Stéphane Ducasse,et al.  Visual Detection of Duplicated Code , 1998, ECOOP Workshops.

[14]  Chris F. Kemerer,et al.  A Metrics Suite for Object Oriented Design , 2015, IEEE Trans. Software Eng..

[15]  Shari Lawrence Pfleeger,et al.  Software Metrics : A Rigorous and Practical Approach , 1998 .

[16]  Brenda S. Baker,et al.  A Program for Identifying Duplicated Code , 1992 .

[17]  Claus Lewerentz,et al.  A Product Metrics Tool Integrated into a Software Development Environment , 1998, ECOOP Workshops.

[18]  Ramana Rao,et al.  A focus+context technique based on hyperbolic geometry for visualizing large hierarchies , 1995, CHI '95.

[19]  Alberto O. Mendelzon,et al.  Visualizing and querying software structures , 1992, International Conference on Software Engineering.

[20]  Kostas Kontogiannis,et al.  Evaluation experiments on the detection of programming patterns using software metrics , 1997, Proceedings of the Fourth Working Conference on Reverse Engineering.

[21]  Stéphane Ducasse,et al.  A language independent approach for detecting duplicated code , 1999, Proceedings IEEE International Conference on Software Maintenance - 1999 (ICSM'99). 'Software Maintenance for Business Change' (Cat. No.99CB36360).

[22]  Brian Henderson-Sellers,et al.  Object-oriented metrics: measures of complexity , 1995 .

[23]  Mitsuhiko Toda,et al.  Methods for Visual Understanding of Hierarchical System Structures , 1981, IEEE Transactions on Systems, Man, and Cybernetics.

[24]  Ralph E. Johnson,et al.  Patterns Generate Architectures , 1994, ECOOP.

[25]  Chris F. Kemerer,et al.  Towards a metrics suite for object oriented design , 2017, OOPSLA '91.

[26]  Karl J. Lieberherr,et al.  Assuring good style for object-oriented programs , 1989, IEEE Software.

[27]  Georg Sander,et al.  Graph Layout for Applications in Compiler Construction , 1999, Theor. Comput. Sci..

[28]  Fred P. Brooks,et al.  The Mythical Man-Month , 1975, Reliable Software.

[29]  Thomas Ball,et al.  Software Visualization in the Large , 1996, Computer.

[30]  Serge Demeyer,et al.  An Exchange Model for Reengineering Tools , 1998, ECOOP Workshops.

[31]  Harald C. Gall,et al.  Visualizing software release histories: the use of color and third dimension , 1999, Proceedings IEEE International Conference on Software Maintenance - 1999 (ICSM'99). 'Software Maintenance for Business Change' (Cat. No.99CB36360).

[32]  Stéphane Ducasse,et al.  Metrics, Do They Really Help? , 1999, LMO.

[33]  Eduardo Casais,et al.  Re-Engineering Object-Oriented Legacy Systems , 1998, J. Object Oriented Program..