Folder Structure Evolution in
Open Source Software
Andrea Capiluppi
Dipartimento di Automatica
e Informatica
Politecnico di Torino, Italy
&
Computing Dept.
The Open University, UK
Maurizio Morisio
Juan F. Ramil
Computing Dept.
Dipartimento di Automatica e
Informatica
The Open University, UK
Politecnico di Torino, Italy
AICA 2004, Benevento, 29 Sett 2004
Outline
Motivazione
Definizioni e Attributi
Selezione dei progetti Open Source
Identificazione e Analisi di Pattern
Conclusioni
29 Sett 2004 – Benevento
AICA 2004
2
Motivazioni
29 Sett 2004 – Benevento
AICA 2004
3
Motivation
Empirical
Evidence
Theories,
Models
29 Sett 2004 – Benevento
Good
Practice
AICA 2004
4
Motivazione
Studi empirci sull’evoluzione dei sistemi OSS
Obiettivo: comprenderne il comportamento evolutivo,
generare euristiche e guidelines
Approccio: simile a quello usato da Lehman per i
sistemi commerciali:
Generare ipotesi empiriche
Osservare differenze e analogie
Modificare le ipotesi esistenti, generarne di nuove
Obiettivo di lungo termine: teorie e modelli
dell’evoluzione del software con studi longitudinali
Metodologia: combinare osservazioni a differenti livelli
di granularita’ {system, subsystem, module, function}
29 Sett 2004 – Benevento
AICA 2004
5
Motivazione
Obiettivo specifico: osservare evoluzione
attraverso un {altro} livello, disposizione del
codice nei folders (folder tree)
Research questions:
Lo studio della struttura delle directory da’
informazioni sull’evoluzione di un sistema?
Esistono relazioni tra questa struttura e altre
caratteristiche evolutive (tasso di crescita)?
Utilizzo di dati empirici per valutare queste
domande
29 Sett 2004 – Benevento
AICA 2004
6
Definizioni e Attributi
29 Sett 2004 – Benevento
AICA 2004
7
Definizioni e Attributi
Source File: ogni file che contiene codice
Source Folder:ogni directory contenente
almeno un source file
Folder Tree:
rappresentazione
grafica della struttura
Level: sottoinsieme di
nodi aventi la stessa
distanza dal nodo root
29 Sett 2004 – Benevento
root
Level
AICA 2004
Parent Folder
F2
F1
8
Esempio di Folder Tree
Ampiezza (width): massimo numero
di folder in un livello
Profondita’ (depth) = massima distanza
29 Sett 2004 – Benevento
AICA 2004
9
Evoluzioni possibili di un folder tree
Parent
Folder
F1
Parent
Folder
F1
F2
F3
Parent
Folder
F2
F1
29 Sett 2004 – Benevento
[Espansione
verticale]
F2
AICA 2004
[Espansione
orizzontale]
F3
10
Attributi
Size: indicatore di functional power (LOCs, KBs,
numero di files, numero di folders)
Folder tree: struttura (visualizzazione tramite
Graphviz, tool Open Source)
Activity rate: tasso di evoluzione, modi di attivita’
-
-
Trovare gli elementi aggiunti o tolti e’ relativamente
semplice
Trovare gli elementi modificati: focus su elementi
modificati durante un periodo, piuttosto che singoli
change:
number of files touched per release
29 Sett 2004 – Benevento
AICA 2004
11
Selezione dei progetti
29 Sett 2004 – Benevento
AICA 2004
12
Selection of Projects
Ampia base di sistemi usata in uno studio
precedente di caratterizzazione del OSS
Da questo sample -> si estraggono I progetti
piu’ grandi
Risultato dell’estrazione 26 sistemi
In totale 992 data points
Sistemi vengono caratterizzati tramite
l’evoluzione dei folder tree
29 Sett 2004 – Benevento
AICA 2004
13
Initial Characterization (example 1)
Alta correlazione fra differenti metriche (locs, files,
Kbytes)
Maggioranza sta sotto un limite di size (misurato
all’ultimo stato stabile, o release)
29 Sett 2004 – Benevento
AICA 2004
14
Initial Characterization (example 2)
Size medio dei source file dentro i source
folder sta generalmente sotto un limite (20 Kb)
29 Sett 2004 – Benevento
AICA 2004
15
Identificazione e Analisi dei
Pattern
29 Sett 2004 – Benevento
AICA 2004
16
Identification of patterns
Espansione orizzontale (10 su 25)
Riduzione vericale (4 su 25)
Espansione vericale (11 su 25)
Associata di solito con espansione orizzontale
Studio della relazione tra pattern di
evoluzione, crescita funzionale e activity
rate
29 Sett 2004 – Benevento
AICA 2004
17
Espansione orizzontale
Crescita costante dei source file
Picchi di activity rate intorno alle release
maggiori
29 Sett 2004 – Benevento
AICA 2004
18
Riduzione verticale
Size stabile durante l’evoluzione
Le modifiche sono diffuse e costanti nel 70% del
sistema
29 Sett 2004 – Benevento
AICA 2004
19
Espansione verticale
Periodi di crescita lineare e super-lineare
Picchi di activity rate consistono di aggiunte piuttosto
che modifiche
29 Sett 2004 – Benevento
AICA 2004
20
Conclusioni
Quasi tutti I sistemi mostrano un’espansione almeno in
uno dei parametri strutturali – segno di evoluzione sana
Folder tree sono utili per esaminare evoluzione di
sistemi software
Trend di crescita e activity rate utili per riconoscere gli
stage di evoluzione
Lavori attuali e futuri:
Relazione tra tipo evoluzione della struttura e tipo di
application domain
Osservazioni su diversi livelli di granularita’ per
identificare stage di evoluzione
Relazione tra quantita’ di modifiche e complessita’
Astrazione qualitativa e simulazione
29 Sett 2004 – Benevento
AICA 2004
21
Conclusioni
Empirical
Evidence
Theories,
Models
29 Sett 2004 – Benevento
Good
Practice
AICA 2004
22
Final Remarks
Dati e tool usati nel lavori presente e passati
sono in inea: http://mcs.open.ac.uk/ac5468
Fondamentale la collaborazione fra divesri
gruppi per condividere dati, tool e interpretazioni
29 Sett 2004 – Benevento
AICA 2004
23
…domande?
29 Sett 2004 – Benevento
AICA 2004
24