Object Oriented Reverse Engineering JATAN PATEL
What is Reverse Engineering? It is the process of analyzing a subject system to identify the system’s components and their interrelationships and create representations of the system in another form or at a higher level of abstraction. Goals Cope with complexity Generate alternative views Recover lost information Detect side effects Synthesize higher abstraction Facilitate reuse
Why Reverse Engineering? Object Oriented Software Systems require : Maintenance Reengineering Evolution Most systems with time tend to gradually decay in quality, unless the systems are maintained and adapted to the evolving requirements Adaption to new requirements Extension of lifetime To increase the return of investment
Maintain Enhance High Low High Reengineer Discard Decision Making Modifiability Business Value
Challenges Sheer size of the systems Complexity Domain Specificity Bad state – decreased quality
Different Approaches to Reverse Engineering Program Comprehension Extracting Design Patterns Knowledge Based Domain Analysis Program Slicing Other Automated Approaches Like GRASPR – Graph based System for Program Recognition
Design Pattern Extraction Two phases for extracting structural design patterns: 1) Extract structural metrics from the source code 2) Aggregations and Associations are identified
Sample Program
Metrics Calculation
UML Notations
Results Detected Patterns: 1) Bridge Pattern 2) Composite Pattern
Conclusions Reverse Engineering is a new research area among software maintenance RE includes activities of understanding the system and recovery info from system Program understanding is the most important subset of Reverse Engineering
Thank You