Corso di Ingegneria del Software a.a. 2009/2010 push0 g 0 G

Transcript

Corso di Ingegneria del Software a.a. 2009/2010 push0 g 0 G
Corso di Ingegneria del Software a.a. 2009/2010
Modelli di produzione del software
Corso di Ingegneria del Software
a.a. 2009/2010
Modelli di produzione del software
Mario Vacca
[email protected]
Corso di Ingegneria del Software a.a. 2009/2010
Modelli di produzione del software
Modelli evolutivi
Modelli di produzione del software
Sommario
1. Concetti di base
2. Modelli di produzione del software
2.1
2.2
2.3
2.4
2.5
Modello a cascata
Modelli incrementali
Modelli evolutivi
Comparazione dei modelli
Modelli agili
3. Bibliografia
Corso di Ingegneria del Software a.a. 2009/2010
Modelli di produzione del software
Modelli evolutivi
Modelli evolutivi
Le assunzioni
I
Il software, al pari di tutti i sistemi complessi, evolve nel tempo.
I
I requisiti possono cambiare durante lo sviluppo
(i requisiti fondamentali possono essere ben noti, al contrario dei
dettagli)
I
Anche se è impossibile realizzare un prodotto competitivo nei tempi
consentiti dal mercato, potrebbe essere possibile realizzare una
versione limitata per rispondere alla pressione della concorrenza o del
settore.
Corso di Ingegneria del Software a.a. 2009/2010
Modelli di produzione del software
Modelli evolutivi
Modelli evolutivi
I fondamenti
I
Non sempre è possibie definire un percorso lineare per lo sviluppo del
software
I
Lo sviluppo del software è un processo evolutivo: la costruzione non
è un atto creativo istantaneo (un “big bang”) ma un processo di
crescita, tipico di un organismo in evoluzione (incrementale e
continuo).
I
Il modello deve esplicitamente considerare il software come un
prodotto che evolve nel tempo.
Corso di Ingegneria del Software a.a. 2009/2010
Modelli di produzione del software
Modelli evolutivi
Modelli evolutivi
Il prototipo - Le assunzioni
I
I
A volte il cliente riesce a definire solo obiettivi generali per il
software, ma non riesce ad identificare requisiti dettagliati in termini
di input, elaborazione o output
Lo sviluppatore può non essere sicuro della forma della interfaccia
uomo-macchina o della efficienza di un algoritmo
Corso di Ingegneria del Software a.a. 2009/2010
Modelli di produzione del software
Modelli evolutivi
Modelli evolutivi
Il prototipo
Un prototipo è una versione approssimata, parziale (funzionante),
dell’applicazione che deve sviluppata.
Corso di Ingegneria del Software a.a. 2009/2010
Modelli di produzione del software
Modelli evolutivi
Modelli evolutivi
Il prototipo
Il prototipo aiuta l’ingegnere del software o il cliente a capire cosa deve
essere realizzato quando i requisiti sono troppo vaghi o insufficienti.
L’approccio prototipale si propone di sviluppare il software attraverso successive versioni del prodotto, più o meno complete, presentate via via
all’utente, che le deve verificare, correggere o validare.
Corso di Ingegneria del Software a.a. 2009/2010
Modelli di produzione del software
Modelli evolutivi
Modelli evolutivi
Il prototipo
Figura: Il prototipo
Corso di Ingegneria del Software a.a. 2009/2010
Modelli di produzione del software
Modelli evolutivi
Modelli evolutivi
Il prototipo
Il processo di prototyping comprende i seguenti passi:
1. Communication (Identificazione dei requisiti)
Determinazione dei requisiti di base (e.g. informazioni desiderate in
input e in output)
2. Quick plan/Quick design/Prototype construction (Sviluppo del
prototipo)
Il prototipo iniziale include solo le interfacce utente
3. Delivery/Feedback (Revisione)
Gli utenti esaminano il prototipo e forniscono feedback su aggiunte o
cambiamenti da apportare
4. Negoziazione/Miglioramento del prototipo
Usando i feedback, possono essere migliorate sia le specifiche che il
prototipo. Using the feedback both the specifications and the
prototype can be improved. Si negozia su ciò che è necessario. Se
sono introdotti dei cambiamenti allora bisogna ripetere le fasi 2 e 3.
Corso di Ingegneria del Software a.a. 2009/2010
Modelli di produzione del software
Modelli evolutivi
Modelli evolutivi
Il prototipo
Figura: Il prototipo
Corso di Ingegneria del Software a.a. 2009/2010
Modelli di produzione del software
Modelli evolutivi
Modelli evolutivi
Tipi di prototipo
I
Throw-away prototype (usa e getta, quick&dirty, disposable)
Orientato a determinare i requisiti di aspetti meno chiari del software
da sviluppare
Implementa solo alcune dellefunzionalità poi si getta (Throw Away); il software
del prototipo vale circa il 5-10% del volume del prodotto finito.
Illustrative Prototype: il prototipo consiste in una rappresentazione
delle interfacce utente.
I
Evolutionary prototype (onion-skin)
Orientato a realizzare i requisiti più chiari e stabili.
È una replica abbastanza completa, ma in piccolo, del prodotto finale, e si getta
dopo l’uso; il software del prototipo vale circa il 14-15% del prodotto finito; il
prototipo viene fatto evolvere nel prodotto finale, senza gettarlo.
Functional Prototype: il prototipo viene realizzato a partire dalle
funzionalità di base, cui vengono aggiunte via via quelle più di
dettaglio o più complesse (approccio incrementale).
Corso di Ingegneria del Software a.a. 2009/2010
Modelli di produzione del software
Modelli evolutivi
Modelli evolutivi
Criteri di scelta tra tipi di prototipi
I
Disposable prototype: è utile quando è necessario ridurre al
minimo i rischi di “non completa cattura” dei requisiti (per sistemi
critici).
I
Evolutionary prototype: da usare quando non è possibile separare
chiaramente le fasi di specifica e sviluppo, ad es. nei sistemi di
intelligenza artificiale o basati principalmente su interfacce
uomo-macchina.
Corso di Ingegneria del Software a.a. 2009/2010
Modelli di produzione del software
Modelli evolutivi
Modelli evolutivi
Vantaggi dei prototipi
I
Coinvolgono di più il committente/utente, attore fondamentale nel
processo di specifica dei requisiti.
I
Facilitano la scoperta “per tempo” (nelle prime fasi del lavoro) di
eventuali fraintendimenti tra cliente e sviluppatore sui requisiti.
I
Fanno emergere funzionalità/servizi non considerati con la prima
raccolta dei requisiti effettuata senza prototipi, o aiutano comunque
a chiarirli meglio.
I
Permettono di rilasciare “presto” una versione del presto prodotto,
eventualmente anche solo ridotta, che dia fiducia al cliente sulla
riuscita finale del progetto.
I
Short time to market
Corso di Ingegneria del Software a.a. 2009/2010
Modelli di produzione del software
Modelli evolutivi
Modelli evolutivi
Rischi dei prototipi
I
L’uso dei prototipi potrebbe allungare i tempi di sviluppo e
aumentare la dinamica (volatilità) dei requisiti - l’utente è più
coinvolto nella specifica e i tempi dell’utente non sono sempre
“rapidi”.
I
Disporre di prototipi, specie evoluti, induce nella tentazione di
riutilizzare quanto più possibile del lavoro già fatto (rischio di
ereditare errori nascosti).
I
Nel caso di prototipi fatti evolvere nei prodotti finali, spesso il codice
non più utilizzato non viene cancellato: ciò aumenta il volume e la
complessità strutturale del prodotto (sarà più difficile da manutenere
e far evolvere).
I
Eredità di errori nascosti
Corso di Ingegneria del Software a.a. 2009/2010
Modelli di produzione del software
Modelli evolutivi
Modelli Incrementali vs Modelli Iterativi
Similarità
I
Sono accomunati dal prevedere più versioni successive del sistema
Ad ogni istante dopo il primo rilascio esiste una versione del sistema
in esercizio ed una versione del sistema in sviluppo
Differenze
I
Sviluppo incrementale: ogni versione aggiunge nuove
funzionalità/sottosistemi
I
Sviluppo iterativo (evolutivo): da subito sono presenti le
funzionalità/sottosistemi di base che vengono successivamente
raffinate, migliorate. I requisiti possono cambiare.
Corso di Ingegneria del Software a.a. 2009/2010
Modelli di produzione del software
Modelli evolutivi
Modelli Incrementali vs Modelli Iterativi
Similarità
I
Sono accomunati dal prevedere più versioni successive del sistema
Ad ogni istante dopo il primo rilascio esiste una versione del sistema
in esercizio ed una versione del sistema in sviluppo
Differenze
I
Sviluppo incrementale: ogni versione aggiunge nuove
funzionalità/sottosistemi
I
Sviluppo iterativo (evolutivo): da subito sono presenti le
funzionalità/sottosistemi di base che vengono successivamente
raffinate, migliorate. I requisiti possono cambiare.