130 likes | 138 Views
Learn about the process of reverse engineering and its importance in analyzing and understanding object-oriented software systems. Explore various approaches and techniques to cope with complexity, detect side effects, recover lost information, and facilitate system maintenance and reengineering.
E N D
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
Decision Making High Enhance Maintain Modifiability Discard Reengineer Low High Low 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
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