Title: Static Control-Flow Analysis for Reverse Engineering of UML Sequence Diagrams
1Static Control-Flow Analysis for Reverse
Engineering of UML Sequence Diagrams
- Atanas (Nasko) Rountev
- Ohio State University
- with Olga Volgin and Miriam Reddoch
2Example of a UML Sequence Diagram
startX
pA
m1()
m2()
m3()
create()
nA
m4()
opt
3UML 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)
4Reverse-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
5Representation 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
6UML 2.0 Interaction Fragments
- Opt, alt, loop, break added generalized break
7Analysis Stages
CFG
Phase I Preprocessing
Phase II Fragment Construction
Phase III Transformations
Data Structure for Fragments
8Phase 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?
9Post-dominance Tree
10Branch Nodes and Branch Successors
- Branch successor node where the outgoing paths
for a branch node merge
the branch successor of 3 is 6
11Loops 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
12Branch/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
13Phase 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
14Various 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
15Average Running Time per Method milliseconds
16Methods Requiring Return/Throw Fragments
17Methods Requiring Multi-level Break Fragments
18Methods Requiring Node Replication
19Summary 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