5
- Il Capitolo 1 introduce il concetto di qualità e la sua evoluzione storica, il ruolo
svolto dalle norme ISO e in particolare dalla ISO 9126.
- Il Capitolo 2 è dedicato interamento al ciclo di vita del software, in esso
vengono descritti i processi tradizionali di ingegneria del software più rilevanti e
vengono introdotti principi delle Metodologie “Agile”. Ampio spazio è dedicato
a Scrum, la metodologia Agile utilizzata dal Team che ho affiancato nel periodo
di tirocinio.
- Il Capitolo 3 affronta il delicato tema dei requisiti, punto di partenza
fondamentale per giungere alla soddisfazione del Cliente. Nel dettaglio si
definiscono i requisiti funzionali e i requisiti non funzionali e si individua il
percorso grazie al quale si pianificano i test al fine di verificare il rispetto dei
requisiti stessi.
- Il Capitolo 4 introduce i Capability Maturity Model, e fornisce le necessarie
informazioni di base per comprendere l’organizzazione del Capability Maturity
Model Integration. In particolare ci si sofferma sulla Staged Rapresentation e
sulle process area del livello 2 e del livello 3.
- Il Capitolo 5 presenta Enginering SpA, il gruppo italiano di Information
Technology di cui ESEL fa parte, e descrive il processo produttivo
dell’organizzazione.
- Il Capitolo 6 introduce le caratteristiche peculiari del progetto pilota HDIS-RT
che partecipa al processo di certificazione CMMI® di livello 3. Vengono
esaminate le singole process area coinvolte in rapporto ai differenti livelli di
gestione di progetto individuati. Il lavoro si basa sul presupposto che è possibile
suddividere la gestione del progetto in tre livelli caratterizzati da differenti
scansioni temporali.
- Il Capitolo 7 espone una tecnica di Project Management utilizzata allo scopo di
verificare il rispetto del Piano di Lavoro grazie all’analisi di indici relativi ai
costi sostenuti, alla percentuale di lavoro eseguita e al tempo impiegato.
- Il Capitolo 8 espone, in sintesi, il risultato del mio lavoro.
6
1 Qualità e software
1.1 Il concetto di qualità e la sua evoluzione
Globalizzazione e internazionalizzazione sono termini abusati che hanno quasi
perso contatto con la realtà economica e sociale quotidiana; eppure ogni giorno le
aziende si “scontrano” con gli effetti e le turbolenze che tali fenomeni generano
nell’arena competitiva.
La continua evoluzione dei mercati e delle tecnologie, la crescente
consapevolezza acquisita dal cliente, complicano l’approccio al mercato di qualsiasi
azienda o ente organizzato con finalità pubbliche e private. Per essere competitivi
bisogna riuscire a soddisfare una clientela sempre più esigente, attenta al rapporto
qualità/prezzo, che ha la possibilità di scegliere tra una gamma di offerte sempre più
vasta. Ecco che il tema della qualità, sia del prodotto che del servizio, diviene centrale, e
su questo si gioca il futuro delle aziende.
Alcuni autori fanno risalire le origini della qualità come sistema, metodo e
strategia produttiva, all’epoca egizia, evidenziando che “la costruzione delle piramidi
prevedeva percorsi molto severi di controllo qualità, con pene durissime per coloro che
trasgredivano le procedure, mettendo a rischio il buon risultato dell’organizzazione del
lavoro […..] i blocchi di pietra, utilizzati per la costruzione, venivano contrassegnati in
modo da poter risalire alla cava di provenienza, al nome del caposquadra e ai suoi
collaboratori che avevano manipolato, tagliato, trasportato e posizionato le pietre
1
”.
Queste tecniche di controllo sembrano anticipare i criteri delle attuali ISO 9000, anche
se le conseguenze del mancato rispetto di tali regole erano punite molto più severamente
dagli egiziani che dai verificatori durante le visite ispettive odierne.
Senza ripercorrere la vasta gamma di definizioni che nel tempo filosofi e
studiosi hanno dato al termine qualità, partiamo da quella prospettiva di studio che
sposta l’attenzione dalle caratteristiche del prodotto, alle necessità, ai bisogni, alle
richieste esplicite e implicite del cliente, così come è stata concettualizzata da Juran.
Nella fase iniziale il valore aggiunto, derivante dalla adozione di procedure di
qualità, è strettamente legato alla realizzazione di prodotti senza difetti, e nello stesso
1
Gabassi P.G., Garzitto M.L., Perin G., Psicologia e qualità, Raffaello Cortina Editore, Milano, 2005,
pag. 5.
7
tempo, al controllo e alla correzione di disfunzioni produttive che rappresentano un
fattore di costo importante per la competitività dell’azienda.
Successivamente, il concetto di qualità si amplia, diventano importanti le
aspettative verificate, misurate o supposte dell’ipotetico cliente, ipotetico in quanto non
ci si limita a pensare al cliente già acquisito, l’attenzione si allarga anche sulle possibili
evoluzioni future. Questo anticipa e prevede il principio del miglioramento continuo e
quindi la necessità di assidui aggiornamenti e revisioni, sia del processo produttivo sia
delle propensioni al consumo dei fruitori.
Da un punto di vista economico, per le aziende fare qualità ha avuto significati
differenti. Dagli anni ‘50 fino agli anni ‘80, rappresentava un costo significativo che
portava benefici soprattutto in grandi e complesse organizzazioni, caratterizzate da
frequenti inefficienze, generate dalla veloce crescita e dal rapido sviluppo tecnico.
Progressivamente l’idea è mutata, fino a divenire una forma di investimento legata alla
competitività.
La qualità nelle organizzazioni nasce quindi dalla esigenza di ridurre gli errori, e
nel tempo si evolve verso una logica dell’eccellenza.
Uno dei maggiori artefici del nuovo sistema manageriale frutto di questa
corrente di pensiero è il professor Ishikawa per il quale: ”Praticare il Qc (Quality
control) significa sviluppare, progettare, produrre e fornire assistenza a un prodotto di
qualità che sia il più economico e il più utile possibile, e sempre soddisfacente per il
consumatore. Per raggiungere questo obiettivo è necessario che tutta l’azienda
partecipi al Qc e ne promuova le attività: i top manager, tutte le funzioni aziendali e
tutto il personale”
2
.
In questa definizione è possibile cogliere il passaggio dalla qualità del prodotto
alla qualità dell’organizzazione, dalla qualità come soddisfazione del cliente alla qualità
come eccellenza competitiva, un passaggio che permette di vedere il prodotto come la
risultante di un tutto organico e interattivo.
Inizialmente il sistema qualità diventa oggetto di definizione in campo militare,
e le prime norme militar-nucleari in tale direzione, hanno lo scopo di fornire linee guida
ai fornitori che devono essere in grado di assicurare qualità nelle forniture attraverso la
propria organizzazione e le proprie attività gestionali e tecniche. Nel giro di pochi anni
2
Ishikawa K., Che cos’è la qualità totale, Il Sole 24 ORE S.p.A., Milano, 1992, pag. 65.
8
il concetto di qualità viene recepito anche dall’industria civile; il quadro diviene
confuso perché molte aziende operano su più mercati geografici e si avverte l’esigenza
di standard riconosciuti anche fuori dai confini nazionali.
Nel marzo 1987, l’ISO (International Standard Organization) emette il set di
normative ISO 9000, armonizzando il più possibile gli standard esistenti in merito
all’assicurazione di qualità. L’adozione di norme internazionali ha promosso la
liberalizzazione e la razionalizzazione del commercio, l’eliminazione di barriere
tecniche che possono costituire ostacolo per i sistemi di comunicazione mondiale e le
tecnologie emergenti
Le norme emesse dall’ISO sono documenti che definiscono le caratteristiche di
un prodotto, processo o servizio, secondo lo “stato dell’arte”; sono il risultato del lavoro
di commissioni composte da esperti e rappresentati dei diversi settori economici
provenienti da paesi diversi, la cui osservanza non è obbligatoria.
L’adozione degli standard è dunque volontaria e non deve essere confusa con le
norme della legislazione comunitaria che prescrivono i requisiti minimi obbligatori dei
prodotti immessi sul mercato, a garanzia e protezione del consumatore.
Nel corso degli anni la normazione ha subito una sensibile evoluzione
concettuale, che l’ha portata ad abbracciare significati sempre più ampi. Da attività
legata inizialmente solo ai requisiti tecnici del prodotto, oggi ha per oggetto la
definizione dei processi, dei servizi e dei livelli di prestazione, intervenendo in tutte le
fasi di produzione e nelle attività di servizio. Non fanno eccezione i prodotti software.
9
1.2 Qualità del prodotto software
La ISO/IEC 9126
3
Software engineering – Product quality definisce prodotto
software: “l’insieme di programmi, procedure, regole, documenti, dati pertinenti
all’utilizzo di un sistema informatico”; la qualità di tale prodotto risulta intrinsecamente
legata alla qualità del processo di sviluppo e delle fasi produttive che lo individuano,
quindi deve essere il risultato di un processo pianificato e controllabile, caratterizzato da
stime realistiche grazie alle quali compiere verifiche di avanzamento e verifiche
consuntive.
Queste caratteristiche sono strettamente legate alla comprensione del dominio
applicativo, alla chiarezza con cui il problema è descritto, alla correttezza con cui i
requisiti sono raccolti, all’esperienza delle persone che individuano la soluzione e la
implementano.
Ma come si valuta se il prodotto software è un prodotto di “qualità”? Ovvero se la
soluzione adottata è quella giusta sia in termini di proprietà intrinseche sia in termini di
ciò che è percepito dal Cliente?
E’ fondamentale stabilire che la qualità complessiva è data dalla combinazione di:
- Qualità Percepita o in uso, che esprime l’efficacia e l’efficienza con cui il
software serve le esigenze dell’utente ed è correlata alla percezione diretta
dell’utente.
- Qualità Interna o intrinseca, che esprime la misura in cui il codice software
possiede una serie di attributi statici, indipendentemente dall’ambiente di utilizzo
dell’utente.
- Qualità Esterna, esprime il comportamento dinamico del software nell’ambiente
d’uso.
Secondo il modello proposto dalla norma ISO 9126 le caratteristiche che
rappresentano la qualità esterna ed interna del prodotto software sono raggruppabili in 6
caratteristiche e in 21 sottocaratteristiche.
3
ISO/IEC 9126, ISO9126 – Information Tecnology – Software Evaluation, Qualità Characteristics anh
Guidelines for their Use, 1991
10
Figura 1
11
Funzionalità, un software è considerato funzionale nella misura in cui le procedure in
esso contenute coincidono con le funzioni richieste. Rappresenta quindi la capacità di
soddisfare i requisiti funzionali espliciti ed impliciti del cliente.
Affidabilità, un software è considerato affidabile quando è in grado mantenere il livello
di prestazioni richiesto sotto determinate condizioni e per un determinato periodo di
tempo.
Usabilità, un software è considerato usabile in proporzione alla facilità con cui gli utenti
operano per sfruttare appieno le funzionalità che il software realizza.
Efficienza, esprime il rapporto tra il livello delle prestazioni del prodotto e la qualità di
risorse impiegate per raggiungere tali prestazioni.
Manutenibilità, facilità di manutenzione correttiva ed evolutiva, ovvero l’attitudine del
software ad essere modificato a costi accessibili ed in tempi rapidi.
Portabilità, facilità di trasferimento da un ambiente ad un altro.
L’ultima versione della norma definisce anche le possibili metriche che
consentono di misurare ognuna delle sottocategorie.
La Qualità in Uso è rappresentata da 4 caratteristiche che individuano il punto di
vista dell’utente.
Figura 2
Efficacia, la capacità di supportare un utente nel raggiungere i suoi obiettivi con
accuratezza e completezza in un dato contesto.
Produttività, la capacità di supportare un utente nello spendere l’appropriata quantità di
risorse in relazione all’efficacia dei risultati da raggiungere.
Soddisfazione, la capacità di soddisfare un utente in un dato contesto d’uso.
12
Sicurezza, la capacità di raggiungere accettabili livelli di rischio per le persone,
l’ambiente di utilizzo, le attività dell’utilizzatore, in un dato contesto d’uso.
Queste le principali caratteristiche che dovrebbero essere osservate per ottenere
un prodotto software di qualità. Ovviamente non è possibile massimizzarle
contemporaneamente tutte, e la qualità del prodotto finito dipenderà dalle scelte fatte,
dai compromessi accettati e soprattutto dai processi a cui l’organizzazione ha dato vita e
che sono determinanti per il successo del prodotto finito.
1.3 Qualità dei processi software
Scopo dell’ingegneria del software, secondo Brooks
4
, è quello di elaborare,
distillare e rendere ripetibili le esperienze maturate nell’organizzazione produttiva in
modo da minimizzare i rischi. Si tratta di individuare le best practice che consentono di
porre in essere processi in grado di realizzare una produzione più efficiente e di
ottenere un prodotto rispondente ai requisiti di qualità attesi. La qualità dei processi
software è determinata, come per tutti i processi, dall’insieme di efficienza ed efficacia:
- Efficacia, intesa come rapporto tra la quantità di prodotti e/o servizi erogati e
le risorse impiegate;
- Efficienza, intesa come grado di soddisfazione dei bisogni e dei desideri del
cliente.
La qualità del processo è quindi strumentale alla controllabilità e
all’organizzazione del processo stesso. Un processo ben definito, le cui attività siano
documentate, tracciate e misurate è un mezzo estremamente efficace per dimostrare le
capacità e le competenze del Fornitore e il livello di controllabilità del progetto, e
consente di creare con il Cliente un rapporto trasparente di collaborazione e quindi un
grado tale di confidenza che è elemento vincente per il controllo in corso di produzione.
Per processo software si intende il processo attraverso il quale: sono definiti i
requisiti del Cliente, i requisiti sono tradotti in progetto, il progetto viene tradotto in
codice, il codice viene verificato, testato, documentato e rilasciato all’utente.
4
Brooks F. B., “No Silver Bullet: Essente and Accidents of Software Engineering”, IEEE Computer,
April 1987.
13
Figura 3
Vedremo nel prossimo capitolo che questa definizione è strettamente collegata
con il ciclo di vita a cascata del prodotto software, ciclo criticato da più parti per la
rigidità che caratterizza i sottoprocessi.
Più ampia e attuale è la definizione di processo software come “insieme di
persone, strutture organizzative, regole, metodi e strumenti, utilizzati o creati
appositamente per concepire, sviluppare, mettere a servizio e far evolvere un prodotto
software”
5
che amplia quanto identificato dalla ISO/IEC 9216. In tal modo si evidenzia
il carattere industriale del processo software, che ha processi primari e processi di
supporto necessari a creare le condizioni indispensabili affinché i primi si svolgano nel
miglior modo possibile. E’ necessario inoltre sottolineare che l’apporto umano in
termini di competenze ed esperienze è determinante più che in ogni altro processo
industriale finalizzato a un prodotto. Per gli aspetti relativi al processo software si
rimanda a specifici testi nei quali si pone l’attenzione tanto agli aspetti tecnologici che a
quelli umani
6
.
5
Campanai M., Cignoni G.A., La maturità dei processi software,
http://www.di.unipi.it/~giovanni/CV/Pubb/GAC-2001-QAICQ-Doc.pdf
6
Fuggetta A., Il processo Software, aspetti strategici ed organizzativi, il CARDO editore, 1995.
Pressman R.S., A Manager’s Guide to Software Engineering, Nc Graw Hill, 1993