|
ABSTRACT
Reverse engineering is the process of uncovering the design and the design rationale from a functioning software system. Reverse engineering is an integral part of any successful software system, because changing requirements lead to implementations that drift from their original design. In contrast to traditional reverse engineering techniques ---which analyse a single snapshot of a system--- we focus the reverse engineering effort by determining where the implementation has changed. Since changes of object-oriented software are often phrased in terms of refactorings, we propose a set of heuristics for detecting refactorings by applying lightweight, object-oriented metrics to successive versions of a software system. We validate our approach with three separate case studies of mature object-oriented software systems for which multiple versions are available. The case studies suggest that the heuristics support the reverse engineering process by focusing attention on the relevant parts of a software system.
REFERENCES
Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.
| |
Arno92a
|
Robert S. Arnold, Software Reengineering, IEEE Computer Society Press, 1992.
|
| |
Ball96a
|
|
| |
Beck94a
|
|
 |
Bigg94a
|
|
| |
Brow96c
|
Kyle Brown, "Design Reverse-engineering and Automated Design Pattern Detection in Smalltalk," Ph.D. dissertation. North Carolina State University, 1996. {http://www.ksccary.com/kbrown.htm, http://hillside.net/patterns/papers/}.
|
| |
Casa92a
|
|
| |
Casa97a
|
Eduoardo Casais and Antero Taivalsaari, "Object-Oriented Software Evolution and Reengineering (Special Issue)," Journal of Theory and Practice of Object Systems (TAPOS), Vol. 3(4), 1997.
|
| |
Chid94a
|
|
| |
Deme99c
|
|
| |
Deme99d
|
Serge Demeyer, Stephane Ducasse and Sander Tichelaar, "Why Unified is not Universal. UML Shortcomings for Coping with Round-trip Engineering," Proceedings UML'99, Bernhard Rumpe (Ed.), LNCS 1723, Springer-Verlag, Fort Collins, Colorado, 1999.
|
| |
Duca99b
|
|
| |
Fent97a
|
|
| |
Flor97a
|
Gert Florijn, Marco Meijers and Pieter van Winsen, "Tool Support for Object-Oriented Patterns," Proceedings ECOOP'97, Mehmet Aksit and Satoshi Matsuoka (Ed.), LNCS 1241, Springer-Verlag, 1997.
|
| |
Fowl99a
|
|
| |
Gold95a
|
|
| |
Haun95a
|
Jim Haungs, "A technical overview of VisualWorks 2.0," The Smalltalk Report, January 1995.
|
| |
Hend96a
|
|
| |
Hond98a
|
Koen De Hondt, A Novel Approach to Architectural Recovery in Evolving Object-Oriented Systems, Vrije Universiteit Brussel, Brussels -Belgium, December, 1998, Ph.D. dissertation {ftp://progftp.vub.ac.be/dissertation/}.
|
| |
Howa95a
|
|
| |
Jaza99a
|
|
 |
John92a
|
Ralph E. Johnson, Documenting frameworks using patterns, conference proceedings on Object-oriented programming systems, languages, and applications, p.63-76, October 18-22, 1992, Vancouver, British Columbia, Canada
|
| |
John93b
|
|
 |
Kell99a
|
Rudolf K. Keller , Reinhard Schauer , Sébastien Robitaille , Patrick Pagé, Pattern-based reverse-engineering of design components, Proceedings of the 21st international conference on Software engineering, p.226-235, May 16-22, 1999, Los Angeles, California, United States
[doi> 10.1145/302405.302622]
|
| |
Kohl98a
|
|
| |
Kont97a
|
|
| |
Lagu97a
|
|
 |
Lang95a
|
Danny B. Lange , Yuichi Nakamura, Interactive visualization of design patterns can help in framework understanding, Proceedings of the tenth annual conference on Object-oriented programming systems, languages, and applications, p.342-357, October 15-19, 1995, Austin, Texas, United States
|
| |
Lore94a
|
|
| |
Mari98a
|
|
 |
Moor96a
|
Ivan Moore, Automatic inheritance hierarchy restructuring and method refactoring, Proceedings of the 11th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, p.235-250, October 06-10, 1996, San Jose, California, United States
|
| |
Murp97a
|
|
| |
Opdy92b
|
|
 |
Opdy93a
|
|
 |
Pauw93a
|
Wim De Pauw , Richard Helm , Doug Kimelman , John Vlissides, Visualizing the behavior of object-oriented systems, Proceedings of the eighth annual conference on Object-oriented programming systems, languages, and applications, p.326-337, September 26-October 01, 1993, Washington, D.C., United States
|
| |
Rich99a
|
|
| |
Robe97a
|
|
| |
Schu98a
|
|
| |
Toku99a
|
|
 |
Wate94a
|
|
| |
Will96a
|
Linda Wills and Philip Newcomb, "Reverse Engineering (Special Issue)," Automated Software Engineering, Vol. 3(1-2), June 1996.
|
| |
Will96b
|
Linda Wills and James H. Cross, "Recent Trends and Open Issues in Reverse Engineering," Automated Software Engineering, Vol. 3(1-2), June, 1996.
|
| |
Wuyt98a
|
Roel Wuyts, "Class-management using Logical Queries, Application of a Reflective User Interface Builder," Proceedings TOOLS 26 - USA '98, IEEE Computer Society Press, 1998.
|
CITED BY 29
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Danny Dig, Using refactorings to automatically update component-based applications, Companion to the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, October 16-20, 2005, San Diego, CA, USA
|
|
|
Danny Dig, Using refactorings to automatically update component-based applications, Companion to the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, October 16-20, 2005, San Diego, CA, USA
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
S. Counsell , Y. Hassoun , G. Loizou , R. Najjar, Common refactorings, a dependency graph and some code smells: an empirical study of Java OSS, Proceedings of the 2006 ACM/IEEE international symposium on International symposium on empirical software engineering, September 21-22, 2006, Rio de Janeiro, Brazil
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
INDEX TERMS
Primary Classification:
D.
Software
D.1
PROGRAMMING TECHNIQUES
Additional Classification:
D.
Software
D.2
SOFTWARE ENGINEERING
D.2.7
Distribution, Maintenance, and Enhancement
Subjects:
Restructuring, reverse engineering, and reengineering
I.
Computing Methodologies
I.2
ARTIFICIAL INTELLIGENCE
I.2.8
Problem Solving, Control Methods, and Search
Subjects:
Heuristic methods
General Terms:
Algorithms,
Design,
Experimentation,
Measurement,
Performance,
Theory
Keywords:
metrics,
object-oriented frameworks,
refactoring,
reverse engineering,
software evolution
|