Modelli di Ciclo di Vita del Software (CVS) Diverse tipologie di Ciclo
Transcript
Modelli di Ciclo di Vita del Software (CVS) Diverse tipologie di Ciclo
Modelli di Ciclo di Vita del Software (CVS) • Una morfologia dell’organizzazione del lavoro nelle fabbriche del software: § § § § fasi della produzione, tipi di attività, collegamento ed interfacciamento, pianificazione, controllo e misura, • ma anche linee guida per organizzare, pianificare, dimensionare personale, assegnare budget, schedulare e gestire, … • …definire e prescrivere prodotti e documenti (deliverables) da rilasciare al committente • …determinare metodi, tecniche e tecnologie della IS adatte a supportare le attività previste • … per imparare, analizzare, migliorare… Anna Rita Fasolino- Ingegneria del Software Cenni Introduttivi e Cicli di vita del software 1 Diverse tipologie di Ciclo di Vita del Sw • molti aspetti influenzano la definizione del modello di CVS: § specificità dell’organizzazione produttrice § know-how § area applicativa e particolare progetto § strumenti di supporto § diversi ruoli produttore/ committente • produttore e committente coincidono • produttore e committente sono entità organizzativamente distinte all’interno della stessa azienda o istituzione • il produttore sviluppa un’applicazione specifica per uno specifico committente • il produttore sviluppa un’applicazione ( …il pacchetto…) da immettere sul mercato e non per uno specifico cliente • il produttore è anche erogatore dei servizi di gestione operativa… Anna Rita Fasolino- Ingegneria del Software Cenni Introduttivi e Cicli di vita del software 2 1 Modelli del CVS a cascata (Waterfall models) – Progressione sequenziale (in cascata) di fasi, senza ricicli, al fine di meglio controllare tempi e costi • ogni fase raccoglie un insieme di attività omogenee per metodi, tecniche, tecnologie, skill del personale, … – Ogni fase è caratterizzata da • attività (tasks), • prodotti di tali attività (deliverables), • controlli relativi (quality control measures) – La fine di ogni attività è un punto rilevante (milestone) del processo – I deliverables prodotti in una fase sono input alla fase successiva – I prodotti di una fase vengono congelati, ovvero non sono più modificabili se non innescando un processo formale e sistematico di modifica Anna Rita Fasolino- Ingegneria del Software Cenni Introduttivi e Cicli di vita del software 3 Modello a cascata Studio di fattibilita Analisi e specifica dei requisiti Progettazione Codifica Testing Messa in esercizio Manutenzione Anna Rita Fasolino- Ingegneria del Software Cenni Introduttivi e Cicli di vita del software 4 2 Le fasi del modello a cascata ... • Studio di fattibilità – stabilire se lo sviluppo debba essere avviato – quali le alternative possibili e le scelte più ragionevoli – stima delle risorse finanziarie e umane necessarie, per ciascuna possibilie soluzione – redazione di un un Documento di Fattibilità • Analisi e specifica dei requisiti – definizione, tramite ‘interviste’ con il commitente, di funzioni, vincoli, prestazioni, interfacce e di qualsiasi altra caratteristica che il sistema dovrà soddisfare – redazione di un Documento di Specifica dei Requisiti Software, che sia completo, preciso, consistente, non ambiguo, comprensibile in maniera adeguata sia al committente che allo sviluppatore – predisposizione di un piano di test e della versione 0 del manuale utente N.B. Definizione di CHE COSA deve essere fatto e NON COME Anna Rita Fasolino- Ingegneria del Software Cenni Introduttivi e Cicli di vita del software 5 Le fasi del modello a cascata ... • Progettazione – definizione dell’architettura del sistema: componenti del sistema e relazioni tra questi (progetto di alto livello - HLD) – definizione della struttura interna di ciascun componente (progetto di dettaglio - LLD) – definizione della struttura dei dati – redazione di un documento di Specifica di Progetto • Codifica – Implementazione, usando il linguaggio di programmazione prescelto, dei vari componenti definiti nel Progetto • Testing – Definizione ed esecuzione di ‘casi di prova’ sia per i singoli componenti che per l’intero sistema, da essi costituito, con l’intento di rilevare malfunzionamenti N.B. Il Testing ha lo scopo di rilevare malfunzionamenti Anna Rita Fasolino- Ingegneria del Software Cenni Introduttivi e Cicli di vita del software 6 3 Le fasi del modello a cascata • Messa in esercizio – Insieme di tutte le operazioni necessarie per il rilascio, l’installazione e rendere operativo il sistema realizzato presso il committente • Manutenzione – Processo di modifica di un sistema o di un componente software dopo il suo rilascio al fine di eliminare anomalie, migliorare le prestazioni o altri attributi di qualità, o adattarlo a mutamenti dell’ambiente operativo e/o del dominio applicativo Anna Rita Fasolino- Ingegneria del Software Cenni Introduttivi e Cicli di vita del software 7 Vantaggi e limitazioni del modello a cascata • • Vantaggi – la fasi da seguire sono ben definite – gli output di ciascuna fase precisamente individuati Svantaggi – il modello assume che i requisiti possano essere congelati alla fine della fase di specifica, ma ciò è impensabile per un sistema i cui requisiti non siano ben chiari neanche al committente – in alcuni casi è auspicabile sviluppare prima una parte del sistema e poi completarlo (utente finale= mercato) – in alcuni casi lo sviluppo di tutta la documentazione richiesta è non necessaria (uso di ambienti di sviluppo visuali) Anna Rita Fasolino- Ingegneria del Software Cenni Introduttivi e Cicli di vita del software 8 4 Modello a cascata: una variante Fattibilità Verifica : Stabilire la verità della validazione corrispondenza tra un prodotto software e la sua specifica Validazione: Stabilire l’appropriatezza di un prodotto software rispetto alla sua missione operativa Analisi e specifica dei requisiti validazione Progettazione verifica Codifica verifica Testing V&V Verifica: Stiamo costruendo il prodotto giusto? Validazione: Stiamo costruendo giustamente il prodotto? Messa in esercizio V&V Manutenzione Ri-validazione Anna Rita Fasolino- Ingegneria del Software Cenni Introduttivi e Cicli di vita del software 9 Modelli basati su prototipo • • Un prototipo per aiutare a comprendere i requisiti o per valutare la fattibilità di un approccio Realizzazione di una prima implementazione (prototipo), più o meno incompleta da considerare come una ‘prova’, con lo scopo di: – accertare la fattibilità del prodotto – validare i requisiti • il prototipo è un mezzo attraverso il quale si interagisce con il committente per accertarsi di aver ben compreso le sue richieste, per specificare meglio tali richieste, per valutare la fattibilità del prodotto • dopo la fase di utilizzo del prototipo si passa alla produzione della versione definitiva del Sistema Sw mediante un modello che, in generale, è di tipo waterfall Anna Rita Fasolino- Ingegneria del Software Cenni Introduttivi e Cicli di vita del software 10 5 Modello con Prototipo REQUISITI PROGETTAZIONE VELOCE PROTOTIPO VALUTAZIONE E RAFFINAMENTO REQUISITI SVILUPPO PRODOTTO CVS CLASSICO Anna Rita Fasolino- Ingegneria del Software Cenni Introduttivi e Cicli di vita del software 11 Modelli con prototipo • 2 tipi di prototipazione: • mock-ups: produzione completa dell’interfaccia utente. Consente di definire con completezza e senza ambiguità i requisiti (si può, già in questa fase, definire il manuale di utente) • breadboards: implementazione di sottoinsiemi di funzionalità critiche del SS, non nel senso della fattibilità ma in quello dei vincoli pesanti che sono posti nel funzionamento del SS (carichi elevati, tempo di risposta, ...), senza le interfacce utente. Produce feedbacks su come implementare la funzionalità (in pratica si cerca di conoscere prima di garantire). • il prototipo è uno strumento di identificazione dei requisiti di utente; è incompleto, approssimativo, realizzato utilizzando parti già possedute o routines stub. • Il prototipo deve essere gettato. Anna Rita Fasolino- Ingegneria del Software Cenni Introduttivi e Cicli di vita del software 12 6 Modelli Evolutivi • Il prodotto SW evolve continuamente (aggiunta di funzionalità, cambio di piattaforma, cambiamenti nella organizzazione dell’azienda che lo utilizza e quindi adeguamento del SW, ...). • Necessità di modelli che tengano conto di queste esigenze • Ethernal Development Cycle (Denning, 1985) Requireme nts Design Coding Testing Maintenance Evolution Development Operation & Maintenance Nella fase di evoluzione: • si analizza l’esperienza di uso del Sw sul campo e si utilizza la maggiore conoscenza per definire nuovi obiettivi, • si determinano esigenze e nuove funzionalità emerse o non coperti in precedenza, • si riprende il ciclo dalla definizione dei requisiti alla messa in esercizio e manutenzione del nuovo SS nato dall’arricchimento ed evoluzione del precedente. Anna Rita Fasolino- Ingegneria del Software Cenni Introduttivi e Cicli di vita del software 13 Modelli Incrementali • Risolvono la difficoltà a produrre l’intero Sistema in una sola volta nel caso di grandi progetti SW (sia per problemi del produttore che del committente - quest’ultimo potrebbe non avere l’immediata disponbilità finanziaria necessaria per l’intero progetto) • Un approccio sistematico alla costruzione per parti: Modelli incrementali • modello ad implementazione incrementale • modello a sviluppo e consegna incrementale Anna Rita Fasolino- Ingegneria del Software Cenni Introduttivi e Cicli di vita del software 14 7 Modelli Incrementali Modello ad implementazione incrementale Code & Test Definisci Progetto Stralcio e LLD Integration & Test • • Installazione & Manutenzione • Le fasi alte del Waterfall Modell sono completamente realizzate. Il Sw viene totalmente definito nei requisiti, specificato e progettato (solo HLD). Il sistema così progettato viene decomposto in sottosistemi che vengono implementati, testati, rilasciati, installati e messi in manutenzione secondo un piano di priorità in tempi diversi. Diventa fondamentale la fase, o in insieme di attività, di integrazione di nuovi sottosistemi prodotti con quelli già in esercizio Anna Rita Fasolino- Ingegneria del Software Cenni Introduttivi e Cicli di vita del software 15 Modelli Incrementali Modello a sviluppo e consegna incrementale • L’approccio incrementale viene esteso a tutte le fasi del ciclo di sviluppo waterfall-like. È uno partizionamento del processo di produzione waterfall: • ogni partizione definisce un insieme di ben definiti comportamenti del sistema e procede dalla definizione dei requisiti all’implementazione, etc. del software che riproduce tali comportamenti; • i prodotti di ogni nuova slice vengono aggiunti ed integrati con l’esistente e costituiscono un incremento del sistema. Set Global Objectives; Define Basic Open Structure Approach; Define Preliminary Evolutionary Plan Engineer Step; Implement Planned Steps; Deliver to User; Evaluate Performance; Anna Rita Fasolino- Ingegneria del Software Cenni Introduttivi e Cicli di vita del software 16 8