Ciclo di vita del software Nel corso degli anni, nel passaggio dalla visione artigianale alla visione industriale del software, si è compreso che il processo andava formalizzato attraverso: un insieme di fasi in cui decomporlo, un insieme di prodotti delle varie fasi, un insieme di metodi da adottare nelle varie fasi, un insieme di tecniche o modelli con cui descrivere i prodotti delle fasi. 01Intro.25
I processi ISO 12207 5. Processi primari del ciclo di vita 5.1 Acquisizione 5.2 Fornitura 6. Processi di supporto 6.1 Documentazione 6.2 Gestione della Configurazione 6.3 Assicurazione di qualità 5.3 Sviluppo 5.4 Esercizio 5.5 Manutenzione 6.4 Verifiche 6.5 Validazioni 6.6 Riesami congiunti 6.7 Ispezioni 6.8 Risoluzione dei problemi Processi organizzativi del ciclo di vita 7.1 Management 7.2 Infrastrutture 7.3 Miglioramenti 7.4 Addestramento 01Intro.41
5. Processi primari del ciclo di vita Le 13 attivita del 12207 5.3 Sviluppo Implementazione del processo Analisi dei requisiti del S.I. Progettazione dell architettura del S.I. Analisi dei requisiti del SW Progettazione dell architettura del sw Progettazione di dettaglio del sw Codifica e testing del sw Integrazione del sw Test sulla qualità del sw Integrazione del sistema(hw + sw) Test sulla qualità del sistema Installazione del sw Supporto per il collaudo di accettazione del sw 01Intro.42
12207 Processi di supporto Documentazione (documentation) - le attività di registrazione delle informazioni prodotte durante un (qualunque) processo. Gestione della configurazione (configuration management) - le attività di gestione della configurazione. Assicurazione qualità (quality assurance) - le attività per garantire in modo obiettivo che processi e prodotti siano conformi ai requisiti e rispettino i piani. Verifica (verification) - controllo della corrispondenza tra i requisiti e le caratteristiche del sistema (condotto dall acquirente, dal fornitore o da una terza parte indipendente). Validazione (validation) - controllo dell effettivo raggiungimento degli obbiettivi (condotto dall acquirente, dal fornitore o da una terza parte indipendente). Riesame congiunto (joint review) - le attività per valutare lo stato e i prodotti di un attività. Audit - le attività per determinare la conformità con i requisiti, i piani ed il contratto (coinvolgimento di un ente esterno al sistema). Soluzione dei problemi (problem resolution) - le attività per analizzare e rimuovere i problemi (incluse le non conformità). 01Intro.43
12207 Processi organizzativi Management - le attività basilari del management (incluso il project management). Ambiente (infrastructure) - le attività basilari atte a fornire l ambiente /hw, sw e logistica) per un processo. Miglioramento (improvement) - le attività basilari di un organizzazione per stabilire, misurare, controllare e migliorare i propri processi. Addestramento (training) - le attività atte a fornire personale adeguatamente formato. 01Intro.44
MODELLI per il ciclo di vita del sw 01Intro.45
Modelli per processo di produzione del sw Sequenziale (cascata, classico) oppure (iterazione/parallelismo) Prototipale Rapid Application Deveopment (RAD) Incrementale Spirale Sviluppo concorrente Modelli basati su metodi formali 01Intro.46
Processo a cascata (waterfall) ANALISI DESIGN CODIFICA TEST MANUTEN. 01Intro.47
Fasi e prodotti del modello a cascata analisi descrizione di cosa si vuole realizzare definizione dei requisiti design progettazione del sistema (come si vuole realizzarlo) architettura e moduli codifica realizzazione in un linguaggio di programmazione sorgenti test verifica di aderenza, test di modulo e di integrazione documenti di test manutenzione gestione cambiamenti 01Intro.48
Problemi del modello a cascata i progetti reali raramente seguono il flusso sequenziale proposto dal modello, spesso si verificano iterazioni è spesso difficile per il cliente dichiarare tutti i requisiti in modo esplicito. Il modello ha difficoltà a gestire la naturale incertezza che esiste all inizio di nuovi progetti il cliente deve avere pazienza, una versione funzionante del sistema non potrà essere disponibile se non nelle ultime fasi del ciclo di vita (scoprire un errore in questa fase puo` avere conseguenze disastrose) Il lavoro degli sviluppatori e` inutilmente ritardato (il tempo di attesa complessiva puo` superare il tempo di lavoro!!!) 01Intro.49
Modello prototipale Interazione con l utente Realizz. modifica prototipo (mock-up) Test del prototipo (con l utente) la prototipazione rapida ha come obiettivo la realizzazione del prodotto software attraverso successive realizzazioni di prototipi: paper protoype o prototipo freddo working prototype: implementa solo alcune funzioni(interfaccia) 01Intro.50
Modello prototipale (2) se il prototipo e` working lo si trasforma nel programma finale lo si butta Vantaggi molto attraente, coinvolge maggiormente il cliente nella definizione delle specifiche, evita/riduce le incomprensioni approccio quick&dirty, può presentare insidie può evolvere in un sistema senza un progetto solido possibile spreco di risorse nel caso usa e getta tentazione di riutilizzare le scelte prototipali (o, addirittura il prototipo stesso) 01Intro.51
Modello RAD (Rapid Application Development) Obbiettivo: rapida codifica (riuso/parallelismo) Ipotesi fondamentale (e limite dell`approccio): requisiti chiari complessita` limitata (e.g., semplice sistema informativo) 5 fasi Analisi dell`azienda Analisi dei dati Analisi dei processi Codifica (4GT (4th generation techniques) e riuso) Test Decomposizione dell`applicazione in macrofunzioni realizzate da gruppi di lavoro diversi in parallelo 01Intro.52
Modello incrementale analisi progetto codifica test versione 1... analisi progetto codifica test Simile al prototipale ma: - i prodotti intermedi sono funzionanti - permette una piu accurata progettazione versione n Prodotti Funzionanti 01Intro.53
raccolta dei requisiti iniziale Modello a spirale (6 regioni) 2) Planning 3) Risk analysis 1) Interazione con l utente 4) Ingegnerizzazione 6) valutazione da parte del cliente 5) Realizzazione primo prototipo 01Intro.54
Considerazioni sul modello a spirale Rappresenta una razionalizzazione del modello prototipale Si presta alla gestione di progetti complessi Puo` essere significativo prevedere il numero delle iterazioni Puo` essere integrato con altri approcci (modello ad assemblaggio dei componenti) Sta acquistando sempre maggiore popolarita` Alcuni CASE tool lo supportano L utente e spesso scettico (converge?) 01Intro.55
Sviluppo concorrente Concurrent engineering: nasce in ambito manifatturiero per: eliminare i rischi di insuccesso che nascono dalla separazione tra le varie funzioni industriali (marketing, R&D, process engineering, manifacturing,...) ridurre i costi e le difficolta produttive che nascono dalla logica di comunicazione formale ridurre i tempi di produzione che derivano da uno sviluppo prodotti essenzialmente sequenziale La risposta: Integrazione di metodi, tools, cultura 01Intro.56
Concurrent Engineering Sviluppo sequenziale Base delivery Release 1 Release 2 Release 3 Sviluppo concorrente Base del. Mod1 Mod2 Integr. Release 1... Release 2 Release 3 La differenza rispetto ai modelli di processo incrementali o a spirale è la granularità e la dimensione dei processi che vengono attivati in simultanea (fasi vs processi completi) 01Intro.57