Sviluppo Software: qualità del codice

Coding

Softwarearticolo

Quali sono gli standard di qualità in campo software?

Il rispetto degli standard di qualità è di fondamentale importanza per la maggior parte delle aziende al giorno d’oggi. Che si tratti di un’organizzazione che vende prodotti o di una che vende servizi, è importante che adempi a tali standard in quanto ciò significa aderire a principi che seppur generici garantiscono il controllo dell’operatività ed evidenziano eventuali punti di forza e di debolezza col fine di determinare l’efficacia e l’efficienza del tempo speso nel lavoro.

Nonostante si stia parlando di principi comuni a moltissimi settori in cui operano le aziende ad oggi, sembra che il rispetto di questi standard sia riconosciuto maggiormente per organizzazioni che operano in ambiti tradizionali industriali o amministrativi.

Negli ultimi anni, però, le cose sono cambiate a causa della presenza sempre più intensa dell’Information Technology in tutti i settori e sono nati veri e propri standard “immateriali” per i software e, in particolare, per i database, servizi IT, misure di qualità e documenti.

 

Standard ISO: di cosa stiamo parlando nel campo software

L’Organizzazione Internazionale per la Normazione (ISO – International Organization for Standardization) si occupa di sviluppare standard, normative e linee guida utili a gestire la qualità, a condurre i processi aziendali, a migliorare l’efficacia e l’efficienza nella produzione ed erogazione di un prodotto o di un servizio per le aziende. Attualmente raccoglie l’adesione di circa 164 Paesi di tutti i continenti. In Italia l’ISO è rappresentata dall’UNI, ossia Ente Italiano di Unificazione il cui sito web racchiude tutti gli standard in essere nel nostro Paese.

La conoscenza degli standard e l’adempimento ad essi è sicuramente un valore aggiunto per l’azienda in quanto rappresentano uno strumento di raccordo condiviso tra modelli astratti e realtà concrete, concetti e misure, spunto di dialogo tra esperti tradizionali e innovatori. Inoltre, gli standard consentono di arrivare a un punto d’incontro tra cliente, committente e fornitore che, quasi sempre, si fa fatica a trovare in questo tipo di rapporto.

Dal 1946 l’ISO ha pubblicato oltre 22.000 standard in cui hanno partecipato oltre 750 TC-Technical Committee e gruppi specifici, riguardanti i molteplici settori economici. Esempi di technical committee sono:

– ISO/TC 146 sulla qualità dell’aria,

– ISO/TC 34 es. ISO 22000 sulla gestione e la salvaguardia del cibo,

– ISO/TC 37 es. 639 sui codici dei linguaggi,

– ISO/TC 159/SC4 per quanto riguarda la Human System Interaction,

– ISO/TC 180 sull’energia solare,

– ISO/IEC JTC1 Join Technical Commette Information Technology,

– ISO/TC 268 sostenibilità delle città e regioni

questi ultimi due sono stati sviluppati specificamente per essere da supporto per le Smart Cities.

All’interno di tutta la gamma di standard e di comitati che si sono formati negli anni, di cui i precedenti rappresentano una minima parte, è possibile citare anche sottocomitati (SC) o working group (WG) in ambito Information Technology che vedono la partecipazione di esperti italiani:

– SC 7 Software and System engineering (ad esempio ISO/IEC 25000 sulla qualità del prodotto software, dati e servizi IT),

– SC 27 Tecniche di sicurezza IT (ad esempio ISO/IEC 15408 criteri di valutazione per la sicurezza IT e ISO/IEC 27001 gestione sicurezza delle informazioni),

– SC 35 Interfacce utente (ad esempio ISO/IEC 30071-1 per lo sviluppo di interfacce accessibili di prodotti e servizi),

– SC 38 Cloud Computing,

– SC 41 Internet of Things,

– SC 42 Artificial Intelligence (*) – (ad esempio ISO/IEC FDIS 20546 Big data: panoramica e vocabolario).

 

Nella gamma di standard della sottocommissione SC 7 “Software e System engineering”, si inserisce la serie ISO 25000 che riguarda la qualità del prodotto software, dati e servizi, curati nell’ISO dal WG6 (qualità del prodotto software e di sistema) e in Italia nell’ambito della Commissione “Ingegneria del software” in sede UNINFO, ossia l’Ente federato all’UNI per le tecnologie informatiche. Quest’ultimo fa da intermediario tra le imprese, le amministrazioni italiane e gli enti di standardizzazione internazionali ed europei.

 

Alcuni esempi di Working Group (WG) a cui hanno partecipato esperti italiani sono:

WG 6 Software Product and System Quality:
– ISO/IEC 250nn SQuaRE Series (25000-25099)
– CIF for Usability Reports (25060-25069) Joint TC 159/SC4 WG28
– ISO/IEC TR 12182 Categorization of IT systems and software
– FSM SG (ISO/IEC 14143 FSM; ISO/IEC 20926 Ifpug FSM; etc.)

WG 7 Life cycle management:
– ISO/IEC 12207 Software Live Cycle processes
– ISO/IEC CD 24748-3 Guidelines for the application of ISO/IEC/IEEE 12207

WG 10 Process assessment:
– ISO/IEC/IEEE 12207 Software life cycle processes
– ISO/IEC 15288 System life cycle processes

 

Dunque, esperti nazionali e internazionali hanno messo a disposizione le loro conoscenze ed esperienze nello sviluppo di questi standard con lo scopo di valorizzare le aziende che adottano i giusti processi aziendali, accademici e amministrativi in diversi campi e a livello mondiale. Il lavoro ha visto continui confronti tra gli esperti con votazioni nazionali e internazionali seguendo i metodi di sviluppo degli standard propri delle modalità ISO ed è stato strutturato in working group. La condivisione degli sviluppi è supportata dalla catalogazione degli standard per settore di competenza e mira a favorire l’accuratezza e l’aggiornamento di questi ultimi.

Ogni volta che c’è un incontro tra gli esperti, si votano e si approvano a maggioranza (Ballot) gli sviluppi degli standard ed eventuali modifiche ai testi draft. In ogni votazione ciascun Paese ha un voto. In particolare, l’iter da seguire prevede a grandi linee le seguenti fasi:

– NP (New proposal)
– WD (Working Draft)
– CD (Committee Draft)
– DIS (Draft IS)
– FDIS (Final Draft IS)
– PRF (Proof of a new IS)
– IS (International Standard)

I principi su cui ogni modifica o sviluppo di una norma deve basarsi sono:

competenza,

condivisione,

trasparenza,

collaborazione,

volontarietà,

democraticità.

 

La partecipazione al lavoro dell’ISO sugli standard porta con sé numerosi vantaggi tra cui il supporto alla ricerca e l’apprendimento di know-how specifici grazie anche alla contaminazione tra menti esperte in ogni campo in cui gli standard si inseriscono. La conoscenza approfondita e la possibilità di influire sullo sviluppo degli standard rappresentano le migliori prassi delle imprese, del Paese di appartenenza, dell’EU e dei vari continenti.

 

ISO 25000: qualità del software

Lo standard ISO/IEC 25010 “System and software quality models” , pubblicato nel 2011, definisce le caratteristiche di qualità del prodotto software. Il modello è complementare con il modello di qualità dei dati ISO/IEC 25012.

Lo standard non agisce sulle proprietà funzionali del software bensì su quelle di qualità, ossia su “come” questo opera. Lo standard è composto da otto caratteristiche suddivise in 31 sotto-caratteristiche come nella seguente tabella.

Qualita'software

 

Questo standard internazionale definisce un modello generale di qualità dei processi che contribuisce a migliorare la qualità del prodotto software e della documentazione. Di conseguenza, tutto ciò andrà a migliorare la qualità in uso del sistema. In questo modo la qualità in uso può fornire feedback per migliorare il prodotto e la valutazione della qualità del prodotto può fornire feedback per migliorare il processo.

La qualità è distinta in base a delle categorie che lo standard definisce e sono:

qualità interna: che riguarda le proprietà “statiche/strutturali” del software verificabili con analizzatori o ispezioni;

qualità esterna: che riguarda le proprietà “dinamiche/comportamentali” del software verificabili in esecuzione in ambienti simulati;

qualità in uso: che riguarda l’impatto del software sul campo verificabile nei contesti d’uso in ambienti simulati o reali, tenendo anche conto della partecipazione degli utenti e della user-experience.

 

Lo standard è attualmente in revisione sistematica quinquennale presso l’ISO a causa delle evoluzioni tecnologiche in corso. Inoltre, le caratteristiche che richiama questo standard non hanno alcuna priorità definita in quanto per ognuna è possibile richiamare competenze specifiche, strumenti, metodi e tecniche.

 

ISO 25000: qualità del codice

Il modello di qualità in uso stabilito nell’ISO/IEC 25010 “System and software quality models” (quality in use model) è applicabile sia durante le simulazioni e, quindi, prima che il prodotto entri in commercio e sia nel momento in cui il prodotto è in esercizio.

Per la qualità in uso, che è trattata in maniera separata dal prodotto software ma sempre all’interno dello stesso standard, sono classificati in cinque caratteristiche: efficacia, efficienza, soddisfazione, assenza di rischio e di copertura del contesto.

Dalla interrelazione di elementi quali software, sistema, dati e servizi IT dipende la qualità in uso definita da questo standard. Inoltre, l’adattamento del modello della qualità in uso ai servizi include in particolare, nella copertura del contesto, la copertura degli SLA-Service Level Agreement.

 

ISO 25000: qualità e sicurezza dei dati

Lo standard ISO/IEC 25012 (data quality model), pubblicato nel 2008, e riconfermato nel 2019, definisce le caratteristiche di qualità dei dati e rappresenta una linea guida per le parti interessate alla qualità dei dati e non solo, anche alla manutenzione, con riferimento ai responsabili del software e dei servizi.

Questo standard internazionale è divenuto nel 2014 norma nazionale con la sigla UNI CEI ISO/IEC 25012Modello di qualità dei dati“. Sviluppato in ambito ISO ha visto il contributo della Commissione Ingegneria del Software dell’UNINFO.

In questo caso gli attributi di qualità si riferiscono a 15 caratteristiche distinte tra:

inerenti: accuratezza, attualità, coerenza, completezza, credibilità

inerenti e dipendenti dal sistema: accessibilità, comprensibilità, conformità, efficienza, precisione, riservatezza, tracciabilità

dipendenti dal sistema: disponibilità, portabilità, ripristinabilità.

Lo standard è impiegato in un quadro integrato di qualità del software, processi e servizi con lo scopo di prevenire la qualità di un “Data Lake” che si caratterizza per l’armonizzazione semantica di informazioni e per un efficiente interscambio di dati.

Questo modello definisce la qualità di tutti i dati strutturati di un sistema informatico (es. stringhe di caratteri, testi, numeri, immagini, suoni, ecc.), valori assegnati e relazioni tra dati (nello stesso sistema o tra sistemi diversi). In questo modo sono individuate le azioni necessarie da compiere volte a migliorare eventuali aspetti procedurali dei dati non automatizzati.

Lo standard viene applicato per:

– definire i requisiti di qualità del software e del sistema nello sviluppo/manutenzione;

– valutare i requisiti di qualità dei dati nella produzione, acquisizione e integrazione;

– migliorare la qualità dei dati da esporre in modalità “Open data“;

– individuare i dati che necessitano prioritariamente di un trattamento automatico (o manuale) di correzione;

– descrivere un’ontologia di un sistema informativo-informatico;

– identificare i criteri di assicurazione di qualità, utili anche per re-ingegnerizzazioni, assessment e miglioramenti dei dati;

– contribuire alla qualità degli “immissari” e “affluenti” di un “Data Lake”;

– esaminare la conformità dei dati alle legislazioni o requisiti vigenti;

– disporre di elementi concreti per stimare i costi della non qualità dei dati e attuare miglioramenti organizzativi.

 

ISO 25000: software certificato per servizi IT

Lo standard ISO/IEC TS 25011 (service quality models) è stato pubblicato nel 2017 ed è strettamente collegato ad altri modelli di qualità della serie ISO 25000 e influenza la qualità dell’intero sistema.

Le caratteristiche che lo standard valuta sono otto (con 26 sotto-caratteristiche):

– Idoneità

– Usabilità

– Sicurezza

– Affidabilità

– Tangibilità

– Capacità di risposta

– Adattabilità

– Manutenibilità

I servizi a cui ci si riferisce in questo caso sono:

– servizi completamente automatici forniti da un sistema IT;

– servizi forniti da persone che utilizzano un sistema IT;

– servizi misti di vario tipo (tecnici e di supporto).

Più concretamente, nel mondo dell’IT sono servizi consulenze, integrazioni di sistemi, sviluppo software, manutenzione dell’hardware, fornitura di dati e informazioni e così via.

 

Le certificazioni di qualità ISO/IEC 25000

La certificazione di qualità ISO/IEC 25000 vede il coinvolgimento di un ente terzo accreditato che idealmente si basa su rapporti di laboratori di misura accreditati.

Per ottenere la certificazione è necessario non solo un’analisi documentale, ma anche la ri-esecuzione del software e il controllo delle banche dati, tenendo conto dei requisiti che lo stesso software deve possedere e delle regole di business dei dati.

Le fasi per arrivare a una certificazione si susseguono in questo modo:

rispondenza del prodotto a requisiti espliciti;

– buoni risultati delle attività di valutazione;

– capacità di correzione delle anomalie intercettate;

– disponibilità di skill adeguate per seguire i rilievi pervenuti;

– preesistenti certificazioni ISO 9001 e ISO/IEC 27000.

 

La certificazione può riguardare il prodotto software (In tal caso sarà indicato l’ISO/IEC 25010), il contenuto dei dati di una banca dati (con l’indicazione ISO/IEC 25012) o una combinazione di software, dati e eventualmente anche servizi (con l’indicazione ISO/IEC 25000).

 

Ottenere una certificazione della serie ISO 25000 apporta numerosi vantaggi all’azienda tra cui:

– assicurare che i dati siano affidabili e di alta qualità;

– assicurare che il software rispetti i requisiti funzionali;

– migliorare la documentazione e l’eventuale manuale d’uso con diminuzione di costi successivi;

– ottenere il riconoscimento formale e la credibilità di fronte al mercato;

– contribuire alla maggiore sicurezza alle applicazioni “mission critical” e “life critical“, salvaguardando i rischi riguardanti l’ambiente, l’economia, la salute.