4. Richard Wettel and Michele
CodeCity
The city metaphor
3
domain mapping
classes buildings
package
s
districts
system city
5. Richard Wettel and Michele
CodeCity
The city metaphor
3
domain mapping
classes buildings
package
s
districts
system city
6. Richard Wettel and Michele
CodeCity
The city metaphor
3
domain mapping
classes buildings
package
s
districts
system city
7. Richard Wettel and Michele
CodeCity
The city metaphor
3
domain mapping
classes buildings
package
s
districts
system city
8. Richard Wettel and Michele
CodeCity
The city metaphor
3
domain mapping
classes buildings
package
s
districts
system city
class metric building
propertynumber of
methods (NOM)
height
number of
attributes (NOA)
width,
length
9. Richard Wettel and Michele
CodeCity
The city metaphor
3
domain mapping
classes buildings
package
s
districts
system city
package
metric
district
propertynesting level color
class metric building
propertynumber of
methods (NOM)
height
number of
attributes (NOA)
width,
length
24. Richard Wettel and Michele
CodeCity
3. Boxplot-based mapping
10
NOM heightclustering
25. Richard Wettel and Michele
CodeCity
3. Boxplot-based mapping
10
NOM heightclustering
very high
high
average
low
very low
26. Richard Wettel and Michele
CodeCity
3. Boxplot-based mapping
10
NOM heightclustering
very high
high
average
low
very low
27. Richard Wettel and Michele
CodeCity
3. Boxplot-based mapping
10
NOM heightclustering
very high
high
average
low
very low
upper quartile
lower quartile
median
lower whisker
upper whisker
28. Richard Wettel and Michele
CodeCity
3. Boxplot-based mapping
10
NOM heightclustering
very high
high
average
low
very low
upper quartile
lower quartile
median
lower whisker
upper whisker
29. Richard Wettel and Michele
CodeCity
3. Boxplot-based mapping
10
NOM heightclustering
very high
high
average
low
very low
30. Richard Wettel and Michele
CodeCity
3. Boxplot-based mapping
10
NOM heightclustering
very high
high
average
low
very low
31. Richard Wettel and Michele
CodeCity
3. Boxplot-based mapping
10
NOM heightclustering
very high
high
average
low
very low
69. Richard Wettel and Michele
CodeCity
Class-level disharmony maps
24
KeyEvent
(NOA 205, NOM 18) java.awt.event
InputEvent
(NOA 21, NOM 14)
Frame
(NOA 33, NOM 38)
java.awt.geom
Container
(NOA 21, NOM 127)
Component
(NOA 88, NOM 280)
java.util.concurrent.locks
AbstractQueuedSynchronizer
(NOA 9, NOM 54)
String
(NOA 7, NOM 81)
Event
(NOA 84, NOM 14)
Class
(NOA 27, NOM 107)
BigInteger
(NOA 28, NOM 103)
BigDecimal
(NOA 18, NOM 96)
Security
(NOA 3, NOM 30)
java.util.regex
Pattern
(NOA 29, NOM 66)
Matcher
(NOA 17, NOM 38)
LogRecord
(NOA 17, NOM 28)
Logger
(NOA 18, NOM 53)
Font
(NOA 34, NOM 78)
KeyboardFocusManager
(NOA 33, NOM 94)
Frame
(NOA 33, NOM 38)
Calendar
(NOA 81, NOM 71)
java.util.logging
JDK 1.5
70. Richard Wettel and Michele
CodeCity
Class-level disharmony ma
25
org.argouml.reveng.java
Modeller
(NOA 15, NOM 52)
JavaRecognizer
(NOA 79, NOM 176)
org.argouml.reveng.classfile
SimpleByteLexer$GeneratorCPP
(NOA 34, NOM 100)
SimpleByteLexer$CPPParser
(NOA 85, NOM 204)
SimpleByteLexer$GeneratorPHP4
(NOA 4, NOM 33)
org.argouml.diagram.ui
FigNodeModelElement
(NOA 39, NOM 98)
FigEdgeModelElement
(NOA 13, NOM 76)
FigAssociation
(NOA 8, NOM 17)
JavaRecognizer
(NOA 24, NOM 91)
GeneratorJava
(NOA 11, NOM 66)
JavaLexer
(NOA 9, NOM 72)
org.argouml.language.java.generator
org.argouml.uml.notation.uml
org.argouml.model.mdr
FacadeMDRImpl
(NOA 3, NOM 349)
CoreHelperMDRImpl
(NOA 3, NOM 349)
Facade
(NOA 1, NOM 337)
JavaTokenTypes
(NOA 173, NOM 0)
UmlFactoryMDRImpl
(NOA 9, NOM 22)
ArgoUML
71. Richard Wettel and Michele
CodeCity
Granularity of representation
26
NOM=7
NOA
=
2
NOA = 2
class C
coarse
72. Richard Wettel and Michele
CodeCity
Granularity of representation
26
NOM=7
NOA
=
2
NOA = 2
class C
coarse fine-grained
73. Richard Wettel and Michele
CodeCity
Granularity of representation
26
NOM=7
NOA
=
2
NOA = 2
class C
class C
coarse fine-grained
74. Richard Wettel and Michele
CodeCity
Granularity of representation
26
NOM=7
NOA
=
2
NOA = 2
class C
class C
m4
m1
m3
m5 m7
m6
m2
coarse fine-grained
82. Richard Wettel and Michele
CodeCity
Modeling history: Hismo
30
Class
time
83. Richard Wettel and Michele
CodeCity
Modeling history: Hismo
30
Class
Class
Version
timetimestamp N
84. Richard Wettel and Michele
CodeCity
Modeling history: Hismo
30
Class
Class
Version
...
timetimestamp N
Class
Version
Class
timestamp 2
85. Richard Wettel and Michele
CodeCity
Modeling history: Hismo
30
Class
Class
Version
...
timetimestamp N
Class
Version
Class
timestamp 1
Class
Version
Class
timestamp 2
86. Richard Wettel and Michele
CodeCity
Modeling history: Hismo
30
Class
Class
Version
Class History
...
timetimestamp N
Class
Version
Class
timestamp 1
Class
Version
Class
timestamp 2
87. Richard Wettel and Michele
CodeCity
Visualizing evolution
31
Time travel
Age map
Timeline
fine
88. Richard Wettel and Michele
CodeCity
Visualizing evolution
31
Time travel
Age map
Timeline
fine
89. Richard Wettel and Michele
CodeCity
Visualizing evolution
31
Time travel
Age map
Timeline
fine
90. Richard Wettel and Michele
CodeCity
Consistent locality
32
A
BarFoo
Blueprint for the city,
based on the maximal
expansion of each artifact
(building, district).
91. Richard Wettel and Michele
CodeCity
Consistent locality
32
A
BarFoo
Blueprint for the city,
based on the maximal
expansion of each artifact
(building, district).
Fo
version 1
Bar
92. Richard Wettel and Michele
CodeCity
Consistent locality
32
A
BarFoo
Blueprint for the city,
based on the maximal
expansion of each artifact
(building, district).
Fo
version 1
Bar
A
Foo Ba
version 2
93. Richard Wettel and Michele
CodeCity
Consistent locality
32
A
BarFoo
Blueprint for the city,
based on the maximal
expansion of each artifact
(building, district).
Fo
version 1
Bar
A
Foo Ba
version 2
Foo
A
version 3
94. Richard Wettel and Michele
CodeCity
Age map
33
Bricks position is
chronological
neighbors are contemporary class C
95. Richard Wettel and Michele
CodeCity
Superficial glimpse in the past.
color layer according to age (number of versions)
Age map
33
Bricks position is
chronological
neighbors are contemporary class C
96. Richard Wettel and Michele
CodeCity
Superficial glimpse in the past.
color layer according to age (number of versions)
Age map
33
1N
Bricks position is
chronological
neighbors are contemporary class C
97. Richard Wettel and Michele
CodeCity
Superficial glimpse in the past.
color layer according to age (number of versions)
Age map
33
1N
Bricks position is
chronological
neighbors are contemporary class C
98. Richard Wettel and Michele
CodeCity
Superficial glimpse in the past.
color layer according to age (number of versions)
Age map
33
1N
Bricks position is
chronological
neighbors are contemporary class C
m4
m1
m3
m5
m7
m6
m2
99. Richard Wettel and Michele
CodeCity
Age map interpretation
34
age: 1 2 3 4 5 6 7 8
100. Richard Wettel and Michele
CodeCity
Age map interpretation
34
age: 1 2 3 4 5 6 7 8
stable
very old
101. Richard Wettel and Michele
CodeCity
Age map interpretation
34
age: 1 2 3 4 5 6 7 8
stable
oldvery old
rarely updated
102. Richard Wettel and Michele
CodeCity
Age map interpretation
34
age: 1 2 3 4 5 6 7 8
stable
youngoldvery old
rarely updated
highly unstable
103. Richard Wettel and Michele
CodeCity
Age map interpretation
34
age: 1 2 3 4 5 6 7 8
stable
youngoldvery old
rarely updated
highly unstable
very old
updated
often,
rather
unstable
104. Richard Wettel and Michele
CodeCity
Age map, fine-grained
35
library packages:
java
javax
junit
org.w3c.dom
(classes) AllTests
CH.ifa.draw.standard
CH.ifa.draw.framework
CH.ifa.draw.figures
CH.ifa.draw.test
class DrawApplication
in CH.ifa.draw.application
class StandardDrawingView
in CH.ifa.draw.standard.
105. Richard Wettel and Michele
CodeCity
Time travel, coarse-grained
36
ArgoUML
106. Richard Wettel and Michele
CodeCity
Time travel, coarse-grained
36
ArgoUML
107. Richard Wettel and Michele
CodeCity
Time travel, fine-grained
37
JHotDraw
108. Richard Wettel and Michele
CodeCity
Time travel, fine-grained
37
JHotDraw