+ All Categories
Home > Software > marea - SANER 2016

marea - SANER 2016

Date post: 07-Feb-2017
Category:
Upload: andrea-caracciolo
View: 79 times
Download: 4 times
Share this document with a friend
37
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
Transcript
Page 1: marea - SANER 2016

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

Page 2: marea - SANER 2016

2

rules

model

runner

runners

internal

Page 3: marea - SANER 2016

3

rules

model

runner

runners

internal

2 cycles

Page 4: marea - SANER 2016

4

rules

model

runner

runners

internal

2 cycles

Page 5: marea - SANER 2016

5

rules

model

runner

runners

internal

Page 6: marea - SANER 2016

6

rules

model

runner

runners

internal

Which?

Page 7: marea - SANER 2016

7

rules

model

runner

runners

internal

?

Page 8: marea - SANER 2016

8

rules

model

runner

runners

internal

Marea

Page 9: marea - SANER 2016

9

AnalyzeCycles

Compute Refactoring Paths

Accept Refactoring Step

select cycle

source code

select ref. path

Marea

source code

A

B

C

Page 10: marea - SANER 2016

10

rules

model

runner

runners

internal

rules

model

runner

runners

internal

Analyze Cycles

Page 11: marea - SANER 2016

11

rules

model

runner

runners

internal

rules

model

runner

runners

internal

Analyze Cycles• Invocation • Parameter• Inheritance • …

Page 12: marea - SANER 2016

12

rules

model

runner

runners

internal

Analyze Cycles

3

4

6

1

rules

model

runner

runners

internal

32

3

4

Page 13: marea - SANER 2016

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

Page 14: marea - SANER 2016

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

Page 15: marea - SANER 2016

15

rules

model

runner

runners

internal

Analyze Cycles

3

4

6

1

rules

model

runner

runners

internal

2

3

+ sharing - size

3

4

Page 16: marea - SANER 2016

16

Runners -> Rules

v1 v2 v3 v4

MC MM ASP ASP+DI

Page 17: marea - SANER 2016

17

v1 v2 v3 v4

MC MM ASP ASP+DI

Runners -> Rules

Move Class

Page 18: marea - SANER 2016

18

v1 v2 v3 v4

MC MM ASP ASP+DI

Runners -> Rules

Move Class

Page 19: marea - SANER 2016

19

v1 v2 v3 v4

MC MM ASP ASP+DI

Runners -> Rules

Move Method

Page 20: marea - SANER 2016

20

E -> A

v1 v2 v3 v4

MC MM ASP ASP+DI

Runners -> Rules

Move Method

Page 21: marea - SANER 2016

21

E -> A

v1 v2 v3 v4

MC MM ASP ASP+DI

Runners -> Rules

Abstract Server Pattern

Page 22: marea - SANER 2016

22

E -> A

v1 v2 v3 v4

MC MM ASP ASP+DI

I

Runners -> Rules

Abstract Server Pattern

Page 23: marea - SANER 2016

23

E -> A

v1 v2 v3 v4

MC MM ASP ASP+DI

Dependency

I

Runners -> Rules

ASP + Dependency Injection

Page 24: marea - SANER 2016

24

v1 v2 v3 v4

MC MM ASP ASP+DI

v1.1 v1.2

MC ASP+DI

Runners -> Rules

Page 25: marea - SANER 2016

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 .. .. ..

Page 26: marea - SANER 2016

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

Page 27: marea - SANER 2016

27

JHotDraw

484 Java files 28,000 NCLOC 44 cycles

Page 28: marea - SANER 2016

28

JHotDraw

Page 29: marea - SANER 2016

29

JHotDraw

0 4 8 12 16

# refactorings

Page 30: marea - SANER 2016

30

Industrial Project

865 Java files 50,000 NCLOC 25 cycles

Page 31: marea - SANER 2016

31

Industrial Project

Page 32: marea - SANER 2016

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

Page 33: marea - SANER 2016

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

Page 34: marea - SANER 2016

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

Page 35: marea - SANER 2016

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

Page 36: marea - SANER 2016

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

Page 37: marea - SANER 2016

Marea assisted quality improvement

37www.andrea-caracciolo.comAndrea Caracciolo

- actionable results- assessable cost


Recommended