SlideShare a Scribd company logo
Richard Wettel and Michele Lanza
University of Lugano, CH
Code City
Software systems as
Richard Wettel and Michele
CodeCity
The city metaphor
3
Richard Wettel and Michele
CodeCity
The city metaphor
3
domain mapping
classes buildings
package
s
districts
system city
Richard Wettel and Michele
CodeCity
The city metaphor
3
domain mapping
classes buildings
package
s
districts
system city
Richard Wettel and Michele
CodeCity
The city metaphor
3
domain mapping
classes buildings
package
s
districts
system city
Richard Wettel and Michele
CodeCity
The city metaphor
3
domain mapping
classes buildings
package
s
districts
system city
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
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
Richard Wettel and Michele
CodeCity
“Reading” a code city
4
Richard Wettel and Michele
CodeCity
“Reading” a code city
4
skyscrapers
(NOM, NOA)
Richard Wettel and Michele
CodeCity
“Reading” a code city
4
skyscrapers
(NOM, NOA)
parking lots
(NOM,
NOA)
Richard Wettel and Michele
CodeCity
“Reading” a code city
4
skyscrapers
(NOM, NOA)
parking lots
(NOM,
NOA)
office buildings
(NOM, NOA)
Mapping techniques
Richard Wettel and Michele
CodeCity
1. Identity mapping
6
NOM heightf(x) = x
Richard Wettel and Michele
CodeCity
1. Identity mapping
6
NOM heightf(x) = x
Richard Wettel and Michele
CodeCity
1. Identity mapping
6
NOM heightf(x) = x
Richard Wettel and Michele
CodeCity
Identity mapping applied
7
Richard Wettel and Michele
CodeCity
2. Linear mapping
8
NOM heightf(x) = ax + b
Richard Wettel and Michele
CodeCity
2. Linear mapping
8
NOM heightf(x) = ax + b
Richard Wettel and Michele
CodeCity
2. Linear mapping
8
NOM heightf(x) = ax + b
Richard Wettel and Michele
CodeCity
2. Linear mapping
8
NOM heightf(x) = ax + b
Richard Wettel and Michele
CodeCity
Linear mapping applied
9
Richard Wettel and Michele
CodeCity
3. Boxplot-based mapping
10
NOM heightclustering
Richard Wettel and Michele
CodeCity
3. Boxplot-based mapping
10
NOM heightclustering
very high
high
average
low
very low
Richard Wettel and Michele
CodeCity
3. Boxplot-based mapping
10
NOM heightclustering
very high
high
average
low
very low
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
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
Richard Wettel and Michele
CodeCity
3. Boxplot-based mapping
10
NOM heightclustering
very high
high
average
low
very low
Richard Wettel and Michele
CodeCity
3. Boxplot-based mapping
10
NOM heightclustering
very high
high
average
low
very low
Richard Wettel and Michele
CodeCity
3. Boxplot-based mapping
10
NOM heightclustering
very high
high
average
low
very low
Richard Wettel and Michele
CodeCity
Boxplot-based mapping applied
11
Richard Wettel and Michele
CodeCity
4. Threshold-based mapping
12
NOM heightclustering
Richard Wettel and Michele
CodeCity
4. Threshold-based mapping
12
NOM heightclustering
very high
high
average
low
very low
Richard Wettel and Michele
CodeCity
4. Threshold-based mapping
12
NOM heightclustering
very high
high
average
low
very low
Richard Wettel and Michele
CodeCity
4. Threshold-based mapping
12
NOM heightclustering
very high
high
average
low
very low
Richard Wettel and Michele
CodeCity
4. Threshold-based mapping
12
NOM heightclustering
very high
high
average
low
very low
Richard Wettel and Michele
CodeCity
4. Threshold-based mapping
12
NOM heightclustering
very high
high
average
low
very low
Richard Wettel and Michele
CodeCity
4. Threshold-based mapping
12
NOM heightclustering
very high
high
average
low
very low
Richard Wettel and Michele
CodeCity
Threshold-based mapping applied
13
Richard Wettel and Michele
CodeCity
Mappings compared
14
identit
y
linear
boxplot-
basedthreshold-
based
Richard Wettel and Michele
CodeCity
Mappings compared
14
identit
y
linear
boxplot-
basedthreshold-
based
Richard Wettel and Michele
CodeCity
Mappings compared
14
identit
y
linear
boxplot-
basedthreshold-
based
Richard Wettel and Michele
CodeCity
Mappings compared
14
identit
y
linear
boxplot-
basedthreshold-
based
Richard Wettel and Michele
CodeCity
Mappings compared
14
identit
y
linear
boxplot-
basedthreshold-
based
Understanding programs
Richard Wettel and Michele
CodeCity
Reverse-engineering ArgoUML
16
Richard Wettel and Michele
CodeCity
Reverse-engineering ArgoUML
16
Richard Wettel and Michele
CodeCity
Reverse-engineering ArgoUML
16
Richard Wettel and Michele
CodeCity
The twin towers
17
Richard Wettel and Michele
CodeCity
Facade
1 attribute
337
methods
The twin towers
17
Richard Wettel and Michele
CodeCity
Facade
1 attribute
337
methods
The twin towers
17
FacadeMDRI
mpl
3 attribute
349 methods
Richard Wettel and Michele
CodeCity
Facade
1 attribute
337
methods
The twin towers
17
Is there
anybody
out
FacadeMDRI
mpl
3 attribute
349 methods
Richard Wettel and Michele
CodeCity
Facade
1 attribute
337
methods
The twin towers
17
FacadeMDRI
mpl
3 attribute
349 methods
Richard Wettel and Michele
CodeCity
Hotels, parking lots, duplication
18
Richard Wettel and Michele
CodeCity
Hotels, parking lots, duplication
18
org.argouml.language.
java.generator
JavaTokenType
s146 attributes
0 methods
JavaRecognizer
24 attributes
91 methods
Richard Wettel and Michele
CodeCity
Hotels, parking lots, duplication
18
org.argouml.language.
java.generator
JavaTokenType
s146 attributes
0 methods
JavaRecognizer
24 attributes
91 methods
STDCTokenTy
pes152 attributes
0 methods
CPPParser
85 attributes
204 methods
org.argouml.uml.reveng.class
file
Richard Wettel and Michele
CodeCity
Hotels, parking lots, duplication
18
org.argouml.language.
java.generator
JavaTokenType
s146 attributes
0 methods
JavaRecognizer
24 attributes
91 methods
STDCTokenTy
pes152 attributes
0 methods
CPPParser
85 attributes
204 methods
JavaTokenTyp
es173
attributes0 methods
JavaRecogniz
er79 attributes
176 methods
org.argouml.uml.reveng.java
org.argouml.uml.reveng.class
file
Richard Wettel and Michele
CodeCity
Hotels, parking lots, duplication
18
org.argouml.language.
java.generator
JavaTokenType
s146 attributes
0 methods
JavaRecognizer
24 attributes
91 methods
STDCTokenTy
pes152 attributes
0 methods
CPPParser
85 attributes
204 methods
JavaTokenTyp
es173
attributes0 methods
JavaRecogniz
er79 attributes
176 methods
org.argouml.uml.reveng.java
org.argouml.uml.reveng.class
file
JavaTokenType
s145 attributes
0 methods
Richard Wettel and Michele
CodeCity
Hotels, parking lots, duplication
18
org.argouml.language.
java.generator
JavaTokenType
s146 attributes
0 methods
JavaRecognizer
24 attributes
91 methods
STDCTokenTy
pes152 attributes
0 methods
CPPParser
85 attributes
204 methods
JavaTokenTyp
es173
attributes0 methods
JavaRecogniz
er79 attributes
176 methods
org.argouml.uml.reveng.java
org.argouml.uml.reveng.class
file
JavaTokenType
s145 attributes
0 methods
JavaRecognizer
22 attributes
88 methods
Looking at the design
Richard Wettel and Michele
CodeCity
On software design...
20
Richard Wettel and Michele
CodeCity
On software design...
Definitions
bad smells [Beck & Fowler 1998], design flaws
heuristics [Riel 2000], principles [Martin 2002],
patterns [GoF 1995]
20
Richard Wettel and Michele
CodeCity
On software design...
Definitions
bad smells [Beck & Fowler 1998], design flaws
heuristics [Riel 2000], principles [Martin 2002],
patterns [GoF 1995]
Techniques
detection strategies for the design flaws
20
Richard Wettel and Michele
CodeCity
On software design...
Definitions
bad smells [Beck & Fowler 1998], design flaws
heuristics [Riel 2000], principles [Martin 2002],
patterns [GoF 1995]
Techniques
detection strategies for the design flaws
Visualization
?
20
Richard Wettel and Michele
CodeCity
The God Class detection strategy
21
Richard Wettel and Michele
CodeCity
God classes of JDK 1.5 in Moose
22
Richard Wettel and Michele
CodeCity
God classes of JDK in CodeCity
23
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
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
Richard Wettel and Michele
CodeCity
Granularity of representation
26
NOM=7
NOA
=
2
NOA = 2
class C
coarse
Richard Wettel and Michele
CodeCity
Granularity of representation
26
NOM=7
NOA
=
2
NOA = 2
class C
coarse fine-grained
Richard Wettel and Michele
CodeCity
Granularity of representation
26
NOM=7
NOA
=
2
NOA = 2
class C
class C
coarse fine-grained
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
Richard Wettel and Michele
CodeCity 27
Feature envy map
Jmol
Richard Wettel and Michele
CodeCity 27
1,500 methods
(25 %)
Feature envy map
Jmol
Richard Wettel and Michele
CodeCity
Shotgun surgery map
28
ArgoUM
L
Richard Wettel and Michele
CodeCity
Shotgun surgery map
28
ArgoUM
L
Richard Wettel and Michele
CodeCity
Shotgun surgery map
28
ArgoUM
L
Exploring the history
Richard Wettel and Michele
CodeCity
Modeling history: Hismo
30
Class
Richard Wettel and Michele
CodeCity
Modeling history: Hismo
30
Class
time
Richard Wettel and Michele
CodeCity
Modeling history: Hismo
30
Class
Class
Version
timetimestamp N
Richard Wettel and Michele
CodeCity
Modeling history: Hismo
30
Class
Class
Version
...
timetimestamp N
Class
Version
Class
timestamp 2
Richard Wettel and Michele
CodeCity
Modeling history: Hismo
30
Class
Class
Version
...
timetimestamp N
Class
Version
Class
timestamp 1
Class
Version
Class
timestamp 2
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
Richard Wettel and Michele
CodeCity
Visualizing evolution
31
Time travel
Age map
Timeline
fine
Richard Wettel and Michele
CodeCity
Visualizing evolution
31
Time travel
Age map
Timeline
fine
Richard Wettel and Michele
CodeCity
Visualizing evolution
31
Time travel
Age map
Timeline
fine
Richard Wettel and Michele
CodeCity
Consistent locality
32
A
BarFoo
Blueprint for the city,
based on the maximal
expansion of each artifact
(building, district).
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
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
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
Richard Wettel and Michele
CodeCity
Age map
33
Bricks position is
chronological
neighbors are contemporary class C
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
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
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
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
Richard Wettel and Michele
CodeCity
Age map interpretation
34
age: 1 2 3 4 5 6 7 8
Richard Wettel and Michele
CodeCity
Age map interpretation
34
age: 1 2 3 4 5 6 7 8
stable
very old
Richard Wettel and Michele
CodeCity
Age map interpretation
34
age: 1 2 3 4 5 6 7 8
stable
oldvery old
rarely updated
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
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
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.
Richard Wettel and Michele
CodeCity
Time travel, coarse-grained
36
ArgoUML
Richard Wettel and Michele
CodeCity
Time travel, coarse-grained
36
ArgoUML
Richard Wettel and Michele
CodeCity
Time travel, fine-grained
37
JHotDraw
Richard Wettel and Michele
CodeCity
Time travel, fine-grained
37
JHotDraw
Richard Wettel and Michele
CodeCity
Timeline
38
History of class C
Richard Wettel and Michele
CodeCity
Timeline
38
time
(versions)
m3
m5
History of class C
V1
Richard Wettel and Michele
CodeCity
Timeline
38
time
(versions)
m3
m5 m8
m12
m3
History of class C
V1
V2
Richard Wettel and Michele
CodeCity
Timeline
38
time
(versions)
m3
m5 m8
m12
m3
History of class C
V1
V2
Richard Wettel and Michele
CodeCity
Timeline
38
time
(versions)
m3
m5 m8
m12
m3
m12
m18
History of class C
V1
V2
V3
Richard Wettel and Michele
CodeCity
Timeline
38
time
(versions)
m3
m5 m8
m12
m3
m12
m18
History of class C
V1
V2
V3
Richard Wettel and Michele
CodeCity
Examples of timelines
39
Richard Wettel and Michele
CodeCity
Examples of timelines
39
Richard Wettel and Michele
CodeCity
Scripting cities
40
Richard Wettel and Michele
CodeCity
On relationships
41
The tool
Richard Wettel and Michele
CodeCity
Tool chain
43
iPlasma
Moose
CodeCity
model
exchange
parsing &
metric computation
Jun
rendering
VisualWorks 7.6
Richard Wettel and Michele
CodeCity
Cityscapes
44
Richard Wettel and Michele
CodeCity
Cityscapes
44
System Languag
e
NOP NOC kLO
C
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
core
Java 137 4715 160
Moose Smalltal
k
278 961 32
Jun Smalltal
k
288 2236 351
CodeCity Smalltal
k
129 291 18
ScumVM C++ 18 1331 105
Richard Wettel and Michele
CodeCity
Cityscapes
44
System Languag
e
NOP NOC kLO
C
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
core
Java 137 4715 160
Moose Smalltal
k
278 961 32
Jun Smalltal
k
288 2236 351
CodeCity Smalltal
k
129 291 18
ScumVM C++ 18 1331 105
Richard Wettel and Michele
CodeCity
Cityscapes
44
System Languag
e
NOP NOC kLO
C
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
core
Java 137 4715 160
Moose Smalltal
k
278 961 32
Jun Smalltal
k
288 2236 351
CodeCity Smalltal
k
129 291 18
ScumVM C++ 18 1331 105
Richard Wettel and Michele
CodeCity
Cityscapes
44
System Languag
e
NOP NOC kLO
C
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
core
Java 137 4715 160
Moose Smalltal
k
278 961 32
Jun Smalltal
k
288 2236 351
CodeCity Smalltal
k
129 291 18
ScumVM C++ 18 1331 105
Richard Wettel and Michele
CodeCity
Cityscapes
44
System Languag
e
NOP NOC kLO
C
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
core
Java 137 4715 160
Moose Smalltal
k
278 961 32
Jun Smalltal
k
288 2236 351
CodeCity Smalltal
k
129 291 18
ScumVM C++ 18 1331 105
Richard Wettel and Michele
CodeCity
Cityscapes
44
System Languag
e
NOP NOC kLO
C
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
core
Java 137 4715 160
Moose Smalltal
k
278 961 32
Jun Smalltal
k
288 2236 351
CodeCity Smalltal
k
129 291 18
ScumVM C++ 18 1331 105
Richard Wettel and Michele
CodeCity
Cityscapes
44
System Languag
e
NOP NOC kLO
C
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
core
Java 137 4715 160
Moose Smalltal
k
278 961 32
Jun Smalltal
k
288 2236 351
CodeCity Smalltal
k
129 291 18
ScumVM C++ 18 1331 105
Richard Wettel and Michele
CodeCity
Cityscapes
44
System Languag
e
NOP NOC kLO
C
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
core
Java 137 4715 160
Moose Smalltal
k
278 961 32
Jun Smalltal
k
288 2236 351
CodeCity Smalltal
k
129 291 18
ScumVM C++ 18 1331 105
Richard Wettel and Michele
CodeCity
Cityscapes
44
System Languag
e
NOP NOC kLO
C
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
core
Java 137 4715 160
Moose Smalltal
k
278 961 32
Jun Smalltal
k
288 2236 351
CodeCity Smalltal
k
129 291 18
ScumVM C++ 18 1331 105
Richard Wettel and Michele
CodeCity
Cityscapes
44
System Languag
e
NOP NOC kLO
C
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
core
Java 137 4715 160
Moose Smalltal
k
278 961 32
Jun Smalltal
k
288 2236 351
CodeCity Smalltal
k
129 291 18
ScumVM C++ 18 1331 105
Richard Wettel and Michele
CodeCity
Cityscapes
44
System Languag
e
NOP NOC kLO
C
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
core
Java 137 4715 160
Moose Smalltal
k
278 961 32
Jun Smalltal
k
288 2236 351
CodeCity Smalltal
k
129 291 18
ScumVM C++ 18 1331 105
Richard Wettel and Michele
CodeCity
Cityscapes
44
System Languag
e
NOP NOC kLO
C
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
core
Java 137 4715 160
Moose Smalltal
k
278 961 32
Jun Smalltal
k
288 2236 351
CodeCity Smalltal
k
129 291 18
ScumVM C++ 18 1331 105
Richard Wettel and Michele
CodeCity
Cityscapes
44
System Languag
e
NOP NOC kLO
C
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
core
Java 137 4715 160
Moose Smalltal
k
278 961 32
Jun Smalltal
k
288 2236 351
CodeCity Smalltal
k
129 291 18
ScumVM C++ 18 1331 105
1.25 million
LOC
http://www.inf.unisi.ch/phd/wettel/
codecity.html
http://www.inf.unisi.ch/phd/wettel/
codecity.html
over
1100
downloads
since March
2008
!
http://www.inf.unisi.ch/phd/wettel/
codecity.html
over
1100
downloads
since March
2008
!
http://www.inf.unisi.ch/phd/wettel/
codecity.html
^ Smalltalk
over
1100
downloads
since March
2008
!

More Related Content

What's hot

Linux-wpan: IEEE 802.15.4 and 6LoWPAN in the Linux Kernel - BUD17-120
Linux-wpan: IEEE 802.15.4 and 6LoWPAN in the Linux Kernel - BUD17-120Linux-wpan: IEEE 802.15.4 and 6LoWPAN in the Linux Kernel - BUD17-120
Linux-wpan: IEEE 802.15.4 and 6LoWPAN in the Linux Kernel - BUD17-120
Linaro
 
5g introduction_NR
5g introduction_NR5g introduction_NR
5g introduction_NR
Nitin George Thomas
 
Introduction to Software Defined Networking (SDN)
Introduction to Software Defined Networking (SDN)Introduction to Software Defined Networking (SDN)
Introduction to Software Defined Networking (SDN)
Bangladesh Network Operators Group
 
Emulator vs Simulator
Emulator vs SimulatorEmulator vs Simulator
Emulator vs Simulator
Mithilesh Singh
 
Chapter 8 Wireless Network Security
Chapter 8 Wireless Network SecurityChapter 8 Wireless Network Security
Chapter 8 Wireless Network Security
Dr. Ahmed Al Zaidy
 
What is 5G?
What is 5G?What is 5G?
Beginners: Different Types of RAN Architectures - Distributed, Centralized & ...
Beginners: Different Types of RAN Architectures - Distributed, Centralized & ...Beginners: Different Types of RAN Architectures - Distributed, Centralized & ...
Beginners: Different Types of RAN Architectures - Distributed, Centralized & ...
3G4G
 
Kali linux os
Kali linux osKali linux os
Kali linux os
Samantha Lawrence
 
Beginners: Fixed Wireless Access (FWA)
Beginners: Fixed Wireless Access (FWA)Beginners: Fixed Wireless Access (FWA)
Beginners: Fixed Wireless Access (FWA)
3G4G
 
MQTT IOT Protocol Introduction
MQTT IOT Protocol IntroductionMQTT IOT Protocol Introduction
MQTT IOT Protocol Introduction
Prem Sanil
 
Ten Things You Should not Forget in Mainframe Security
Ten Things You Should not Forget in Mainframe Security Ten Things You Should not Forget in Mainframe Security
Ten Things You Should not Forget in Mainframe Security
CA Technologies
 
ASA Firewall Interview- Questions & Answers
ASA Firewall Interview- Questions & AnswersASA Firewall Interview- Questions & Answers
ASA Firewall Interview- Questions & Answers
NetProtocol Xpert
 
Bitbucket pipelines
Bitbucket pipelinesBitbucket pipelines
Bitbucket pipelines
Hoffman Lab
 
Kernel (OS)
Kernel (OS)Kernel (OS)
ICC TUT: Wireless Communications with Unmanned Aerial Vehicles
ICC TUT: Wireless Communications with Unmanned Aerial VehiclesICC TUT: Wireless Communications with Unmanned Aerial Vehicles
ICC TUT: Wireless Communications with Unmanned Aerial Vehicles
Evgenii (Genia) Vinogradov
 
Socket Programming by Rajkumar Buyya
Socket Programming by Rajkumar BuyyaSocket Programming by Rajkumar Buyya
Socket Programming by Rajkumar Buyya
iDhawalVaja
 
How to successfully migrate to Bazel from Maven or Gradle - Riga Dev Days
How to successfully migrate to Bazel from Maven or Gradle - Riga Dev DaysHow to successfully migrate to Bazel from Maven or Gradle - Riga Dev Days
How to successfully migrate to Bazel from Maven or Gradle - Riga Dev Days
Natan Silnitsky
 
3GPP Standards for the Internet-of-Things
3GPP Standards for the Internet-of-Things3GPP Standards for the Internet-of-Things
3GPP Standards for the Internet-of-Things
Eiko Seidel
 
NFV +SDN (Network Function Virtualization)
NFV +SDN (Network Function Virtualization)NFV +SDN (Network Function Virtualization)
NFV +SDN (Network Function Virtualization)
Hamidreza Bolhasani
 
Kali linux
Kali linuxKali linux
Kali linux
Harsh Gor
 

What's hot (20)

Linux-wpan: IEEE 802.15.4 and 6LoWPAN in the Linux Kernel - BUD17-120
Linux-wpan: IEEE 802.15.4 and 6LoWPAN in the Linux Kernel - BUD17-120Linux-wpan: IEEE 802.15.4 and 6LoWPAN in the Linux Kernel - BUD17-120
Linux-wpan: IEEE 802.15.4 and 6LoWPAN in the Linux Kernel - BUD17-120
 
5g introduction_NR
5g introduction_NR5g introduction_NR
5g introduction_NR
 
Introduction to Software Defined Networking (SDN)
Introduction to Software Defined Networking (SDN)Introduction to Software Defined Networking (SDN)
Introduction to Software Defined Networking (SDN)
 
Emulator vs Simulator
Emulator vs SimulatorEmulator vs Simulator
Emulator vs Simulator
 
Chapter 8 Wireless Network Security
Chapter 8 Wireless Network SecurityChapter 8 Wireless Network Security
Chapter 8 Wireless Network Security
 
What is 5G?
What is 5G?What is 5G?
What is 5G?
 
Beginners: Different Types of RAN Architectures - Distributed, Centralized & ...
Beginners: Different Types of RAN Architectures - Distributed, Centralized & ...Beginners: Different Types of RAN Architectures - Distributed, Centralized & ...
Beginners: Different Types of RAN Architectures - Distributed, Centralized & ...
 
Kali linux os
Kali linux osKali linux os
Kali linux os
 
Beginners: Fixed Wireless Access (FWA)
Beginners: Fixed Wireless Access (FWA)Beginners: Fixed Wireless Access (FWA)
Beginners: Fixed Wireless Access (FWA)
 
MQTT IOT Protocol Introduction
MQTT IOT Protocol IntroductionMQTT IOT Protocol Introduction
MQTT IOT Protocol Introduction
 
Ten Things You Should not Forget in Mainframe Security
Ten Things You Should not Forget in Mainframe Security Ten Things You Should not Forget in Mainframe Security
Ten Things You Should not Forget in Mainframe Security
 
ASA Firewall Interview- Questions & Answers
ASA Firewall Interview- Questions & AnswersASA Firewall Interview- Questions & Answers
ASA Firewall Interview- Questions & Answers
 
Bitbucket pipelines
Bitbucket pipelinesBitbucket pipelines
Bitbucket pipelines
 
Kernel (OS)
Kernel (OS)Kernel (OS)
Kernel (OS)
 
ICC TUT: Wireless Communications with Unmanned Aerial Vehicles
ICC TUT: Wireless Communications with Unmanned Aerial VehiclesICC TUT: Wireless Communications with Unmanned Aerial Vehicles
ICC TUT: Wireless Communications with Unmanned Aerial Vehicles
 
Socket Programming by Rajkumar Buyya
Socket Programming by Rajkumar BuyyaSocket Programming by Rajkumar Buyya
Socket Programming by Rajkumar Buyya
 
How to successfully migrate to Bazel from Maven or Gradle - Riga Dev Days
How to successfully migrate to Bazel from Maven or Gradle - Riga Dev DaysHow to successfully migrate to Bazel from Maven or Gradle - Riga Dev Days
How to successfully migrate to Bazel from Maven or Gradle - Riga Dev Days
 
3GPP Standards for the Internet-of-Things
3GPP Standards for the Internet-of-Things3GPP Standards for the Internet-of-Things
3GPP Standards for the Internet-of-Things
 
NFV +SDN (Network Function Virtualization)
NFV +SDN (Network Function Virtualization)NFV +SDN (Network Function Virtualization)
NFV +SDN (Network Function Virtualization)
 
Kali linux
Kali linuxKali linux
Kali linux
 

Similar to Code City

Servi sMART - Servi.ca - Smart Market Platform for Microservices
Servi sMART - Servi.ca - Smart Market Platform for MicroservicesServi sMART - Servi.ca - Smart Market Platform for Microservices
Servi sMART - Servi.ca - Smart Market Platform for Microservices
Stefan Ianta
 
LaWzer, a still image codec designed by L. Guillemot
LaWzer, a still image codec designed by L. GuillemotLaWzer, a still image codec designed by L. Guillemot
LaWzer, a still image codec designed by L. Guillemot
Ludovic Guillemot
 
Smart Markets of Services / ATG meetup Toronto
Smart Markets of Services / ATG meetup TorontoSmart Markets of Services / ATG meetup Toronto
Smart Markets of Services / ATG meetup Toronto
Stefan Ianta
 
3XN BIM Environment, A case study of Architecture firm
3XN BIM Environment, A case study of Architecture firm3XN BIM Environment, A case study of Architecture firm
3XN BIM Environment, A case study of Architecture firm
Duong Binh
 
Clean Architecture A Craftsman’s Guide to Software Structure and Design by Ro...
Clean Architecture A Craftsman’s Guide to Software Structure and Design by Ro...Clean Architecture A Craftsman’s Guide to Software Structure and Design by Ro...
Clean Architecture A Craftsman’s Guide to Software Structure and Design by Ro...
HbBazan
 
Ibrahim Naeem BIM Projects Portfolio
Ibrahim Naeem BIM Projects Portfolio Ibrahim Naeem BIM Projects Portfolio
Ibrahim Naeem BIM Projects Portfolio
Ibrahem Naeem
 
Digital-Logic-Design-Project-16-bit-and-32-bit-Decoder.pptx
Digital-Logic-Design-Project-16-bit-and-32-bit-Decoder.pptxDigital-Logic-Design-Project-16-bit-and-32-bit-Decoder.pptx
Digital-Logic-Design-Project-16-bit-and-32-bit-Decoder.pptx
QalandarBux2
 
Analysis of software architectures
Analysis of software architecturesAnalysis of software architectures
Analysis of software architectures
Horia Constantin
 
Evolutionary Machine Intelligence in Smart Markets of microservices
Evolutionary Machine Intelligence in Smart Markets of microservicesEvolutionary Machine Intelligence in Smart Markets of microservices
Evolutionary Machine Intelligence in Smart Markets of microservices
Stefan Ianta
 
Cs 1023 lec 11 dsse (week 4)
Cs 1023 lec 11 dsse (week 4)Cs 1023 lec 11 dsse (week 4)
Cs 1023 lec 11 dsse (week 4)
stanbridge
 
Joseph Yoder : Being Agile about Architecture
Joseph Yoder : Being Agile about ArchitectureJoseph Yoder : Being Agile about Architecture
Joseph Yoder : Being Agile about Architecture
Hironori Washizaki
 
From Copycat Codelets to an AI Market Internet Protocol
From Copycat Codelets to an AI Market Internet ProtocolFrom Copycat Codelets to an AI Market Internet Protocol
From Copycat Codelets to an AI Market Internet Protocol
Stefan Ianta
 
ABD322_Implementing a Flight Simulator Interface Using AI, Virtual Reality, a...
ABD322_Implementing a Flight Simulator Interface Using AI, Virtual Reality, a...ABD322_Implementing a Flight Simulator Interface Using AI, Virtual Reality, a...
ABD322_Implementing a Flight Simulator Interface Using AI, Virtual Reality, a...
Amazon Web Services
 
Een andere kijk op Microservices
Een andere kijk op MicroservicesEen andere kijk op Microservices
Een andere kijk op Microservices
Dennis van der Stelt
 
VLSI lab manual Part A, VTU 7the sem KIT-tiptur
VLSI lab manual Part A, VTU 7the sem KIT-tipturVLSI lab manual Part A, VTU 7the sem KIT-tiptur
VLSI lab manual Part A, VTU 7the sem KIT-tiptur
Pramod Kumar S
 
Monitoring Challenges - Monitorama 2016 - Monitoringless
Monitoring Challenges - Monitorama 2016 - MonitoringlessMonitoring Challenges - Monitorama 2016 - Monitoringless
Monitoring Challenges - Monitorama 2016 - Monitoringless
Adrian Cockcroft
 
Hatii seminar 2014 - The emerging needs and the long standing issues curating...
Hatii seminar 2014 - The emerging needs and the long standing issues curating...Hatii seminar 2014 - The emerging needs and the long standing issues curating...
Hatii seminar 2014 - The emerging needs and the long standing issues curating...
Ruggero Lancia
 
fyp presentation of group 43011 final.pptx
fyp presentation of group 43011 final.pptxfyp presentation of group 43011 final.pptx
fyp presentation of group 43011 final.pptx
IIEE - NEDUET
 
Cytoscape CI Chapter 2
Cytoscape CI Chapter 2Cytoscape CI Chapter 2
Cytoscape CI Chapter 2
bdemchak
 
Commit to the Cause, Push for Change: Contributing to Call for Code Open Sour...
Commit to the Cause, Push for Change: Contributing to Call for Code Open Sour...Commit to the Cause, Push for Change: Contributing to Call for Code Open Sour...
Commit to the Cause, Push for Change: Contributing to Call for Code Open Sour...
Daniel Krook
 

Similar to Code City (20)

Servi sMART - Servi.ca - Smart Market Platform for Microservices
Servi sMART - Servi.ca - Smart Market Platform for MicroservicesServi sMART - Servi.ca - Smart Market Platform for Microservices
Servi sMART - Servi.ca - Smart Market Platform for Microservices
 
LaWzer, a still image codec designed by L. Guillemot
LaWzer, a still image codec designed by L. GuillemotLaWzer, a still image codec designed by L. Guillemot
LaWzer, a still image codec designed by L. Guillemot
 
Smart Markets of Services / ATG meetup Toronto
Smart Markets of Services / ATG meetup TorontoSmart Markets of Services / ATG meetup Toronto
Smart Markets of Services / ATG meetup Toronto
 
3XN BIM Environment, A case study of Architecture firm
3XN BIM Environment, A case study of Architecture firm3XN BIM Environment, A case study of Architecture firm
3XN BIM Environment, A case study of Architecture firm
 
Clean Architecture A Craftsman’s Guide to Software Structure and Design by Ro...
Clean Architecture A Craftsman’s Guide to Software Structure and Design by Ro...Clean Architecture A Craftsman’s Guide to Software Structure and Design by Ro...
Clean Architecture A Craftsman’s Guide to Software Structure and Design by Ro...
 
Ibrahim Naeem BIM Projects Portfolio
Ibrahim Naeem BIM Projects Portfolio Ibrahim Naeem BIM Projects Portfolio
Ibrahim Naeem BIM Projects Portfolio
 
Digital-Logic-Design-Project-16-bit-and-32-bit-Decoder.pptx
Digital-Logic-Design-Project-16-bit-and-32-bit-Decoder.pptxDigital-Logic-Design-Project-16-bit-and-32-bit-Decoder.pptx
Digital-Logic-Design-Project-16-bit-and-32-bit-Decoder.pptx
 
Analysis of software architectures
Analysis of software architecturesAnalysis of software architectures
Analysis of software architectures
 
Evolutionary Machine Intelligence in Smart Markets of microservices
Evolutionary Machine Intelligence in Smart Markets of microservicesEvolutionary Machine Intelligence in Smart Markets of microservices
Evolutionary Machine Intelligence in Smart Markets of microservices
 
Cs 1023 lec 11 dsse (week 4)
Cs 1023 lec 11 dsse (week 4)Cs 1023 lec 11 dsse (week 4)
Cs 1023 lec 11 dsse (week 4)
 
Joseph Yoder : Being Agile about Architecture
Joseph Yoder : Being Agile about ArchitectureJoseph Yoder : Being Agile about Architecture
Joseph Yoder : Being Agile about Architecture
 
From Copycat Codelets to an AI Market Internet Protocol
From Copycat Codelets to an AI Market Internet ProtocolFrom Copycat Codelets to an AI Market Internet Protocol
From Copycat Codelets to an AI Market Internet Protocol
 
ABD322_Implementing a Flight Simulator Interface Using AI, Virtual Reality, a...
ABD322_Implementing a Flight Simulator Interface Using AI, Virtual Reality, a...ABD322_Implementing a Flight Simulator Interface Using AI, Virtual Reality, a...
ABD322_Implementing a Flight Simulator Interface Using AI, Virtual Reality, a...
 
Een andere kijk op Microservices
Een andere kijk op MicroservicesEen andere kijk op Microservices
Een andere kijk op Microservices
 
VLSI lab manual Part A, VTU 7the sem KIT-tiptur
VLSI lab manual Part A, VTU 7the sem KIT-tipturVLSI lab manual Part A, VTU 7the sem KIT-tiptur
VLSI lab manual Part A, VTU 7the sem KIT-tiptur
 
Monitoring Challenges - Monitorama 2016 - Monitoringless
Monitoring Challenges - Monitorama 2016 - MonitoringlessMonitoring Challenges - Monitorama 2016 - Monitoringless
Monitoring Challenges - Monitorama 2016 - Monitoringless
 
Hatii seminar 2014 - The emerging needs and the long standing issues curating...
Hatii seminar 2014 - The emerging needs and the long standing issues curating...Hatii seminar 2014 - The emerging needs and the long standing issues curating...
Hatii seminar 2014 - The emerging needs and the long standing issues curating...
 
fyp presentation of group 43011 final.pptx
fyp presentation of group 43011 final.pptxfyp presentation of group 43011 final.pptx
fyp presentation of group 43011 final.pptx
 
Cytoscape CI Chapter 2
Cytoscape CI Chapter 2Cytoscape CI Chapter 2
Cytoscape CI Chapter 2
 
Commit to the Cause, Push for Change: Contributing to Call for Code Open Sour...
Commit to the Cause, Push for Change: Contributing to Call for Code Open Sour...Commit to the Cause, Push for Change: Contributing to Call for Code Open Sour...
Commit to the Cause, Push for Change: Contributing to Call for Code Open Sour...
 

More from ESUG

Workshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programmingWorkshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programming
ESUG
 
Technical documentation support in Pharo
Technical documentation support in PharoTechnical documentation support in Pharo
Technical documentation support in Pharo
ESUG
 
The Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and RoadmapThe Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and Roadmap
ESUG
 
Sequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in PharoSequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in Pharo
ESUG
 
Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...
ESUG
 
Analyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early resultsAnalyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early results
ESUG
 
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
ESUG
 
A Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test GenerationA Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test Generation
ESUG
 
Creating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic ProgrammingCreating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic Programming
ESUG
 
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution ModesThreaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
ESUG
 
Exploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience ReportExploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience Report
ESUG
 
Pharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIsPharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIs
ESUG
 
Garbage Collector Tuning
Garbage Collector TuningGarbage Collector Tuning
Garbage Collector Tuning
ESUG
 
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame CaseImproving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
ESUG
 
Pharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and FuturePharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and Future
ESUG
 
thisContext in the Debugger
thisContext in the DebuggerthisContext in the Debugger
thisContext in the Debugger
ESUG
 
Websockets for Fencing Score
Websockets for Fencing ScoreWebsockets for Fencing Score
Websockets for Fencing Score
ESUG
 
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScriptShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ESUG
 
Advanced Object- Oriented Design Mooc
Advanced Object- Oriented Design MoocAdvanced Object- Oriented Design Mooc
Advanced Object- Oriented Design Mooc
ESUG
 
A New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and TransformationsA New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and Transformations
ESUG
 

More from ESUG (20)

Workshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programmingWorkshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programming
 
Technical documentation support in Pharo
Technical documentation support in PharoTechnical documentation support in Pharo
Technical documentation support in Pharo
 
The Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and RoadmapThe Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and Roadmap
 
Sequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in PharoSequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in Pharo
 
Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...
 
Analyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early resultsAnalyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early results
 
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
 
A Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test GenerationA Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test Generation
 
Creating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic ProgrammingCreating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic Programming
 
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution ModesThreaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
 
Exploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience ReportExploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience Report
 
Pharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIsPharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIs
 
Garbage Collector Tuning
Garbage Collector TuningGarbage Collector Tuning
Garbage Collector Tuning
 
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame CaseImproving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
 
Pharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and FuturePharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and Future
 
thisContext in the Debugger
thisContext in the DebuggerthisContext in the Debugger
thisContext in the Debugger
 
Websockets for Fencing Score
Websockets for Fencing ScoreWebsockets for Fencing Score
Websockets for Fencing Score
 
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScriptShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
 
Advanced Object- Oriented Design Mooc
Advanced Object- Oriented Design MoocAdvanced Object- Oriented Design Mooc
Advanced Object- Oriented Design Mooc
 
A New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and TransformationsA New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and Transformations
 

Recently uploaded

Driving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success StoryDriving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Safe Software
 
Serial Arm Control in Real Time Presentation
Serial Arm Control in Real Time PresentationSerial Arm Control in Real Time Presentation
Serial Arm Control in Real Time Presentation
tolgahangng
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
Uni Systems S.M.S.A.
 
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdfMonitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Tosin Akinosho
 
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUHCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
panagenda
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
Quotidiano Piemontese
 
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with SlackLet's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
shyamraj55
 
How to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For FlutterHow to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For Flutter
Daiki Mogmet Ito
 
UI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentationUI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentation
Wouter Lemaire
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
Kumud Singh
 
OpenID AuthZEN Interop Read Out - Authorization
OpenID AuthZEN Interop Read Out - AuthorizationOpenID AuthZEN Interop Read Out - Authorization
OpenID AuthZEN Interop Read Out - Authorization
David Brossard
 
Mariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceXMariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceX
Mariano Tinti
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems S.M.S.A.
 
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial IntelligenceAI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
IndexBug
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
innovationoecd
 
Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
Zilliz
 
Infrastructure Challenges in Scaling RAG with Custom AI models
Infrastructure Challenges in Scaling RAG with Custom AI modelsInfrastructure Challenges in Scaling RAG with Custom AI models
Infrastructure Challenges in Scaling RAG with Custom AI models
Zilliz
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
Aftab Hussain
 
Things to Consider When Choosing a Website Developer for your Website | FODUU
Things to Consider When Choosing a Website Developer for your Website | FODUUThings to Consider When Choosing a Website Developer for your Website | FODUU
Things to Consider When Choosing a Website Developer for your Website | FODUU
FODUU
 

Recently uploaded (20)

Driving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success StoryDriving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success Story
 
Serial Arm Control in Real Time Presentation
Serial Arm Control in Real Time PresentationSerial Arm Control in Real Time Presentation
Serial Arm Control in Real Time Presentation
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
 
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdfMonitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdf
 
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUHCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
 
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with SlackLet's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
 
How to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For FlutterHow to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For Flutter
 
UI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentationUI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentation
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
 
OpenID AuthZEN Interop Read Out - Authorization
OpenID AuthZEN Interop Read Out - AuthorizationOpenID AuthZEN Interop Read Out - Authorization
OpenID AuthZEN Interop Read Out - Authorization
 
Mariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceXMariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceX
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
 
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial IntelligenceAI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
 
Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
 
Infrastructure Challenges in Scaling RAG with Custom AI models
Infrastructure Challenges in Scaling RAG with Custom AI modelsInfrastructure Challenges in Scaling RAG with Custom AI models
Infrastructure Challenges in Scaling RAG with Custom AI models
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
 
Things to Consider When Choosing a Website Developer for your Website | FODUU
Things to Consider When Choosing a Website Developer for your Website | FODUUThings to Consider When Choosing a Website Developer for your Website | FODUU
Things to Consider When Choosing a Website Developer for your Website | FODUU
 

Code City

  • 1. Richard Wettel and Michele Lanza University of Lugano, CH Code City
  • 3. Richard Wettel and Michele CodeCity The city metaphor 3
  • 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
  • 10. Richard Wettel and Michele CodeCity “Reading” a code city 4
  • 11. Richard Wettel and Michele CodeCity “Reading” a code city 4 skyscrapers (NOM, NOA)
  • 12. Richard Wettel and Michele CodeCity “Reading” a code city 4 skyscrapers (NOM, NOA) parking lots (NOM, NOA)
  • 13. Richard Wettel and Michele CodeCity “Reading” a code city 4 skyscrapers (NOM, NOA) parking lots (NOM, NOA) office buildings (NOM, NOA)
  • 15. Richard Wettel and Michele CodeCity 1. Identity mapping 6 NOM heightf(x) = x
  • 16. Richard Wettel and Michele CodeCity 1. Identity mapping 6 NOM heightf(x) = x
  • 17. Richard Wettel and Michele CodeCity 1. Identity mapping 6 NOM heightf(x) = x
  • 18. Richard Wettel and Michele CodeCity Identity mapping applied 7
  • 19. Richard Wettel and Michele CodeCity 2. Linear mapping 8 NOM heightf(x) = ax + b
  • 20. Richard Wettel and Michele CodeCity 2. Linear mapping 8 NOM heightf(x) = ax + b
  • 21. Richard Wettel and Michele CodeCity 2. Linear mapping 8 NOM heightf(x) = ax + b
  • 22. Richard Wettel and Michele CodeCity 2. Linear mapping 8 NOM heightf(x) = ax + b
  • 23. Richard Wettel and Michele CodeCity Linear mapping applied 9
  • 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
  • 32. Richard Wettel and Michele CodeCity Boxplot-based mapping applied 11
  • 33. Richard Wettel and Michele CodeCity 4. Threshold-based mapping 12 NOM heightclustering
  • 34. Richard Wettel and Michele CodeCity 4. Threshold-based mapping 12 NOM heightclustering very high high average low very low
  • 35. Richard Wettel and Michele CodeCity 4. Threshold-based mapping 12 NOM heightclustering very high high average low very low
  • 36. Richard Wettel and Michele CodeCity 4. Threshold-based mapping 12 NOM heightclustering very high high average low very low
  • 37. Richard Wettel and Michele CodeCity 4. Threshold-based mapping 12 NOM heightclustering very high high average low very low
  • 38. Richard Wettel and Michele CodeCity 4. Threshold-based mapping 12 NOM heightclustering very high high average low very low
  • 39. Richard Wettel and Michele CodeCity 4. Threshold-based mapping 12 NOM heightclustering very high high average low very low
  • 40. Richard Wettel and Michele CodeCity Threshold-based mapping applied 13
  • 41. Richard Wettel and Michele CodeCity Mappings compared 14 identit y linear boxplot- basedthreshold- based
  • 42. Richard Wettel and Michele CodeCity Mappings compared 14 identit y linear boxplot- basedthreshold- based
  • 43. Richard Wettel and Michele CodeCity Mappings compared 14 identit y linear boxplot- basedthreshold- based
  • 44. Richard Wettel and Michele CodeCity Mappings compared 14 identit y linear boxplot- basedthreshold- based
  • 45. Richard Wettel and Michele CodeCity Mappings compared 14 identit y linear boxplot- basedthreshold- based
  • 47. Richard Wettel and Michele CodeCity Reverse-engineering ArgoUML 16
  • 48. Richard Wettel and Michele CodeCity Reverse-engineering ArgoUML 16
  • 49. Richard Wettel and Michele CodeCity Reverse-engineering ArgoUML 16
  • 50. Richard Wettel and Michele CodeCity The twin towers 17
  • 51. Richard Wettel and Michele CodeCity Facade 1 attribute 337 methods The twin towers 17
  • 52. Richard Wettel and Michele CodeCity Facade 1 attribute 337 methods The twin towers 17 FacadeMDRI mpl 3 attribute 349 methods
  • 53. Richard Wettel and Michele CodeCity Facade 1 attribute 337 methods The twin towers 17 Is there anybody out FacadeMDRI mpl 3 attribute 349 methods
  • 54. Richard Wettel and Michele CodeCity Facade 1 attribute 337 methods The twin towers 17 FacadeMDRI mpl 3 attribute 349 methods
  • 55. Richard Wettel and Michele CodeCity Hotels, parking lots, duplication 18
  • 56. Richard Wettel and Michele CodeCity Hotels, parking lots, duplication 18 org.argouml.language. java.generator JavaTokenType s146 attributes 0 methods JavaRecognizer 24 attributes 91 methods
  • 57. Richard Wettel and Michele CodeCity Hotels, parking lots, duplication 18 org.argouml.language. java.generator JavaTokenType s146 attributes 0 methods JavaRecognizer 24 attributes 91 methods STDCTokenTy pes152 attributes 0 methods CPPParser 85 attributes 204 methods org.argouml.uml.reveng.class file
  • 58. Richard Wettel and Michele CodeCity Hotels, parking lots, duplication 18 org.argouml.language. java.generator JavaTokenType s146 attributes 0 methods JavaRecognizer 24 attributes 91 methods STDCTokenTy pes152 attributes 0 methods CPPParser 85 attributes 204 methods JavaTokenTyp es173 attributes0 methods JavaRecogniz er79 attributes 176 methods org.argouml.uml.reveng.java org.argouml.uml.reveng.class file
  • 59. Richard Wettel and Michele CodeCity Hotels, parking lots, duplication 18 org.argouml.language. java.generator JavaTokenType s146 attributes 0 methods JavaRecognizer 24 attributes 91 methods STDCTokenTy pes152 attributes 0 methods CPPParser 85 attributes 204 methods JavaTokenTyp es173 attributes0 methods JavaRecogniz er79 attributes 176 methods org.argouml.uml.reveng.java org.argouml.uml.reveng.class file JavaTokenType s145 attributes 0 methods
  • 60. Richard Wettel and Michele CodeCity Hotels, parking lots, duplication 18 org.argouml.language. java.generator JavaTokenType s146 attributes 0 methods JavaRecognizer 24 attributes 91 methods STDCTokenTy pes152 attributes 0 methods CPPParser 85 attributes 204 methods JavaTokenTyp es173 attributes0 methods JavaRecogniz er79 attributes 176 methods org.argouml.uml.reveng.java org.argouml.uml.reveng.class file JavaTokenType s145 attributes 0 methods JavaRecognizer 22 attributes 88 methods
  • 61. Looking at the design
  • 62. Richard Wettel and Michele CodeCity On software design... 20
  • 63. Richard Wettel and Michele CodeCity On software design... Definitions bad smells [Beck & Fowler 1998], design flaws heuristics [Riel 2000], principles [Martin 2002], patterns [GoF 1995] 20
  • 64. Richard Wettel and Michele CodeCity On software design... Definitions bad smells [Beck & Fowler 1998], design flaws heuristics [Riel 2000], principles [Martin 2002], patterns [GoF 1995] Techniques detection strategies for the design flaws 20
  • 65. Richard Wettel and Michele CodeCity On software design... Definitions bad smells [Beck & Fowler 1998], design flaws heuristics [Riel 2000], principles [Martin 2002], patterns [GoF 1995] Techniques detection strategies for the design flaws Visualization ? 20
  • 66. Richard Wettel and Michele CodeCity The God Class detection strategy 21
  • 67. Richard Wettel and Michele CodeCity God classes of JDK 1.5 in Moose 22
  • 68. Richard Wettel and Michele CodeCity God classes of JDK in CodeCity 23
  • 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
  • 75. Richard Wettel and Michele CodeCity 27 Feature envy map Jmol
  • 76. Richard Wettel and Michele CodeCity 27 1,500 methods (25 %) Feature envy map Jmol
  • 77. Richard Wettel and Michele CodeCity Shotgun surgery map 28 ArgoUM L
  • 78. Richard Wettel and Michele CodeCity Shotgun surgery map 28 ArgoUM L
  • 79. Richard Wettel and Michele CodeCity Shotgun surgery map 28 ArgoUM L
  • 81. Richard Wettel and Michele CodeCity Modeling history: Hismo 30 Class
  • 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
  • 109. Richard Wettel and Michele CodeCity Timeline 38 History of class C
  • 110. Richard Wettel and Michele CodeCity Timeline 38 time (versions) m3 m5 History of class C V1
  • 111. Richard Wettel and Michele CodeCity Timeline 38 time (versions) m3 m5 m8 m12 m3 History of class C V1 V2
  • 112. Richard Wettel and Michele CodeCity Timeline 38 time (versions) m3 m5 m8 m12 m3 History of class C V1 V2
  • 113. Richard Wettel and Michele CodeCity Timeline 38 time (versions) m3 m5 m8 m12 m3 m12 m18 History of class C V1 V2 V3
  • 114. Richard Wettel and Michele CodeCity Timeline 38 time (versions) m3 m5 m8 m12 m3 m12 m18 History of class C V1 V2 V3
  • 115. Richard Wettel and Michele CodeCity Examples of timelines 39
  • 116. Richard Wettel and Michele CodeCity Examples of timelines 39
  • 117. Richard Wettel and Michele CodeCity Scripting cities 40
  • 118. Richard Wettel and Michele CodeCity On relationships 41
  • 120. Richard Wettel and Michele CodeCity Tool chain 43 iPlasma Moose CodeCity model exchange parsing & metric computation Jun rendering VisualWorks 7.6
  • 121. Richard Wettel and Michele CodeCity Cityscapes 44
  • 122. Richard Wettel and Michele CodeCity Cityscapes 44 System Languag e NOP NOC kLO C 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 core Java 137 4715 160 Moose Smalltal k 278 961 32 Jun Smalltal k 288 2236 351 CodeCity Smalltal k 129 291 18 ScumVM C++ 18 1331 105
  • 123. Richard Wettel and Michele CodeCity Cityscapes 44 System Languag e NOP NOC kLO C 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 core Java 137 4715 160 Moose Smalltal k 278 961 32 Jun Smalltal k 288 2236 351 CodeCity Smalltal k 129 291 18 ScumVM C++ 18 1331 105
  • 124. Richard Wettel and Michele CodeCity Cityscapes 44 System Languag e NOP NOC kLO C 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 core Java 137 4715 160 Moose Smalltal k 278 961 32 Jun Smalltal k 288 2236 351 CodeCity Smalltal k 129 291 18 ScumVM C++ 18 1331 105
  • 125. Richard Wettel and Michele CodeCity Cityscapes 44 System Languag e NOP NOC kLO C 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 core Java 137 4715 160 Moose Smalltal k 278 961 32 Jun Smalltal k 288 2236 351 CodeCity Smalltal k 129 291 18 ScumVM C++ 18 1331 105
  • 126. Richard Wettel and Michele CodeCity Cityscapes 44 System Languag e NOP NOC kLO C 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 core Java 137 4715 160 Moose Smalltal k 278 961 32 Jun Smalltal k 288 2236 351 CodeCity Smalltal k 129 291 18 ScumVM C++ 18 1331 105
  • 127. Richard Wettel and Michele CodeCity Cityscapes 44 System Languag e NOP NOC kLO C 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 core Java 137 4715 160 Moose Smalltal k 278 961 32 Jun Smalltal k 288 2236 351 CodeCity Smalltal k 129 291 18 ScumVM C++ 18 1331 105
  • 128. Richard Wettel and Michele CodeCity Cityscapes 44 System Languag e NOP NOC kLO C 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 core Java 137 4715 160 Moose Smalltal k 278 961 32 Jun Smalltal k 288 2236 351 CodeCity Smalltal k 129 291 18 ScumVM C++ 18 1331 105
  • 129. Richard Wettel and Michele CodeCity Cityscapes 44 System Languag e NOP NOC kLO C 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 core Java 137 4715 160 Moose Smalltal k 278 961 32 Jun Smalltal k 288 2236 351 CodeCity Smalltal k 129 291 18 ScumVM C++ 18 1331 105
  • 130. Richard Wettel and Michele CodeCity Cityscapes 44 System Languag e NOP NOC kLO C 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 core Java 137 4715 160 Moose Smalltal k 278 961 32 Jun Smalltal k 288 2236 351 CodeCity Smalltal k 129 291 18 ScumVM C++ 18 1331 105
  • 131. Richard Wettel and Michele CodeCity Cityscapes 44 System Languag e NOP NOC kLO C 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 core Java 137 4715 160 Moose Smalltal k 278 961 32 Jun Smalltal k 288 2236 351 CodeCity Smalltal k 129 291 18 ScumVM C++ 18 1331 105
  • 132. Richard Wettel and Michele CodeCity Cityscapes 44 System Languag e NOP NOC kLO C 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 core Java 137 4715 160 Moose Smalltal k 278 961 32 Jun Smalltal k 288 2236 351 CodeCity Smalltal k 129 291 18 ScumVM C++ 18 1331 105
  • 133. Richard Wettel and Michele CodeCity Cityscapes 44 System Languag e NOP NOC kLO C 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 core Java 137 4715 160 Moose Smalltal k 278 961 32 Jun Smalltal k 288 2236 351 CodeCity Smalltal k 129 291 18 ScumVM C++ 18 1331 105
  • 134. Richard Wettel and Michele CodeCity Cityscapes 44 System Languag e NOP NOC kLO C 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 core Java 137 4715 160 Moose Smalltal k 278 961 32 Jun Smalltal k 288 2236 351 CodeCity Smalltal k 129 291 18 ScumVM C++ 18 1331 105 1.25 million LOC