Static Control-Flow Analysis for Reverse Engineering of UML Sequence Diagrams - PowerPoint PPT Presentation

About This Presentation
Title:

Static Control-Flow Analysis for Reverse Engineering of UML Sequence Diagrams

Description:

Static Control-Flow Analysis for Reverse Engineering of UML Sequence Diagrams ... with Olga Volgin and Miriam Reddoch. Nasko Rountev - PASTE'05. 2 ... – PowerPoint PPT presentation

Number of Views:68
Avg rating:3.0/5.0
Slides: 21
Provided by: atanasr
Category:

less

Transcript and Presenter's Notes

Title: Static Control-Flow Analysis for Reverse Engineering of UML Sequence Diagrams


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
Example of a UML Sequence Diagram
startX
pA
m1()
m2()
m3()
create()
nA
m4()
opt
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
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)
  • 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
Representation of Intraprocedural Flow of Control
  • Given the methods whose bodies will be used to
    construct the diagram
  • How should we represent the intraprocedural flow
    of control inside these bodies?
  • Solution algorithm for mapping a methods 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
UML 2.0 Interaction Fragments
  • Opt, alt, loop, break added generalized break

7
Analysis Stages
CFG
Phase I Preprocessing
Phase II Fragment Construction
Phase III Transformations
Data Structure for Fragments
8
Phase I Preprocessing
  • Post-dominance tree
  • Node n2 post-dominates n1 if all paths from n1 to
    exit go through n2
  • 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
Post-dominance Tree
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
Loops and Loop Successors
  • Reducible CFG contains only natural loops
  • Loop successor merge point of all
  • paths exiting the loop
  • the loop
  • successor
  • of L is 12

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
Phase II Fragment Construction
TOP
1
i -1
PatternEntrygetChars()
2
s e.getChars()
cond s ! null
ALT
1
StringcharAt(0)
3
s ! null
T
F
VectorindexOf(e)
4
5
e s.charAt(0)
i patterns.indexOf(e)
LOOP
cond igt 0
1
F
6
igt0
BREAK
cond ilt0
1
breaks_from LOOP
1
T
7
F
statusArrayi !0
OPT
cond statusArrayi !0
1
T
VectorelementAt(i)
8
e1 patterns.elementAt(i)
cond e1 ! null
BREAK
2
breaks_from LOOP
1
9
e1 ! null
T
MergeCollationfixEntry(e1)
F
11
fixEntry(e1)
10
patterns.removeElementAt(i)
VectorremoveElementAt(i)
12
exit
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
Average Running Time per Method milliseconds
16
Methods Requiring Return/Throw Fragments
17
Methods Requiring Multi-level Break Fragments
18
Methods Requiring Node Replication
19
Summary and Future Work
  • General and fast algorithm
  • Creates detailed and precise representation
  • Subsequent simplifications
  • Lossless e.g. merge a fragment with the
    surrounding fragment OSU-CISRC-3/04-TR12
  • Lossy e.g. give up on multi-level breaks
  • Interactive visualization VISSOFT05
  • Collapse and un-collapse fragments slice the
    diagram w.r.t. a fragment of interest
  • Re-implement in Eclipse and make public,
    together with the other analyses in RED

20
  • Questions?
Write a Comment
User Comments (0)
About PowerShow.com