Come già accennato da Simone ed Emanuele ho moderato una breve sessione sulle metriche del codice. Vorrei dare qui qualche coordinata in più a chi interessa il discorso ed in generale l'argomento della qualità del software.
Per la definizione di qualità ci rifacciamo allo standard ISO 9126 (altre informazioni in questo pdf in italiano), brevemente lo standard definisce la qualità di un software secondo un modello a quattro livelli:
Nel primo livello vengono definiti "tre punti di vista" sulla qualità del software:
- In Uso: Esprime l’efficacia ed efficienza con cui il software serve le esigenze dell’utente, ed è correlata alla percezione diretta dell’utente.
- Esterno: Esprime il comportamento dinamico del software, nell’ambiente d’uso.
- Interno: Esprime la misura in cui il codice software possiede una serie di attributi statici, indipendentemente dall’ambiente di utilizzo e dall’utente.
Al secondo livello vengono definiti i principali attributi.
Al terzo livello ci sono le sottocaratteristiche, le quali sono misurabili
Infine vengono definite le metriche per effettuare le misure.
Il tutto può essere riassunto dal seguente schema (primo livello in blu, secondo in verde e terzo in bianco):
Le metriche sul codice, a cui questo post è dedicato, influenzano la qualità interna.
Ogni metrica è definita dai seguenti attributi (maggiori dettagli qui):
- Handle: Un nome breve per identificare la metrica
- Description: Descrizione testuale della metrica e di cosa misura
- Scope: Identifica quale parte del software è coinvolto nella misurazione (es: classe, file, modulo, ecc.)
- Definition: Definizione formale della metrica usando definizioni e formule matematiche
- View: Descrive gli elementi rilevanti, le relazioni semantice e il grammar tree
- Scale: Il tipo di scala (Absolute, Rational, Interval, Ordinal, Nominal)
- Domain
- Highly Related Software Quality Properties
- Related Software Quality Properties
- References
Un esempio di scheda per la metrica LOC (Lines of Code) la potete trovare qui, mentre i link ad altre metriche qui
Come possiamo calcolare le metriche?
Attraverso alcuni software:
Source Monitor: è freeware e fa il parsing del codice sorgente, potrebbe non funzionare se usato con l'ultima versione della sintassi del linguaggio C#
NDepend: fa molto di più, ma nel report che viene generato ci sono alcune metriche interessanti (soprattutto quelle legate alla dipendenza tra i tipi). Attenzione che le metriche sono calcolate sull'IL e non sul codice sorgente.
Visual Studio 2008 infine permette di calcolare alcune metriche ma solo dalla versione Developer in su.