Your SlideShare is downloading. ×
CodeCity: Visual Exploration of Large-Scale Evolving Software
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

CodeCity: Visual Exploration of Large-Scale Evolving Software

1,540
views

Published on

Slide support for a talk I gave in several occasions to developers in both Bologna (including XPUG) and Lugano (at the JUG meeting).

Slide support for a talk I gave in several occasions to developers in both Bologna (including XPUG) and Lugano (at the JUG meeting).

Published in: Technology

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,540
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
102
Comments
0
Likes
2
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide
  • I sistemi software diventano sempre grandi e piu complessi, perche sono sottoposti al processo d’evoluzione. In piu se dovessemo imparare come e arrivato un sistema al suo stato attuale, dobbiamo aggiungere anche la dimensione temporale, e questo rende ancora piu difficile la comprensione del sistema.
  • I sistemi software diventano sempre grandi e piu complessi, perche sono sottoposti al processo d’evoluzione. In piu se dovessemo imparare come e arrivato un sistema al suo stato attuale, dobbiamo aggiungere anche la dimensione temporale, e questo rende ancora piu difficile la comprensione del sistema.
  • I sistemi software diventano sempre grandi e piu complessi, perche sono sottoposti al processo d’evoluzione. In piu se dovessemo imparare come e arrivato un sistema al suo stato attuale, dobbiamo aggiungere anche la dimensione temporale, e questo rende ancora piu difficile la comprensione del sistema.
  • Uno dei problemi maggiori per noi e il fatto che il software non ha una forma o una dimensione fisica, e questo e un problema perche...
  • ... noi, come esseri umani, ci basiamo tanto sulla visione per capire il mondo intorno a loro, sin dall’inizio della vita. Per questa raggione, io credo che una rappresentazione toccabile dei sistemi software ci offre una modalita di raggionare su di loro e un punto in comune condiviso dai sviluppatori.
  • La mia visione e dunque di visualizzare i sistemi software rapresentandoli tramitte una metafora della cita: la citta del codice
  • Questa metafora le classi sono rappresentati dai edifici della città, mentre i mo`duli del sistema sono i quartieri della cita. Le proprietà visibile dei artefatti della città dimostrano le proprietà delle entità software, le cosiddette metriche software: la altezza di un edificio esprima il numero di metodi della classe in cause, mentre la larghezza della sua base esprima il numero di attributi della classe. I colori dei edifici ci mostrano il numero di righe di codice sorgente (grigio - poche, blue intenso - tante), mentre i colori dei quartieri variano secondo la profondità nella gerarchia di mo`duli.
  • Questa metafora le classi sono rappresentati dai edifici della città, mentre i mo`duli del sistema sono i quartieri della cita. Le proprietà visibile dei artefatti della città dimostrano le proprietà delle entità software, le cosiddette metriche software: la altezza di un edificio esprima il numero di metodi della classe in cause, mentre la larghezza della sua base esprima il numero di attributi della classe. I colori dei edifici ci mostrano il numero di righe di codice sorgente (grigio - poche, blue intenso - tante), mentre i colori dei quartieri variano secondo la profondità nella gerarchia di mo`duli.
  • Questa metafora le classi sono rappresentati dai edifici della città, mentre i mo`duli del sistema sono i quartieri della cita. Le proprietà visibile dei artefatti della città dimostrano le proprietà delle entità software, le cosiddette metriche software: la altezza di un edificio esprima il numero di metodi della classe in cause, mentre la larghezza della sua base esprima il numero di attributi della classe. I colori dei edifici ci mostrano il numero di righe di codice sorgente (grigio - poche, blue intenso - tante), mentre i colori dei quartieri variano secondo la profondità nella gerarchia di mo`duli.
  • Questa metafora le classi sono rappresentati dai edifici della città, mentre i mo`duli del sistema sono i quartieri della cita. Le proprietà visibile dei artefatti della città dimostrano le proprietà delle entità software, le cosiddette metriche software: la altezza di un edificio esprima il numero di metodi della classe in cause, mentre la larghezza della sua base esprima il numero di attributi della classe. I colori dei edifici ci mostrano il numero di righe di codice sorgente (grigio - poche, blue intenso - tante), mentre i colori dei quartieri variano secondo la profondità nella gerarchia di mo`duli.
  • Questa metafora le classi sono rappresentati dai edifici della città, mentre i mo`duli del sistema sono i quartieri della cita. Le proprietà visibile dei artefatti della città dimostrano le proprietà delle entità software, le cosiddette metriche software: la altezza di un edificio esprima il numero di metodi della classe in cause, mentre la larghezza della sua base esprima il numero di attributi della classe. I colori dei edifici ci mostrano il numero di righe di codice sorgente (grigio - poche, blue intenso - tante), mentre i colori dei quartieri variano secondo la profondità nella gerarchia di mo`duli.
  • Questa metafora le classi sono rappresentati dai edifici della città, mentre i mo`duli del sistema sono i quartieri della cita. Le proprietà visibile dei artefatti della città dimostrano le proprietà delle entità software, le cosiddette metriche software: la altezza di un edificio esprima il numero di metodi della classe in cause, mentre la larghezza della sua base esprima il numero di attributi della classe. I colori dei edifici ci mostrano il numero di righe di codice sorgente (grigio - poche, blue intenso - tante), mentre i colori dei quartieri variano secondo la profondità nella gerarchia di mo`duli.
  • Questa metafora le classi sono rappresentati dai edifici della città, mentre i mo`duli del sistema sono i quartieri della cita. Le proprietà visibile dei artefatti della città dimostrano le proprietà delle entità software, le cosiddette metriche software: la altezza di un edificio esprima il numero di metodi della classe in cause, mentre la larghezza della sua base esprima il numero di attributi della classe. I colori dei edifici ci mostrano il numero di righe di codice sorgente (grigio - poche, blue intenso - tante), mentre i colori dei quartieri variano secondo la profondità nella gerarchia di mo`duli.
  • Questa metafora le classi sono rappresentati dai edifici della città, mentre i mo`duli del sistema sono i quartieri della cita. Le proprietà visibile dei artefatti della città dimostrano le proprietà delle entità software, le cosiddette metriche software: la altezza di un edificio esprima il numero di metodi della classe in cause, mentre la larghezza della sua base esprima il numero di attributi della classe. I colori dei edifici ci mostrano il numero di righe di codice sorgente (grigio - poche, blue intenso - tante), mentre i colori dei quartieri variano secondo la profondità nella gerarchia di mo`duli.
  • Questa metafora le classi sono rappresentati dai edifici della città, mentre i mo`duli del sistema sono i quartieri della cita. Le proprietà visibile dei artefatti della città dimostrano le proprietà delle entità software, le cosiddette metriche software: la altezza di un edificio esprima il numero di metodi della classe in cause, mentre la larghezza della sua base esprima il numero di attributi della classe. I colori dei edifici ci mostrano il numero di righe di codice sorgente (grigio - poche, blue intenso - tante), mentre i colori dei quartieri variano secondo la profondità nella gerarchia di mo`duli.
  • ... noi, come esseri umani, ci basiamo tanto sulla visione per capire il mondo intorno a loro, sin dall’inizio della vita. Per questa raggione, io credo che una rappresentazione toccabile dei sistemi software ci offre una modalita di raggionare su di loro e un punto in comune condiviso dai sviluppatori.
  • ... noi, come esseri umani, ci basiamo tanto sulla visione per capire il mondo intorno a loro, sin dall’inizio della vita. Per questa raggione, io credo che una rappresentazione toccabile dei sistemi software ci offre una modalita di raggionare su di loro e un punto in comune condiviso dai sviluppatori.
  • ... noi, come esseri umani, ci basiamo tanto sulla visione per capire il mondo intorno a loro, sin dall’inizio della vita. Per questa raggione, io credo che una rappresentazione toccabile dei sistemi software ci offre una modalita di raggionare su di loro e un punto in comune condiviso dai sviluppatori.
  • ... noi, come esseri umani, ci basiamo tanto sulla visione per capire il mondo intorno a loro, sin dall’inizio della vita. Per questa raggione, io credo che una rappresentazione toccabile dei sistemi software ci offre una modalita di raggionare su di loro e un punto in comune condiviso dai sviluppatori.
  • ... noi, come esseri umani, ci basiamo tanto sulla visione per capire il mondo intorno a loro, sin dall’inizio della vita. Per questa raggione, io credo che una rappresentazione toccabile dei sistemi software ci offre una modalita di raggionare su di loro e un punto in comune condiviso dai sviluppatori.
  • ... noi, come esseri umani, ci basiamo tanto sulla visione per capire il mondo intorno a loro, sin dall’inizio della vita. Per questa raggione, io credo che una rappresentazione toccabile dei sistemi software ci offre una modalita di raggionare su di loro e un punto in comune condiviso dai sviluppatori.
  • ... noi, come esseri umani, ci basiamo tanto sulla visione per capire il mondo intorno a loro, sin dall’inizio della vita. Per questa raggione, io credo che una rappresentazione toccabile dei sistemi software ci offre una modalita di raggionare su di loro e un punto in comune condiviso dai sviluppatori.
  • ... noi, come esseri umani, ci basiamo tanto sulla visione per capire il mondo intorno a loro, sin dall’inizio della vita. Per questa raggione, io credo che una rappresentazione toccabile dei sistemi software ci offre una modalita di raggionare su di loro e un punto in comune condiviso dai sviluppatori.
  • ... noi, come esseri umani, ci basiamo tanto sulla visione per capire il mondo intorno a loro, sin dall’inizio della vita. Per questa raggione, io credo che una rappresentazione toccabile dei sistemi software ci offre una modalita di raggionare su di loro e un punto in comune condiviso dai sviluppatori.
  • ... noi, come esseri umani, ci basiamo tanto sulla visione per capire il mondo intorno a loro, sin dall’inizio della vita. Per questa raggione, io credo che una rappresentazione toccabile dei sistemi software ci offre una modalita di raggionare su di loro e un punto in comune condiviso dai sviluppatori.
  • Ottenere una vista generale del sistema e un grande vantaggio. E noi abbiamo iniziato con la visualisazione di una singola versione di un sistema: la versione corrente.
  • Ecco una prima cita del codice, quella del sistema ArgoUML. E gia possiamo identificare un paio di tipologie degli edifici, formate dalle diverse combinazioni dei valori delle metriche. Ci sono edifici d’impresa, grattacieli, posteggi, o delle case picole.
  • Ecco una prima cita del codice, quella del sistema ArgoUML. E gia possiamo identificare un paio di tipologie degli edifici, formate dalle diverse combinazioni dei valori delle metriche. Ci sono edifici d’impresa, grattacieli, posteggi, o delle case picole.
  • Ecco una prima cita del codice, quella del sistema ArgoUML. E gia possiamo identificare un paio di tipologie degli edifici, formate dalle diverse combinazioni dei valori delle metriche. Ci sono edifici d’impresa, grattacieli, posteggi, o delle case picole.
  • Ecco una prima cita del codice, quella del sistema ArgoUML. E gia possiamo identificare un paio di tipologie degli edifici, formate dalle diverse combinazioni dei valori delle metriche. Ci sono edifici d’impresa, grattacieli, posteggi, o delle case picole.
  • Ecco una prima cita del codice, quella del sistema ArgoUML. E gia possiamo identificare un paio di tipologie degli edifici, formate dalle diverse combinazioni dei valori delle metriche. Ci sono edifici d’impresa, grattacieli, posteggi, o delle case picole.
  • Ecco una prima cita del codice, quella del sistema ArgoUML. E gia possiamo identificare un paio di tipologie degli edifici, formate dalle diverse combinazioni dei valori delle metriche. Ci sono edifici d’impresa, grattacieli, posteggi, o delle case picole.
  • Ecco una prima cita del codice, quella del sistema ArgoUML. E gia possiamo identificare un paio di tipologie degli edifici, formate dalle diverse combinazioni dei valori delle metriche. Ci sono edifici d’impresa, grattacieli, posteggi, o delle case picole.
  • Ecco una prima cita del codice, quella del sistema ArgoUML. E gia possiamo identificare un paio di tipologie degli edifici, formate dalle diverse combinazioni dei valori delle metriche. Ci sono edifici d’impresa, grattacieli, posteggi, o delle case picole.
  • Ed ecco solo un piccolo “sample” sistemi che abbiamo visualizzato, sistemi scritti in diversi linguaggi di programmazione. Vi invito a osservare come e unica la struttura di ogni cita del codice, perche rifletta la struttura e le caratteristiche del sistema rappresentato. Ecco anche un sistema C++, abbastanza massicio. E da qui comminciano i sistemi Java, di quale probabilmente riconoscerete un paio.
  • Ed ecco solo un piccolo “sample” sistemi che abbiamo visualizzato, sistemi scritti in diversi linguaggi di programmazione. Vi invito a osservare come e unica la struttura di ogni cita del codice, perche rifletta la struttura e le caratteristiche del sistema rappresentato. Ecco anche un sistema C++, abbastanza massicio. E da qui comminciano i sistemi Java, di quale probabilmente riconoscerete un paio.
  • Ed ecco solo un piccolo “sample” sistemi che abbiamo visualizzato, sistemi scritti in diversi linguaggi di programmazione. Vi invito a osservare come e unica la struttura di ogni cita del codice, perche rifletta la struttura e le caratteristiche del sistema rappresentato. Ecco anche un sistema C++, abbastanza massicio. E da qui comminciano i sistemi Java, di quale probabilmente riconoscerete un paio.
  • Ed ecco solo un piccolo “sample” sistemi che abbiamo visualizzato, sistemi scritti in diversi linguaggi di programmazione. Vi invito a osservare come e unica la struttura di ogni cita del codice, perche rifletta la struttura e le caratteristiche del sistema rappresentato. Ecco anche un sistema C++, abbastanza massicio. E da qui comminciano i sistemi Java, di quale probabilmente riconoscerete un paio.
  • Ed ecco solo un piccolo “sample” sistemi che abbiamo visualizzato, sistemi scritti in diversi linguaggi di programmazione. Vi invito a osservare come e unica la struttura di ogni cita del codice, perche rifletta la struttura e le caratteristiche del sistema rappresentato. Ecco anche un sistema C++, abbastanza massicio. E da qui comminciano i sistemi Java, di quale probabilmente riconoscerete un paio.
  • Ed ecco solo un piccolo “sample” sistemi che abbiamo visualizzato, sistemi scritti in diversi linguaggi di programmazione. Vi invito a osservare come e unica la struttura di ogni cita del codice, perche rifletta la struttura e le caratteristiche del sistema rappresentato. Ecco anche un sistema C++, abbastanza massicio. E da qui comminciano i sistemi Java, di quale probabilmente riconoscerete un paio.
  • Ed ecco solo un piccolo “sample” sistemi che abbiamo visualizzato, sistemi scritti in diversi linguaggi di programmazione. Vi invito a osservare come e unica la struttura di ogni cita del codice, perche rifletta la struttura e le caratteristiche del sistema rappresentato. Ecco anche un sistema C++, abbastanza massicio. E da qui comminciano i sistemi Java, di quale probabilmente riconoscerete un paio.
  • Ed ecco solo un piccolo “sample” sistemi che abbiamo visualizzato, sistemi scritti in diversi linguaggi di programmazione. Vi invito a osservare come e unica la struttura di ogni cita del codice, perche rifletta la struttura e le caratteristiche del sistema rappresentato. Ecco anche un sistema C++, abbastanza massicio. E da qui comminciano i sistemi Java, di quale probabilmente riconoscerete un paio.
  • Ed ecco solo un piccolo “sample” sistemi che abbiamo visualizzato, sistemi scritti in diversi linguaggi di programmazione. Vi invito a osservare come e unica la struttura di ogni cita del codice, perche rifletta la struttura e le caratteristiche del sistema rappresentato. Ecco anche un sistema C++, abbastanza massicio. E da qui comminciano i sistemi Java, di quale probabilmente riconoscerete un paio.
  • Ed ecco solo un piccolo “sample” sistemi che abbiamo visualizzato, sistemi scritti in diversi linguaggi di programmazione. Vi invito a osservare come e unica la struttura di ogni cita del codice, perche rifletta la struttura e le caratteristiche del sistema rappresentato. Ecco anche un sistema C++, abbastanza massicio. E da qui comminciano i sistemi Java, di quale probabilmente riconoscerete un paio.
  • Ed ecco solo un piccolo “sample” sistemi che abbiamo visualizzato, sistemi scritti in diversi linguaggi di programmazione. Vi invito a osservare come e unica la struttura di ogni cita del codice, perche rifletta la struttura e le caratteristiche del sistema rappresentato. Ecco anche un sistema C++, abbastanza massicio. E da qui comminciano i sistemi Java, di quale probabilmente riconoscerete un paio.
  • Ed ecco solo un piccolo “sample” sistemi che abbiamo visualizzato, sistemi scritti in diversi linguaggi di programmazione. Vi invito a osservare come e unica la struttura di ogni cita del codice, perche rifletta la struttura e le caratteristiche del sistema rappresentato. Ecco anche un sistema C++, abbastanza massicio. E da qui comminciano i sistemi Java, di quale probabilmente riconoscerete un paio.
  • Ed ecco solo un piccolo “sample” sistemi che abbiamo visualizzato, sistemi scritti in diversi linguaggi di programmazione. Vi invito a osservare come e unica la struttura di ogni cita del codice, perche rifletta la struttura e le caratteristiche del sistema rappresentato. Ecco anche un sistema C++, abbastanza massicio. E da qui comminciano i sistemi Java, di quale probabilmente riconoscerete un paio.
  • Ed ecco solo un piccolo “sample” sistemi che abbiamo visualizzato, sistemi scritti in diversi linguaggi di programmazione. Vi invito a osservare come e unica la struttura di ogni cita del codice, perche rifletta la struttura e le caratteristiche del sistema rappresentato. Ecco anche un sistema C++, abbastanza massicio. E da qui comminciano i sistemi Java, di quale probabilmente riconoscerete un paio.
  • Ed ecco solo un piccolo “sample” sistemi che abbiamo visualizzato, sistemi scritti in diversi linguaggi di programmazione. Vi invito a osservare come e unica la struttura di ogni cita del codice, perche rifletta la struttura e le caratteristiche del sistema rappresentato. Ecco anche un sistema C++, abbastanza massicio. E da qui comminciano i sistemi Java, di quale probabilmente riconoscerete un paio.
  • Ed ecco solo un piccolo “sample” sistemi che abbiamo visualizzato, sistemi scritti in diversi linguaggi di programmazione. Vi invito a osservare come e unica la struttura di ogni cita del codice, perche rifletta la struttura e le caratteristiche del sistema rappresentato. Ecco anche un sistema C++, abbastanza massicio. E da qui comminciano i sistemi Java, di quale probabilmente riconoscerete un paio.
  • Ed ecco solo un piccolo “sample” sistemi che abbiamo visualizzato, sistemi scritti in diversi linguaggi di programmazione. Vi invito a osservare come e unica la struttura di ogni cita del codice, perche rifletta la struttura e le caratteristiche del sistema rappresentato. Ecco anche un sistema C++, abbastanza massicio. E da qui comminciano i sistemi Java, di quale probabilmente riconoscerete un paio.
  • Ed ecco solo un piccolo “sample” sistemi che abbiamo visualizzato, sistemi scritti in diversi linguaggi di programmazione. Vi invito a osservare come e unica la struttura di ogni cita del codice, perche rifletta la struttura e le caratteristiche del sistema rappresentato. Ecco anche un sistema C++, abbastanza massicio. E da qui comminciano i sistemi Java, di quale probabilmente riconoscerete un paio.
  • Ed ecco solo un piccolo “sample” sistemi che abbiamo visualizzato, sistemi scritti in diversi linguaggi di programmazione. Vi invito a osservare come e unica la struttura di ogni cita del codice, perche rifletta la struttura e le caratteristiche del sistema rappresentato. Ecco anche un sistema C++, abbastanza massicio. E da qui comminciano i sistemi Java, di quale probabilmente riconoscerete un paio.
  • Ed ecco solo un piccolo “sample” sistemi che abbiamo visualizzato, sistemi scritti in diversi linguaggi di programmazione. Vi invito a osservare come e unica la struttura di ogni cita del codice, perche rifletta la struttura e le caratteristiche del sistema rappresentato. Ecco anche un sistema C++, abbastanza massicio. E da qui comminciano i sistemi Java, di quale probabilmente riconoscerete un paio.
  • Ed ecco solo un piccolo “sample” sistemi che abbiamo visualizzato, sistemi scritti in diversi linguaggi di programmazione. Vi invito a osservare come e unica la struttura di ogni cita del codice, perche rifletta la struttura e le caratteristiche del sistema rappresentato. Ecco anche un sistema C++, abbastanza massicio. E da qui comminciano i sistemi Java, di quale probabilmente riconoscerete un paio.
  • Ed ecco solo un piccolo “sample” sistemi che abbiamo visualizzato, sistemi scritti in diversi linguaggi di programmazione. Vi invito a osservare come e unica la struttura di ogni cita del codice, perche rifletta la struttura e le caratteristiche del sistema rappresentato. Ecco anche un sistema C++, abbastanza massicio. E da qui comminciano i sistemi Java, di quale probabilmente riconoscerete un paio.
  • Ed ecco solo un piccolo “sample” sistemi che abbiamo visualizzato, sistemi scritti in diversi linguaggi di programmazione. Vi invito a osservare come e unica la struttura di ogni cita del codice, perche rifletta la struttura e le caratteristiche del sistema rappresentato. Ecco anche un sistema C++, abbastanza massicio. E da qui comminciano i sistemi Java, di quale probabilmente riconoscerete un paio.
  • Ed ecco solo un piccolo “sample” sistemi che abbiamo visualizzato, sistemi scritti in diversi linguaggi di programmazione. Vi invito a osservare come e unica la struttura di ogni cita del codice, perche rifletta la struttura e le caratteristiche del sistema rappresentato. Ecco anche un sistema C++, abbastanza massicio. E da qui comminciano i sistemi Java, di quale probabilmente riconoscerete un paio.
  • Ed ecco solo un piccolo “sample” sistemi che abbiamo visualizzato, sistemi scritti in diversi linguaggi di programmazione. Vi invito a osservare come e unica la struttura di ogni cita del codice, perche rifletta la struttura e le caratteristiche del sistema rappresentato. Ecco anche un sistema C++, abbastanza massicio. E da qui comminciano i sistemi Java, di quale probabilmente riconoscerete un paio.
  • Ed ecco solo un piccolo “sample” sistemi che abbiamo visualizzato, sistemi scritti in diversi linguaggi di programmazione. Vi invito a osservare come e unica la struttura di ogni cita del codice, perche rifletta la struttura e le caratteristiche del sistema rappresentato. Ecco anche un sistema C++, abbastanza massicio. E da qui comminciano i sistemi Java, di quale probabilmente riconoscerete un paio.
  • Ed ecco solo un piccolo “sample” sistemi che abbiamo visualizzato, sistemi scritti in diversi linguaggi di programmazione. Vi invito a osservare come e unica la struttura di ogni cita del codice, perche rifletta la struttura e le caratteristiche del sistema rappresentato. Ecco anche un sistema C++, abbastanza massicio. E da qui comminciano i sistemi Java, di quale probabilmente riconoscerete un paio.
  • Se dovessemo prendere in calcolo le proporzioni reali tra le dimensioni di questi sistemi, la vista generale e un po diversa...
  • Anche se la versione corrente e la piu importante, analizando il passato del sistema, la sua evoluzione, ci fa capire meglio come e arrivato alla forma in quale si trova oggi.
  • Per capire meglio cosa vedremo durante il viaggio nel tempo, ecco i principi.
  • Per capire meglio cosa vedremo durante il viaggio nel tempo, ecco i principi.
  • Per capire meglio cosa vedremo durante il viaggio nel tempo, ecco i principi.
  • Per capire meglio cosa vedremo durante il viaggio nel tempo, ecco i principi.
  • Per capire meglio cosa vedremo durante il viaggio nel tempo, ecco i principi.
  • CodeCity ha anche una machina del tempo, che ci permette di viaggiare nella evoluzione del sistema e vedere come si cambia la citta del codice.
  • CodeCity ha anche una machina del tempo, che ci permette di viaggiare nella evoluzione del sistema e vedere come si cambia la citta del codice.
  • CodeCity ha anche una machina del tempo, che ci permette di viaggiare nella evoluzione del sistema e vedere come si cambia la citta del codice.
  • CodeCity ha anche una machina del tempo, che ci permette di viaggiare nella evoluzione del sistema e vedere come si cambia la citta del codice.
  • CodeCity ha anche una machina del tempo, che ci permette di viaggiare nella evoluzione del sistema e vedere come si cambia la citta del codice.
  • CodeCity ha anche una machina del tempo, che ci permette di viaggiare nella evoluzione del sistema e vedere come si cambia la citta del codice.
  • CodeCity ha anche una machina del tempo, che ci permette di viaggiare nella evoluzione del sistema e vedere come si cambia la citta del codice.
  • CodeCity ha anche una machina del tempo, che ci permette di viaggiare nella evoluzione del sistema e vedere come si cambia la citta del codice.
  • CodeCity ha anche una machina del tempo, che ci permette di viaggiare nella evoluzione del sistema e vedere come si cambia la citta del codice.
  • CodeCity ha anche una machina del tempo, che ci permette di viaggiare nella evoluzione del sistema e vedere come si cambia la citta del codice.
  • CodeCity ha anche una machina del tempo, che ci permette di viaggiare nella evoluzione del sistema e vedere come si cambia la citta del codice.
  • CodeCity ha anche una machina del tempo, che ci permette di viaggiare nella evoluzione del sistema e vedere come si cambia la citta del codice.
  • CodeCity ha anche una machina del tempo, che ci permette di viaggiare nella evoluzione del sistema e vedere come si cambia la citta del codice.
  • CodeCity ha anche una machina del tempo, che ci permette di viaggiare nella evoluzione del sistema e vedere come si cambia la citta del codice.
  • CodeCity ha anche una machina del tempo, che ci permette di viaggiare nella evoluzione del sistema e vedere come si cambia la citta del codice.
  • CodeCity ha anche una machina del tempo, che ci permette di viaggiare nella evoluzione del sistema e vedere come si cambia la citta del codice.
  • CodeCity ha anche una machina del tempo, che ci permette di viaggiare nella evoluzione del sistema e vedere come si cambia la citta del codice.
  • CodeCity ha anche una machina del tempo, che ci permette di viaggiare nella evoluzione del sistema e vedere come si cambia la citta del codice.
  • CodeCity ha anche una machina del tempo, che ci permette di viaggiare nella evoluzione del sistema e vedere come si cambia la citta del codice.
  • CodeCity ha anche una machina del tempo, che ci permette di viaggiare nella evoluzione del sistema e vedere come si cambia la citta del codice.
  • CodeCity ha anche una machina del tempo, che ci permette di viaggiare nella evoluzione del sistema e vedere come si cambia la citta del codice.
  • CodeCity ha anche una machina del tempo, che ci permette di viaggiare nella evoluzione del sistema e vedere come si cambia la citta del codice.
  • CodeCity ha anche una machina del tempo, che ci permette di viaggiare nella evoluzione del sistema e vedere come si cambia la citta del codice.
  • CodeCity ha anche una machina del tempo, che ci permette di viaggiare nella evoluzione del sistema e vedere come si cambia la citta del codice.
  • CodeCity ha anche una machina del tempo, che ci permette di viaggiare nella evoluzione del sistema e vedere come si cambia la citta del codice.
  • CodeCity ha anche una machina del tempo, che ci permette di viaggiare nella evoluzione del sistema e vedere come si cambia la citta del codice.
  • CodeCity ha anche una machina del tempo, che ci permette di viaggiare nella evoluzione del sistema e vedere come si cambia la citta del codice.
  • CodeCity ha anche una machina del tempo, che ci permette di viaggiare nella evoluzione del sistema e vedere come si cambia la citta del codice.
  • CodeCity ha anche una machina del tempo, che ci permette di viaggiare nella evoluzione del sistema e vedere come si cambia la citta del codice.
  • Dipendendo al nostro interesso, possiamo aumentare il livello di detaglio (la granularità) in CodeCity, per poter vedere anche i metodi delle classi.
  • Dipendendo al nostro interesso, possiamo aumentare il livello di detaglio (la granularità) in CodeCity, per poter vedere anche i metodi delle classi.
  • Dipendendo al nostro interesso, possiamo aumentare il livello di detaglio (la granularità) in CodeCity, per poter vedere anche i metodi delle classi.
  • Le mappe della eta mostrano l’eta degli elementi del sistema, tramite il colore. La scala cromatica varia tra giallo chiaro (per elementi appena creati) e blu scurro (per elementi vecchi come il sistema stesso).
  • Combinando le due tecniche presentate prima, otteniamo una interessante visualizzazione che ci mostra come il sistema diventa vecchio
  • Combinando le due tecniche presentate prima, otteniamo una interessante visualizzazione che ci mostra come il sistema diventa vecchio
  • Combinando le due tecniche presentate prima, otteniamo una interessante visualizzazione che ci mostra come il sistema diventa vecchio
  • Combinando le due tecniche presentate prima, otteniamo una interessante visualizzazione che ci mostra come il sistema diventa vecchio
  • Combinando le due tecniche presentate prima, otteniamo una interessante visualizzazione che ci mostra come il sistema diventa vecchio
  • Combinando le due tecniche presentate prima, otteniamo una interessante visualizzazione che ci mostra come il sistema diventa vecchio
  • Combinando le due tecniche presentate prima, otteniamo una interessante visualizzazione che ci mostra come il sistema diventa vecchio
  • Combinando le due tecniche presentate prima, otteniamo una interessante visualizzazione che ci mostra come il sistema diventa vecchio
  • Combinando le due tecniche presentate prima, otteniamo una interessante visualizzazione che ci mostra come il sistema diventa vecchio
  • Combinando le due tecniche presentate prima, otteniamo una interessante visualizzazione che ci mostra come il sistema diventa vecchio
  • Combinando le due tecniche presentate prima, otteniamo una interessante visualizzazione che ci mostra come il sistema diventa vecchio
  • Combinando le due tecniche presentate prima, otteniamo una interessante visualizzazione che ci mostra come il sistema diventa vecchio
  • Combinando le due tecniche presentate prima, otteniamo una interessante visualizzazione che ci mostra come il sistema diventa vecchio
  • Combinando le due tecniche presentate prima, otteniamo una interessante visualizzazione che ci mostra come il sistema diventa vecchio
  • Combinando le due tecniche presentate prima, otteniamo una interessante visualizzazione che ci mostra come il sistema diventa vecchio
  • Combinando le due tecniche presentate prima, otteniamo una interessante visualizzazione che ci mostra come il sistema diventa vecchio
  • Combinando le due tecniche presentate prima, otteniamo una interessante visualizzazione che ci mostra come il sistema diventa vecchio
  • Combinando le due tecniche presentate prima, otteniamo una interessante visualizzazione che ci mostra come il sistema diventa vecchio
  • Combinando le due tecniche presentate prima, otteniamo una interessante visualizzazione che ci mostra come il sistema diventa vecchio
  • Combinando le due tecniche presentate prima, otteniamo una interessante visualizzazione che ci mostra come il sistema diventa vecchio
  • Combinando le due tecniche presentate prima, otteniamo una interessante visualizzazione che ci mostra come il sistema diventa vecchio
  • Utilizando sempre la granularità fine, si puo anche vedere in una vista tutta la evoluzione di una parte del sistema, come una classe o un intero pacheto.
  • Utilizando sempre la granularità fine, si puo anche vedere in una vista tutta la evoluzione di una parte del sistema, come una classe o un intero pacheto.
  • Utilizando sempre la granularità fine, si puo anche vedere in una vista tutta la evoluzione di una parte del sistema, come una classe o un intero pacheto.
  • Utilizando sempre la granularità fine, si puo anche vedere in una vista tutta la evoluzione di una parte del sistema, come una classe o un intero pacheto.
  • Utilizando sempre la granularità fine, si puo anche vedere in una vista tutta la evoluzione di una parte del sistema, come una classe o un intero pacheto.
  • Utilizando sempre la granularità fine, si puo anche vedere in una vista tutta la evoluzione di una parte del sistema, come una classe o un intero pacheto.
  • Utilizando sempre la granularità fine, si puo anche vedere in una vista tutta la evoluzione di una parte del sistema, come una classe o un intero pacheto.
  • Utilizando sempre la granularità fine, si puo anche vedere in una vista tutta la evoluzione di una parte del sistema, come una classe o un intero pacheto.
  • Utilizando sempre la granularità fine, si puo anche vedere in una vista tutta la evoluzione di una parte del sistema, come una classe o un intero pacheto.
  • Utilizando sempre la granularità fine, si puo anche vedere in una vista tutta la evoluzione di una parte del sistema, come una classe o un intero pacheto.
  • Utilizando sempre la granularità fine, si puo anche vedere in una vista tutta la evoluzione di una parte del sistema, come una classe o un intero pacheto.
  • Utilizando sempre la granularità fine, si puo anche vedere in una vista tutta la evoluzione di una parte del sistema, come una classe o un intero pacheto.
  • Utilizando sempre la granularità fine, si puo anche vedere in una vista tutta la evoluzione di una parte del sistema, come una classe o un intero pacheto.
  • Utilizando sempre la granularità fine, si puo anche vedere in una vista tutta la evoluzione di una parte del sistema, come una classe o un intero pacheto.
  • Utilizando sempre la granularità fine, si puo anche vedere in una vista tutta la evoluzione di una parte del sistema, come una classe o un intero pacheto.
  • Utilizando sempre la granularità fine, si puo anche vedere in una vista tutta la evoluzione di una parte del sistema, come una classe o un intero pacheto.
  • Utilizando sempre la granularità fine, si puo anche vedere in una vista tutta la evoluzione di una parte del sistema, come una classe o un intero pacheto.
  • Transcript

    • 1. CodeCity Visual Exploration of Large-Scale Evolving Software Richard Wettel University of Lugano, Switzerland Supervisor: Michele Lanza
    • 2. understanding software is expensive
    • 3. read to understand
    • 4. read to understand system of 1 million lines of source code
    • 5. read to understand system of 1 million lines of source code * 2 lines/second = 2 million seconds
    • 6. read to understand system of 1 million lines of source code * 2 lines/second = 2 million seconds / 3600 seconds/hours = 560 hours
    • 7. read to understand system of 1 million lines of source code * 2 lines/second = 2 million seconds / 3600 seconds/hours = 560 hours / 8 working hours/day = 70 days
    • 8. read to understand system of 1 million lines of source code * 2 lines/second = 2 million seconds / 3600 seconds/hours = 560 hours / 8 working hours/day = 70 days / 20 working days/month = 3+ months
    • 9. read != understand system of 1 million lines of source code * 2 lines/second = 2 million seconds / 3600 seconds/hours = 560 hours / 8 working hours/day = 70 days / 20 working days/month = 3+ months
    • 10. read != understand MLOC system of 1 million lines of source code * 2 lines/second = 2 million seconds / 3600 seconds/hours = 560 hours / 8 working hours/day = 70 days / 20 working days/month = 3+ months 1 million
    • 11. read != understand MLOC 17 million system of 1 million lines of source code * 2 lines/second = 2 million seconds / 3600 seconds/hours = 560 hours / 8 working hours/day = 70 days / 20 working days/month = 3+ months 2.5 million 1 million
    • 12. software systems are
    • 13. software systems are large
    • 14. software systems are large complex
    • 15. software systems are large complex ev l g o vin
    • 16. “Software is intangible, having no physical shape or size”. [Ball & Eick, IEEE Computer 1996]
    • 17. seeing is understanding
    • 18. vision: software systems as cities
    • 19. the city metaphor
    • 20. the city metaphor
    • 21. the city metaphor class building package district
    • 22. the city metaphor class building package district
    • 23. the city metaphor number of methods (NOM) height number of attributes (NOA) base size number of lines of code (LOC) color class building package district
    • 24. the city metaphor number of methods (NOM) height number of attributes (NOA) base size number of lines of code (LOC) color class building package district nesting level color
    • 25. application roadmap
    • 26. application roadmap Program Comprehension
    • 27. application roadmap Program Software Comprehension Evolution
    • 28. application roadmap Program Software Software Comprehension Evolution Design
    • 29. application 1: program comprehension
    • 30. ArgoUML v. 0.23.4 1’800 classes, 100 packages decoding a code city
    • 31. ArgoUML v. 0.23.4 1’800 classes, 100 packages decoding a code city massive building CPPParser NOM: 204 NOA: 85 LOC: 9’111
    • 32. ArgoUML v. 0.23.4 1’800 classes, 100 packages decoding a code city FacadeMDRImpl skyscraper NOM: 349 massive building NOA: 3 LOC: 3’413 CPPParser NOM: 204 NOA: 85 LOC: 9’111
    • 33. ArgoUML v. 0.23.4 1’800 classes, 100 packages decoding a code city FacadeMDRImpl skyscraper NOM: 349 massive building NOA: 3 LOC: 3’413 CPPParser NOM: 204 NOA: 85 LOC: 9’111 parking lot JavaTokenTypes NOM: 0 NOA: 173 LOC: 0
    • 34. ArgoUML v. 0.23.4 1’800 classes, 100 packages decoding a code city FacadeMDRImpl skyscraper NOM: 349 massive building NOA: 3 LOC: 3’413 CPPParser NOM: 204 NOA: 85 LOC: 9’111 parking lot JavaTokenTypes PropPanelEvent NOM: 0 NOA: 173 LOC: 0 house NOM: 3 NOA: 2 LOC: 37
    • 35. code cities System Language NOP NOC kLOC CodeCity Smalltalk 34 173 29 ScummVM C++ 16 981 80 JHotDraw Java 37 600 30 iText Java 101 923 87 jEdit Java 59 966 98 Jmol Java 55 618 114 ArgoUML Java 96 1’768 136 JDK 1.5 Java 664 12’888 1’085 Eclipse Java 1’800 27’900 2’871 ... by example
    • 36. code cities System Language NOP NOC kLOC CodeCity Smalltalk 34 173 29 ScummVM C++ 16 981 80 JHotDraw Java 37 600 30 iText Java 101 923 87 jEdit Java 59 966 98 Jmol Java 55 618 114 ArgoUML Java 96 1’768 136 JDK 1.5 Java 664 12’888 1’085 Eclipse Java 1’800 27’900 2’871 ... by example
    • 37. code cities System Language NOP NOC kLOC CodeCity Smalltalk 34 173 29 ScummVM C++ 16 981 80 JHotDraw Java 37 600 30 iText Java 101 923 87 jEdit Java 59 966 98 Jmol Java 55 618 114 ArgoUML Java 96 1’768 136 JDK 1.5 Java 664 12’888 1’085 Eclipse Java 1’800 27’900 2’871 ... by example
    • 38. code cities System Language NOP NOC kLOC CodeCity Smalltalk 34 173 29 ScummVM C++ 16 981 80 JHotDraw Java 37 600 30 iText Java 101 923 87 jEdit Java 59 966 98 Jmol Java 55 618 114 ArgoUML Java 96 1’768 136 JDK 1.5 Java 664 12’888 1’085 Eclipse Java 1’800 27’900 2’871 ... by example
    • 39. code cities System Language NOP NOC kLOC CodeCity Smalltalk 34 173 29 ScummVM C++ 16 981 80 JHotDraw Java 37 600 30 iText Java 101 923 87 jEdit Java 59 966 98 Jmol Java 55 618 114 ArgoUML Java 96 1’768 136 JDK 1.5 Java 664 12’888 1’085 Eclipse Java 1’800 27’900 2’871 ... by example
    • 40. code cities System Language NOP NOC kLOC CodeCity Smalltalk 34 173 29 ScummVM C++ 16 981 80 JHotDraw Java 37 600 30 iText Java 101 923 87 jEdit Java 59 966 98 Jmol Java 55 618 114 ArgoUML Java 96 1’768 136 JDK 1.5 Java 664 12’888 1’085 Eclipse Java 1’800 27’900 2’871 ... by example
    • 41. code cities System Language NOP NOC kLOC CodeCity Smalltalk 34 173 29 ScummVM C++ 16 981 80 JHotDraw Java 37 600 30 iText Java 101 923 87 jEdit Java 59 966 98 Jmol Java 55 618 114 ArgoUML Java 96 1’768 136 JDK 1.5 Java 664 12’888 1’085 Eclipse Java 1’800 27’900 2’871 ... by example
    • 42. code cities System Language NOP NOC kLOC CodeCity Smalltalk 34 173 29 ScummVM C++ 16 981 80 JHotDraw Java 37 600 30 iText Java 101 923 87 jEdit Java 59 966 98 Jmol Java 55 618 114 ArgoUML Java 96 1’768 136 JDK 1.5 Java 664 12’888 1’085 Eclipse Java 1’800 27’900 2’871 ... by example
    • 43. code cities System Language NOP NOC kLOC CodeCity Smalltalk 34 173 29 ScummVM C++ 16 981 80 JHotDraw Java 37 600 30 iText Java 101 923 87 jEdit Java 59 966 98 Jmol Java 55 618 114 ArgoUML Java 96 1’768 136 JDK 1.5 Java 664 12’888 1’085 Eclipse Java 1’800 27’900 2’871 ... by example
    • 44. code cities System Language NOP NOC kLOC CodeCity Smalltalk 34 173 29 ScummVM C++ 16 981 80 JHotDraw Java 37 600 30 iText Java 101 923 87 jEdit Java 59 966 98 Jmol Java 55 618 114 ArgoUML Java 96 1’768 136 JDK 1.5 Java 664 12’888 1’085 Eclipse Java 1’800 27’900 2’871 ... by example
    • 45. real scale Eclipse ScummVM CodeCity JDK 1.5 JHotDraw jEdit iText Jmol ArgoUML
    • 46. application 2: software evolution
    • 47. consistent locality city blueprint, based on the maximal expansion of each artifact (building, district). Bar Foo A
    • 48. consistent locality city blueprint, based on the maximal expansion of each artifact (building, district). Bar Foo A version 1 Bar Foo
    • 49. consistent locality city blueprint, based on the maximal expansion of each artifact (building, district). Bar Foo A version 1 version 2 Bar Bar Foo Foo A
    • 50. consistent locality city blueprint, based on the maximal expansion of each artifact (building, district). Bar Foo A version 1 version 2 version 3 Bar Bar Foo Foo Foo A A
    • 51. time traveling example ArgoUML 10 releases, 7 years 0.10.1 0.12 0.14 0.16 0.18.1 0.20 0.22 0.24 0.26 0.28 2002 2003 2004 2005 2006 2007 2008 2009
    • 52. time traveling example ArgoUML 10 releases, 7 years 0.10.1 0.12 0.14 0.16 0.18.1 0.20 0.22 0.24 0.26 0.28 2002 2003 2004 2005 2006 2007 2008 2009
    • 53. time traveling example ArgoUML 10 releases, 7 years 0.10.1 0.12 0.14 0.16 0.18.1 0.20 0.22 0.24 0.26 0.28 2002 2003 2004 2005 2006 2007 2008 2009
    • 54. time traveling example ArgoUML 10 releases, 7 years 0.10.1 0.12 0.14 0.16 0.18.1 0.20 0.22 0.24 0.26 0.28 2002 2003 2004 2005 2006 2007 2008 2009
    • 55. time traveling example ArgoUML 10 releases, 7 years 0.10.1 0.12 0.14 0.16 0.18.1 0.20 0.22 0.24 0.26 0.28 2002 2003 2004 2005 2006 2007 2008 2009
    • 56. time traveling example ArgoUML 10 releases, 7 years 0.10.1 0.12 0.14 0.16 0.18.1 0.20 0.22 0.24 0.26 0.28 2002 2003 2004 2005 2006 2007 2008 2009
    • 57. time traveling example ArgoUML 10 releases, 7 years 0.10.1 0.12 0.14 0.16 0.18.1 0.20 0.22 0.24 0.26 0.28 2002 2003 2004 2005 2006 2007 2008 2009
    • 58. time traveling example ArgoUML 10 releases, 7 years 0.10.1 0.12 0.14 0.16 0.18.1 0.20 0.22 0.24 0.26 0.28 2002 2003 2004 2005 2006 2007 2008 2009
    • 59. time traveling example ArgoUML 10 releases, 7 years 0.10.1 0.12 0.14 0.16 0.18.1 0.20 0.22 0.24 0.26 0.28 2002 2003 2004 2005 2006 2007 2008 2009
    • 60. time traveling example ArgoUML 10 releases, 7 years 0.10.1 0.12 0.14 0.16 0.18.1 0.20 0.22 0.24 0.26 0.28 2002 2003 2004 2005 2006 2007 2008 2009
    • 61. time traveling example ArgoUML 10 releases, 7 years 0.10.1 0.12 0.14 0.16 0.18.1 0.20 0.22 0.24 0.26 0.28 2002 2003 2004 2005 2006 2007 2008 2009
    • 62. coarse vs fine-grained granularity class C NOM = 7 A NO NO A
    • 63. coarse vs fine-grained granularity class C NOM = 7 c las sC A NO NO A
    • 64. coarse vs fine-grained granularity class C m6 NOM = 7 m5 m7 m2 m1 m3 m4 c las sC A NO NO A
    • 65. coarse vs fine-grained granularity class C new m6 NOM = 7 m5 m7 m2 m1 m3 m4 old c las sC A NO NO A
    • 66. age map example JHotDraw 8 samples, 3 years age: 1 2 3 4 5 6 7 8
    • 67. age map patterns age: 1 2 3 4 5 6 7 8
    • 68. age map patterns age: 1 2 3 4 5 6 7 8 stable very old
    • 69. age map patterns age: 1 2 3 4 5 6 7 8 stable rarely updated very old old
    • 70. age map patterns age: 1 2 3 4 5 6 7 8 stable highly unstable rarely updated very old old young
    • 71. updated often, age map patterns rather unstable age: 1 2 3 4 5 6 7 8 stable highly unstable rarely updated very old old young very old
    • 72. time travel + age maps JHotDraw 8 samples, 3 years October 2000 March 2001 September 2001 March 2002 August 2002 January 2003 July 2003 January 2004
    • 73. time travel + age maps JHotDraw 8 samples, 3 years October 2000 March 2001 September 2001 March 2002 August 2002 January 2003 July 2003 January 2004
    • 74. time travel + age maps JHotDraw 8 samples, 3 years October 2000 March 2001 September 2001 March 2002 August 2002 January 2003 July 2003 January 2004
    • 75. time travel + age maps JHotDraw 8 samples, 3 years October 2000 March 2001 September 2001 March 2002 August 2002 January 2003 July 2003 January 2004
    • 76. time travel + age maps JHotDraw 8 samples, 3 years October 2000 March 2001 September 2001 March 2002 August 2002 January 2003 July 2003 January 2004
    • 77. time travel + age maps JHotDraw 8 samples, 3 years October 2000 March 2001 September 2001 March 2002 August 2002 January 2003 July 2003 January 2004
    • 78. time travel + age maps JHotDraw 8 samples, 3 years October 2000 March 2001 September 2001 March 2002 August 2002 January 2003 July 2003 January 2004
    • 79. time travel + age maps JHotDraw 8 samples, 3 years October 2000 March 2001 September 2001 March 2002 August 2002 January 2003 July 2003 January 2004
    • 80. timeline by example
    • 81. timeline by example 1887 Sep. 1887 Dec. 1888 Mar. 1888 Jun. 1888 Sep. 1888 Dec. 1889 Mar.
    • 82. code city timelines ve r s. 1 c lass
    • 83. code city timelines m7 m6 m5 m3 m2 m1 ve r s. 1 c lass
    • 84. code city timelines m7 m6 m5 m3 ti me m2 m1 isto ry ve r s. 1 sh c lass c las
    • 85. code city timelines m7 m6 m5 s. 2 m3 c lass ver ti me m2 m1 isto ry ve r s. 1 sh c lass c las
    • 86. code city timelines m12 m11 m10 m9 m7 m6 m5 s. 2 m3 c lass ver ti me m2 m1 isto ry ve r s. 1 sh c lass c las
    • 87. code city timelines m12 m11 m10 m9 m7 m6 m5 s. 2 m3 c lass ver ti me m2 m1 isto ry ve r s. 1 sh c lass c las
    • 88. code city timelines m12 m11 m10 m9 m7 ve r s. 3 c lass m6 m5 s. 2 m3 c lass ver ti me m2 m1 isto ry ve r s. 1 sh c lass c las
    • 89. code city timelines m17 m18 m15 m14 m13 m12 m11 m10 m9 m7 ve r s. 3 c lass m6 m5 s. 2 m3 c lass ver ti me m2 m1 isto ry ve r s. 1 sh c lass c las
    • 90. code city timelines m17 m18 m15 m14 m13 m12 m11 m10 m9 m7 ve r s. 3 m2 c lass m6 m5 s. 2 m3 c lass ver ti me m2 m1 isto ry ve r s. 1 sh c lass c las
    • 91. class timeline examples StandardDrawingView 8 versions JHotDraw
    • 92. class timeline examples StandardDrawingView GeneratorJava 8 versions 9 versions JHotDraw ArgoUML
    • 93. class timeline examples StandardDrawingView GeneratorJava Eval 8 versions 9 versions 19 versions JHotDraw ArgoUML Jmol
    • 94. timeline correlation Eval Jmol Viewer TransformManager JmolViewer
    • 95. timeline correlation Eval Jmol Viewer TransformManager JmolViewer
    • 96. application 3: design analysis
    • 97. detecting design problems
    • 98. detecting design problems access to foreign data
    • 99. detecting design problems access to foreign data weighted method count
    • 100. detecting design problems access to foreign data weighted method count tight class cohesion
    • 101. design problems in numbers
    • 102. disharmony map: focus + context 65 God classes java namespace of JDK 1.5
    • 103. map of multiple disharmonies 12 Brain classes 16 java namespace 65 God classes of JDK 1.5 109 Data classes
    • 104. coarse-grained disharmony map Brain classes 8 God classes 30 Brain & God classes 6 Data classes 17 ArgoUML
    • 105. fine-grained disharmony map Shotgun surgery 210 package org.argouml.model of ArgoUML
    • 106. fine-grained design assessment Feature envy 1500 Jmol
    • 107. tool support
    • 108. able to visualize Java, C/C++, C#, Smalltalk systems
    • 109. able to visualize Java, C/C++, C#, Smalltalk systems
    • 110. able to visualize Java, C/C++, C#, Smalltalk systems portable
    • 111. able to visualize Java, C/C++, C#, Smalltalk systems portable 3’500 downloads (March 2008 - January 2010)
    • 112. able to visualize Java, C/C++, C#, Smalltalk systems portable 3’500 downloads (March 2008 - January 2010) freely available at: codecity.inf.usi.ch http://
    • 113. tool demo
    • 114. Richard Wettel http://www.inf.usi.ch/phd/wettel http://creativecommons.org/licenses/by/3.0/