Metodi e obiettivi di quantificazione
Misurare
Misurare è un'attività fondamentale che compiamo quotidianamente: You can't control what you can't measure
afferma Tom DeMarco, informatico e ingegnere del software. Misurare serve a conoscere, a valutare e a decidere; è un'attività che è alla base della cibernetica[1].
Purtroppo le misure rischiano di essere distorte, a causa di semplificazioni e imprecisioni. Per accertare la bontà di una misura essa dev'essere oggettiva, cioè deve garantire:
- ripetibilità
- confrontabilità
- confidenza
Definizioni
Definiziamo la misurazione come il processo che assegna numeri o simboli a entità del mondo reale. Risultato di una misurazione è una misura. Infine, definiamo una metrica come un insieme di regole atte all'interpretazione di un sistema di unità di misura; ogni metrica fornisce anche delle procedure per compiere misurazioni.
Misurazione del software
Nella produzione di software, le metriche sono strumenti di valutazione e controllo. Cosa ci interessa misurare in questo ambito? ci interessa valutare lo stato di:
- processi (per valutarne la qualità);
- progetti (per effettuare stime, preventivi e consuntivi);
- prodotti (per valutarne la qualità);
- risorse (per capirne il consumo).
Gli attributi a cui le misurazioni assegnano valori stanno in due categorie:
- gli attributi interni (riguardano la qualità interna) sono misurabili rispetto alle entità;
- gli attributi esterni (riguardano la qualità esterna) sono misurabili rispetto all'ambiente.
La misurazione rischia di essere retrospettiva; ci interessa, invece, avere misure che siano il più vicino possibile al tempo di correzione: si deve misurare in modo proattivo, non reattivo.
Anche per la misurazione, ISO ha uno standard: ISO/IEC 15939. Questo standard afferma, a riguardo dei bisogni informativi, the information needs are based on goals, constraints, risks, and problems which originate from the technical and mgmt process.
CMMI suggerisce di determinare tali bisogni nelle seguenti aree:
- gestione dei requisiti;
- progettazione e implementazione;
- verifica e validazione;
- quality assurance;
- gestione della configurazione;
- gestione di progetto;
- analisi dei rischi e analisi delle decisioni;
- allenamento.
Ad esempio, il responsabile di progetto può essere interessato a misurare il lead time (cioè il tempo tra un ordine di sviluppo e la relativa consegna); e il lead time è inversamente proporzionale alla grandezza di ogni requisito, per cui un analista può essere interessato a misurare quanto sono grandi i requisiti, oltre a sapere quanto sono verificabili o quanto il prodotto soddisfa i requisiti.
Quando si trova un difetto, l'istinto sarebbe di correggerlo subito. Tuttavia sarebbe bene, prima, valutare il modo migliore per correggere il difetto con un buon rapporto beneficio/costi; questa è una misurazione che interessa chi si occupa della gestione dei cambiamenti (change management).