2. Ciclo di Vita e Processi di Sviluppo - come posso ...polini/downloads/SE0809/IdS_02.pdf ·...

44
2. Ciclo di Vita e Processi di Sviluppo come posso procedere nello sviluppo? Andrea Polini Ingegneria del Software Corso di Laurea in Informatica (Ingegneria del Software) 2. Ciclo di Vita e Processi di Sviluppo 1 / 41

Transcript of 2. Ciclo di Vita e Processi di Sviluppo - come posso ...polini/downloads/SE0809/IdS_02.pdf ·...

2. Ciclo di Vita e Processi di Sviluppocome posso procedere nello sviluppo?

Andrea Polini

Ingegneria del SoftwareCorso di Laurea in Informatica

(Ingegneria del Software) 2. Ciclo di Vita e Processi di Sviluppo 1 / 41

Sommario

1 Il ciclo di vita del software

2 Processi di Sviluppo Software

(Ingegneria del Software) 2. Ciclo di Vita e Processi di Sviluppo 2 / 41

Il ciclo di vita del software

Sommario

1 Il ciclo di vita del software

2 Processi di Sviluppo Software

(Ingegneria del Software) 2. Ciclo di Vita e Processi di Sviluppo 3 / 41

Il ciclo di vita del software

Process Activities

Tipicamente i differenti processi software si distinguono in base allaorganizzazione delle differenti fasi dello sviluppo:

Software SpecificationSoftware Design and ImplementationSoftware ValidationSoftare Evolution

(Ingegneria del Software) 2. Ciclo di Vita e Processi di Sviluppo 4 / 41

Il ciclo di vita del software

Software Specification

Capire cosa il sistema deve fareQuali sono i vincoli a cui il sistema deve sottostare

Differenti tipi di specificaRivolta al customerRivolta allo sviluppatore

(Ingegneria del Software) 2. Ciclo di Vita e Processi di Sviluppo 5 / 41

Il ciclo di vita del software

Software Specification...continua

Ingegneria dei requisiti prevede quattro fasi principali:Studio di fattibilitàElicitazione dei requisiti ed analisiSpecifica dei RequisitiValidazione dei Requisiti (realistici? consistenti? completi?)

(Ingegneria del Software) 2. Ciclo di Vita e Processi di Sviluppo 6 / 41

Il ciclo di vita del software

Software Design and Implementation

Derivare una descrizione:del software che deve essere sviluppato e della sua architetturadei dati che devono essere scambiaticomponenti facenti parte del sistemainterfacce tra i vari elementi del sistemaalgoritmi utilizzati

(Ingegneria del Software) 2. Ciclo di Vita e Processi di Sviluppo 7 / 41

Il ciclo di vita del software

Software Design and Implementation

Differenti processi postpongono le varie fasi verso l’implementazione overso il design

Approcci al designMetodologie agili tendono a ridurre i modelli sviluppati nelle fasiMetodi strutturati tendono a sviluppare molti modelli usandonotazioni grafiche(i.e. UML)

(Ingegneria del Software) 2. Ciclo di Vita e Processi di Sviluppo 8 / 41

Il ciclo di vita del software

Software Design and Implementation...continua

Tipici modelli in approcci strutturati:Modello ad oggettiModello di sequenzeModello a transizione degli statiModello strutturaleModello del flusso dei dati

Debugging è fa parte delle attività di design ed implementation.

Testing vs. Debugging?

(Ingegneria del Software) 2. Ciclo di Vita e Processi di Sviluppo 9 / 41

Il ciclo di vita del software

Software Validation

Obiettivo è verificare che il sistema soddisfa i requisiti Technicheutilizzabili:

Ispezione del codiceTesting

Tipicamente testing strutturato su più fasi:Testing di componente o di unitàTesting di integrazioneTesting di sistemaTesting di Accettazione (alpha testing)Beta testing

(Ingegneria del Software) 2. Ciclo di Vita e Processi di Sviluppo 10 / 41

Il ciclo di vita del software

Software Evolution

Riguarda le attività che sono messe in atto sul software già rilasciato.

Tipi di evoluzione:correttivoadattivoperfettivo

(Ingegneria del Software) 2. Ciclo di Vita e Processi di Sviluppo 11 / 41

Processi di Sviluppo Software

Sommario

1 Il ciclo di vita del software

2 Processi di Sviluppo Software

(Ingegneria del Software) 2. Ciclo di Vita e Processi di Sviluppo 12 / 41

Processi di Sviluppo Software

Modelli di Processo

Un processo software è costituito da un insieme di attività checonducono alla realizzazione di un prodotto software

Nessuna soluzione generale! Infatti molte organizzazionisviluppano proprio processo di sviluppoForte dipendenza dalla persone e dall’organizzazione interna

Principali modelli di processo discussi (Attenzione! sono solocategorie):

waterfallSviluppo EvolutivoComponent-based Software EngineeringSviluppo in camera sterile (cleanroom development, B method,Model Driven Development)

Nella realtà spesso processi utilizzati sono una commistione deidiversi modelli

(Ingegneria del Software) 2. Ciclo di Vita e Processi di Sviluppo 13 / 41

Processi di Sviluppo Software

Processo a Cascata

Primo processo di sviluppo apparso in letteratura (Royce 1970). Fasidello sviluppo strutturate in accordo alle attività fondamentali:

Analisi e definizione dei requisitiProgettazione del sistema e del softwareImplementazione e test di unitàIntegrazione e test di sistemaIstallazione e mantenimento

(Ingegneria del Software) 2. Ciclo di Vita e Processi di Sviluppo 14 / 41

Processi di Sviluppo Software

Processo a Cascata

le varie attività in realtà vengono ripetute diverse volte ma ad uncerto punto congelate ad un certo stato - risultati descritti inappositi documentiterminata definitivamente un’attività questa non vieneulteriormente riconsiderata nel seguito.In generale necessità di sovrapposizione dei vari team (seassegnati sulle fasi) per passaggio di informazioni.

Conseguenze principali:I requisiti vengono fissati ad un certo punto e mai più modificatiPrematura decisione sui requisiti rende il processo “sordo” allesuccessive richieste di adattamento dei requisiti da parte delcliente.Processo fortemente documentato (document driven).

Visibilità alta o bassa? Timeliness?Quando applicarlo?(Ingegneria del Software) 2. Ciclo di Vita e Processi di Sviluppo 15 / 41

Processi di Sviluppo Software

Processo Evolutivo

Il prodotto viene sviluppato cercando di derivare un prototipo e perincrementi successivi fino a raggiungere un sistema soddisfacente

Sviluppo Esplorativo - stette fasi di interazione con l’utenteThroaway Prototyping - comprensione dei requisiti

Conseguenze principali:Il sistema tende ad essere poco strutturato (a causa dei continuicambiamenti)Induce probabili difficoltà in fasi di mantenimento (scarsavisibilità).

Visibilità alta o bassa? Timeliness?Quando applicarlo?“Do it twice” - Baker

(Ingegneria del Software) 2. Ciclo di Vita e Processi di Sviluppo 16 / 41

Processi di Sviluppo Software

Component based software engineeringgeneralità

Aumento nella complessità dei sistemi implica forte spinta al riuso(interno e non - COTS)

Obiettivo di CBSE: implementare un sistema come integrazione dicomponenti preconfezionati.

Un po’ di storia . . .Conferenza di Garmisch 1968primi modelli a componenti OLE-X (anni ottanta)oggi . . .

Modelli di componenti Desktop (COM, Bonomo ...)Modelli di componenenti distribuiti (CCM, EJB, ...)

(Ingegneria del Software) 2. Ciclo di Vita e Processi di Sviluppo 17 / 41

Processi di Sviluppo Software

Component based Software EngineeringModelli di componenti

Definiscono una piattaforma di supporto al riuso ed una serie di regoleper:

interfacce da definiremeccanismi di interazione tra componentiimpacchettare il componente

(Ingegneria del Software) 2. Ciclo di Vita e Processi di Sviluppo 18 / 41

Processi di Sviluppo Software

Component based Software EngineeringProcesso di sviluppo

Non si sono ancora evidenziati processi di sviluppo condivisi in questoambito.

Principali differenze comunque si avranno con introduzione di nuovefasi nello sviluppo e nuove iterazioni.

Component provisioningRequirements adaptationDesign orientato al riusoSviluppo orientato all’integrazione ed adattamento.

(Ingegneria del Software) 2. Ciclo di Vita e Processi di Sviluppo 19 / 41

Processi di Sviluppo Software

Component based Software EngineeringConseguenze

Visibilità alta o bassa? Timeliness? Produttività?

Quando applicarlo?

Approccio profondamente differente allo sviluppo. Introduzioneall’interno di un’organizzazione richiede training e persone con fortidoti di astrazione.

Capacità di sviluppare sistemi complessi in minor tempo. Riduce ilrischio dello sviluppo. Tendenzialmente il prodotto finale dovrebbeessere “migliore”.

Sviluppo di un semplice mailer di posta elettronica

(Ingegneria del Software) 2. Ciclo di Vita e Processi di Sviluppo 20 / 41

Processi di Sviluppo Software

Processi Iterativi

Cercano di fondere le strutture dei processi evolutivi e a cascatacercando di mantenerne le qualità positive rimuovendo quelle negative.

Basati sul concetto di iterazione (la specifica si sviluppa con ilsistema):

Rilascio incrementalesviluppo a spirale

(Ingegneria del Software) 2. Ciclo di Vita e Processi di Sviluppo 21 / 41

Processi di Sviluppo Software

Rilascio incrementale

Processo procede con tanti mini “waterfall” in sequenza.Ad ogni iterazione viene rilasciato un sistema funzionante chepotrà essere utilizzato dal cliente.Si pianificano iterazioni successive introducendo via via nuovefunzionalità.Una volta attivata un’iterazione deve essere terminata senzainterferenzeOgni iterazione dovrebbe tendere ad aumentare il sistema di unaporzione gestibile (20.000 LOC?)

(Ingegneria del Software) 2. Ciclo di Vita e Processi di Sviluppo 22 / 41

Processi di Sviluppo Software

Rilascio incrementalevantaggi

Principali vantaggi:

Clienti non devono aspettare rilascio finale prima di poterutilizzare il sistemaUso sul prototipo comporta scoperta, definizione e modifica direquisitiridotto rischio di fallimentofunzionalità più importanti maggiormente testate

(Ingegneria del Software) 2. Ciclo di Vita e Processi di Sviluppo 23 / 41

Processi di Sviluppo Software

Sviluppo a Spirale

Proposto da Boehm nel 1988 introduce gestione del rischio nellapianificazione delle varie iterazioni.

Rappresentabile su un piano tramite una spirale dove ogni quadranteconsiste di attività volte a:

Specificare gli obiettivi dell’iterazione ed itentificazione dei rischiValutare il rischio e definire techniche per la sua gestioneProcedere allo sviluppo ed alla validazionePianificazione, si procede a valutare la necessità di un’ulterioreiterazione.

(Ingegneria del Software) 2. Ciclo di Vita e Processi di Sviluppo 24 / 41

Processi di Sviluppo Software

Processi Iterativi

Visibilità alta o bassa? Timeliness?

Quando applicarlo?

(Ingegneria del Software) 2. Ciclo di Vita e Processi di Sviluppo 25 / 41

Processi di Sviluppo Software

Il Processo Unificato

UP è un processo industriale “standardizzato” per lo sviluppo delsoftware:

è il processo di riferimento per l’uso di UMLè “free” – descritto nel libro “The Unified Software DevelopmentProcess”

Caratteristiche salienti:Guidato dal rischioGuidato dai Casi d’usoÈ incentrato sull’architetturaProcesso Iterativo incrementale

UP è un processo generico di sviluppo del software. Deve essereadattato per ogni singolo progetto:

Standard interni, formati di documenti, tools, databases, modificheal ciclo di vita . . .

Rational Unified Process (RUP) è una particolare istanza di UP:è un prodotto di Rational CorporationDeve esssere adattato ma precisamente definito

(Ingegneria del Software) 2. Ciclo di Vita e Processi di Sviluppo 26 / 41

Processi di Sviluppo Software

Storia dello UP

(Ingegneria del Software) 2. Ciclo di Vita e Processi di Sviluppo 27 / 41

Processi di Sviluppo Software

Iterazioni

Un’iterazione può essere considerata come un mini progetto cheinclude le seguenti attività:

PianificazioneAnalisi e DesignImplementazioneIntegrazione e TestRilascio interno o esterno

il prodotto viene derivato attraverso una sequenza di iterazionile iterazioni si possono sovrapporrele iterazioni sono organizzate in fasiFavorire agilità: iterazioni “timeboxed” e durata ridotta (2-3settimane)

(Ingegneria del Software) 2. Ciclo di Vita e Processi di Sviluppo 28 / 41

Processi di Sviluppo Software

Flusso di lavoro nelle iterazioni nello UP

Ogni iterazione può contenere tutte le attività del flusso di lavoro conuna differente enfasi su ognuna di esse in dipendenza dello stato diavanzamento del progetto

(Ingegneria del Software) 2. Ciclo di Vita e Processi di Sviluppo 29 / 41

Processi di Sviluppo Software

Baselines

Ogni iterazione genera una “baseline”una baseline è un insieme di artefatti rivisti ed approvati che:

Forniscono un base condivisa per ulteriore sviluppoPossono essere modificati solo attraverso una procedura formale

Un incremento è la differenza tra la baseline generata ad unaiterazione e quella generata all’iterazione successiva

(Ingegneria del Software) 2. Ciclo di Vita e Processi di Sviluppo 30 / 41

Processi di Sviluppo Software

Struttura dello UP

Dipendentemente dalla dimensione del progetto ogni fase puòincludere diverse iterazioni per ognuna delle quattro fasiUna fase si conclude con una milestoneFasi caratterizzate da: obiettivi, focus dei flussi di lavoro (attività),milestone

(Ingegneria del Software) 2. Ciclo di Vita e Processi di Sviluppo 31 / 41

Processi di Sviluppo Software

Fasi e flussi di lavoro dello UP

(Ingegneria del Software) 2. Ciclo di Vita e Processi di Sviluppo 32 / 41

Processi di Sviluppo Software

Avvio(Inception)

(Ingegneria del Software) 2. Ciclo di Vita e Processi di Sviluppo 33 / 41

Processi di Sviluppo Software

Avvio(Inception)

Condizioni da soddisfare dalla fase e artefatti attesi:Lo scopo del sistema è stato definito (documento di alto livello con irequisiti principali)Definire l’ambito del progetto (I requisiti base del sistema sono staticatturati e concordati con i vari attori – Casi d’uso 10-20 %)Una “visione” architetturale è stata definita (documento iniziale diarchitettura)Una prima valutazione del rishio è stata derivata (documento oarchivio di valutazione dei rischi)Una prima valutazione dei costi e dei tempi (pianificazione delprogetto)Un caso illustrativo di business è stato prodotto con evidenziazionedei vantaggi (caso di business)Fattibilità del progetto è stata confermata (definizione di uno o piùprototipi)

(Ingegneria del Software) 2. Ciclo di Vita e Processi di Sviluppo 34 / 41

Processi di Sviluppo Software

Elaborazione(Elaboration)

(Ingegneria del Software) 2. Ciclo di Vita e Processi di Sviluppo 35 / 41

Processi di Sviluppo Software

Elaborazione(Elaboration)

Condizioni da soddisfare dalla fase ed artefatti attesi:Creare Baseline robusta ed eseguibile (la baseline è eseguibile)Baseline eseguibile dimostra che i rischi sono stati identificati erisolti (modello statico UML, modello dinamico UML, casi d’uso)Revisione della stima dei rischi (valutazione aggiornata)Visione d’insieme del sistema stabilizzata (80 % dei casi d’usodefiniti - documento descrittivo del sistema)La parti hanno approvato la pianificazione di progettopianificazione a livello di dettaglio tale da consentire formulazionirealistiche di tempi, costi e risorse richieste (pianificazioneaggiornata)Accordo finale tra le parti (Accordo firmato)

(Ingegneria del Software) 2. Ciclo di Vita e Processi di Sviluppo 36 / 41

Processi di Sviluppo Software

Costruzione(Construction)

(Ingegneria del Software) 2. Ciclo di Vita e Processi di Sviluppo 37 / 41

Processi di Sviluppo Software

Costruzione(Construction)

Condizioni da soddisfare dalla fase ed artefatti attesi:Software stabile e di qualità sufficiente ad essere rilasciato(prodotto software, modello UML, suite di test)verifica dei costi rispetto alla pianificazione (pianificazione delprogetto)Accordo tra le parti per il rilascio (manuale utente e descrizione delrilascio)

(Ingegneria del Software) 2. Ciclo di Vita e Processi di Sviluppo 38 / 41

Processi di Sviluppo Software

Transizione(Transition)

(Ingegneria del Software) 2. Ciclo di Vita e Processi di Sviluppo 39 / 41

Processi di Sviluppo Software

Transizione(Transition)

Condizioni da soddisfare dalla fase ed artefatti attesi:Il beta test è ultimato, le necessarie modifiche al software sonostate effettuate, gli utenti concordano con l’affermare che il sistemaè stato rilasciato con successo (prodotto software)Gli utenti utilizzano attivamente il prodotto (pianificazione delsupporto)definizione delle strategie di supporto (manuali utente aggiornati)

(Ingegneria del Software) 2. Ciclo di Vita e Processi di Sviluppo 40 / 41

Processi di Sviluppo Software

Scenari d’uso

1 Si vuole implementare da zero un sistema per la gestione dellebuste paga di un azienda visto che il vecchio sistema manifestaproblemi di affidabilità e performance

2 Si vuole reimplementare l’intero sistema di automazione di ufficiodell’azienda al fine di poterlo integrare pienamente con altrisistemi quali ad esempio le movimentazioni di magazzino

3 Un ricco magnate richiede di sviluppare un nuovo software chepermetta di comandare attraverso il cellulare tutti glielettrodomestici di casa.

4 Si vuole implementare un sistema per il controllo di un sistema didighe azionate dal movimento della marea.

(Ingegneria del Software) 2. Ciclo di Vita e Processi di Sviluppo 41 / 41

Processi di Sviluppo Software

Scenari d’uso

1 Si vuole implementare da zero un sistema per la gestione dellebuste paga di un azienda visto che il vecchio sistema manifestaproblemi di affidabilità e performance

2 Si vuole reimplementare l’intero sistema di automazione di ufficiodell’azienda al fine di poterlo integrare pienamente con altrisistemi quali ad esempio le movimentazioni di magazzino

3 Un ricco magnate richiede di sviluppare un nuovo software chepermetta di comandare attraverso il cellulare tutti glielettrodomestici di casa.

4 Si vuole implementare un sistema per il controllo di un sistema didighe azionate dal movimento della marea.

(Ingegneria del Software) 2. Ciclo di Vita e Processi di Sviluppo 41 / 41

Processi di Sviluppo Software

Scenari d’uso

1 Si vuole implementare da zero un sistema per la gestione dellebuste paga di un azienda visto che il vecchio sistema manifestaproblemi di affidabilità e performance

2 Si vuole reimplementare l’intero sistema di automazione di ufficiodell’azienda al fine di poterlo integrare pienamente con altrisistemi quali ad esempio le movimentazioni di magazzino

3 Un ricco magnate richiede di sviluppare un nuovo software chepermetta di comandare attraverso il cellulare tutti glielettrodomestici di casa.

4 Si vuole implementare un sistema per il controllo di un sistema didighe azionate dal movimento della marea.

(Ingegneria del Software) 2. Ciclo di Vita e Processi di Sviluppo 41 / 41

Processi di Sviluppo Software

Scenari d’uso

1 Si vuole implementare da zero un sistema per la gestione dellebuste paga di un azienda visto che il vecchio sistema manifestaproblemi di affidabilità e performance

2 Si vuole reimplementare l’intero sistema di automazione di ufficiodell’azienda al fine di poterlo integrare pienamente con altrisistemi quali ad esempio le movimentazioni di magazzino

3 Un ricco magnate richiede di sviluppare un nuovo software chepermetta di comandare attraverso il cellulare tutti glielettrodomestici di casa.

4 Si vuole implementare un sistema per il controllo di un sistema didighe azionate dal movimento della marea.

(Ingegneria del Software) 2. Ciclo di Vita e Processi di Sviluppo 41 / 41