Scrivere un software di qualità con le giuste regole

Lo sviluppo software e firmware ha assunto negli ultimi anni un ruolo sempre più critico e delicato nella realizzazione dei nuovi prodotti tecnologicamente avanzati. Ciò che prima era demandato all’uomo, ora è sempre più implementato a livello macchina per semplificare l’intervento umano nella gestione di tutte quelle azioni ripetitive, ma al tempo stesso delicate. In particolar modo, quando si parla di macchine legate alla sicurezza, o comunque ambienti critici come l’automotive, il trasporto aereo, ferroviario, etc. è necessario poter dotare i prodotti di un software con i più elevati standard qualitativi.

Introduzione

Di pari passo allo sviluppo ed alla diffusione del software è nata la branca ingegneristica denominata “Ingegneria del Software”, ossia la disciplina che si occupa del processo di produzione dei sistemi software con particolare attenzione alle metodologie di sviluppo e verifica degli stessi. Un aspetto fondamentale che viene introdotto con l’ingegneria del software è la qualità del sistema sviluppato. Il concetto di qualità del software non è semplice, ma è complesso in quanto racchiude differenti aspetti che il sistema software finale deve soddisfare sia dal punto di vista delle funzionalità che dal punto di vista della struttura, o meglio, architettura del software stesso. Le svariate metodologie di sviluppo del software, dette anche cicli di vita, sono tra loro equivalenti e ognuna di esse presenta degli aspetti peculiari che la rendono maggiormente applicabile in determinati contesti soprattutto dove si predilige il riuso del codice o facilitare la manutenibilità del prodotto finale.

Il rapido aumento del ricorso al software sta concentrando sempre più l'attenzione sull'importanza critica di garantire l'affidabilità. Gli studi e le ricerche nel campo dell’Ingegneria del Software hanno portato a definire dei “parametri di qualità” che maggiormente rispecchiano in maniera significativa cosa si intende per prodotto software di qualità. Un ruolo fondamentale è occupato anche dalle tecniche di misura di questi parametri di qualità affinché i parametri possano essere misurabili, cioè quantificabili, e confrontabili. I principali obiettivi dei parametri di qualità sono la produzione di un software che, oltre alle garanzie del corretto funzionamento, possa essere (Figura 1):

  • testabilità: ossia bisogna ridurre al minimo le parti di software non raggiungibile e tutto deve poter essere sollecitato per essere provato nel corretto funzionamento;
  • manutenibilità: cioè al di là del progettista, anche soggetti diversi possono facilmente comprendere il codice del programma e modificare per introdurre migliorie. Questo vuol dire che il codice deve essere scritto in modo chiaro, con l’aggiunta di commenti;
  • portabilità: cioè deve poter girare su diversi ambienti. Questa è una caratteristica soprattutto dei software che girano su architetture x86 o x64, mentre nella maggior parte dei contesti firmware, il software si adatta all’architettura del microcontrollore di fatto riducendo notevolmente la portabilità a vantaggio delle prestazioni.

Figura 1: Parametri di qualità del software

Tutti questi aspetti, se correttamente implementati, possono consentire la corretta gestione del ciclo di vita del software, in particolar modo quando questo deve essere sviluppato o modificato successivamente.

Il modello di sviluppo a V

L'Ingegneria del Software definisce differenti modelli di sviluppo del software, che tra di loro si differenziano per alcune peculiarità e dunque sono preferibili in determinati contesti progettuali o meno. I modelli universalmente riconosciuti sono:

  • modello a cascata
  • modello a V

L'utilizzo del modello a cascata (waterfall model) fornisce benefici per quanto riguarda la definizione delle attività e del controllo degli obiettivi. Al contempo, fornisce anche degli effetti collaterali nella gestione di progetti di grandi dimensioni e/o complessità poiché non è contemplata la fase finale di integrazione dei lavori svolti da differenti team di lavoro. L'assenza di questa fase di integrazione rende difficoltoso portare a termine il lavoro e dunque convergere sul risultato finale.

Il modello a V (riportato in Figura 2) per il ciclo di sviluppo è un modello universalmente riconosciuto per la sua versatilità e la sua corretta combinazione tra la fase discendente che parte dalla definizione, fino alla codifica e la parte ascendente che prevede tutte le fasi di verifica secondo la suddivisione: modulo, componente, sottosistema e sistema. La "forza" di questo modello è la relazione evidenziata tra le fasi di definizione e di testing che sono strettamente legate tra loro anche se in due rami differenti del modello. Infatti, tutte le fasi di testing servono a confermare le relative fasi di definizione e codifica delle parti del prodotto. [...]

ATTENZIONE: quello che hai appena letto è solo un estratto, l'Articolo Tecnico completo è composto da ben 1891 parole ed è riservato agli ABBONATI. Con l'Abbonamento avrai anche accesso a tutti gli altri Articoli Tecnici che potrai leggere in formato PDF per un anno. ABBONATI ORA, è semplice e sicuro.

Scarica subito una copia gratis

Scrivi un commento

Send this to a friend