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.