Ingegneria del Software - Dipartimento di Ingegneria dell`Informazione

Transcript

Ingegneria del Software - Dipartimento di Ingegneria dell`Informazione
UNIVERSITA’ DI FIRENZE
Facoltà di Ingegneria
Ingegneria del Software
Ciclo di Vita
O
Ciclo a Cascata e a V
I
R
Modelli agili ISO
V
V
Standard e Normativa
O
Prof. Giacomo Bucci
(2010-11 )
R
P
Il ciclo di vita
Da ANSI / IEEE Std 729-1983
Il ciclo di vita è il periodo di tempo che:
inizia quando un prodotto software viene
concepito
termina quando il prodotto software non viene
più usato
Costituisce il contesto organizzativo per
lo sviluppo di un progetto
Detto anche processo software
Ciclo di vita
G. Bucci
2
Il ciclo di vita
Organizzato in fasi.
Grossolanamente: sviluppo e uso
La fase di uso è molto più lunga della fase di
progetto e sviluppo
durante la fase d’uso è normale apportare
modifiche
Inizio
Abbandono
Rilascio
Uso
Sviluppo
(processo software)
Leggenda metropolitana:
Il costo della fase di uso (costo maintenance) è il 70%
del totale
Ciclo di vita
G. Bucci
3
Ciclo di vita
Due classi estreme di modelli del ciclo
Modelli Prescrittivi
Modelli Agili
fasi ben codificate in successione
organizzazione e metodi
Esempio: modello cascata
privilegiano l’adattabilità
riducono la burocrazia
Esempio: Extreme programming
Code & Fix : Non è niente !!!
Ciclo di vita
G. Bucci
4
Ciclo di vita
Serve un modello che possa essere:
controllato
diviso in fasi
che consenta di identificare i semilavorati
lungo il processo di produzione
che permetta di identificare milestones
etc.
Ciclo di vita
G. Bucci
5
Schema preliminare
Requisiti
Analisi
Spazio del problema
Spec. Requisiti
Progettazione
Spec. Progetto
Realizzazione
Spazio della
soluzione
Ciclo di vita
G. Bucci
Codice corretto
6
Modello del ciclo di vita
a Cascata
W. W. Royce, Winston W., Managing the Development
of Large Software Systems, IEEE 1970
Ciclo di vita
G. Bucci
7
Modello a cascata
Capostipite di tutti i modelli di ciclo
di vita
risente dell’epoca in cui è stato
formulato
albori dell’industria del software
macchine/strumenti scadenti
E’ un po’ il modello “industria
pesante” o “piano quinquennale”
Ciclo di vita
G. Bucci
8
Modello a Cascata: Fasi e
deliverables (i principali)
SRS
Studio di
Fattibilità
Analisi
DS
Progetto
Ele
m
ent
id
Codifica
Test unit
i di
stu
r
bo
Codice e
risultati test
Integraz
Test sist.
Manutenz
Più una caterva
di altri
documenti
Ciclo di vita
G. Bucci
9
Fasi
Ogni fase
ha un obiettivo definito;
si basa sui risultati della fase precedente
Le fasi corrispondono ad attività che
transformano i loro ingressi in uscite;
presuppongono la verifica ai milestones
Ciclo di vita
G. Bucci
10
Milestone
E’ un evento predefinito
che serve a misurare il progredire dello
sviluppo
Un milestone prevede normalmente:
la consegna di prodotti (intermedi) - detti
deliverable
un esame (review) formale
(l’emissione di un documento)
Ciclo di vita
G. Bucci
11
Analisi/specifica dei requisiti
L’analisi è lo studio di un problema prima di
intraprendere qualsiasi azione (*)
L’analisi è lo studio del dominio di un
problema, che porta alla specifica di un
comportamento esternamente osservabile, a
una descrizione coerente e fattibile di ciò che
occorre realizzare
De Marco “Structured Analysis and System
Specification", Yourdon Press, 1978.
Ciclo di vita
G. Bucci
12
Analisi
Il principale deliverable prodotto è l’SRS
Fornisce una base di confronto e di accordo
contrattuale con il committente
Dovrebbe produrre anche il Manuale Utente e
il Piano di test del sistema
Analisi
SRS
Il manuale utente dice meglio di qualunque altra
cosa come si comporterà il sistema
Il piano di test dice come verranno condotti i test
del sistema
Grande approfondimento
Ciclo di vita
G. Bucci
13
Progettazione
SRS
DS
Progetto
La Specifica di Progetto (DS) contiene
l’architettura del software:
Scomposizione del sistema in sottosistemi
Identificazione dei moduli e delle relazioni
tra i moduli (struttura del sistema secondo
una conveniente rappresentazione)
Interfacce
Convenzioni di chiamata
...
Ciclo di vita
G. Bucci
14
DS
Realizzazione
Codifica
C&T
Codice e
risultati test
I singoli moduli vengono sviluppati in base
alla specifica di progetto, nel linguaggio di
programmazione scelto
Test individuali
I singoli moduli vengono provati per conto
proprio
Ciclo di vita
G. Bucci
15
Integrazione
Il fatto che i singoli moduli siano
individualmente testati non è sufficiente
a garantire il corretto funzionamento
del sistema
Spesso si scoprono incongruenze
progettuali
Normalmente è la fase più dolente
Si parla di alfa test, beta test,
COLLAUDO
Ciclo di vita
G. Bucci
16
Manutenzione
I costi per la manutenzione sono di norma superiori
ai costi di sviluppo
Si parla di un 70% del costo totale (sviluppo più
manutenzione)
Correttiva (eliminazione errori)
Adattativa (alle condizioni esterne)
Perfettiva (nuove funzionalità, eliminazione di funzionalità
inutili)
di norma oltre il 50% della manutenzione
Sui costi di manutenzione hanno grande incidenza:
la modalità di progetto e sviluppo
la qualità della documentazione
Ciclo di vita
G. Bucci
17
Documentazione
Documentazione tecnica interna
Documentazione tecnica esterna
motivazioni per le assunzioni fatte e le decisioni prese in ogni fase
risultati dei test
…
struttura del sistema
istruzioni per l’installazione
guida alla soluzione dei problemi
...
Documentazione per l’utente finale
Manuale utente
prontuario (quick reference)
guided tour
...
Ciclo di vita
G. Bucci
18
Costi modifiche (tradizionale)
Dati sperimentali
indicavano che il
costo dei
cambiamenti
cresceva
esponenzialmente
nel tempo
Ciclo di vita
G. Bucci
19
Se i costi crescono
esponenzialmente:
Bisogna pianificare bene le attività del
progetto
Scoprire un errore subito fa salvare
denaro
Modificare il modello è meglio che
modificare il codice
=>Investire sulle fasi di analisi
=>BDUF (big design up-front)
E’ proprio così ?
Ciclo di vita
G. Bucci
20
Il modello a cascata
Presume che sia possibile definire
esattamente quali sono i requisiti del sistema
Presume che i requisiti siano stabili
Ma i requisiti non sono stabili
E’ la traduzione dei processi manifatturieri:
La Fiat deve pianificare esattamente la catena di
montaggio.
Il SW può essere cambiato sempre
Ciclo di vita
G. Bucci
21
Problemi del ciclo a cascata
Tende a spostare in avanti le verifiche:
Ci si può accorgere troppo tardi di errate
concezioni o di errori
Produce disallineamento tra ciò che
viene “fatto” e ciò che era “desiderato”
Il prodotto risultante finisce per soddisfare
le esigenze degli sviluppatori, anziché
quelle dei committenti.
Ciclo di vita
G. Bucci
22
Cosa ci si aspetta
Ciclo di vita
G. Bucci
Dall’uso di
strumenti,
tecniche e
metodi attuali
23
Perché investire tanto nella fase iniziale
quando non si sa bene dove si va a
cascare?
Perché investire su cose che possono
rivelarsi del tutto inutili?
...Il tempo dirà al momento opportuno cosa
fare e cosa non fare
Ciclo di vita
G. Bucci
24
Inoltre
Il modello a cascata
Tende a irreggimentare
Non si adatta allo spirito del
programmatore (un progettista/inventore
piuttosto che un produttore)
E’ burocratico
impone la produzione di una quantità di
semilavorati che disturba il programmatore
Occorrono modelli meno rigidi
Ciclo di vita
G. Bucci
25
Prototipazione
Un modo per ridurre i problemi
Prototipo: una realizzazione parziale
di un sistema, costruita allo scopo di
permettere a committenti, utenti e
sviluppatori una miglior conoscenza del
problema e delle sue soluzioni
Usa e getta
Prototipo evolutivo
Ciclo di vita
G. Bucci
26
Prototipazione
L’uso di prototipi aiuta nella scrittura di SRS
Il committente preferisce vedere un prototipo
piuttosto che un documento scritto
Il prototipo mette in evidenza aspetti non previsti
Alcuni requisiti (p.e., i formati delle videate)
possono essere estratti direttamente dal prototipo
e portati in SRS
Il processo deve essere ordinato: successivi
rilasci di SRS e relativi prototipi, fino ad
arrivare a SRS definitivo.
Ciclo di vita
G. Bucci
27
Evoluzione tecnologica
Nel processo software:
dal metodo a cascata
ai metodi “agili”
Ciclo di vita
G. Bucci
28
Modello iterativo-evolutivo
Successivi ampliamenti e rifiniture attraverso
iterazioni multiple (feedback)
Il sistema cresce incrementalmente
Ciclo di vita
G. Bucci
29
UP Unified Process
Modello proposto da chi ha definito
UML
E’ iterativo e incrementale
Ogni iterazione è fatta di:
Requisiti, analisi, progettazione,
implementazione, test
E’ pilotato dai casi d’uso (requisiti)
Ciclo di vita
G. Bucci
30
RUP
This diagram is Copyright 1999-2005 IBM.
http://www.agilemodeling.com/essays/agileModelingRUP.htm
Ciclo di vita
G. Bucci
31
UP
Sostanzialmente ci riferiremo ad esso
W. Zuser, S. Biffl, T. Grechenig, M.
Kohle,, “Ingegneria del software con
UML e Unified process”, McGraw-Hill,
2004
Ciclo di vita
G. Bucci
32
Modelli leggeri/agili
Nati in opposizione (estrema) ai metodi
tradizionali
I metodi tradizionali sono inadeguati
specialmente quando:
i requisiti sono incerti o variabili
si richiede una rapida risposta ai
cambiamenti di mercato
Ciclo di vita
G. Bucci
33
Modelli leggeri/agili
Ogni applicazione pone problemi diversi
E’ irrealistico definire un processo
universalmente valido, senza cadere nei
generici richiami al buon senso
Occorre adattare il processo alle
specifiche esigenze del caso
Le tecnologie moderne aiutano
Ciclo di vita
G. Bucci
34
Modelli leggeri/agili
Il lavoro aggiuntivo per i semilavorati
intermedi risulta in una burocrazia
inutile, che influisce in maniera negativa
su flessibilità e efficienza.
ridurre il lavoro di supporto,
convogliando il massimo dello sforzo
sulla mera produzione dell’applicazione
Ciclo di vita
G. Bucci
35
Manifesto (2001)
http://www.agilealliance.org/
Privilegiare
gli individui e le loro interazioni
rispetto a processi e strumenti
la disponibilità di sw funzionante
rispetto a un’ampia documentazione
la collaborazione col cliente rispetto
alla negoziazione dei contratti
la pronta risposta ai cambiamenti
rispetto all’esecuzione di un piano
Ciclo di vita
G. Bucci
36
..ovvero
Dettagliate specifiche formali,
approfondite analisi e puntigliosa
documentazione sono considerate
attività troppo costose rispetto ai
benefici apportati
limitano la flessibilità del processo che deve
poter modificare i propri obiettivi in ogni
momento.
Ciclo di vita
G. Bucci
37
XP – eXtreme Programming
(l’agile estremo)
Ciclo di vita
G. Bucci
38
What is XP?
XP is a lightweight methodology for small to
medium sized teams developing software in the
face of vague or rapidly changing requirements.
-- Kent Beck.
XP is:
Humane.
Honest.
Productive.
Professional.
Fun.
Ciclo di vita
G. Bucci
39
What is XP?
XP is a discipline of software development.
There are certain things you must do.
You must write tests before code.
You must program in pairs.
You must integrate frequently.
You must be rested.
You must communicate with the customer daily.
You must follow the customer’s priorities.
You must leave the software clean and simple by
the end of the day.
You must adapt the process and practices to your
environment.
Ciclo di vita
G. Bucci
40
eXtreme Programming
Evita la produzione di semilavorati
diversi da quelli necessari alla
realizzazione delle applicazioni
Mira a fornire meccanismi che, in corso
d’opera, danno agli sviluppatori la
consapevolezza che ciò che stanno
costruendo soddisferà pienamente le
esigenze del committente/utente
Ciclo di vita
G. Bucci
41
Attività
Quattro attività fondamentali che si
ripetono per tutto il progetto:
scrittura del codice dell’applicazione
(coding);
verifica delle funzionalità (testing);
osservazione dell’ambiente inteso come
desideri del committente, opportunità
tecnologiche, sviluppi di mercato
(listening);
progetto dell’applicazione (design).
Ciclo di vita
G. Bucci
42
Criteri
I programmatori sono responsabili non
solo della codifica dell’applicazione, ma
anche della sua verifica
L’enfasi è sulla verifica:
Ciclo di vita
Prima di scrivere le istruzioni pensare a come si
testano
nessuna istruzione dovrebbe essere considerata
veramente parte dell’applicazione finché non ne
sia stato verificato l’effetto secondo le attese
G. Bucci
43
What makes XP familiar?
XP matches the behavior of successful
programmers in the wild.
Tests.
Refactoring.
Evolutionary delivery.
Incremental planning.
Low overhead.
Ciclo di vita
G. Bucci
44
Processo
La costruzione dell’applicazione procede
in maniera iterativa
cogliendo le reazioni dei committenti e
riprogettando, in maniera adeguata, le sue
funzionalità e i meccanismi adottati per
ottenerle
Ciclo di vita
G. Bucci
45
Extreme programming
Pianificazione attività (planning the game)
Brevi Iterazioni, Rilasci frequenti (Short releases)
Progetti semplici (simple design)
Integrazione continua (continous integration)
Ristrutturazione del codice (refactoring)
Verifica di ogni funzionalità (testing)
Programmazione a coppie (pair programming)
Proprietà collettiva del codice (collective ownership)
Partecipazione del committente (onsite costumer)
Uso di standard di codifica (coding standards)
Rinuncia la lavoro straordinaro (40 h/w)
Ciclo di vita
G. Bucci
46
Costi con XP
(pretesi)
Sarà vero?
Difficile!
Ciclo di vita
G. Bucci
47
Vantaggi XP
Coinvolgimento del cliente
Attività più gratificante per il programmatore
Riduzione dei costi
Maggior adeguamento al cambiamento in corso
d’opera
Ciclo di vita
G. Bucci
48
Problemi XP
C’è il rischio di cadere nel CODE & FIX
Contrario a ogni pratica ingegneristica
Conta troppo sulla qualità delle persone
Chi fa software non sempre è un genio!!!
Hacker
Cascata
XP
Agili
Adattativi
Pianificati
Pescrittivi
Ciclo di vita
G. Bucci
49
Lavoro individuale
Approfondire il modello XP
andare al sito dell’XP
www.extremeprogramming.org
Visitare il sito
http://www.agilemodeling.com/
Ciclo di vita
G. Bucci
50
Bibliografia
W. Zuser e altri, “Ingegneria del software con UML e
Unified process”, McGraw-Hill, 2004
Kent Beck “Extreme Programming Explained:
Embrace Change”, Addison-Wesley (1999)
www.extremeprogramming.org
B. Boehm, “Get Ready with Agile methods, with
Care”, IEEE Computer Genn. 2002, pp.64-69
Ciclo di vita
G. Bucci
51
Quando la sicurezza è il
requisito principale
Sostanzialmente viene seguito il criterio
del metodo a cascata: analisi e
progettazione accurate sin dall’inizio.
Analisi dei requisiti, analisi del rischio,
tracciabilità dei requisiti, pianificazione,
assicurazione della qualità, versionamento,
..
Ciclo di vita
G. Bucci
52
Sicurezza
Al termine “sicurezza” corrispondono due
termini inglesi: safety e security
Safety: the condition of being safe; freedom
from danger, risk, or injury
Security: something that gives or assures
safety
Si parla spesso di safety integrity level per
indicare la misura della garanzia che un
sistema dà di essere libero da determinati
pericoli.
Ciclo di vita
G. Bucci
53
Dove e come
Sistemi embedded, sistemi medicali,
controllo del traffico aereo, ecc..
Devono garantire affidabilità, sicurezza,
qualità, …
Di norma il processo software è
strutturato come un modello a V (un
adeguamento del modello a cascata)
Normative e standard (di prodotto e di
processo) per i vari settori (ferrovie,
avionica,..)
Ciclo di vita
G. Bucci
54
Modello a V (in generale)
Originally issued as a standard of the German
Federal Administration
The V-Modell is a process model for planning and
executing Projects. The V-Modell improves project
transparency, project management and the
probability of success by defining concrete practices
with associated results and responsible Roles
Describes the development process from a functional
point of view, defining a set of activities and products
(results) that have to be produced.
Publicly available
It has been adopted by many companies and tailored
to a variety of specific application contexts
Ciclo di vita
G. Bucci
55
Modello a V (in generale)
Ciclo di vita
G. Bucci
56
Produzione di sistemi HW/SW
Ciclo di vita
G. Bucci
57
Ciclo di vita
G. Bucci
58
defines User Requirements,
specifying both functional
requirements and non-functional
requirements.
Ciclo di vita
G. Bucci
59
identifies main system units and allocates
User Requirements to each of them.
Ciclo di vita
G. Bucci
60
examines both software and hardware resources of
each unit, decomposing them into software and
hardware components that, according to the notation
of Software Configuration Management, are referred
to as Computer Software Configuration Items
(CSCIs) and Hardware Configuration Items (HCIs).
Ciclo di vita
G. Bucci
61
V Model
In software context
Aimed at regulating the processes of
system development, maintenance and
modification in the software life cycle.
Mentioned within a variety of process
quality standards such as RTCA/DO-178B
and CENELEC 50128
Ciclo di vita
G. Bucci
62
Modello a V (solo SW)
Ciclo di vita
G. Bucci
63
Associaz. standardizzazione
ISO (International Standard Organization)
CEN/CENELEC (Comité européen de normalisation / Comité
européen de normalisation en électronique et en électrotechnique)
ECMA (European Computer Manufacturers Association)
ANSI (American National Standards Institute)
NIST (National Institute of Standards and Technology)
IEEE
UNI (Ente Nazionale Italiano di Unificazione)
DOD, FDA
..e molte altre
Ciclo di vita
G. Bucci
64
Ciclo di vita
G. Bucci
65
Cosa contiene uno standard
Scopo del documento
EN 50128: This Standard concentrates on the methods
which need to be used in order to provide software which
meets the demands for safety integrity which are placed
upon it by …
Definizione dei termini
Identificazione degli attori
Ciclo di vita
Elencazione della documentazione richiesta
Raccomandazioni
Ciclo di vita
G. Bucci
66
ESEMPIO: Normative CEI
EN 50128, 50129
EN 50128 La Normativa specifica le procedure
ed i requisiti tecnici per lo sviluppo del
software nelle applicazioni ferroviarie
EN 50129 Railway applications Communication, signalling and processing
systems - Safety related electronic systems
for signalling
Ciclo di vita
G. Bucci
67
Fail-Safe
I sistemi elettronici per il segnalamento ferroviario
sono critici per la sicurezza.
Devono conformarsi a criteri per il raggiungimento di
Safety Requirements.
Ovvero devono rispondere a seconda delle funzioni
svolte a determinati SIL (Safety Integrity Level)
software safety integrity level: A classification
number which determines the techniques and
measures that have to be applied in order to reduce
residual software faults to an appropriate level
5 livelli : da 0 a 4 (zero praticamente nessun
provvedimento)
Ciclo di vita
G. Bucci
68
EN 50128
Le normative europee CEI EN 50129 e 50128
forniscono dettagli circa i criteri da applicare per i
processi di:
Formazione del personale;
Gestione della sicurezza;
Gestione della qualità;
Specifica dei requisiti del sistema;
Definizione dell’architettura del sistema;
Definizione delle caratteristiche progettuali;
Progettazione;
Valutazione degli effetti dei guasti;
Verifica e validazione
Ciclo di vita
G. Bucci
69
Modello a V di
EN50128
Ciclo di vita
G. Bucci
70