3. Ciclo di Vita e Processi di Sviluppo - come posso ...polini/downloads/SE0708/IdS_3.pdf ·...

25
3. 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) 3. Ciclo di Vita e Processi di Sviluppo 1 / 25

Transcript of 3. Ciclo di Vita e Processi di Sviluppo - come posso ...polini/downloads/SE0708/IdS_3.pdf ·...

Page 1: 3. Ciclo di Vita e Processi di Sviluppo - come posso ...polini/downloads/SE0708/IdS_3.pdf · Processi di Sviluppo Software Processi Iterativi Cercano di fondere i processi evoulitivi

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

Andrea Polini

Ingegneria del SoftwareCorso di Laurea in Informatica

(Ingegneria del Software) 3. Ciclo di Vita e Processi di Sviluppo 1 / 25

Page 2: 3. Ciclo di Vita e Processi di Sviluppo - come posso ...polini/downloads/SE0708/IdS_3.pdf · Processi di Sviluppo Software Processi Iterativi Cercano di fondere i processi evoulitivi

Sommario

1 Il ciclo di vita del software

2 Processi di Sviluppo Software

3 Computer-Aided Software Engineering

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

Page 3: 3. Ciclo di Vita e Processi di Sviluppo - come posso ...polini/downloads/SE0708/IdS_3.pdf · Processi di Sviluppo Software Processi Iterativi Cercano di fondere i processi evoulitivi

Il ciclo di vita del software

Sommario

1 Il ciclo di vita del software

2 Processi di Sviluppo Software

3 Computer-Aided Software Engineering

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

Page 4: 3. Ciclo di Vita e Processi di Sviluppo - come posso ...polini/downloads/SE0708/IdS_3.pdf · Processi di Sviluppo Software Processi Iterativi Cercano di fondere i processi evoulitivi

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) 3. Ciclo di Vita e Processi di Sviluppo 4 / 25

Page 5: 3. Ciclo di Vita e Processi di Sviluppo - come posso ...polini/downloads/SE0708/IdS_3.pdf · Processi di Sviluppo Software Processi Iterativi Cercano di fondere i processi evoulitivi

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) 3. Ciclo di Vita e Processi di Sviluppo 5 / 25

Page 6: 3. Ciclo di Vita e Processi di Sviluppo - come posso ...polini/downloads/SE0708/IdS_3.pdf · Processi di Sviluppo Software Processi Iterativi Cercano di fondere i processi evoulitivi

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

(Ingegneria del Software) 3. Ciclo di Vita e Processi di Sviluppo 6 / 25

Page 7: 3. Ciclo di Vita e Processi di Sviluppo - come posso ...polini/downloads/SE0708/IdS_3.pdf · Processi di Sviluppo Software Processi Iterativi Cercano di fondere i processi evoulitivi

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) 3. Ciclo di Vita e Processi di Sviluppo 7 / 25

Page 8: 3. Ciclo di Vita e Processi di Sviluppo - come posso ...polini/downloads/SE0708/IdS_3.pdf · Processi di Sviluppo Software Processi Iterativi Cercano di fondere i processi evoulitivi

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) 3. Ciclo di Vita e Processi di Sviluppo 8 / 25

Page 9: 3. Ciclo di Vita e Processi di Sviluppo - come posso ...polini/downloads/SE0708/IdS_3.pdf · Processi di Sviluppo Software Processi Iterativi Cercano di fondere i processi evoulitivi

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) 3. Ciclo di Vita e Processi di Sviluppo 9 / 25

Page 10: 3. Ciclo di Vita e Processi di Sviluppo - come posso ...polini/downloads/SE0708/IdS_3.pdf · Processi di Sviluppo Software Processi Iterativi Cercano di fondere i processi evoulitivi

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) 3. Ciclo di Vita e Processi di Sviluppo 10 / 25

Page 11: 3. Ciclo di Vita e Processi di Sviluppo - come posso ...polini/downloads/SE0708/IdS_3.pdf · Processi di Sviluppo Software Processi Iterativi Cercano di fondere i processi evoulitivi

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) 3. Ciclo di Vita e Processi di Sviluppo 11 / 25

Page 12: 3. Ciclo di Vita e Processi di Sviluppo - come posso ...polini/downloads/SE0708/IdS_3.pdf · Processi di Sviluppo Software Processi Iterativi Cercano di fondere i processi evoulitivi

Processi di Sviluppo Software

Sommario

1 Il ciclo di vita del software

2 Processi di Sviluppo Software

3 Computer-Aided Software Engineering

(Ingegneria del Software) 3. Ciclo di Vita e Processi di Sviluppo 12 / 25

Page 13: 3. Ciclo di Vita e Processi di Sviluppo - come posso ...polini/downloads/SE0708/IdS_3.pdf · Processi di Sviluppo Software Processi Iterativi Cercano di fondere i processi evoulitivi

Processi di Sviluppo Software

Modelli di Processo

Nessuna soluzione generale!!

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) 3. Ciclo di Vita e Processi di Sviluppo 13 / 25

Page 14: 3. Ciclo di Vita e Processi di Sviluppo - come posso ...polini/downloads/SE0708/IdS_3.pdf · Processi di Sviluppo Software Processi Iterativi Cercano di fondere i processi evoulitivi

Processi di Sviluppo Software

Processo a Cascata

Le attività costituenti il processo sono eseguite sequenzialmente.terminata un’attività questa non viene ulteriormente riconsideratanelle fasi successive. Sovrapposizione dei vari team perpassaggio 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 documenatato (document driven).

Visibilità alta o bassa? Timeliness? Produttività?Quando applicarlo?

(Ingegneria del Software) 3. Ciclo di Vita e Processi di Sviluppo 14 / 25

Page 15: 3. Ciclo di Vita e Processi di Sviluppo - come posso ...polini/downloads/SE0708/IdS_3.pdf · Processi di Sviluppo Software Processi Iterativi Cercano di fondere i processi evoulitivi

Processi di Sviluppo Software

Processo Evolutivo

Il prodotto viene sviluppato tramite incrementi successivi.Sviluppo EsplorativoThroaway Prototyping

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

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

(Ingegneria del Software) 3. Ciclo di Vita e Processi di Sviluppo 15 / 25

Page 16: 3. Ciclo di Vita e Processi di Sviluppo - come posso ...polini/downloads/SE0708/IdS_3.pdf · Processi di Sviluppo Software Processi Iterativi Cercano di fondere i processi evoulitivi

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) 3. Ciclo di Vita e Processi di Sviluppo 16 / 25

Page 17: 3. Ciclo di Vita e Processi di Sviluppo - come posso ...polini/downloads/SE0708/IdS_3.pdf · Processi di Sviluppo Software Processi Iterativi Cercano di fondere i processi evoulitivi

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) 3. Ciclo di Vita e Processi di Sviluppo 17 / 25

Page 18: 3. Ciclo di Vita e Processi di Sviluppo - come posso ...polini/downloads/SE0708/IdS_3.pdf · Processi di Sviluppo Software Processi Iterativi Cercano di fondere i processi evoulitivi

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) 3. Ciclo di Vita e Processi di Sviluppo 18 / 25

Page 19: 3. Ciclo di Vita e Processi di Sviluppo - come posso ...polini/downloads/SE0708/IdS_3.pdf · Processi di Sviluppo Software Processi Iterativi Cercano di fondere i processi evoulitivi

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”.

(Ingegneria del Software) 3. Ciclo di Vita e Processi di Sviluppo 19 / 25

Page 20: 3. Ciclo di Vita e Processi di Sviluppo - come posso ...polini/downloads/SE0708/IdS_3.pdf · Processi di Sviluppo Software Processi Iterativi Cercano di fondere i processi evoulitivi

Processi di Sviluppo Software

Processi Iterativi

Cercano di fondere i processi evoulitivi e a cascata cercando dimantenerne le qualità positive rimuovendo quelle negative.

Basati sul concetto di iterazione:Rilascio incrementalesviluppo a spirale

(Ingegneria del Software) 3. Ciclo di Vita e Processi di Sviluppo 20 / 25

Page 21: 3. Ciclo di Vita e Processi di Sviluppo - come posso ...polini/downloads/SE0708/IdS_3.pdf · Processi di Sviluppo Software Processi Iterativi Cercano di fondere i processi evoulitivi

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) 3. Ciclo di Vita e Processi di Sviluppo 21 / 25

Page 22: 3. Ciclo di Vita e Processi di Sviluppo - come posso ...polini/downloads/SE0708/IdS_3.pdf · Processi di Sviluppo Software Processi Iterativi Cercano di fondere i processi evoulitivi

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) 3. Ciclo di Vita e Processi di Sviluppo 22 / 25

Page 23: 3. Ciclo di Vita e Processi di Sviluppo - come posso ...polini/downloads/SE0708/IdS_3.pdf · Processi di Sviluppo Software Processi Iterativi Cercano di fondere i processi evoulitivi

Processi di Sviluppo Software

Processi Iterativi

Visibilità alta o bassa? Timeliness? Produttività?

Quando applicarlo?

(Ingegneria del Software) 3. Ciclo di Vita e Processi di Sviluppo 23 / 25

Page 24: 3. Ciclo di Vita e Processi di Sviluppo - come posso ...polini/downloads/SE0708/IdS_3.pdf · Processi di Sviluppo Software Processi Iterativi Cercano di fondere i processi evoulitivi

Computer-Aided Software Engineering

Sommario

1 Il ciclo di vita del software

2 Processi di Sviluppo Software

3 Computer-Aided Software Engineering

(Ingegneria del Software) 3. Ciclo di Vita e Processi di Sviluppo 24 / 25

Page 25: 3. Ciclo di Vita e Processi di Sviluppo - come posso ...polini/downloads/SE0708/IdS_3.pdf · Processi di Sviluppo Software Processi Iterativi Cercano di fondere i processi evoulitivi

Computer-Aided Software Engineering

CASE

Ingegneria del software si occupa anche di sviluppare strumenti disupporto alle varie attività.

Sempre più basati su potenti interfacce grafiche possono essereclassificati in:

Tools: si rivolgono a specifici taskWorkbench: si riferiscono a specifiche attivitàEnvironments: supportano buona parte del processo.

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