La qualità del software: come si misura e quali sono i costi.

Software buono o software cattivo? Alla ricerca della magica terra di mezzo.

In tanti anni di esperienza diretta e indiretta di sviluppo software, posso con certezza affermare che produrre un sistema software, un’applicazione o un tool che abbia scarsa qualità porta inevitabilmente ad un pessimo risultato: la scarsa qualità si percepisce – o comunque “viene o verrà a galla” – e per questo il cliente non procederà con l’acquisto o non ne sarà soddisfatto e il danno per l’azienda sviluppatrice non sarà solo economico ma anche d’immagine.

Di contro, invece, realizzare il software “assolutamente perfetto” dal punto di vista qualitativo risulta sempre molto costoso in termini di tempi e di risorse economiche, tanto da posizionarci fuori mercato. Di conseguenza, si giunge spesso a cercare quella “magica terra di mezzo” dove il prodotto risulti “buono” per non essere rifiutato subito, ma allo stesso tempo non oggetto di tanto perfezionismo e tanto lavoro perché questi richiederebbero troppo tempo e porterebbero a un costo troppo alto.

La qualità del software: come si misura e quali sono i costi

Un software “abbastanza buono” può funzionare in alcuni domini applicativi, ma occorre fare attenzione a questa filosofia: fornendo un prodotto “abbastanza buono” si rischia di scendere a compromessi pericolosi e si rischia di danneggiare la propria reputazione. Va aggiunto anche che in determinati domini applicativi, come ad esempio software embedded in dispositivi hardware ad esempio medicali, la sottovalutazione dell’aspetto qualità può portare a conseguenze molto dannose per l’azienda (cause legali, contenziosi, etc.).

Definizione di qualità del software

La qualità del software è un concetto astratto. La sua presenza può essere difficile da definire, ma la sua assenza può essere vista all’istante. Pertanto, nella ricerca del miglioramento della qualità del software, dobbiamo prima comprendere la definizione della qualità del software.

Wikipedia descrive la qualità del software come segue: “Per qualità del software si intende la misura in cui un prodotto software soddisfa un certo numero di aspettative rispetto sia al suo funzionamento sia alla sua struttura interna.”

Servizi ICT nella digital transformation: la panacea per tutti i mali (o quasi)

Ma come si può misurare la qualità del software?

L’ingegneria del software, tra i tanti argomenti affrontati, definisce anche due serie di caratteristiche da misurare per migliorare la qualità del software prodotto: si tratta di caratteristiche sia esterne che interne del software.

  • Le caratteristiche esterne riferite alla qualità del software, così come percepita dall’utente, sono: correttezza, affidabilità,  robustezza, efficienza, usabilità, ecocompatibilità, scalabilità.
  • Le caratteristiche interne riferite alla qualità del software, così come viene vista dallo sviluppatore, sono: verificabilità, manutenibilità, riparabilità, evolvibilità, riusabilità.

Un esempio di misurazione della qualità

Normalmente esiste una relazione tra le due famiglie di caratteristiche e possiamo dire che un software scritto “male” tende anche a funzionare “male”. Facciamo un esempio concreto che può chiarire come utilizzare i parametri interni ed esterni per misurare la qualità del software:

Immaginiamo che tra i requisiti del software “PippoX” ci sia anche il seguente: “l’applicazione deve poter stampare su una stampante HP Laserjet Modello xyz”. E ora, immaginiamo di misurare la qualità del software relativamente a questo requisito in base alle due famiglie di caratteristiche.

Caratteristiche esterne del software

  • Correttezza: confermato l’ordine di stampa, ottengo la stampa sulla stampante prevista?
  • Affidabilità: si misura, per esempio, con il valore MTBF (Mean Time Between Failure, il tempo medio che intercorre fra due fallimenti successivi). Qual è il tempo medio che intercorre tra due fallimenti successivi della funzione di stampa?
  • Robustezza: se la stampante non è disponibile perché scollegata o in manutenzione, la problematica viene segnalata all’utente?
  • Efficienza: la funzione di stampa risponde entro tre secondi?
  • Usabilità: l’utente capisce immediatamente come ottenere la stampa?
  • Ecocompatibilità: il sistema propone alternative significative all’utilizzo della stampa su carta? Ad esempio, è possibile la creazione di file in formato pdf?
  • Scalabilità: la funzione di stampa funziona anche su stampanti più recenti/performanti/veloci? Anche in presenza di più utenti che stampano contemporaneamente?

Caratteristiche interne del software

  • Verificabilità: è facilmente verificabile che la funzione di stampa sia corretta e affidabile? Esiste un log esplicativo di operazione conclusa con successo o operazione fallita?
  • Manutenibilità: la funzione di stampa è stata progettata e implementata in modo che sia facile intervenire per modifiche o per nuove funzionalità?
  • Riparabilità: si intende la facilità di manutenzione per quanto riguarda le modifiche. La funzione di stampa può essere facilmente “riparata”, per esempio, nel caso in cui non gestisca correttamente il formato A3 ?
  • Evolvibilità: si intende la facilità di manutenzione per quanto riguarda le evoluzioni successive. La funzione di stampa può essere facilmente aggiornata per stampare in modalità fronte-retro?
  • Riusabilità: la funzione di invio alla stampante del modello A è stata riusata per la stampa del modello B?
  • Portabilità:Il software può adattarsi automaticamente ai nuovi modelli di stampante o a un aggiornamento del software del driver della stampante?

Naturalmente, le caratteristiche sopra citate sono solo un esempio e non sono esaustive nella realtà. In più, per ognuna di esse è possibile avere una o più metriche di misurazione.

È opportuno fare riferimento anche all’Organizzazione Internazionale per la Standardizzazione (ISO) la quale ha sviluppato la ISO/IEC 25010 come modello per specificare i requisiti non funzionali. Il modello riportato di seguito illustra la categorizzazione dei requisiti non funzionali.

ISO Software Product Quality Model

Fig. 1 – Modello del prodotto software (dall’ISO/IEC 25010)

Perché la qualità del software è importante

Le motivazioni per ricercare costantemente la qualità del software sono diverse a seconda dei contesti in cui il software stesso è sviluppato e mantenuto: motivazioni economiche, di sicurezza, etiche, di performance, di reputazione, etc.

In alcuni ambiti particolarmente delicati, la qualità del software e i rigorosi processi di test possono evitare inconvenienti pericolosi.

A questo proposito si cita spesso il caso occorso nel mese di novembre 2000 presso un ospedale di Panama, quando 28 pazienti hanno ricevuto massicce overdosi di raggi gamma durante il trattamento per la cura di un tumore. Nei mesi che seguirono, cinque di questi pazienti morirono per avvelenamento da radiazioni e altri 15 ebbero gravi complicazioni. Cosa ha causato questa tragedia? Un software, sviluppato da una società statunitense, modificato poi da tecnici ospedalieri per calcolare le dosi modificate.

L’importanza dell’esperienza utente nei prodotti B2B: 5 difficoltà, 5 soluzioni.

I Costi della qualità

Per impostare e mantenere la qualità di un prodotto software è necessario prevedere un budget di costi che suddividiamo in:

  1. costi di prevenzione della difettosità;
  2. costi di anomalie, errori, non conformità rilevate nelle fasi di sviluppo e manutenzione del software (interni);
  3. costi di anomalie, errori, non conformità che avvengono in produzione (esterni).

I costi di prevenzione includono:

  • pianificazione della qualità;
  • revisioni tecniche formali;
  • tools/apparecchiature di test;
  • formazione.

I costi interni includono:

  • rielaborazioni per testare e riprodurre;
  • manutenzione e correzioni;
  • analisi della “difettosità”.

I costi esterni sono:

  • risoluzione del reclamo;
  • restituzione e sostituzione del prodotto;
  • supporto della linea di assistenza;
  • lavoro in garanzia.

Conclusioni: competenze e regole.

La qualità di un prodotto software dipende da diversi elementi:

  • dalla completezza del processo di sviluppo stesso;
  • dalla maturità dell’azienda che produce il software;
  • dalle competenze degli sviluppatori e dei tecnici;
  • dagli strumenti utilizzati.
Qualità del prodotto software

Fig. 2 – Ciclo di qualità del software

Il processo “globale” di digitalizzazione che pervade ormai ogni aspetto della nostra vita, sia personale che professionale, richiama a chi produce software la necessità di pianificare e implementare le politiche di qualità, indispensabili e convenienti per un risultato finale soddisfacente per il cliente e per il produttore.

La scommessa è quella di organizzare internamente in azienda, e anche acquisire esternamente, un mix di competenze e di regole da rispettare e aggiornare costantemente per sviluppare un software che abbia le giuste caratteristiche di qualità.

_ _ _

Vuoi iscriverti alla nostra newsletter?

Inserisci la tua mail qui sotto:

[mc4wp_form id=”999960023″]

[vc_row full_width=”stretch_row_content”][vc_column][callout_box callout_style=”background border” title_tag=”h3″ title=”” button_link=”url:https%3A%2F%2Ffocusinformatica.com%2Fcontatti%2F|title:CONTATTACI|target:%20_blank|” button_style=”solid” button_type=”rectangle”]

Vuoi collaborare con noi?

Scrivici: aiuteremo il tuo business![/callout_box][/vc_column][/vc_row]

FONTI:

https://www.iso.org/standard/35733.html

https://it.wikipedia.org/wiki/ISO/IEC_9126

https://www.chegg.com

https://it.wikipedia.org/wiki/Qualit%C3%A0_del_software

https://it.wikipedia.org/wiki/Ciclo_di_vita_del_software