Non sono sicuro che lo considereresti elegante, ma Watts Humphrey ha scritto un intero libro chiamato Personal Software Process che si occupava solo di misurare la tua produttività. Ha delineato metriche per input come il tempo alla scrivania e le interruzioni, il tempo impiegato a lavorare su vari tipi di attività del ciclo di vita del software, i difetti per quantità di codice. Esiste un rapporto tecnico che fornisce la versione breve all'indirizzo:
http://www.sei.cmu.edu/library/abstracts/reports/00tr022.cfm
Se vuoi esaminare qualcosa come la qualità di un codice per sviluppatori, Chidamber e Kemerer hanno proposto diverse metriche per il codice orientato agli oggetti.
Metriche per codice orientato agli oggetti
- profondità dell'albero ereditario,
- numero ponderato di metodi,
- numero di funzioni membro,
- numero di bambini e
- accoppiamento tra oggetti.
Utilizzando una base di codice, hanno cercato di correlare queste metriche alla densità del difetto e allo sforzo di manutenzione utilizzando l'analisi covariante. Studi successivi hanno fatto analisi simili su centinaia di progetti Java di Source Forge per determinare le loro caratteristiche relative alle metriche CK e alcune metriche aggiuntive proposte in seguito.
Metriche derivanti dal contesto delle revisioni del codice
I difetti possono essere classificati in base a molti criteri:
- gravità: (maggiore, minore, cosmetica, investigazione / sconosciuta),
- tipo (logica, errore di battitura, ortografia, violazione standard di codifica, ecc.),
- contenimento di origine / fase (requisiti, progetto, codice, ecc.).
Ci sono anche tassi di preparazione e ispezione (tempo per revisore, tempo per riga di codice) e densità di difetto (per KLOC (migliaia di righe di codice), al minuto di tempo ispettore / revisore).
Tracciare questi valori rispetto ai grafici di controllo può mostrarci se siamo entro i limiti del processo (ad esempio, un team che ispeziona 200 righe di codice che non rileva difetti in un gruppo che ha in media venticinque difetti per KLOC potrebbe non funzionare correttamente).
Altre metriche
Altre metriche che potrebbero aiutare a includere quelle per
Limitazioni dell'analisi
Esistono enormi limiti al valore delle metriche. I bug corretti per sviluppatore possono significare quasi tutto, e quando inizi a punire o premiare quella misura, scommetto che i bug diventeranno più numerosi e granulari, e il mix di bug difficili da risolvere facilmente cambierà anche quando il team sceglierà correre per avere il massimo.
C'è anche una certa distrazione e potenzialmente una perdita di concentrazione e divertimento che può derivare da misurazioni intrusive. Non puoi diventare molto più elegante (ed emotivamente gravato) di un poeta lacustre come Wordsworth che ha detto:
Sweet is the lore which Nature brings;
Our meddling intellect
Mis-shapes the beauteous forms of things:--
We murder to dissect.
Mentre il software non è esattamente la natura, dammi un po 'di latitudine perché pensavo che non avrei mai potuto usare nulla dalle lezioni di letteratura inglese delle superiori.
Agile potrebbe essere considerata una reazione a un grande processo centralizzato. A volte quella modalità di lavoro potrebbe richiedere così tanto sforzo analitico che la capacità di raggiungere il flusso durante la creazione del software è quasi scomparsa.