Visualizzazione immersiva del software Richard Wettel

CodeCity
Visualizzazione immersiva del software
Richard Wettel
Università della Svizzera italiana
Il progetto EvoSpaces
Richard Wettel
CodeCity: Visualizzazione immersiva del software
2
Visione:
Il software come una città
La metafora della città
corrispondenza tra domini
classi
edifici
moduli
quartieri
sistema
città
Richard Wettel
CodeCity: Visualizzazione immersiva del software
4
La metafora della città
corrispondenza tra domini
classi
edifici
moduli
quartieri
sistema
città
Richard Wettel
CodeCity: Visualizzazione immersiva del software
4
La metafora della città
corrispondenza tra domini
classi
edifici
moduli
quartieri
sistema
città
Richard Wettel
CodeCity: Visualizzazione immersiva del software
4
La metafora della città
corrispondenza tra domini
classi
edifici
moduli
quartieri
sistema
città
Richard Wettel
CodeCity: Visualizzazione immersiva del software
4
La metafora della città
corrispondenza tra domini
classi
edifici
moduli
quartieri
sistema
città
Richard Wettel
numero di metodi (NOM)
altezza
numero di attributi (NOA)
larghezza
CodeCity: Visualizzazione immersiva del software
4
La metafora della città
corrispondenza tra domini
classi
edifici
moduli
quartieri
sistema
città
profondità della gerarchia
Richard Wettel
colore
numero di metodi (NOM)
altezza
numero di attributi (NOA)
larghezza
CodeCity: Visualizzazione immersiva del software
4
“Decifrare” una città
ArgoUML
144 moduli
2’542 classi
137’000 righe
Richard Wettel
CodeCity: Visualizzazione immersiva del software
5
“Decifrare” una città
grattacieli
(NOM, NOA)
Richard Wettel
CodeCity: Visualizzazione immersiva del software
ArgoUML
144 moduli
2’542 classi
137’000 righe
5
“Decifrare” una città
grattacieli
(NOM, NOA)
ArgoUML
144 moduli
2’542 classi
137’000 righe
posteggi
(NOM, NOA)
Richard Wettel
CodeCity: Visualizzazione immersiva del software
5
“Decifrare” una città
ArgoUML
144 moduli
2’542 classi
137’000 righe
grattacieli
(NOM, NOA)
posteggi
(NOM, NOA)
Richard Wettel
palazzi
(NOM, NOA)
CodeCity: Visualizzazione immersiva del software
5
Topologia del software
Richard Wettel
CodeCity: Visualizzazione immersiva del software
Azureus
457 moduli
4’734 classi
274’000 righe
6
Topologia del software
Richard Wettel
CodeCity: Visualizzazione immersiva del software
Azureus
457 moduli
4’734 classi
274’000 righe
6
Topologia del software
Azureus
457 moduli
4’734 classi
274’000 righe
quartieri bassi
(moduli base)
Richard Wettel
CodeCity: Visualizzazione immersiva del software
6
Topologia del software
quartieri bassi
(moduli base)
Richard Wettel
Azureus
457 moduli
4’734 classi
274’000 righe
quartieri alti
(moduli specializzati)
CodeCity: Visualizzazione immersiva del software
6
Campi d’applicazione
Richard Wettel
CodeCity: Visualizzazione immersiva del software
7
Campi d’applicazione
Comprendere
il software
Richard Wettel
CodeCity: Visualizzazione immersiva del software
7
Campi d’applicazione
Comprendere
Imparare
il software
dal passato
Richard Wettel
CodeCity: Visualizzazione immersiva del software
7
Campi d’applicazione
Comprendere
Imparare
il software
dal passato
Richard Wettel
CodeCity: Visualizzazione immersiva del software
Localizzare
i problemi
7
Comprendere il software
Esempi di città del codice
Sistema
linguaggio moduli classi righe
Azureus
Java
457 4’734 274’000
ArgoUML Java
144 2’542 137’000
JHotDraw Java
998
30’000
iText
Java
149 1’250
80’000
Jmol
Java
105 1’032
85’000
JDK 1.5
Java
137 4’715 160’000
Moose
Smalltalk
278
Jun
Smalltalk
288 2’236 351’000
CodeCity Smalltalk
ScumVM C++
Richard Wettel
72
CodeCity: Visualizzazione immersiva del software
129
961
291
32’000
18’000
18 1’331 105’000
9
Esempi di città del codice
Sistema
linguaggio moduli classi righe
Azureus
Java
457 4’734 274’000
ArgoUML Java
144 2’542 137’000
JHotDraw Java
998
30’000
iText
Java
149 1’250
80’000
Jmol
Java
105 1’032
85’000
JDK 1.5
Java
137 4’715 160’000
Moose
Smalltalk
278
Jun
Smalltalk
288 2’236 351’000
CodeCity Smalltalk
ScumVM C++
Richard Wettel
72
CodeCity: Visualizzazione immersiva del software
129
961
291
32’000
18’000
18 1’331 105’000
9
Esempi di città del codice
Sistema
linguaggio moduli classi righe
Azureus
Java
457 4’734 274’000
ArgoUML Java
144 2’542 137’000
JHotDraw Java
998
30’000
iText
Java
149 1’250
80’000
Jmol
Java
105 1’032
85’000
JDK 1.5
Java
137 4’715 160’000
Moose
Smalltalk
278
Jun
Smalltalk
288 2’236 351’000
CodeCity Smalltalk
ScumVM C++
Richard Wettel
72
CodeCity: Visualizzazione immersiva del software
129
961
291
32’000
18’000
18 1’331 105’000
9
Esempi di città del codice
Sistema
linguaggio moduli classi righe
Azureus
Java
457 4’734 274’000
ArgoUML Java
144 2’542 137’000
JHotDraw Java
998
30’000
iText
Java
149 1’250
80’000
Jmol
Java
105 1’032
85’000
JDK 1.5
Java
137 4’715 160’000
Moose
Smalltalk
278
Jun
Smalltalk
288 2’236 351’000
CodeCity Smalltalk
ScumVM C++
Richard Wettel
72
CodeCity: Visualizzazione immersiva del software
129
961
291
32’000
18’000
18 1’331 105’000
9
Esempi di città del codice
Sistema
linguaggio moduli classi righe
Azureus
Java
457 4’734 274’000
ArgoUML Java
144 2’542 137’000
JHotDraw Java
998
30’000
iText
Java
149 1’250
80’000
Jmol
Java
105 1’032
85’000
JDK 1.5
Java
137 4’715 160’000
Moose
Smalltalk
278
Jun
Smalltalk
288 2’236 351’000
CodeCity Smalltalk
ScumVM C++
Richard Wettel
72
CodeCity: Visualizzazione immersiva del software
129
961
291
32’000
18’000
18 1’331 105’000
9
Esempi di città del codice
Sistema
linguaggio moduli classi righe
Azureus
Java
457 4’734 274’000
ArgoUML Java
144 2’542 137’000
JHotDraw Java
998
30’000
iText
Java
149 1’250
80’000
Jmol
Java
105 1’032
85’000
JDK 1.5
Java
137 4’715 160’000
Moose
Smalltalk
278
Jun
Smalltalk
288 2’236 351’000
CodeCity Smalltalk
ScumVM C++
Richard Wettel
72
CodeCity: Visualizzazione immersiva del software
129
961
291
32’000
18’000
18 1’331 105’000
9
Esempi di città del codice
Sistema
linguaggio moduli classi righe
Azureus
Java
457 4’734 274’000
ArgoUML Java
144 2’542 137’000
JHotDraw Java
998
30’000
iText
Java
149 1’250
80’000
Jmol
Java
105 1’032
85’000
JDK 1.5
Java
137 4’715 160’000
Moose
Smalltalk
278
Jun
Smalltalk
288 2’236 351’000
CodeCity Smalltalk
ScumVM C++
Richard Wettel
72
CodeCity: Visualizzazione immersiva del software
129
961
291
32’000
18’000
18 1’331 105’000
9
Esempi di città del codice
Sistema
linguaggio moduli classi righe
Azureus
Java
457 4’734 274’000
ArgoUML Java
144 2’542 137’000
JHotDraw Java
998
30’000
iText
Java
149 1’250
80’000
Jmol
Java
105 1’032
85’000
JDK 1.5
Java
137 4’715 160’000
Moose
Smalltalk
278
Jun
Smalltalk
288 2’236 351’000
CodeCity Smalltalk
ScumVM C++
Richard Wettel
72
CodeCity: Visualizzazione immersiva del software
129
961
291
32’000
18’000
18 1’331 105’000
9
Esempi di città del codice
Sistema
linguaggio moduli classi righe
Azureus
Java
457 4’734 274’000
ArgoUML Java
144 2’542 137’000
JHotDraw Java
998
30’000
iText
Java
149 1’250
80’000
Jmol
Java
105 1’032
85’000
JDK 1.5
Java
137 4’715 160’000
Moose
Smalltalk
278
Jun
Smalltalk
288 2’236 351’000
CodeCity Smalltalk
ScumVM C++
Richard Wettel
72
CodeCity: Visualizzazione immersiva del software
129
961
291
32’000
18’000
18 1’331 105’000
9
Esempi di città del codice
Sistema
linguaggio moduli classi righe
Azureus
Java
457 4’734 274’000
ArgoUML Java
144 2’542 137’000
JHotDraw Java
998
30’000
iText
Java
149 1’250
80’000
Jmol
Java
105 1’032
85’000
JDK 1.5
Java
137 4’715 160’000
Moose
Smalltalk
278
Jun
Smalltalk
288 2’236 351’000
CodeCity Smalltalk
ScumVM C++
Richard Wettel
72
CodeCity: Visualizzazione immersiva del software
129
961
291
32’000
18’000
18 1’331 105’000
9
Esempi di città del codice
Sistema
linguaggio moduli classi righe
Azureus
Java
457 4’734 274’000
ArgoUML Java
144 2’542 137’000
JHotDraw Java
998
30’000
iText
Java
149 1’250
80’000
Jmol
Java
105 1’032
85’000
JDK 1.5
Java
137 4’715 160’000
Moose
Smalltalk
278
Jun
Smalltalk
288 2’236 351’000
CodeCity Smalltalk
ScumVM C++
Richard Wettel
72
CodeCity: Visualizzazione immersiva del software
129
961
291
32’000
18’000
18 1’331 105’000
9
Esempi di città del codice
Sistema
linguaggio moduli classi righe
Azureus
Java
457 4’734 274’000
ArgoUML Java
144 2’542 137’000
JHotDraw Java
30’000
Java
149 1’250
80’000
Jmol
Java
105 1’032
85’000
JDK 1.5
Java
137 4’715 160’000
Moose
Smalltalk
278
Jun
Smalltalk
288 2’236 351’000
ScumVM C++
CodeCity: Visualizzazione immersiva del software
998
iText
CodeCity Smalltalk
Richard Wettel
72
129
961
291
32’000
18’000
18 1’331 105’000
9
Esempi di città del codice
Sistema
linguaggio moduli classi righe
Azureus
Java
457 4’734 274’000
ArgoUML Java
144 2’542 137’000
JHotDraw Java
72
998
30’000
iText
Java
149 1’250
80’000
Jmol
Java
105 1’032
85’000
JDK 1.5
Java
137 4’715 160’000
Moose
Smalltalk
278
Jun
Smalltalk
288 2’236 351’000
CodeCity Smalltalk
ScumVM C++
129
961
291
32’000
18’000
18 1’331 105’000
1.25 milioni righe di
codice sorgente
Richard Wettel
CodeCity: Visualizzazione immersiva del software
9
Imparare dal passato
La macchina del tempo
0.10.1
0.12
0.14
0.16
0.18.1
0.20
0.22
0.23.4
0.24
Richard Wettel
ArgoUML
9 versioni
5 anni
CodeCity: Visualizzazione immersiva del software
11
La macchina del tempo
0.10.1
0.12
0.14
0.16
0.18.1
0.20
0.22
0.23.4
0.24
Richard Wettel
ArgoUML
9 versioni
5 anni
CodeCity: Visualizzazione immersiva del software
11
La macchina del tempo
0.10.1
0.12
0.14
0.16
0.18.1
0.20
0.22
0.23.4
0.24
Richard Wettel
ArgoUML
9 versioni
5 anni
CodeCity: Visualizzazione immersiva del software
11
La macchina del tempo
0.10.1
0.12
0.14
0.16
0.18.1
0.20
0.22
0.23.4
0.24
Richard Wettel
ArgoUML
9 versioni
5 anni
CodeCity: Visualizzazione immersiva del software
11
La macchina del tempo
0.10.1
0.12
0.14
0.16
0.18.1
0.20
0.22
0.23.4
0.24
Richard Wettel
ArgoUML
9 versioni
5 anni
CodeCity: Visualizzazione immersiva del software
11
La macchina del tempo
0.10.1
0.12
0.14
0.16
0.18.1
0.20
0.22
0.23.4
0.24
Richard Wettel
ArgoUML
9 versioni
5 anni
CodeCity: Visualizzazione immersiva del software
11
La macchina del tempo
0.10.1
0.12
0.14
0.16
0.18.1
0.20
0.22
0.23.4
0.24
Richard Wettel
ArgoUML
9 versioni
5 anni
CodeCity: Visualizzazione immersiva del software
11
La macchina del tempo
0.10.1
0.12
0.14
0.16
0.18.1
0.20
0.22
0.23.4
0.24
Richard Wettel
ArgoUML
9 versioni
5 anni
CodeCity: Visualizzazione immersiva del software
11
La macchina del tempo
0.10.1
0.12
0.14
0.16
0.18.1
0.20
0.22
0.23.4
0.24
Richard Wettel
ArgoUML
9 versioni
5 anni
CodeCity: Visualizzazione immersiva del software
11
La mappa dell'età di JHotDraw
età: 1 2 3 4 5 6 7 8
Richard Wettel
CodeCity: Visualizzazione immersiva del software
12
La mappa dell'età di JHotDraw
modulo
giovane
età: 1 2 3 4 5 6 7 8
Richard Wettel
CodeCity: Visualizzazione immersiva del software
12
La mappa dell'età di JHotDraw
modulo
giovane
classe
cambiata
spesso
età: 1 2 3 4 5 6 7 8
Richard Wettel
CodeCity: Visualizzazione immersiva del software
12
Macchina del tempo + mappa dell'età
Ottobre. 2000
Marzo 2001
Settembre 2001
Marzo 2002
Agosto 2002
Gennaio 2003
Luglio 2003
Gennaio 2004
Richard Wettel
JHotDraw
8 versioni
40 mesi
CodeCity: Visualizzazione immersiva del software
13
Macchina del tempo + mappa dell'età
Ottobre. 2000
Marzo 2001
Settembre 2001
Marzo 2002
Agosto 2002
Gennaio 2003
Luglio 2003
Gennaio 2004
Richard Wettel
JHotDraw
8 versioni
40 mesi
CodeCity: Visualizzazione immersiva del software
13
Macchina del tempo + mappa dell'età
Ottobre. 2000
Marzo 2001
Settembre 2001
Marzo 2002
Agosto 2002
Gennaio 2003
Luglio 2003
Gennaio 2004
Richard Wettel
JHotDraw
8 versioni
40 mesi
CodeCity: Visualizzazione immersiva del software
13
Macchina del tempo + mappa dell'età
Ottobre. 2000
Marzo 2001
Settembre 2001
Marzo 2002
Agosto 2002
Gennaio 2003
Luglio 2003
Gennaio 2004
Richard Wettel
JHotDraw
8 versioni
40 mesi
CodeCity: Visualizzazione immersiva del software
13
Macchina del tempo + mappa dell'età
Ottobre. 2000
Marzo 2001
Settembre 2001
Marzo 2002
Agosto 2002
Gennaio 2003
Luglio 2003
Gennaio 2004
Richard Wettel
JHotDraw
8 versioni
40 mesi
CodeCity: Visualizzazione immersiva del software
13
Macchina del tempo + mappa dell'età
Ottobre. 2000
Marzo 2001
Settembre 2001
Marzo 2002
Agosto 2002
Gennaio 2003
Luglio 2003
Gennaio 2004
Richard Wettel
JHotDraw
8 versioni
40 mesi
CodeCity: Visualizzazione immersiva del software
13
Macchina del tempo + mappa dell'età
Ottobre. 2000
Marzo 2001
Settembre 2001
Marzo 2002
Agosto 2002
Gennaio 2003
Luglio 2003
Gennaio 2004
Richard Wettel
JHotDraw
8 versioni
40 mesi
CodeCity: Visualizzazione immersiva del software
13
Macchina del tempo + mappa dell'età
Ottobre. 2000
Marzo 2001
Settembre 2001
Marzo 2002
Agosto 2002
Gennaio 2003
Luglio 2003
Gennaio 2004
Richard Wettel
JHotDraw
8 versioni
40 mesi
CodeCity: Visualizzazione immersiva del software
13
Localizzare i problemi
Anche il software industriale è afflitto
16
JDK 1.5
12 Brain classes
137 moduli
4’715 classi
160’000 righe
65 God classes
109
Data classes
Richard Wettel
CodeCity: Visualizzazione immersiva del software
15
Anche il software industriale è afflitto
Component
NOA 88, NOM 280
16
Security
NOA 3, NOM 30
JDK 1.5
12 Brain classes
65 God classes
109
Data classes
Richard Wettel
InputEvent
NOA 21, NOM 14
CodeCity: Visualizzazione immersiva del software
137 moduli
4’715 classi
160’000 righe
15
Un “piccolo” problema di Feature Envy
Jmol
105 moduli
1’032 classi
85’000 righe
Richard Wettel
CodeCity: Visualizzazione immersiva del software
16
Un “piccolo” problema di Feature Envy
Jmol
105 moduli
1’032 classi
85’000 righe
1,500 metodi (25 %)
Richard Wettel
CodeCity: Visualizzazione immersiva del software
16
Un approccio innovativo
Rilevanza scientifica
ICPC 2007 (15th IEEE International Conference on
Program Comprehension), June 2007, Banff, Canada
VISSOFT 2007 (4th IEEE International Workshop on
Visualizing Software For Understanding and Analysis), June
2007, Banff, Canada
ICSE 2008 (30th International Conference on Software
Engineering), May 2008, Leipzig, Germany
WASDeTT 2008 (1st International Workshop on Advanced
Software Development Tools and Techniques), July 2008,
Paphos, Cyprus
ESUG 2008 (16th International Smalltalk Conference),
August 2008, Amsterdam, The Netherlands
Rilevanza industriale
CodeCity
libero
release: 17.03.2008
1300+ downloads
e continua...
Reazioni molto positive da
parte dell'industria
SoftVis 2008 (4th International ACM Symposium on
Software Visualization), September 2008, Herrsching,
Germany
WCRE 2008 (15th Working Conference on Reverse
Engineering), October 2008, Antwerp, Belgium
FAMOOSr 2008 (2nd Workshop on FAMIX and Moose in
Reengineering), October 2008, Antwerp, Belgium
Richard Wettel
CodeCity: Visualizzazione immersiva del software
18
Rilevanza scientifica
ICPC 2007 (15th IEEE International Conference on
Program Comprehension), June 2007, Banff, Canada
VISSOFT 2007 (4th IEEE International Workshop on
Visualizing Software For Understanding and Analysis), June
2007, Banff, Canada
ICSE 2008 (30th International Conference on Software
Engineering), May 2008, Leipzig, Germany
WASDeTT 2008 (1st International Workshop on Advanced
Software Development Tools and Techniques), July 2008,
Paphos, Cyprus
ESUG 2008 (16th International Smalltalk Conference),
August 2008, Amsterdam, The Netherlands
Rilevanza industriale
CodeCity
libero
release: 17.03.2008
1300+ downloads
e continua...
Reazioni molto positive da
parte dell'industria
SoftVis 2008 (4th International ACM Symposium on
Software Visualization), September 2008, Herrsching,
Germany
WCRE 2008 (15th Working Conference on Reverse
Engineering), October 2008, Antwerp, Belgium
FAMOOSr 2008 (2nd Workshop on FAMIX and Moose in
Reengineering), October 2008, Antwerp, Belgium
Richard Wettel
CodeCity: Visualizzazione immersiva del software
18
www.inf.unisi.ch/phd/wettel/codecity.html