Qualità del software
Definizione di qualità
Secondo ISO, la qualità è l'insieme delle caratteristiche di un'entità che ne determinano la capacità di soddisfare esigenze espresse e implicite. Valutare la qualità del software serve sia a chi lo ha realizzato (per migliorarlo), sia a chi lo usa (per avere garanzie), sia a chi valuta (per imparare). Tuttavia, quello di qualità è un concetto ambivalente: può riguardare la conformità ai requisiti (visione intrinseca della qualità), la soddisfazione del cliente (visione relativa) o la misura del livello di qualità (visione quantitativa); ad ogni modo, tutte queste sono aree in cui interviene il "sistema qualità".
Il sistema qualità
ISO definisce il "sistema qualità" come la struttura organizzativa, le responsabilità, le procedure, i procedimenti e le risorse messe in atto per il perseguimento della qualità. Questo sistema gestisce la qualità in tre ambiti:
- La pianificazione, cioè le attività del sistema qualità mirate a fissare gli obiettivi di qualità, con i processi e le risorse necessari per conseguire tali obiettivi; è una premessa al controllo della qualità.
- Il controllo, cioè le attività del sistema qualità pianificate e attuate affinché il prodotto soddisfi i requisiti attesi.
- Il miglioramento continuo, secondo lo schema PDCA.
Il sistema qualità è fissato nelle Norme di Progetto (il Piano di Qualifica fissa invece gli obiettivi di qualità: i piani fissano solo obiettivi e strategie per raggiungerli).
Modelli della qualità
Per uniformare la percezione e la valutazione della qualità, è bene che committenti e fornitori si accordino su un modello da seguire per la qualità. Esistono vari modelli della qualità; ognuno di essi definisce le caratteristiche rilevanti che deve avere un prodotto "di qualità" e organizza tali caratteristiche in una struttura logica.
Ad esempio, ISO/IEC 9126 definisce 7 caratteristiche principali (suddivise poi in 31 sotto-caratteristiche):
- funzionalità;
- affidabilità;
- efficienza;
- usabilità;
- manutenibilità;
- portabilità;
- qualità in uso.
Oltre a descriverle, il modello specifica anche come misurarle, cioè assegna ad ogni caratteristica una metrica (che è un modo per dare un significato a dei valori). Un modello è quindi uno strumento di definizione e di valutazione:
- definizione perché cataloga in modo sistematico delle caratteristiche rilevanti;
- valutazione perché definisce delle metriche per la misurazione di tali caratteristiche.
Sempre in ISO/IEC 9126, vengono proposte tre visioni della qualità:
- Visione esterna, relativa all'esecuzione del prodotto; è ciò che si osserva, quindi solo la punta dell'iceberg.
- Visione interna, relativa al prodotto non in esecuzione; è ciò che deriva dalle scelte di progettazione, codifica e verifica, quindi si può vedere solo attraverso una revisione critica del prodotto.
- Visione in uso, relativa alla percezione dell'utente finale.
Mentre le visioni interna ed esterna si riferiscono al prodotto software, la visione in uso si riferisce agli effetti di tale prodotto.
Qualità nel ciclo di vita
Possiamo individuare una catena di dipendenze tra le varie visioni della qualità: la qualità di un processo influenza gli attributi della qualità interna, che influenza gli attributi della qualità esterna, che influenza gli attributi della qualità in uso.
È bene che i seguenti aspetti siano il meno distante possibile tra loro:
- qualità obiettivo;
- qualità richiesta;
- qualità progettata;
- qualità stimata;
- qualità consegnata.
Il committente ha responsabilità sulle prime due; il fornitore su tutte quante tranne la prima.
Metriche e misurazioni
Una metrica è un modo per dare un significato a dei valori, quindi è l'interpretazione di un sistema di unità di misura. Una misurazione quantitativa è l'uso di una metrica per assegnare un valore su una scala predefinita.
Le metriche software permettono di quantificare sia un prodotto (e quindi predire i suoi attributi) sia un processo (al fine di monitorarlo e migliorarlo).
L'uso di una metrica assume che:
- Si può misurare un certo attributo (o proprietà) del software.
- Esiste una relazione tra ciò che possiamo misurare e ciò che vogliamo sapere. Ad esempio, generalmente è possibile misurare solo attributi interni del software, mentre ciò che più spesso ci interessa sono i suoi attributi esterni: per capire il grado di manutenibilità di un software (attributo esterno), dobbiamo conoscere il numero di righe di codice, il numero di parametri per procedura, l'ampiezza del manuale utente... (attributi interni).
- La suddetta relazione è stata formalizzata e validata.
La selezione delle metriche (e la scelta dei criteri di accettazione) parte dall'analisi dei requisiti di qualità e dei vincoli di costo. Dopodiché:
- una volta selezionate le metriche, si può procedere alla misurazione;
- poi si passa alla valutazione (che è una verifica quantificata);
- e infine viene l'accettazione — basandosi, appunto, sui criteri di accettazione scelti.