Contenuti - Il ciclo di vita del software - Il modello a spirale - Il modello a cascata - I modelli iterativi - Seminario: i cicli di vita in ISO/IEC 12207 Il concetto di ciclo di vita - Concezione - sviluppo - utilizzo - ritiro - Identificazione delle attività - Modelli generici, indipendenti dal prodotto - Decomposizione delle fasi in attività (ricerca di coesione) - Adozione di terminologia consistente - Organizzazione delle attività - Ordinamento delle attività - Definizione di criteri di completamento e di avanzamento Obiettivi e limiti - Propedeutico al processo definito - Richiede controllo di qualità - Definizione del processo produttivo (standard aziendale) - Identificazione di attività, obiettivi, dipendenze - Agevola la pianificazione e la gestione dei progetti - È indipendente da metodi e strumenti di sviluppo software Evoluzione dei modelli - Code-’n-Fix : un “non-modello” - Consiste di attività casuali non organizzate - Dà luogo a progetti caotici non gestiti né gestibili - Modelli organizzati - Cascata: a rigide fasi sequenziali oppure sue varianti con prototipi e ritorni - Incrementali: realizzazione in più passi - Evolutivi: modelli ciclici con ripetute iterazioni interne - Spirale: contesto allargato e modello astratto (1) Il modello a cascata - Definito nel 1970 da Winston Royce - “Managing the development of large software systems: concepts and techniques” - Una successione di fasi sequenziali - Non consente ritorno a fasi precedenti - Eventi eccezionali fanno ripartire dall’inizio - Documentazione - Ogni fase produce “documenti” che la concretizzano - Emissione ed approvazione di documenti sono condizione necessaria per l’avvio della fase successiva - Modello “document-driven” Schema del modello a cascata Caratteristiche delle fasi - Le fasi sono descritte in termini di: - Attività previste e prodotti attesi - Contenuti e struttura dei documenti - Responsabilità e ruoli coinvolti - Scadenze di consegna dei documenti - Presentano dipendenze causali e temporali - Ciascuna fase determina le proprie attività Modello a cascata in ISO 12207 Varianti del modello a cascata - Difetto principale: eccessiva rigidità - Stretta sequenzialità tra fasi - Non ammette modifiche nei requisiti in corso d’opera - Richiede molta manutenzione - Esprime una visione burocratica e poco realistica - Variante 1: cascata con prototipazione - Prototipo “usa-e-getta”, solo per capire meglio i requisiti - Variante 2: cascata con ritorni - Entrambe raggruppano sotto-sequenze di fasi Modelli iterativi - Applicabili a qualunque modello generale di ciclo di vita - Necessità di adattamento ai cambiamenti - Evoluzione di problemi, soluzioni possibili e tecnologie utilizzabili - Diversificazione dei requisiti del committente - Soluzione generale - Decomporre la realizzazione del sistema - Differire la realizzazione delle componenti critiche - Le iterazioni devono essere pianificate (2) Modello incrementale - Analisi e progettazione sono definitive - I requisiti sono identificati completamente - L’architettura del sistema è identificata e fissata - I passi della realizzazione incrementale sono pianificati - La realizzazione è incrementale - Progettazione di dettaglio, codifica e prove - Integrazione e collaudo - Accettazione e rilascio di versioni parziali - Dai requisiti essenziali (prima) a quelli desiderabili (poi) Modello incrementale in ISO 12207 (3) Modello evolutivo - Analisi preliminare - Per identificare i requisiti di massima - Per definire l’architettura di massima - Per pianificare i passi di analisi e realizzazione evolutiva - Analisi e realizzazione di evoluzione - Per raffinamento ed estensione dell’analisi - Per progettazione, codifica, prove e integrazione - Rilascio di prototipi, accettazione finale Modello evolutivo in ISO 12207 (4) Il modello a spirale - Proposto da Barry W Boehm nel 1988 - Prevede quattro attività principali - Definizione degli obiettivi - Analisi dei rischi - Sviluppo e validazione - Pianificazione - È un modello astratto: va specializzato Fasi del modello a spirale - Definizione degli obiettivi - Requisiti, identificazione dei rischi, piano di gestione - Analisi dei rischi - Studio delle conseguenze, valutazione delle alternative, con l’ausilio di prototipi e simulazioni - Sviluppo e validazione - Realizzazione del prodotto - Pianificazione - Decisione circa il proseguimento, pianificazione del ciclo di vita Schema del modello a spirale Aspetti del modello a spirale - Pone grande attenzione sugli aspetti gestionali - Pianificazione delle fasi - Analisi dei rischi (modello “risk-driven”) - Richiede forte interazione tra committente e fornitore - Committente: definizioni degli obiettivi, pianificazione - Fornitore: sviluppo e validazione - Entrambi: analisi dei rischi - Applicabile ai cicli tradizionali Altri modelli - Extreme Programming (XP) http://www.extremeprogramming.org - Facilita il coinvolgimento (informale) del committente - Non solo nell’analisi, ma anche in progettazione e sviluppo (!) - Fortemente incrementali (a passo piccolo) - Tende (colpevolmente) a perdere rigore - Component-based - Massima attenzione al riuso sistematico di componenti preesistenti proprie od “off-the-shelf” Modello “component-based” Ripartizione dei costi sui modelli - In genere, il 60% dei costi va allo sviluppo ed il 40% alla qualifica - I costi complessivi variano al variare del dominio e del tipo di sistema - La ripartizione dei costi sulle fasi varia al variare del modello e del dominio - Sistemi critici: 60% qualifica Riepilogo - Il ciclo di vita del software - Il modello a cascata - I modelli iterativi - Il modello a spirale - Cicli di vita espressi mediante ISO/IEC 12207 Riferimenti - B.W. Bohem, “A spiral model of software development and enhancement”, IEEE Software, maggio 1998 - Center for Software Engineering, http://sunset.usc.edu/research/spiral_model - W.W. Royce, “Managing the development of large software systems: concepts and techniques”, Atti della conferenza “Wescon ’70”, agosto 1970 - ISO/IEC TR 15271:1998, Information Technology - Guide for ISO/IEC 12207