Presentation is loading. Please wait.

Presentation is loading. Please wait.

Static Control-Flow Analysis for Reverse Engineering of UML Sequence Diagrams Atanas (Nasko) Rountev Ohio State University with Olga Volgin and Miriam.

Similar presentations


Presentation on theme: "Static Control-Flow Analysis for Reverse Engineering of UML Sequence Diagrams Atanas (Nasko) Rountev Ohio State University with Olga Volgin and Miriam."— Presentation transcript:

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?


Download ppt "Static Control-Flow Analysis for Reverse Engineering of UML Sequence Diagrams Atanas (Nasko) Rountev Ohio State University with Olga Volgin and Miriam."

Similar presentations


Ads by Google