Upload
richard-wettel
View
6.274
Download
0
Embed Size (px)
DESCRIPTION
On visualization of software evolution using a 3D city metaphor. Presented at WCRE 2008 (Antwerp, Belgium), October, 2008.
Citation preview
Visual Exploration of Large-Scale
System EvolutionRichard Wettel and Michele Lanza
REVEAL group, Faculty of InformaticsUniversity of Lugano, Switzerland
Software systems as citiesPhoto: SkyShaper (Flickr)
Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution
The city metaphor
3
Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution
The city metaphor
3
domain mapping
class building
package district
system city
Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution
The city metaphor
3
domain mapping
class building
package district
system city
Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution
The city metaphor
3
domain mapping
class building
package district
system city
Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution
The city metaphor
3
domain mapping
class building
package district
system city
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
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
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]
Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution
Decoding a city: ArgoUML
4
Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution
Decoding a city: ArgoUML
4
skyscrapers(NOM, NOA)
Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution
Decoding a city: ArgoUML
4
skyscrapers(NOM, NOA)
parking lots(NOM, NOA)
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)
Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution
Code cities
5
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
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
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
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
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
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
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
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
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
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
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
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
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
Software in time...
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
Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution
Evolution of a code city: ArgoUML
8
Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution
Evolution of a code city: ArgoUML
8
Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution 9
Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution 9
1. Age map
Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution 9
1. Age map 2. Time travel
Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution 9
1. Age map 2. Time travel 3. Timeline
Age map
Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution
Principle of age map
11
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
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
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
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
Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution
Coarse-grained age map: ArgoUML
12
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
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
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
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
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
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.
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
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
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
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
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
Time travel
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
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
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
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
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
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
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
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
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
Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution
Reality check no. 1
18
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.”
Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution
Example of system getting old
19
JHotDraw
Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution
Example of system getting old
19
JHotDraw
Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution
Example of system getting old
19
JHotDraw
Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution
Example of system getting old
19
JHotDraw
Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution
Example of system getting old
19
JHotDraw
Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution
Example of system getting old
19
JHotDraw
Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution
Example of system getting old
19
JHotDraw
Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution
Example of system getting old
19
JHotDraw
Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution
Reality check no. 2
20
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.“
Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution
Story of Jmol’s evolution
21
Timeline
1887 Sep. 1887 Dec. 1888 Mar. 1888 Jun. 1888 Sep. 1888 Dec. 1889 Mar.
Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution
Timeline principles
23
History of class C
Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution
Timeline principles
23
time (versions)m3
m5
History of class C
V1
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
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
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
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
Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution
Code decays...
24
StandardDrawingView(JHotDraw)
GeneratorJava(ArgoUML)
Eval(Jmol)
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
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
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
Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution 26
Similar pattern in Jmol timelines
TransformManager
JmolViewer
Eval
Viewer
Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution 26
Similar pattern in Jmol timelines
TransformManager
JmolViewer
Eval
Viewer
Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution
Reality check no. 3
27
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”.
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.”
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.”
Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution
Closing remarks
28
Richard Wettel and Michele Lanza Visual Exploration of Large-Scale System Evolution
Closing remarks
28
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.
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
Richard Wettelhttp://www.inf.unisi.ch/phd/wettel
http://creativecommons.org/licenses/by/3.0/