ISO/IEC
12207
Lo standard
internazionale
per
il ciclo di vita
del software
Per quale motivo è nato?
 Il software con il passare del tempo è
diventato parte integrante della vita di
tutti i giorni per milioni di persone.
SW
Procedure, metodi
strumenti, ambienti
per lo sviluppo SW
?
? ?
management e
ingegnerizzazione
Per quale motivo è nato?
C’era la necessità di
“parlare la stessa lingua”
per creare e gestire software
Procedure, metodi
strumenti, ambienti
per lo sviluppo SW
migrazione
Modello
comune
Quando è nato?
 Nel 1989, un comitato tecnico (JTC1)
costituito due anni prima dall’ISO e
dall’IEC, comincia lo sviluppo di uno
standard per il ciclo di vita di un software
 1 Agosto 1995: viene pubblicato lo standard
internazionale ISO/IEC 12207.
 Al progetto hanno partecipato 17 nazioni
(anche l’Italia)
ISO/IEC 12207
 Lo standard copre il ciclo di vita di un
software, dal momento della concretizzazione
delle idee fino al suo ritiro dal mercato.
 L’architettura del software viene costituita
tramite una serie di processi e di relazioni
tra essi.
 La derivazione di un processo da un altro è
basata su due principi fondamentali:
 Modularità
 Responsabilità
Modularità
accoppiamento
coesione
 Ogni processo è un modulo a se stante ed è
dedicato ad una singola funzione.
Responsabilità
 Ogni processo viene eseguito sotto la
supervisione di un gruppo di lavoro.
 Ogni gruppo di lavoro ha determinate
responsabilità.
 Un gruppo di lavoro può supervisionare più
di un processo, ma difficilmente avviene il
viceversa.
(più gruppi di lavoro supervisionano lo
stesso processo)
I processi
 I processi nel ciclo di vita del software
sono raggruppati in tre classi principali:
 Processi primari
 Processi di supporto
 Processi organizzativi
 Oltre alle tre classi di processi
fondamentali, esiste anche un processo
“speciale”, detto processo di tailoring
Suddivisione dei processi
 Ogni processo è suddiviso in diverse
attività, ed ogni attività a sua volta in
vari compiti secondo uno schema gerarchico
Processo
Attività 1
Compito 1
…
Attività 2
Compito n
…
Compito 1
Attività n
…
Compito n
Processi primari (5)
 5 processi base sviluppati dalle parti
principali coinvolte nel ciclo di vita del
software, ovvero:





l’acquirente
il fornitore
lo sviluppatore
l’utente
il manutentore
 Provvedono a gestire le funzioni principali
durante il ciclo di vita.
Processi primari (5)
 Acquisizione (5.1)
 5 attività, suddivise in 23 compiti
 Fornitura (5.2)
 7 attività, suddivise in 24 compiti
 Sviluppo (5.3)
 13 attività, suddivise in 55 compiti
 Esercizio (5.4)
 4 attività, suddivise in 9 compiti
 Manutenzione (5.5)
 6 attività, suddivise in 24 compiti
Acquisizione (5.1)
 Contiene le attività e i compiti
dell’acquirente.
 Il processo comincia con la definizione
della necessità di acquistare un sistema, un
prodotto o un servizio software.
 Il processo continua con la preparazione di
una richiesta di preventivo, la selezione di
un fornitore, il management del processo di
acquisizione e termina con l’accettazione
del sistema proposto.
Acquisizione (5.1)





Definizione delle necessità
Richiesta di un preventivo
Preparazione e aggiornamento del contratto
Monitoraggio delle attività del fornitore
Accettazione del prodotto
Fornitura (5.2)
 Contiene le attività e i compiti del
fornitore del prodotto software.
 Il processo inizia con la contrattazione con
l’acquirente per il prodotto o servizio SW
 Il processo continua con la determinazione
delle procedure e delle risorse necessarie
per gestire il progetto.
 Il processo termina con la consegna del
sistema (prodotto o servizio) all’acquirente
Fornitura (5.2)







Inizializzazione
Preparazione di un preventivo
Contratto
Planning
Esecuzione e controllo
Revisione e valutazione
Consegna e completamento
Le prime due attività sono svolte prima
dell'accordo mentre le ultime 5 dopo l'accordo.
Sviluppo (5.3)
 Contiene le attività e i compiti dello
sviluppatore del software
 Il termine sviluppo è riferito sia allo
sviluppo di nuovo software sia a modifiche
di software già esistente.
 Il processo di sviluppo può essere inteso
come:
 sviluppo di un prototipo del sistema
 studio dei requisiti e design di un prodotto
 effettiva produzione di un prodotto
Sviluppo (5.3)









implementazione del processo
analisi dei requisiti del sistema e del sw
design dell’architettura del sistema e sw
design dettagliato del software
codifica e testing del software
integrazione del sistema e del software
test di qualità del sistema e del software
installazione del software
supporto all’accettazione del software
Esercizio (5.4)
 Contiene le attività e i compiti di chi
utilizza il software: l’utente finale.
 Consiste nella conduzione delle operazioni
richieste e operate dagli utenti del
software e nella gestione delle stesse.
 Comprende anche un’iniziale fase di collaudo
per verificare l'uso del prodotto software
operante nell'ambiente per il quale è stato
richiesto.
Esercizio (5.4)




Implementazione del processo
Testing operazionali
Operazioni sul sistema
Supporto all’utente
Manutenzione (5.5)
 Contiene le attività e i compiti del
manutentore del sistema.
 Il processo viene pianificato in modo che la
conduzione delle attività, di gestione delle
modifiche e di analisi del tipo di
manutenzione (adattativa, correttiva o di
emergenza) sia il più possibile semplice e a
costi minimi.
Manutenzione (5.5)
 Lo scopo è quello di modificare il software
già esistente mantenendone l’integrità.
 Per apportare effettivamente le modifiche
al software, viene invocato il processo di
sviluppo (5.3).
 Il processo termina con il ritiro del
sistema.
Manutenzione (5.5)






implementazione del processo
analisi del problema e delle modifiche
implementazione delle modifiche
revisione/accettazione della manutenzione
migrazione
ritiro del software
Processi di supporto (6)
 I Processi di Supporto e di Controllo
supportano gli altri processi del ciclo di
vita del software e contribuiscono al
successo e alla qualità di un progetto
software.
 Un processo di supporto può essere richiesto
da uno dei cinque processi primari o da un
altro processo di supporto.
Processi di supporto (6)
 Documentazione (6.1)
 4 attività, suddivise in 7 compiti
 Gestione della configurazione (6.2)
 6 attività, suddivise in 6 compiti
 Assicurazione di qualità (6.3)
 4 attività, suddivise in 16 compiti
 Verifica (6.4)
 2 attività, suddivise in 13 compiti
Processi di supporto (6)
 Validazione (6.5)
 2 attività, suddivise in 10 compiti
 Revisione congiunta (joint review) (6.6)
 3 attività, suddivise in 8 compiti
 Revisione (audit) (6.7)
 2 attività, suddivise in 8 compiti
 Risoluzione del problema (6.8)
 2 attività, suddivise in 2 compiti
Documentazione (6.1)
 Si occupa della registrazione di tutto ciò
che è stato prodotto nel ciclo di vita del
software: dalle informazioni ai requisiti
del sistema, dagli input agli output del
prodotto.
 I documenti relativi a questo processo
presentano tutte le attività relative alla
pianificazione, alla progettazione, allo
sviluppo, alla manutenzione e alla gestione
totale del processo produttivo.
Documentazione (6.1)




implementazione del processo
progetto e sviluppo della documentazione
produzione della documentazione
manutenzione della documentazione
Gestione della
configurazione (6.2)
 Prevede attività e compiti relativi
all'applicazione di procedure tecniche ed
amministrative per assicurare la
completezza, la consistenza e la correttezza
degli elementi software.
 In questo processo bisognerà identificare,
registrare, analizzare e verificare i
possibili cambiamenti dell'elemento software
specificando approvazioni e rifiuti
(controllo della configurazione).
Gestione della
configurazione (6.2)
 Questo processo fornisce un meccanismo per
identificare, controllare e tracciare le
versioni di ogni elemento del software.
 In molti casi le versioni del software
precedentemente prodotto e ancora in uso
devono subire manutenzione e devono essere
anche controllate in maniera accurata.
Gestione della
configurazione (6.2)






implementazione del processo
identificazione della configurazione
controllo della configurazione
documentazione della configurazione
valutazione della configurazione
gestione delle versioni e dei rilasci
Assicurazione di qualità
(6.3)
 Ha lo scopo di prevenire il presentarsi dei
problemi, di individuarli quando si
presentano, di identificarne le cause e di
trovarvi rimedio.
 L'assicurazione della qualità comprende
tutte le attività del management, il quale
determina le politiche per la qualità, gli
obiettivi e le responsabilità, e le
implementa attraverso la pianificazione, il
controllo e il miglioramento della qualità.
Assicurazione di qualità
(6.3)
 L'assicurazione di qualità riguarda sia il
prodotto sia il processo:
 Il prodotto deve essere conforme ai requisiti ed
aderire ai vari piani di progetto e sviluppo al
fine di poter possedere gli specificati attributi
di qualità.
 Il processo, oltre ad essere conforme a quanto
specificato ed aderire alla pianificazione, deve
rispettare gli standard utilizzati per la sua
implementazione.
 Per maggiori informazioni vedi ISO 9001
Assicurazione di qualità
(6.3)




implementazione del processo
assicurazione qualità del prodotto
assicurazione qualità del processo
assicurazione del sistema qualità
Verifica (6.4)
 E’ costituito da attività e compiti atti a
determinare se i requisiti del prodotto,
sistema o servizio software sono completi e
corretti e se essi sono soddisfatti.
 Tale processo deve essere integrato nei
processi primari di sviluppo, fornitura e
manutenzione.
 Consiste nella verifica di processi,
requisiti, design, codifica, integrazione e
documentazione.
Verifica (6.4)
 implementazione del processo
 verifica
Validazione (6.5)
 Serve a determinare se il prodotto finale
offerto soddisfa l'utilizzo per cui è stato
creato.
 La validazione non è un processo da eseguire
al termine della produzione, ma esso può
essere completato nelle prime fasi dello
sviluppo.
 Questo processo solitamente viene invocato
al momento dell’attività di supporto
all’accettazione del software (5.3.13).
Validazione (6.5)
 implementazione del processo
 validazione
Revisione congiunta
(joint review) (6.6)
 In questo processo si procede alla
pianificazione delle revisioni congiunte tra
acquirente e fornitore che avverranno sulla
base di un calendario di incontri fissato
all'inizio del progetto.
 In una joint review, il fornitore presenta
all’acquirente il progresso nelle operazioni
e tutta la documentazione finora prodotta,
per la valutazione e l’approvazione.
Revisione congiunta
(joint review) (6.6)
 implementazione del processo
 revisione della gestione del progetto
 revisione tecnica del progetto
Revisione (audit) (6.7)
 Processo relativo alla determinazione della
verifica della conformità ai requisiti, ai
piani ed ai contratti stabiliti.
 Il processo di revisione dovrà essere
condotto da personale che non ha nessuna
responsabilità diretta sullo sviluppo dei
prodotti, dei servizi o dei sistemi che si
revisionano.
 Le attività della revisione dovranno essere
condotte rispettando i piani e il contratto.
Revisione (audit) (6.7)
 implementazione del processo
 revisione (audit)
Risoluzione del problema
(6.8)
 Scopo di questo processo è fornire
tempestivamente le risorse per assicurare la
risoluzione dei problemi appena essi sono
rilevati.
 Quando si verifica o si rileva un problema
durante le fasi di sviluppo, di
manutenzione, o di altri processi è
necessario documentarlo dettagliatamente,
accertarne l'effettiva esistenza, per poi
risolverlo (anche in diversi modi).
Risoluzione del problema
(6.8)
 Prima però di risolverlo sarà opportuno
valutarne la priorità e l’importanza
rispetto agli altri utilizzando un parametro
di riferimento.
 Questo processo non entra in gioco solamente
quando si evidenzia un problema durante il
ciclo di vita, ma anche quando il processo
non è più conforme ai requisiti richiesti.
Risoluzione del problema
(6.8)
 implementazione del processo
 risoluzione del problema
Processi organizzativi (7)
 I processi organizzativi sono impiegati in
un’organizzazione per stabilire e
implementare una struttura a supporto e per
il continuo miglioramento di:
 processi del ciclo di vita
 struttura organizzativa
 personale
 Supportano qualsiasi altro processo del
ciclo di vita del software.
Processi organizzativi (7)
 Gestione del progetto (7.1)
 5 attività, suddivise in 12 compiti
 Gestione dell’infrastruttura (7.2)
 3 attività, suddivise in 5 compiti
 Miglioramento (7.3)
 3 attività, suddivise in 6 compiti
 Addestramento (7.4)
 3 attività, suddivise in 4 compiti
Gestione del progetto
(7.1)
 Il processo contiene tutte le generiche
attività e compiti, che possono essere
impiegate all'interno del processo di
produzione per gestire i rispettivi
“processi”.
 Il management è responsabile per la gestione
del prodotto, del progetto e dei compiti
applicabili nei processi primari o di
supporto.
Gestione del progetto
(7.1)





Iniziazione e definizione dello scopo
Pianificazione
Esecuzione e controllo
Revisione e valutazione
Chiusura del progetto
Gestione
dell’infrastruttura (7.2)
 Processo che assicura il corretto
svolgimento di tutte le attività di
produzione.
 Serve a stabilire e mantenere
l’infrastruttura sottostante al ciclo di
vita del software.
 L’infrastruttura può includere hardware,
software, strumenti, tecniche, ulteriori
standard e le conoscenze di base per lo
sviluppo, l’esercizio e la manutenzione.
Gestione
dell’infrastruttura (7.2)
 implementazione del processo
 costituzione dell'infrastruttura
 manutenzione dell'infrastruttura
Miglioramento (7.3)
 Definisce le attività necessarie a
migliorare il ciclo di vita di un software.
 Sono di fondamentale importanza esperienze
passate, poiché aiutano l’approccio al
problema.
 Futuri progetti potranno trarre beneficio
dalle operazioni di miglioramento
effettuate.
Miglioramento (7.3)
 Costituzione del processo
 Controllo e valutazione del processo
 Miglioramento del processo
Lo standard su questo punto è molto vago,
consiglia solamente di produrre documentazione
e di rivedere progetti passati per accorgersi
degli errori già commessi.
Addestramento (7.4)
 Tale processo è inerente alla formazione e
addestramento del personale.
 I processi primari dipendono dalle
conoscenze e dalle capacità del personale
sia dell'azienda fornitrice sia di quella
acquirente.
 Il personale deve essere addestrato e
formato costantemente.
Addestramento (7.4)
 implementazione del processo
 sviluppo del materiale di formazione
 formazione
Tailoring:
il processo speciale
 I processi, le attività ed i compiti dello
standard sono stati progettati in modo da
poter essere adattati (tailored) a
specifiche esigenze (ambienti, progetti,
domini applicativi, etc..).
 Il processo di tailoring descrive cosa fare
per “adattare” gli altri processi software.
Tailoring:
il processo speciale
 Il tailoring consiste nella cancellazione di
processi, attività e compiti non applicabili
al caso specifico e nell'aggiunta di
processi, attività o compiti non presenti
nello standard e necessari per il caso
specifico.
 L’aggiunta di processi, attività e compiti
deve essere adeguatamente documentata nel
contratto.
Tailoring:
il processo speciale
 identificazione dell'ambiente di sviluppo
 coinvolgimento delle parti
 individuazione dei processi, delle attività
e dei compiti necessari
 documentazione della decisione di eliminare
o aggiungere processi, attività o compiti
Interazioni tra processi
 Nel prossimo lucido vedremo come i vari
processi del ciclo di vita di un software
(primari, di supporto e organizzativi)
interagiscono tra loro.
Organizzazione
PROGETTO
INFRASTRUTTURA
DOCUMENTAZIONE
MIGLIORAMENTO
gestisce
feedback
Progetto
U
FORMAZIONE
U
tailoring
T:
E:
P:
U:
da il compito
esegue
partecipa
utilizza
esercizio
T
T
acquisizione
P
E
E
JOINT
REVIEW
E
fornitura
manutenzione
U
E
AUDIT
P
V & V
E
sviluppo
E
E
U
QUALITÁ
E
E
RISOLUZ.
PROBLEMI
E
CONTROLLO
GESTIONE
Scarica

lo standard internazionale per il ciclo di vita del software