Download presentation
Presentation is loading. Please wait.
1
Reverse Engineering Valeriya Perelman 12/10/04
2
Outline Motivation Terminology Related work Approach discussion Challenges References
3
Motivation Improving comprehensibility of software systems Modifying software while keeping design and source code synchronized Software re-use Reengineering software on the design level
4
Terminology Requirements Analysis Design Implementation Re-engineering Forward engineering Reverse engineering
5
Related Work -- Commercial CASE Tools UML-Based Static Reverse Engineering is supported by: – Rational Rose – Together – Poseidon – CodeLogic (Can generate control-flow and sequence diagrams per method given by user) Pros: Fully automatic process of RE Highly scalable Cons: Dynamic aspect of design is not supported in the RE process(except for CodeLogic) Not all the relations are identified Multiplicity is not supported
6
Related Work -- Research Prototypes UML-Based – IDEA (Redocumentation of Java programs using UML class diagrams) – FUJABA (generating both dynamic and static aspects, requires specific code conventions): Example for an Association Comment /** * Associations * * * cardLeft cardRight * LeftClass ------------------------------ RightClass * leftRole rightRole * */
7
Related Work -- Research Prototypes – cont. Others – Rigi Has its own format (RSF-Rigi Standard Format) Semi-automatic Implemented for C/C++ Hierarchical clustering of related artifacts into subsystems Supports model visualization The RE based on certain modularity principles (such as data abstraction, low coupling among subsystems e.t.c.)
8
Related Work -- Design Pattern-Based Design Recovery Techniques Searching for minimal key structures: – DP++, KT, SPOOL Searching for class structures (Pat, IDEA) Searching based on fuzzy logic: – Technical Report tr-ri-01-222, University of Paderborn Searching based on metrics (Object oriented, structural and procedural): – Wizzard for C++ by Kim, H., Boldyreff, C.
9
Approach Discussion -- Input/Output Input: Java source code (widely used, OOP, built in design patterns, interfaces) Output: OPM design model (equal relation to Objects and Processes, hierarchical, giving simple way to express both dynamic and static aspects of the system)
10
Approach Discussion -- Techniques Static Analysis Identifying Objects vs. Processes (every class is object except for … ) Filtering simple getters/setters Detecting GOF patterns Improving analysis to the OPM generated code using its ’ javadoc.
11
Approach Discussion -- Simple Example public class Hello { int main(){ System.out.println( “ Hello World! ” ); return 1; }
12
Approach Discussion -- Challenges Weakly typed containers (Sets, Hash tables, e.t.c.) Scalability problem (number of patterns vs. processing, over-control flow analysis) Language Independency Re-Tour engineering
13
References Links: – http://www.rigi.csc.uvic.ca/UVicRevTut/F4rev.html http://www.rigi.csc.uvic.ca/UVicRevTut/F4rev.html Overview on Reverse Engineering + list of RE Tools – http://www.iste.uni-stuttgart.de/ps/reengineering http://www.iste.uni-stuttgart.de/ps/reengineering Reengineering Bibliography – http://www.gupro.de/GXL/Introduction/intro.html http://www.gupro.de/GXL/Introduction/intro.html Graph eXchange Language format Papers: – Design Pattern Recovery in Architectures for Supporting Product Line Development and Application Philippow, Streitferdt & Riebisch – Pattern-Based Design Recovery of Java Software Seemann & Wolf von Gudenberg
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.