LABORATORIO DI INFORMATICA Ingegneria Informatica a. a LABORATORIO DI INFORMATICA Ingegneria Informatica a.a. 2002-2003 -2° Ciclo Il Ciclo di Vita del Prodotto Software
Il Ciclo di Vita del Prodotto Software Per ciclo di vita del prodotto software s’intende l’insieme delle attività e la loro organizzazione che, a partire dai requisiti del cliente, portano alla realizzazione di un prodotto software in grado di soddisfare i requisiti stessi. Le principali attività che compongono il ciclo di vita di un prodotto software sono elencate nel seguito.
Il Ciclo di Vita del Prodotto Software Gestione dei Requisiti Software (Software Requirements Management) Consiste nell’acquisizione dei requisiti del cliente e nella loro analisi orientata alla produzione di un modello che li descriva in modo più appropriato al loro utilizzo nelle successive attività del ciclo di vita. Progettazione del Software (Software Design) Consiste nella costruzione di uno o più modelli che propongono una soluzione alla realizzazione del prodotto software che soddisfa i requisiti (ad esempio il diagramma delle classi che comporranno il prodotto software).
Il Ciclo di Vita del Prodotto Software Implementazione del software (Software Implementation) Consiste nelle attività di codifica e test di tutti i componenti (ad esempio le classi) che costituiscono il prodotto software descritto con i modelli del relativo progetto. Test del Software (Software Testing) Consiste nella verifica che il codice costituito da tutti i componenti prodotti, opportunamente integrati tra loro, rispetta tutti i requisiti richiesti dal cliente.
Il Ciclo di Vita del Prodotto Software Accettazione e Rilascio (Acceptance and Release) Consiste nel far constatare al cliente che il software prodotto soddisfa tutti i suoi requisiti e nella consegna formale del prodotto al cliente. Manutenzione del Software (Software Maintenance) Consiste nelle attività di correzione dei problemi che si verificano durante l’utilizzo del prodotto software o nelle attività di incorporazione nel prodotto software di eventuali varianti.
Il Ciclo di Vita del Prodotto Software Nel caso di un prodotto software che deve essere integrato in un sistema ci sono altre attività che precedono e seguono le attività che competono strettamente al ciclo di vita del prodotto software, ma che comunque richiedono la partecipazione dei progettisti software. Le attività che precedono sono: La definizione dei requisiti del sistema (System Requirements Definition) Il progetto del sistema (System Design) L’attività che segue è invece: Il test del sistema (System Testing)
Il Ciclo di Vita del Prodotto Software E’ importante notare che nel corso dell’attività di “progetto del sistema” viene fatta la distinzione tra quale parte dei requisiti globali di sistema saranno soddisfatti dall’hardware e quali dal software. Questa attività, detta di “allocazione dei requisiti al software”, deve essere necessariamente partecipata dai progettisti software. Le attività del ciclo di vita del prodotto software si possono comporre in vari modi, dando vita a vari modelli di ciclo vita, con differenti caratteristiche. I modelli base di ciclo di vita sono elencati nel seguito.
Il Ciclo di Vita del Prodotto Software Modello Sequenziale E’ costituito da un insieme sequenziale di fasi, ciascuna relativa ad una delle attività del ciclo di vita, dove ciascuna fase si completa prima che parta la successiva. Ciascuna fase produce output che, una volta verificati, costituiscono l’input per la fase successiva. Per evitare che errori, cambiamenti o aggiunte portino a feed back a fasi precedenti con conseguenti necessità di rilavorazioni, il passaggio da una fase alla successiva deve essere convalidato da un’accurata verifica.
Il Ciclo di Vita del Prodotto Software Ciclo di Vita Sequenziale System Requirements Definition System Design Attività specifiche del ciclo di vita software Software Requirements Management Software Design Software Implementation Software Testing Software Acceptance and Release System Testing Software Maintenance
Il Ciclo di Vita del Prodotto Software Modello Sequenziale Il modello Sequenziale viene anche detto modello tradizionale, modello a cascata o modello a V. Questo modello è raccomandato solo se la stabilità dei requisiti è altissima.
Il Ciclo di Vita del Prodotto Software Modello Incrementale Questo modello è basato sul modello sequenziale, solo che il prodotto software si forma con una serie di costrutti (build) incrementali, ciascuno basato su un insieme stabile di requisiti. Ciascun incremento incorpora ulteriori requisiti accrescendo le capacità del software in progettazione, fino al completamento del sistema. Una importante variante di questo modello è quella in cui con la prima iterazione si genera lo scheletro generale di tutto il prodotto in modo da produrre una piattaforma stabile per la successiva aggiunta di altre funzionalità.
Il Ciclo di Vita del Prodotto Software Ciclo di Vita Incrementale System Requirements Definition System Design Attività specifiche del ciclo di vita software Incremento 1 Incremento 2 Software Requirements Management Software Design Software Implementation Software Testing Software Acceptance and Release System Testing Software Maintenance
Il Ciclo di Vita del Prodotto Software Modello Incrementale Il modello Incrementale viene anche detto modello a Miglioramento di Prodotto Prepianificato, modello Iterativo, modello a W Il Modello Incrementale è raccomandato nei seguenti casi: Il cliente collabora poco ed è poco esperto Il progetto è a medio o lungo termine (da più di 3 anni in poi) Il team di progetto è grande o molto grande (composto da più di 10 persone) I requisiti sono mediamente instabili Il sistema è uno sviluppo nuovo in un’area sconosciuta.
Il Ciclo di Vita del Prodotto Software Modello Evolutivo Anche questo modello sviluppa il prodotto con una serie di build, ma con requisiti instabili, mal definiti o incompleti. Perciò ciascuna iterazione lungo il ciclo di vita implementa parzialmente, e quindi raffina, i requisiti, fino a che il prodotto non realizzi tutte le funzioni desiderate Questo modello è generalmente associato alla tecnica della prototipizzazione.
Il Ciclo di Vita del Prodotto Software Ciclo di Vita Evolutivo Attività specifiche del ciclo di vita software Software Requirements Management Software Design Iterazione 1 Software Implementation System Requirements Definition Software Testing Software Requirements Management Software Design Software Acceptance and Release System Testing System Design Iterazione 2 Software Implementation Software Testing Software Acceptance and Release Software Maintenance
Il Ciclo di Vita del Prodotto Software Modello Evolutivo Il modello Incrementale viene anche detto modello a Spirale o modello Rational. Il Modello Incrementale è raccomandato nei seguenti casi: Il cliente è un consorzio o una impresa multinazionale e gli sviluppi sono soggetti al suo consenso Il progetto è a medio o lungo termine (da più di 3 anni in poi) Il team di progetto è grande o molto grande (composto da più di 10 persone) I requisiti sono molto instabili Il sistema è uno sviluppo nuovo in un’area sconosciuta
Il Ciclo di Vita del Prodotto Software Modelli Atipici I modelli di ciclo di vita del prodotto software finora riportati sono modelli tipici. Il ciclo di vita più adatto ad uno sviluppo può essere però anche una combinazione di modelli tipici, o essere completamente atipico. Modelli atipici si possono avere i corrispondenza di: Sviluppi per manutenzioni Sviluppi con consistenti sub forniture Sviluppi di applicazioni in collaborazione con il cliente