Post on 27-Jun-2020
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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