Metriche sulla grandezza del codice
La quantità più semplice da misurare in un programma sono le linee di codice di cui è composto.
Questa misura indica la grandezza della soluzione proposta al problema dell’utente, quindi indirettamente anche la grandezza del problema stesso.
Più grande è il programma e più grosso è il problema risolto.
Un’altra quantità di facile rilevazione è il prezzo pagato dal cliente. Ogni transazione sarà registrata con una fattura, o comunque un documento fiscale, per cui è sempre possibile ricostruire questo dato per ogni nuovo programma.
Quando si entra in manutenzione possiamo avere delle situazioni più complesse, come contratti di assistenza, per cui il prezzo già pagato può essere relativo a prestazioni non ancora fornite.
La terza quantità rilevabile è il tempo impiegato a completare il programma.
Questa misura è molto più elusiva delle precedenti: non è facile obbligare ogni programmatore a segnare le ore lavorate specificando la commessa, è molto complesso misurare i tempi degli interventi presso il cliente ed è ancora più difficile conteggiare il tempo speso nello sviluppo di librerie che saranno usate in più di un progetto.
Comunque note queste tre misure si possono creare dei semplici indici economici.
Il costo di produzione del programma è dato dalla somma delle ore impiegate da ogni programmatore moltiplicato per il costo orario del programmatore stesso.
Costo totale = SUM(Tempo impiegato * Costo orario)
Naturalmente il guadagno è dato dal prezzo pagato dal cliente meno il costo sostenuto per produrre il programma.
La produttività di un programmatore si può misurare dividendo le linee di codice per il numero dei giorni impiegati a scriverle, ottenendo così il numero medio di linee di codice prodotte in un giorno.
Produttività = Linee di codice / Tempo di sviluppo
La qualità del programma può essere calcolata come il numero degli errori rilevati diviso il numero di linee di codice:
Qualità = Errori / Linee di codice
Purtroppo queste considerazioni sono molto semplicistiche e ci sono parecchie controindicazioni ad usare le linee di codice come unica misura del problema.
Se un programmatore ha lavorato bene, limando il codice ed organizzando in librerie le parti comuni, ha come risultato un programma più PICCOLO di chi invece ha lavorato frettolosamente. Paradossalmente è stato meno produttivo il primo programmatore! Se poi diamo un costo a linea di codice, il cliente che riceve il primo programma, di qualità più elevata, paga di meno del secondo.
Se si utilizzano dei linguaggi evoluti, il numero di istruzioni scritte per risolvere il problema diminuisce. Ancora il programmatore che scrive un programma con un linguaggio evoluto risulta meno produttivo di chi utilizza strumenti più antiquati (anche se c’è un fattore correttivo poiché il primo programmatore impiega meno tempo).
Ma il problema più grosso della misura delle linee di codice è che questo dato è noto solo dopo aver costruito il programma e quindi non è di nessuna utilità per preventivare tempi e costi di sviluppo!