Qualità del software

Le considerazioni svolte fino a questo punto hanno smontato il modello di qualità del software basato sui test, dimostrandone la non validità a garanzia della correttezza.

Ma c’è anche un altro aspetto: la correttezza è solo una delle numerose qualità che deve possedere un prodotto software.

Nella figura vediamo il modello di qualità proposta da Bohem, dove sono distinti vari filoni che si suddividono poi in aspetti sempre più dettagliati.

Abbiamo delle qualità relative all’uso del programma, alla sua portabilità e manutenzione.

Nell’uso del programma vengono evidenziate l’affidabilità, l’efficienza e l’interfaccia utente.

Nel momento della manutenzione troviamo la provabilità del sistema, la comprensibilità del codice, la modificabilità.

Entrando nei dettagli si nota come sia possibile definire degli aspetti ancora più primitivi, come la leggibilità del codice o la strutturazione.

Concentrando l’attenzione su uno solo di questi aspetti, per esempio la correttezza, si ottiene si un programma che funziona perfettamente, ma può risultare di bassa qualità negli altri.

Per esempio possiamo avere un programma che non sbaglia mai, ma che è così difficile da usare che solo pochi utenti riescono ad ottenere i risultati voluti (che equivale ad avere un programma con qualche buco).

Ancora potremmo avere un programma perfetto, ma con il codice così oscuro e poco strutturato che ogni modifica o miglioramento introduce decine e decine di errori.

Elenchiamo alcune delle caratteristiche principali di un programma dal punto di vista qualitativo:

Portabilità: la semplicità di trasferimento di un programma da un ambiente operativo all’altro, da un computer all’ altro.

Affidabilità: la capacità di eseguire una determinata funzione sotto delle determinate condizioni per un determinato periodo di tempo.

Efficienza: la capacità di portare a termine il compito assegnato con lo spreco minimo di risorse macchina.

Errori: le differenze tra i risultati stabiliti come corretti per definizione o per via teorica e i risultati effettivamente prodotti.

Robustezza: la capacità di continuare ad operare in modo corretto anche di fronte a situazioni di input palesemente errate.

Correttezza: la qualità di un programma privo di errori di codifica o progettazione, di un programma che rispetta le specifiche stabilite in analisi, di un programma che soddisfa l’utente.

Purtroppo risulta ancora difficile stabilire delle metriche precise per ognuno di questi criteri, e bisogna affidarsi ancora all’esperienza ed al buon senso.