Download presentation
Presentation is loading. Please wait.
Published byAnthony Malone Modified over 9 years ago
1
Static Control-Flow Analysis for Reverse Engineering of UML Sequence Diagrams Atanas (Nasko) Rountev Ohio State University with Olga Volgin and Miriam Reddoch
2
Nasko Rountev - PASTE'05 2 Example of a UML Sequence Diagram start:X m1() p:A m2() n:A m3() create() m4() opt
3
Nasko Rountev - PASTE'05 3 UML Sequence Diagrams Popular UML artifacts for modeling of object interactions Design-time sequence diagrams Reverse-engineered sequence diagrams Based on existing code Iterative development; design recovery for software maintenance; software testing Implemented in some commercial UML tools Together ControlCenter (Borland) EclipseUML (Omondo)
4
Nasko Rountev - PASTE'05 4 Reverse-Engineering Analyses Dynamic analysis: tracks a set of representative run-time executions Several research tools Static analysis: examines only the code Commercial tools (deficiencies) Some research work (not comprehensive) REDPRESTO RED tool for Java: PRESTO group at OSU URL: presto.cse.ohio-state.edu/red Call chain analysis; control-flow analysis; object naming analysis; visualization and navigation; test coverage measurements
5
Nasko Rountev - PASTE'05 5 Representation of Intraprocedural Flow of Control Given: the methods whose bodies will be used to construct the diagram intra How should we represent the intraprocedural flow of control inside these bodies? Solution: algorithm for mapping a method’s CFG to UML 2.0 interaction fragments Any reducible exception-free CFG Precise mapping: preserves all call sequences Subsequent diagram transformations Lossless vs. lossy Visualization and exploration
6
Nasko Rountev - PASTE'05 6 UML 2.0 Interaction Fragments Opt, alt, loop, break; added generalized break
7
Nasko Rountev - PASTE'05 7 Analysis Stages CFG Phase I: Preprocessing Phase II: Fragment Construction Phase III: Transformations Data Structure for Fragments
8
Nasko Rountev - PASTE'05 8 Phase I: Preprocessing Post-dominance tree Node n 2 post-dominates n 1 if all paths from n 1 to exit go through n 2 Immediate post-dominator; parent in the tree Analyze branch nodes What is the merge point for all branches? Analyze loops Nesting relationships What is the merge point for all loop exits?
9
Nasko Rountev - PASTE'05 9 Post-dominance Tree
10
Nasko Rountev - PASTE'05 10 Branch Nodes and Branch Successors Branch successor: node where the outgoing paths for a branch node merge the branch successor of 3 is 6
11
Nasko Rountev - PASTE'05 11 Loops and Loop Successors the loop successor of L is 12 Reducible CFG: contains only natural loops Loop successor: merge point of all paths exiting the loop
12
Nasko Rountev - PASTE'05 12 Branch/Loop Successors Inside Loop L Consider only edges inside L Create a post-dominance tree for L and use it for: branch successors for nodes in L loop successors for loops nested in L the branch successor of 7 is 10
13
Nasko Rountev - PASTE'05 13 3 : s != null 2 : s = e.getChars() 1 : i = -1 4 : e = s.charAt(0) 5 : i = patterns.indexOf(e) 7 : statusArray[i] !=0 6 : i>=0 8 : e1 = patterns.elementAt(i) 11 : fixEntry(e1) 9: e1 != null 12: exit 10 : patterns.removeElementAt(i) F T T F T F T F PatternEntry:getChars() TOP OPT ALT cond: statusArray[i] !=0 cond: s != null Vector:elementAt(i) String:charAt(0) Vector:indexOf(e) LOOP cond: e1 != nullBREAK MergeCollation:fixEntry(e1) breaks_from: LOOP 1 1 1 1 2 1 BREAK 1 breaks_from: LOOP cond: i<0 cond: i>= 0 Vector:removeElementAt(i) Phase II: Fragment Construction
14
Nasko Rountev - PASTE'05 14 Various Issues UML additions Multi-level break fragments Multiple method exits Opt-like fragments: return fragments Algorithm uses control dependencies Exceptions (Java) “throw e”: similar to method exit - throw fragment Ignore catches and implicit exceptions Node replication: the same CFG node may have to produce multiple identical elements e.g. due to short-circuit evaluation
15
Nasko Rountev - PASTE'05 15 Average Running Time per Method [milliseconds]
16
Nasko Rountev - PASTE'05 16 Methods Requiring Return/Throw Fragments
17
Nasko Rountev - PASTE'05 17 Methods Requiring Multi-level Break Fragments
18
Nasko Rountev - PASTE'05 18 Methods Requiring Node Replication
19
Nasko Rountev - PASTE'05 19 Summary and Future Work General and fast algorithm Creates detailed and precise representation Subsequent simplifications [OSU-CISRC-3/04-TR12] Lossless: e.g. merge a fragment with the surrounding fragment [OSU-CISRC-3/04-TR12] Lossy: e.g. give up on multi-level breaks [VISSOFT’05] Interactive visualization [VISSOFT’05] Collapse and un-collapse fragments; slice the diagram w.r.t. a fragment of interest RED Re-implement in Eclipse and make public, together with the other analyses in RED
20
Nasko Rountev - PASTE'05 20 Questions?
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.