marea - SANER 2016

Post on 07-Feb-2017

79 views 4 download

transcript

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