Definizione e utilizzo della Quality Assurance per il software

Definizione e utilizzo della Quality Assurance per il software

Quality Assurance e Software testing

In modo del tutto simile alla maggior parte dei processi fisici, un componente software riceve un insieme di dati di ingresso per elaborarli e produrre un insieme di dati di uscita. Qualsiasi attività finalizzata alla valutazione delle caratteristiche di un programma o un sistema e alla verifica che i comportamenti degli stessi diano i risultati previsti rientra nella definizione di software testing e quindi della Software Quality Assurance (SQA).

Ciò in cui un software differisce dagli altri sistemi fisici è l’insieme solitamente molto ampio di modi in cui è possibile che esso fallisca; benchè un software non risenta di difetti di fabbrica (molto spesso i difetti derivano da errori introdotti in fase di progettazione e non dalla scrittura del codice sorgente) nè di altri fattori ambientali e di usura, cercare di prevedere tutti i possibili errori è di fatto impossibile.

Definizione e utilizzo della Quality Assurance per il software

Obiettivi e limitazioni della Software Quality Assurance

Le attività di testing sono considerate parti integranti dello sviluppo di un software: metà delle risorse impiegate nello sviluppo vengono solitamente allocate a a procedure di collaudo, le quali sono dunque generalmente riconducibili a due importanti scopi finali:

  • verifica e validazione: ovvero, validare che il software soddisfi i requisiti e le specifiche e verificare che lo faccia nel modo atteso;
  • migliorare la qualità: la presenza di difetti rappresenta solo uno degli indici di qualità del software (correttezza), il collaudo si propone come obiettivo quello di valutare il software secondo un insieme di parametri.

D’altro canto, la presenza di bug in un software deriva dunque dalla complessità stessa e non è direttamente correlata alle capacità tecniche dei programmatori che ne hanno curato progettazione e implementazione. Per lo stesso motivo, scoprire i difetti è altrettanto difficile. Collaudare un sistema coprendo tutto l’insieme di dati accettabile dallo stesso è impraticabile; si può averne la dimostrazione prendendo in considerazione un semplice programma sommatore a due operandi di numeri interi a 32 bit come oggetto del collaudo: significherebbe testare il funzionamento del sistema con 2^64 combinazioni, con grande dispendio di tempo e risorse.

Un’ulteriore complicazione deriva dalla frequenza di aggiornamento del software: un test case scritto ed eseguito con successo durante le prime fasi di sviluppo potrebbe fallire in una successiva occasione a causa di modifiche introdotte nel codice sorgente. E’ evidente che l’improvviso fallimento di un test case richiede un’indagine approfondita sia del codice del programma che dello stesso test: potrebbe essere necessario aggiornare il meccanismo di collaudo per renderlo conforme al nuovo comportamento del software. In alternativa, nel caso in cui l’errore non fosse nè nel codice nè nei dati di input del test, bisognerà riparare il difetto all’interno del programma. Infine, sarà necessario eseguire nuovamente il test. E’ evidente come tutte queste operazioni abbiano dei costi. Senza una strategia e degli strumenti di ausilio all’analisi dei requisiti e alla scrittura dei componenti di collaudo, tali costi possono diventare insostenibili.

Definizione e Importanza della qualità

L’Organizzazione Internazionale per la Normazione ha applicato una nuova definizione di qualità all’ingegneria del software, ridefinendola come un misura della “conformità del prodotto software ai requisiti”. Tale definizione non rappresenta per tutti la descrizione piu’ appropriata, poichè a seconda della prospettiva e dei parametri presi in considerazione la sola conformità stretta alle specifiche iniziali può non essere sufficiente a garantire un funzionamento del software soddisfacente.

In letteratura vengono proposte cinque diversi approcci alla definizione formale di software quality, ognuno di questi prende in considerazione una prospettiva diversa:

  • l’utente finale è interessato che il prodotto funzioni correttamente in un dato numero di contesti. Si tratta di una prospettiva piu’ pragmatica, il prodotto
    è stato progettato e prodotto per soddisfare una particolare necessità dei suoi utilizzatori;
  • il produttore si occupa di verificare che il prodotto finale rispetti dei requisiti di qualità; inoltre alcuni standard internazionali mettono in risalto tali requisiti;
  • la qualità del prodotto può essere considerata e valutata attraverso la misurazione delle caratteristiche intrinseche del prodotto stesso;
  • il valore trascendentale della qualità riguarda gli aspetti utopici del concetto stesso, come un obiettivo ideale a cui si deve sempre tendere, sempre consapevoli della reale impossibilità di raggiungerlo;
  • con una prospettiva mirata al profitto si realizza come i diversi approcci alla assicurazione di qualità possano assumere un’importanza diversa a seconda dei contesti.

Infine, un’interessante definizione di qualità può essere la seguente: “La parola qualità ha diversi significati. Due di questi predominano sugli altri:

  1. la qualità consiste in quelle caratteristiche dei prodotti che soddisfano le necessità dei clienti, producendo dunque soddisfazione verso il prodotto stesso
  2. la qualità consiste nell’assenza di deficienze. Tuttavia, in un libro tascabile come questo, è comodo ricorrere a una definizione abbreviata della parola qualità: idoneità all’uso”.

Garanzia di qualità

Innumerevoli soggetti pubblici e privati affidano le proprie funzioni a complesse architetture software. Numerosi di questi soggetti si occupano delle persone e dei loro interessi, della loro salute o risorse, molti altri si occupano di telecomunicazioni o trasporti, altri ancora di questioni di difesa nazionale. Le attività lavorative e i risultati di numerosi enti, società e persone dipendono dalle caratteristiche di correttezza e predicibilità del software che essi utilizzano. Un software difettoso può perciò avere conseguenze estremamente gravi per i propri utenti. D’altro canto, le tecniche di verifica e validazione vengono solitamente affiancate a procedure mirate ad assicurare che il prodotto software finale risponda a criteri di qualità.

Indicatori di qualità e obiettivi

L’obiettivo principale della software quality assurance è dunque garantire che il prodotto finale soddisfi i requisiti e rispetti le specifiche.

Struttura, classificazione e terminologia degli indicatori di qualità e delle tecniche applicate alla valutazione degli stessi derivano da specifici standard ISO. Di seguito verranno brevemente illustrate le cinque caratteristiche fondamentali, indici di qualità del software, prese in considerazione dal candidato durante le fasi di analisi e progettazione degli strumenti di collaudo automatici:

  • efficienza: meno risorse vengono utilizzate e maggiore è l’efficienza; le risorse vengono tipicamente espresse in termini di tempo di utilizzo della CPU e spazio di memoria necessari al software per operare;
  • affidabilità: minore è la frequenza di guasti, maggiore è l’affidabilità di un software; talvolta si basa sulla misura del mean time between failures (MTBF), ovvero il valore atteso ti tempo che intercorre fra due guasti correlati successiv altro fattore importante è rappresentato dalla capacità di reazione ai guasti di un sistema;
  • sicurezza: si riferisce alle politiche di controllo degli accessi messe in atto dal sistema al fine di evitare intrusioni indesiderate;
  • manutenibilità: un codice ben strutturato e un’architettura modulare formata da entità logiche coerentemente raggruppate si dimostra tipicamente facile da mantenere, estendere e correggere.

Pubblicato da Vito Lavecchia

Lavecchia Vito Ingegnere Informatico (Politecnico di Bari) Email: [email protected] Sito Web: https://vitolavecchia.altervista.org

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *