Date post: | 07-Feb-2017 |
Category: |
Software |
Upload: | andrea-caracciolo |
View: | 79 times |
Download: | 4 times |
Marea: a Semi-Automatic Decision Support System for Breaking Dependency Cycles
Andrea Caracciolo, Bledar Aga, Mircea Lungu, Oscar Nierstrasz
http://scg.unibe.ch
SANER 2016
2
rules
model
runner
runners
internal
3
rules
model
runner
runners
internal
2 cycles
4
rules
model
runner
runners
internal
2 cycles
5
rules
model
runner
runners
internal
6
rules
model
runner
runners
internal
Which?
7
rules
model
runner
runners
internal
?
8
rules
model
runner
runners
internal
Marea
9
AnalyzeCycles
Compute Refactoring Paths
Accept Refactoring Step
select cycle
source code
select ref. path
Marea
source code
A
B
C
10
rules
model
runner
runners
internal
rules
model
runner
runners
internal
Analyze Cycles
11
rules
model
runner
runners
internal
rules
model
runner
runners
internal
Analyze Cycles• Invocation • Parameter• Inheritance • …
12
rules
model
runner
runners
internal
Analyze Cycles
3
4
6
1
rules
model
runner
runners
internal
32
3
4
13
rules
model
runner
runners
internal
Analyze Cycles
3
4
6
1
rules
model
runner
runners
internal
32
3
4
+ sharing - size
Sharing: 2Size: 14
Sharing: 2Size: 12
14
rules
model
runner
runners
internal
Analyze Cycles
3
4
6
1
rules
model
runner
runners
internal
32
3
4
+ sharing - size
Sharing: 2Size: 14
Sharing: 2Size: 12
15
rules
model
runner
runners
internal
Analyze Cycles
3
4
6
1
rules
model
runner
runners
internal
2
3
+ sharing - size
3
4
16
Runners -> Rules
v1 v2 v3 v4
MC MM ASP ASP+DI
17
v1 v2 v3 v4
MC MM ASP ASP+DI
Runners -> Rules
Move Class
18
v1 v2 v3 v4
MC MM ASP ASP+DI
Runners -> Rules
Move Class
19
v1 v2 v3 v4
MC MM ASP ASP+DI
Runners -> Rules
Move Method
20
E -> A
v1 v2 v3 v4
MC MM ASP ASP+DI
Runners -> Rules
Move Method
21
E -> A
v1 v2 v3 v4
MC MM ASP ASP+DI
Runners -> Rules
Abstract Server Pattern
22
E -> A
v1 v2 v3 v4
MC MM ASP ASP+DI
I
Runners -> Rules
Abstract Server Pattern
23
E -> A
v1 v2 v3 v4
MC MM ASP ASP+DI
Dependency
I
Runners -> Rules
ASP + Dependency Injection
24
v1 v2 v3 v4
MC MM ASP ASP+DI
v1.1 v1.2
MC ASP+DI
Runners -> Rules
Runners -> Rules
25
v1 v2 v3 v4
MC MM ASP ASP+DI
v1.1 v1.2
MC ASP+DI
- #total cycles - #ref. steps - instability + abstractness
2.1 2.6 .. .. ..
Runners -> Rules
26
v1 v2 v3 v4
MC MM ASP ASP+DI
v1.1 v1.2
MC ASP+DI
2.1 2.6 .. .. ..
- #total cycles - #ref. steps - instability + abstractness
27
JHotDraw
484 Java files 28,000 NCLOC 44 cycles
28
JHotDraw
29
JHotDraw
0 4 8 12 16
# refactorings
30
Industrial Project
865 Java files 50,000 NCLOC 25 cycles
31
Industrial Project
32
Industrial Project
Original
C1.registerStubbedServices()to C2
C1 to P2
C1 to P2
C1.execLoadSession() to C2
MMMC
MMMC
C1.execLoadSession() for type C2
ASP+DI
33
Industrial Project
Original
C1.registerStubbedServices()to C2
C1 to P2
C1 to P2
C1.execLoadSession() to C2
MMMC
MM
1.1
MC
1.2
0.6
C1.execLoadSession() for type C2
ASP+DI
0.7 0.7
34
Industrial Project
Original
C1.registerStubbedServices()to C2
C1 to P2
C1 to P2
C1.execLoadSession() to C2
MMMC
MM
1.1
MC
1.2
0.6
C1.execLoadSession() for type C2
ASP+DI
0.7 0.7
35
Industrial Project
Original
C1.registerStubbedServices()to C2
C1 to P2
C1 to P2
C1.execLoadSession() to C2
MMMC
MM
1.1
MC
1.2
0.6
C1.execLoadSession() for type C2
ASP+DI
0.7 0.7
36
Industrial Project
Original
C1.registerStubbedServices()to C2
C1 to P2
C1 to P2
C1.execLoadSession() to C2
MMMC
MM
1.1
MC
1.2
0.6
C1.execLoadSession() for type C2
ASP+DI
0.7 0.7
Marea assisted quality improvement
37www.andrea-caracciolo.comAndrea Caracciolo
- actionable results- assessable cost