99
Visual Exploration of Large-Scale System Evolution Richard Wettel and Michele Lanza REVEAL group, Faculty of Informatics University of Lugano, Switzerland

Visual Exploration of Large-Scale System Evolution

Embed Size (px)

DESCRIPTION

On visualization of software evolution using a 3D city metaphor. Presented at WCRE 2008 (Antwerp, Belgium), October, 2008.

Citation preview

Page 1: Visual Exploration of Large-Scale System Evolution

Visual Exploration of Large-Scale

System EvolutionRichard Wettel and Michele Lanza

REVEAL group, Faculty of InformaticsUniversity of Lugano, Switzerland

Page 2: Visual Exploration of Large-Scale System Evolution

Software systems as citiesPhoto: SkyShaper (Flickr)

Page 3: Visual Exploration of Large-Scale System Evolution

Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution

The city metaphor

3

Page 4: Visual Exploration of Large-Scale System Evolution

Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution

The city metaphor

3

domain mapping

class building

package district

system city

Page 5: Visual Exploration of Large-Scale System Evolution

Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution

The city metaphor

3

domain mapping

class building

package district

system city

Page 6: Visual Exploration of Large-Scale System Evolution

Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution

The city metaphor

3

domain mapping

class building

package district

system city

Page 7: Visual Exploration of Large-Scale System Evolution

Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution

The city metaphor

3

domain mapping

class building

package district

system city

Page 8: Visual Exploration of Large-Scale System Evolution

Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution

The city metaphor

3

domain mapping

class building

package district

system city

number of methods (NOM) height

number of attributes (NOA) base size

Page 9: Visual Exploration of Large-Scale System Evolution

Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution

The city metaphor

3

domain mapping

class building

package district

system city

nesting level color

number of methods (NOM) height

number of attributes (NOA) base size

Page 10: Visual Exploration of Large-Scale System Evolution

Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution

The city metaphor

3

domain mapping

class building

package district

system city

nesting level color

number of methods (NOM) height

number of attributes (NOA) base size [Wettel & Lanza, ICPC 2007]

[Wettel & Lanza, VISSOFT 2007]

Page 11: Visual Exploration of Large-Scale System Evolution

Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution

Decoding a city: ArgoUML

4

Page 12: Visual Exploration of Large-Scale System Evolution

Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution

Decoding a city: ArgoUML

4

skyscrapers(NOM, NOA)

Page 13: Visual Exploration of Large-Scale System Evolution

Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution

Decoding a city: ArgoUML

4

skyscrapers(NOM, NOA)

parking lots(NOM, NOA)

Page 14: Visual Exploration of Large-Scale System Evolution

Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution

Decoding a city: ArgoUML

4

skyscrapers(NOM, NOA)

parking lots(NOM, NOA)

office buildings(NOM, NOA)

Page 15: Visual Exploration of Large-Scale System Evolution

Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution

Code cities

5

Page 16: Visual Exploration of Large-Scale System Evolution

Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution

Code cities

5

System Language NOP NOC kLOC

Azureus Java 457 4734 274

ArgoUML Java 144 2542 137

JHotDraw Java 72 998 30

iText Java 149 1250 80

Jmol Java 105 1032 85

JDK 1.5 Java 137 4715 160

Moose Smalltalk 278 961 32

Jun Smalltalk 288 2236 351

CodeCity Smalltalk 129 291 18

ScumVM C++ 18 1331 105

Page 17: Visual Exploration of Large-Scale System Evolution

Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution

Code cities

5

System Language NOP NOC kLOC

Azureus Java 457 4734 274

ArgoUML Java 144 2542 137

JHotDraw Java 72 998 30

iText Java 149 1250 80

Jmol Java 105 1032 85

JDK 1.5 Java 137 4715 160

Moose Smalltalk 278 961 32

Jun Smalltalk 288 2236 351

CodeCity Smalltalk 129 291 18

ScumVM C++ 18 1331 105

Page 18: Visual Exploration of Large-Scale System Evolution

Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution

Code cities

5

System Language NOP NOC kLOC

Azureus Java 457 4734 274

ArgoUML Java 144 2542 137

JHotDraw Java 72 998 30

iText Java 149 1250 80

Jmol Java 105 1032 85

JDK 1.5 Java 137 4715 160

Moose Smalltalk 278 961 32

Jun Smalltalk 288 2236 351

CodeCity Smalltalk 129 291 18

ScumVM C++ 18 1331 105

Page 19: Visual Exploration of Large-Scale System Evolution

Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution

Code cities

5

System Language NOP NOC kLOC

Azureus Java 457 4734 274

ArgoUML Java 144 2542 137

JHotDraw Java 72 998 30

iText Java 149 1250 80

Jmol Java 105 1032 85

JDK 1.5 Java 137 4715 160

Moose Smalltalk 278 961 32

Jun Smalltalk 288 2236 351

CodeCity Smalltalk 129 291 18

ScumVM C++ 18 1331 105

Page 20: Visual Exploration of Large-Scale System Evolution

Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution

Code cities

5

System Language NOP NOC kLOC

Azureus Java 457 4734 274

ArgoUML Java 144 2542 137

JHotDraw Java 72 998 30

iText Java 149 1250 80

Jmol Java 105 1032 85

JDK 1.5 Java 137 4715 160

Moose Smalltalk 278 961 32

Jun Smalltalk 288 2236 351

CodeCity Smalltalk 129 291 18

ScumVM C++ 18 1331 105

Page 21: Visual Exploration of Large-Scale System Evolution

Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution

Code cities

5

System Language NOP NOC kLOC

Azureus Java 457 4734 274

ArgoUML Java 144 2542 137

JHotDraw Java 72 998 30

iText Java 149 1250 80

Jmol Java 105 1032 85

JDK 1.5 Java 137 4715 160

Moose Smalltalk 278 961 32

Jun Smalltalk 288 2236 351

CodeCity Smalltalk 129 291 18

ScumVM C++ 18 1331 105

Page 22: Visual Exploration of Large-Scale System Evolution

Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution

Code cities

5

System Language NOP NOC kLOC

Azureus Java 457 4734 274

ArgoUML Java 144 2542 137

JHotDraw Java 72 998 30

iText Java 149 1250 80

Jmol Java 105 1032 85

JDK 1.5 Java 137 4715 160

Moose Smalltalk 278 961 32

Jun Smalltalk 288 2236 351

CodeCity Smalltalk 129 291 18

ScumVM C++ 18 1331 105

Page 23: Visual Exploration of Large-Scale System Evolution

Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution

Code cities

5

System Language NOP NOC kLOC

Azureus Java 457 4734 274

ArgoUML Java 144 2542 137

JHotDraw Java 72 998 30

iText Java 149 1250 80

Jmol Java 105 1032 85

JDK 1.5 Java 137 4715 160

Moose Smalltalk 278 961 32

Jun Smalltalk 288 2236 351

CodeCity Smalltalk 129 291 18

ScumVM C++ 18 1331 105

Page 24: Visual Exploration of Large-Scale System Evolution

Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution

Code cities

5

System Language NOP NOC kLOC

Azureus Java 457 4734 274

ArgoUML Java 144 2542 137

JHotDraw Java 72 998 30

iText Java 149 1250 80

Jmol Java 105 1032 85

JDK 1.5 Java 137 4715 160

Moose Smalltalk 278 961 32

Jun Smalltalk 288 2236 351

CodeCity Smalltalk 129 291 18

ScumVM C++ 18 1331 105

Page 25: Visual Exploration of Large-Scale System Evolution

Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution

Code cities

5

System Language NOP NOC kLOC

Azureus Java 457 4734 274

ArgoUML Java 144 2542 137

JHotDraw Java 72 998 30

iText Java 149 1250 80

Jmol Java 105 1032 85

JDK 1.5 Java 137 4715 160

Moose Smalltalk 278 961 32

Jun Smalltalk 288 2236 351

CodeCity Smalltalk 129 291 18

ScumVM C++ 18 1331 105

Page 26: Visual Exploration of Large-Scale System Evolution

Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution

Code cities

5

System Language NOP NOC kLOC

Azureus Java 457 4734 274

ArgoUML Java 144 2542 137

JHotDraw Java 72 998 30

iText Java 149 1250 80

Jmol Java 105 1032 85

JDK 1.5 Java 137 4715 160

Moose Smalltalk 278 961 32

Jun Smalltalk 288 2236 351

CodeCity Smalltalk 129 291 18

ScumVM C++ 18 1331 105

Page 27: Visual Exploration of Large-Scale System Evolution

Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution

Code cities

5

System Language NOP NOC kLOC

Azureus Java 457 4734 274

ArgoUML Java 144 2542 137

JHotDraw Java 72 998 30

iText Java 149 1250 80

Jmol Java 105 1032 85

JDK 1.5 Java 137 4715 160

Moose Smalltalk 278 961 32

Jun Smalltalk 288 2236 351

CodeCity Smalltalk 129 291 18

ScumVM C++ 18 1331 105

Page 28: Visual Exploration of Large-Scale System Evolution

Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution

Code cities

5

System Language NOP NOC kLOC

Azureus Java 457 4734 274

ArgoUML Java 144 2542 137

JHotDraw Java 72 998 30

iText Java 149 1250 80

Jmol Java 105 1032 85

JDK 1.5 Java 137 4715 160

Moose Smalltalk 278 961 32

Jun Smalltalk 288 2236 351

CodeCity Smalltalk 129 291 18

ScumVM C++ 18 1331 105

1.25 million LOC

Page 29: Visual Exploration of Large-Scale System Evolution

Software in time...

Page 30: Visual Exploration of Large-Scale System Evolution

Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution 7

Numbers on the history data

System ArgoUML JHotDraw Jmol

Packages 144 72 105

Classes 2,542 998 1,032

Lines of code 137,000 30,000 85,000

Sampling start Oct. 2002 Oct. 2000 Jan. 2000

Sampling end Feb. 2007 Apr. 2005 Aug. 2007

Revisions 15,535 267 8,065

Sampling period release-based 1 week 6 months 8 weeks

Samples 9 57 8 50

Page 31: Visual Exploration of Large-Scale System Evolution

Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution

Evolution of a code city: ArgoUML

8

Page 32: Visual Exploration of Large-Scale System Evolution

Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution

Evolution of a code city: ArgoUML

8

Page 33: Visual Exploration of Large-Scale System Evolution

Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution 9

Page 34: Visual Exploration of Large-Scale System Evolution

Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution 9

1. Age map

Page 35: Visual Exploration of Large-Scale System Evolution

Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution 9

1. Age map 2. Time travel

Page 36: Visual Exploration of Large-Scale System Evolution

Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution 9

1. Age map 2. Time travel 3. Timeline

Page 37: Visual Exploration of Large-Scale System Evolution

Age map

Page 38: Visual Exploration of Large-Scale System Evolution

Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution

Principle of age map

11

Page 39: Visual Exploration of Large-Scale System Evolution

Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution

Glimpse in the pastentities colored according to age

Principle of age map

11

Page 40: Visual Exploration of Large-Scale System Evolution

Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution

Glimpse in the pastentities colored according to age

Principle of age map

11

1Nnew-bornveteran

Page 41: Visual Exploration of Large-Scale System Evolution

Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution

Glimpse in the pastentities colored according to age

Principle of age map

11

1Nnew-bornveteran

Page 42: Visual Exploration of Large-Scale System Evolution

Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution

Glimpse in the pastentities colored according to age

Principle of age map

11

1N

age (number of survived versions)

new-bornveteran

Page 43: Visual Exploration of Large-Scale System Evolution

Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution

Coarse-grained age map: ArgoUML

12

Page 44: Visual Exploration of Large-Scale System Evolution

Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution

Coarse-grained age map: ArgoUML

12

org.argouml.language. java.generator

JavaTokenTypes

146 attributes

0 methods

JavaRecognizer

24 attributes

91 methods

Page 45: Visual Exploration of Large-Scale System Evolution

Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution

Coarse-grained age map: ArgoUML

12

org.argouml.language. java.generator

JavaTokenTypes

173 attributes

0 methods

JavaRecognizer

79 attributes

176 methods

org.argouml.uml.reveng.java

JavaTokenTypes

146 attributes

0 methods

JavaRecognizer

24 attributes

91 methods

Page 46: Visual Exploration of Large-Scale System Evolution

Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution

Refining the granularity

13

NO

M =

7

NOA

= 2

NOA = 2

class C

Page 47: Visual Exploration of Large-Scale System Evolution

Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution

Refining the granularity

13

NO

M =

7

NOA

= 2

NOA = 2

class C

Page 48: Visual Exploration of Large-Scale System Evolution

Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution

Refining the granularity

13

NO

M =

7

NOA

= 2

NOA = 2

class C

class Cm4

m1m3

m5 m7

m6

m2

old

new

Page 49: Visual Exploration of Large-Scale System Evolution

Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution

Fine-grained age map: JHotDraw

14

library packages:

java

javax

junit

org.w3c.dom

(classes) AllTests

CH.ifa.draw.standard

CH.ifa.draw.frameworkCH.ifa.draw.figures

CH.ifa.draw.test

class DrawApplication

in CH.ifa.draw.application

class StandardDrawingView

in CH.ifa.draw.standard.

Page 50: Visual Exploration of Large-Scale System Evolution

Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution

Buildings in age maps

15

age: 1 2 3 4 5 6 7 8

Page 51: Visual Exploration of Large-Scale System Evolution

Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution

Buildings in age maps

15

age: 1 2 3 4 5 6 7 8

stable

very old

Page 52: Visual Exploration of Large-Scale System Evolution

Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution

Buildings in age maps

15

age: 1 2 3 4 5 6 7 8

stable

oldvery old

rarely updated

Page 53: Visual Exploration of Large-Scale System Evolution

Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution

Buildings in age maps

15

age: 1 2 3 4 5 6 7 8

stable

youngoldvery old

rarely updated

highly unstable

Page 54: Visual Exploration of Large-Scale System Evolution

Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution

Buildings in age maps

15

age: 1 2 3 4 5 6 7 8

stable

youngoldvery old

rarely updated

highly unstable

very old

updated often,

rather unstable

Page 55: Visual Exploration of Large-Scale System Evolution

Time travel

Page 56: Visual Exploration of Large-Scale System Evolution

Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution

Travelling through ArgoUML’s time

17

0.10.1

0.12

0.14

0.16

0.18.1

0.20

0.22

0.23.4

0.24

Page 57: Visual Exploration of Large-Scale System Evolution

Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution

Travelling through ArgoUML’s time

17

0.10.1

0.12

0.14

0.16

0.18.1

0.20

0.22

0.23.4

0.24

Page 58: Visual Exploration of Large-Scale System Evolution

Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution

Travelling through ArgoUML’s time

17

ModelFacadeNOM: 184, NOA: 60

0.10.1

0.12

0.14

0.16

0.18.1

0.20

0.22

0.23.4

0.24

Page 59: Visual Exploration of Large-Scale System Evolution

Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution

Travelling through ArgoUML’s time

17

0.10.1

0.12

0.14

0.16

0.18.1

0.20

0.22

0.23.4

0.24

ModelFacadeNOM: 435, NOA: 108

Page 60: Visual Exploration of Large-Scale System Evolution

Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution

Travelling through ArgoUML’s time

17

0.10.1

0.12

0.14

0.16

0.18.1

0.20

0.22

0.23.4

0.24

NSUMLModelFacadeNOM: 319, NOA: 2

FacadeNOM: 306, NOA: 1

Page 61: Visual Exploration of Large-Scale System Evolution

Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution

FacadeMDRImplNOM: 329, NOA: 2

Travelling through ArgoUML’s time

17

0.10.1

0.12

0.14

0.16

0.18.1

0.20

0.22

0.23.4

0.24

NSUMLModelFacadeNOM: 334, NOA: 2

FacadeNOM: 319, NOA: 1

Page 62: Visual Exploration of Large-Scale System Evolution

Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution

FacadeMDRImplNOM: 340, NOA: 3

Travelling through ArgoUML’s time

17

0.10.1

0.12

0.14

0.16

0.18.1

0.20

0.22

0.23.4

0.24

FacadeNOM: 329, NOA: 1

Page 63: Visual Exploration of Large-Scale System Evolution

Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution

Travelling through ArgoUML’s time

17

0.10.1

0.12

0.14

0.16

0.18.1

0.20

0.22

0.23.4

0.24

Page 64: Visual Exploration of Large-Scale System Evolution

Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution

Travelling through ArgoUML’s time

17

0.10.1

0.12

0.14

0.16

0.18.1

0.20

0.22

0.23.4

0.24

Page 65: Visual Exploration of Large-Scale System Evolution

Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution

Reality check no. 1

18

Page 66: Visual Exploration of Large-Scale System Evolution

Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution

Reality check no. 1

18

L.T., main developer of ArgoUML:“ModelFacade was an implementation of the model subsystem using NSUML repository. When the change was made to MDR we turned this to a regular interface allowing for several different repositories.”

“The attributes in the ModelFacade are not attributes but constant tokens used in the NSUML repository implementation.”

Page 67: Visual Exploration of Large-Scale System Evolution

Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution

Example of system getting old

19

JHotDraw

Page 68: Visual Exploration of Large-Scale System Evolution

Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution

Example of system getting old

19

JHotDraw

Page 69: Visual Exploration of Large-Scale System Evolution

Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution

Example of system getting old

19

JHotDraw

Page 70: Visual Exploration of Large-Scale System Evolution

Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution

Example of system getting old

19

JHotDraw

Page 71: Visual Exploration of Large-Scale System Evolution

Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution

Example of system getting old

19

JHotDraw

Page 72: Visual Exploration of Large-Scale System Evolution

Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution

Example of system getting old

19

JHotDraw

Page 73: Visual Exploration of Large-Scale System Evolution

Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution

Example of system getting old

19

JHotDraw

Page 74: Visual Exploration of Large-Scale System Evolution

Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution

Example of system getting old

19

JHotDraw

Page 75: Visual Exploration of Large-Scale System Evolution

Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution

Reality check no. 2

20

Page 76: Visual Exploration of Large-Scale System Evolution

Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution

Reality check no. 2

20

W.K., developer of JHotDraw:“I used a JavaDoc-based code generator to automatically generate test cases for the JHotDraw. Therefore, the test methods are still not implemented and only the work to do is outlined.“

Page 77: Visual Exploration of Large-Scale System Evolution

Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution

Story of Jmol’s evolution

21

Page 78: Visual Exploration of Large-Scale System Evolution

Timeline

1887 Sep. 1887 Dec. 1888 Mar. 1888 Jun. 1888 Sep. 1888 Dec. 1889 Mar.

Page 79: Visual Exploration of Large-Scale System Evolution

Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution

Timeline principles

23

History of class C

Page 80: Visual Exploration of Large-Scale System Evolution

Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution

Timeline principles

23

time (versions)m3

m5

History of class C

V1

Page 81: Visual Exploration of Large-Scale System Evolution

Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution

Timeline principles

23

time (versions)m3

m5 m8

m12

m3

History of class C

V1

V2

Page 82: Visual Exploration of Large-Scale System Evolution

Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution

Timeline principles

23

time (versions)m3

m5 m8

m12

m3

History of class C

V1

V2

Page 83: Visual Exploration of Large-Scale System Evolution

Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution

Timeline principles

23

time (versions)m3

m5 m8

m12

m3

m12

m18

History of class C

V1

V2

V3

Page 84: Visual Exploration of Large-Scale System Evolution

Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution

Timeline principles

23

time (versions)m3

m5 m8

m12

m3

m12

m18

History of class C

V1

V2

V3

Page 85: Visual Exploration of Large-Scale System Evolution

Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution

Code decays...

24

StandardDrawingView(JHotDraw)

GeneratorJava(ArgoUML)

Eval(Jmol)

Page 86: Visual Exploration of Large-Scale System Evolution

Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution

Color anomalies reveal restores

25

forcePixeldisappears after v1

reappears in v9

applyBlueAnaglyphdisappears after v10

reappears in v18

fillTriangledisappears after v5

reappears in v21

Graphics3D

Page 87: Visual Exploration of Large-Scale System Evolution

Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution

Contemporary methods have the same color.

Color anomalies reveal restores

25

forcePixeldisappears after v1

reappears in v9

applyBlueAnaglyphdisappears after v10

reappears in v18

fillTriangledisappears after v5

reappears in v21

Graphics3D

Page 88: Visual Exploration of Large-Scale System Evolution

Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution

Contemporary methods have the same color.

Contemporary methods are also neighbors.

Color anomalies reveal restores

25

forcePixeldisappears after v1

reappears in v9

applyBlueAnaglyphdisappears after v10

reappears in v18

fillTriangledisappears after v5

reappears in v21

Graphics3D

Page 89: Visual Exploration of Large-Scale System Evolution

Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution 26

Similar pattern in Jmol timelines

TransformManager

JmolViewer

Eval

Viewer

Page 90: Visual Exploration of Large-Scale System Evolution

Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution 26

Similar pattern in Jmol timelines

TransformManager

JmolViewer

Eval

Viewer

Page 91: Visual Exploration of Large-Scale System Evolution

Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution

Reality check no. 3

27

Page 92: Visual Exploration of Large-Scale System Evolution

Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution

Reality check no. 3

27

Subversion logs:

r5091: “No more javax.vecmath.Point3f in g3d shape drawing routines. There were some cases where screen coordinates were being passed in as Point3f objects ... not a good thing.”

r5579: “Revert of vecmathlib change”.

Page 93: Visual Exploration of Large-Scale System Evolution

Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution

Reality check no. 3

27

Subversion logs:

r5091: “No more javax.vecmath.Point3f in g3d shape drawing routines. There were some cases where screen coordinates were being passed in as Point3f objects ... not a good thing.”

r5579: “Revert of vecmathlib change”.

N.V., developer: “Your hypothesis is probably correct. We found some major problems, and diagnostic was too difficult, so we reverted to a stable version and tried to apply patches in small batch.”

Page 94: Visual Exploration of Large-Scale System Evolution

Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution

Reality check no. 3

27

Subversion logs:

r5091: “No more javax.vecmath.Point3f in g3d shape drawing routines. There were some cases where screen coordinates were being passed in as Point3f objects ... not a good thing.”

r5579: “Revert of vecmathlib change”.

N.V., developer: “Your hypothesis is probably correct. We found some major problems, and diagnostic was too difficult, so we reverted to a stable version and tried to apply patches in small batch.”

B.H., developer: “It was quite a nightmare for everyone involved. The issue was that I was new to the project and had committed quite a few additions to Jmol thinking that M. was monitoring; as it turned out he found my additions too much too fast, and because there was a problem with the graphics display module g3d that resulted in some slow performance, he opted to revert to an earlier state. In the end it turned out to be a recent addition to transparency in the graphics, not anything I had done, that caused the problem. In any case, we did sort of start over -- or at least I did.”

Page 95: Visual Exploration of Large-Scale System Evolution

Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution

Closing remarks

28

Page 96: Visual Exploration of Large-Scale System Evolution

Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution

Closing remarks

28

Page 97: Visual Exploration of Large-Scale System Evolution

Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution

Closing remarks

28

Our visualizations techniques for software evolution reveal insights unavailable outside the historical context.

Page 98: Visual Exploration of Large-Scale System Evolution

Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution

Closing remarks

28

Our visualizations techniques for software evolution reveal insights unavailable outside the historical context.

http://www.inf.unisi.ch/phd/wettel/codecity.html

Page 99: Visual Exploration of Large-Scale System Evolution

Richard Wettelhttp://www.inf.unisi.ch/phd/wettel

http://creativecommons.org/licenses/by/3.0/