EMBEDDED
52 • MAGGIO • 2014
65
SOFTWARE
QUALITY
Si adottano strumenti per l’elaborazione di modelli matematici
di analisi e ottimizzazione dell’affidabilità e delle prestazioni.
Ma anche metodologie di analisi statica del codice, per la
verifica di specifici requisiti di progetto (prestazioni, consumo
di memoria, sicurezza), e analisi dinamica, necessaria per il
collaudo di singoli componenti o del funzionamento del siste-
ma nella sua interezza. Nelle applicazioni embedded in campo
medicale, come in quelle dedicate al settore automobilistico
o industriale, dove un malfunzionamento può significare un
notevole danno di produzione o, addirittura, la messa in peri-
colo della sicurezza fisica dell’utente, la qualità del software
non può certo essere oggetto di compromesso.
Per verificare la qualità del codice sorgente e dell’architettura
software, sono quindi in uso diverse metriche e standard.
A livello generale, un punto di riferimento è certamente lo
standard ISO/IEC 9126, che definisce un modello di qualità
del software.
Tale modello esprime la qualità come “l’insieme delle carat-
teristiche che incidono sulla capacità del prodotto di soddi-
sfare requisiti espliciti o impliciti”. Indica quindi metriche per
valutare la ‘qualità esterna’, cioè la capacità del software, le
sue prestazioni e funzionalità nell’ambiente in cui è in uso; la
‘qualità interna’, che si basa sulla valutazione delle proprietà
intrinseche del software, misurabili direttamente sul codice
sorgente; e infine la ‘qualità in uso’, che indica a quale livello
il prodotto software sia utile per rendere efficace ed efficiente
l’attività dell’utente (efficacia, produttività, soddisfazione, sicu-
rezza nel contesto d’uso).
In sintesi, le caratteristiche che definiscono la qualità interna
ed esterna di un prodotto software sono sei: funzionalità,
affidabilità, usabilità, efficienza, manutenibilità e portabilità. In
termini di funzionalità, si considera la capacità del software,
in determinate condizioni, di svolgere i compiti per cui è stato
progettato. Quindi si valuta se è dotato di funzioni appropriate
per eseguire operazioni specifiche richieste dall’utente, se
è preciso nel fornire i risultati, se ha una buona interopera-
bilità con altri sistemi. E se è sicuro, a livello di protezione
dei dati e da tentativi di accesso non autorizzati. Passando
all’affidabilità, cioè la capacità di mantenere determinate
prestazioni sotto condizioni e tempi stabiliti, i criteri sono
la robustezza (capacità di evitare arresti dell’applicazione in
seguito a malfunzionamenti), la tolleranza a errori (capacità
di mantenere un certo livello di prestazioni anche in caso di
disfunzioni), e la velocità di ripristino dei livelli di prestazioni
stabiliti, e di recupero dei dati, in caso di avaria. Per valutare
l’usabilità, si analizza la qualità del software in termini di
facilità di comprensione del funzionamento e modalità d’uso.
Quindi praticità di apprendimento e d’uso, e gradevolezza del
sistema. L’efficienza si misura osservando quante risorse ven-
gono consumate in rapporto alle prestazioni, in determinate
condizioni di funzionamento. La manutenibilità è la capacità
del software di consentire modifiche con un impegno di lavoro
Fig. 1 – Una rappresentazione del modello ISO/IEC 9126 per la qualità del software