MODELLI DI PROCESSO DI PRODUZIONE SOFTWARE. Cicli di vita: business, prodotto e processo.

38
MODELLI DI PROCESSO DI PRODUZIONE SOFTWARE

Transcript of MODELLI DI PROCESSO DI PRODUZIONE SOFTWARE. Cicli di vita: business, prodotto e processo.

Page 1: MODELLI DI PROCESSO DI PRODUZIONE SOFTWARE. Cicli di vita: business, prodotto e processo.

MODELLI DI PROCESSO DI PRODUZIONE SOFTWARE

Page 2: MODELLI DI PROCESSO DI PRODUZIONE SOFTWARE. Cicli di vita: business, prodotto e processo.

Cicli di vita: business, prodotto e processo

Page 3: MODELLI DI PROCESSO DI PRODUZIONE SOFTWARE. Cicli di vita: business, prodotto e processo.

Modelli di processo

1. Modello a cascata Fasi distinte di specifica e di sviluppo

2. Modello evolutivo Specifica e sviluppo interagiscono

3. Modello trasformazionale Un sistema matematico è trasformato formalmente in

una implementazione

Page 4: MODELLI DI PROCESSO DI PRODUZIONE SOFTWARE. Cicli di vita: business, prodotto e processo.

Modelli di processo4. Sviluppo basato sul riutilizzo

Il sistema è ottenuto combinando componenti esistenti

5. Sviluppo Agile (Extreme Programming) Sviluppo e rilascio di incrementi molto piccoli di

funzionalità

6. Modello a spirale Si parte dai rischi

Page 5: MODELLI DI PROCESSO DI PRODUZIONE SOFTWARE. Cicli di vita: business, prodotto e processo.

1. Modello a cascataDefinizione dei Requisiti

Progettazione del Sistema

e del Software

Implementazione etesting delle singole unità

Integrazione e testing di sistema

Installazione eManutenzione

Page 6: MODELLI DI PROCESSO DI PRODUZIONE SOFTWARE. Cicli di vita: business, prodotto e processo.

Fasi del modello a cascata Analisi e definizione dei requisiti Progettazione del sistema e del software Implementazione e test delle singole unità Integrazione e test del sistema Installazione e mantenimento

Il limite del modello a cascata è la difficoltà ad effettuare cambiamenti nel corso del processo

Page 7: MODELLI DI PROCESSO DI PRODUZIONE SOFTWARE. Cicli di vita: business, prodotto e processo.

Documentazione del modello a cascata

Activity Output documentsRequirements analysis Feasibility study, Outline requirementsRequirements definition Requirements documentSystem specification Functional specification, Acceptance test plan

Draft user manualArchitectural design Architectural specification, System test planInterface design Interface specification, Integration test planDetailed design Design specification, Unit test planCoding Program codeUnit testing Unit test reportModule testing Module test reportIntegration testing Integration test report, Final user manualSystem testing System test reportAcceptance testing Final system plus documentation

Page 8: MODELLI DI PROCESSO DI PRODUZIONE SOFTWARE. Cicli di vita: business, prodotto e processo.

Versione Finale

Versione Finale

2. Modello evolutivo

Descrizione dimassima

Versione Iniziale

Versioni Intermedie

Attività concorrenti

Specifica

Sviluppo

Validazione

Page 9: MODELLI DI PROCESSO DI PRODUZIONE SOFTWARE. Cicli di vita: business, prodotto e processo.

Modello evolutivo

Communication

Quick plan

Construction of prototype

Modeling Quick design

Delivery & Feedback

Deployment

Page 10: MODELLI DI PROCESSO DI PRODUZIONE SOFTWARE. Cicli di vita: business, prodotto e processo.

Modello evolutivo Prototipazione di tipo evolutivo

L’obiettivo è lavorare con il cliente ed evolvere verso il sistema finale a partire da una specifica di massima. Lo sviluppo inizia con le parti del sistema che sono già ben specificate, aggiungendo via via nuove caratteristiche

Prototipazione di tipo usa e getta L’obiettivo è capire i requisiti del sistema. e quindi

sviluppare una definizione migliore dei requisiti. Il prototipo sperimenta le parti del sistema che non sono ancora ben comprese

Page 11: MODELLI DI PROCESSO DI PRODUZIONE SOFTWARE. Cicli di vita: business, prodotto e processo.

Modello evolutivo Problemi

Mancanza di visibilità del processo Sistemi spesso poco strutturati Possono essere richieste particolari capacità (ad

esempio in linguaggi per prototyping rapido)

Applicabilità Sistemi interattivi di piccola o meda dimensione Per parti di sistemi più grandi (es. interfaccia utente) Per sistemi a vita breve

Page 12: MODELLI DI PROCESSO DI PRODUZIONE SOFTWARE. Cicli di vita: business, prodotto e processo.

3. Modello trasformazionale Basato sulla trasformazione di una specifica

matematica in in programma eseguibile, attraverso trasformazioni che permettono di passare da una rappresentazione formale ad un’altra.

Le trasformazioni devono preservare la correttezza. Questo garantisce che il programma soddisfi la specifica.

Page 13: MODELLI DI PROCESSO DI PRODUZIONE SOFTWARE. Cicli di vita: business, prodotto e processo.

Modello trasformazionale

R2Formal

specificationR3

Executableprogram

P2 P3 P4

T1 T2 T3 T4

Proofs of transformation correctness

Formal transformations

R1

P1

Page 14: MODELLI DI PROCESSO DI PRODUZIONE SOFTWARE. Cicli di vita: business, prodotto e processo.

4. Modello basato sul riutilizzo Basato sl riuso sistematico di componenti off-the-

shelf, integrate opportunamente Fasi del modello:

Analisi delle componenti Adattamento dei requisiti Progettazone del sistema Integrazione

Page 15: MODELLI DI PROCESSO DI PRODUZIONE SOFTWARE. Cicli di vita: business, prodotto e processo.

Sviluppo basato sul riuso

Page 16: MODELLI DI PROCESSO DI PRODUZIONE SOFTWARE. Cicli di vita: business, prodotto e processo.

5. Metodologie di Sviluppo Agile I principi su cui si basa una metodologia leggera che segua i

punti indicati dall'Agile Manifesto, sono solo quattro: le persone e le interazioni sono più importanti dei

processi e degli strumenti (ossia le relazioni e la comunicazione tra gli attori di un progetto software sono la miglior risorsa del progetto)

è più importante avere software funzionante che documentazione (bisogna rilasciare nuove versioni del software ad intervalli frequenti, e bisogna mantenere il codice semplice e avanzato tecnicamente, riducendo la documentazione al minimo indispensabile)

bisogna collaborare con i clienti al di là del contratto (la collaborazione diretta offre risultati migliori dei rapporti contrattuali)

bisogna essere pronti a rispondere ai cambiamenti più che aderire al progetto (quindi il team di sviluppo dovrebbe essere autorizzato a suggerire modifiche al progetto in ogni momento)

Page 17: MODELLI DI PROCESSO DI PRODUZIONE SOFTWARE. Cicli di vita: business, prodotto e processo.

XP Core Practice XP è definito dalle pratiche usate. Le pratiche variano nel tempo e a seconda del

progetto in cui vengono utilizzate:

1. Planning the game

2. Simple Design

3. Pair Programming

4. Testing

5. Refactor

6. Short releases 7. Coding Standard

Page 18: MODELLI DI PROCESSO DI PRODUZIONE SOFTWARE. Cicli di vita: business, prodotto e processo.

Business peopleTechnical people

Scope !

Priority!

Composition of releases..

Dates ofReleases..

Estimates!

Consequences

Process

Detailed scheduling

XP Core Practice: planning the game

Page 19: MODELLI DI PROCESSO DI PRODUZIONE SOFTWARE. Cicli di vita: business, prodotto e processo.

XP Core Practice: planning the game sviluppo dell'applicazione accompagnato dalla

stesura di un piano di lavoro piano definito e aggiornato a intervalli brevi e

regolari dai responsabili del progetto, secondo le priorità aziendali e le stime dei programmatori

i programmatori partecipano, in modo attivo, alla pianificazione

la pianificazione coinvolge sia utenti responsabili del progetto che sviluppatori per stabilire un equilibrio dinamico fra le esigenze di tutti

Page 20: MODELLI DI PROCESSO DI PRODUZIONE SOFTWARE. Cicli di vita: business, prodotto e processo.

XP Core Practice: planning the game

gli utenti finali dell'applicazione presentano gli obiettivi da raggiungere descrivendo una serie di scenari (storie)

gli sviluppatori stimano il tempo necessario per la realizzazione di ogni storia

le storie vengono ordinate da utenti e responsabili secondo la loro priorità di realizzazione, dopo che gli sviluppatori ne hanno stimata la rispettiva difficoltà

dalla sintesi delle valutazioni i responsabili del progetto generano la pianificazione delle attività, intesa come l'insieme di storie che dovranno essere realizzate per il prossimo rilascio e le date previste

cont.

Page 21: MODELLI DI PROCESSO DI PRODUZIONE SOFTWARE. Cicli di vita: business, prodotto e processo.

XP Core Practice: planning the gamecont.

Page 22: MODELLI DI PROCESSO DI PRODUZIONE SOFTWARE. Cicli di vita: business, prodotto e processo.

XP Core Practice: simple design la struttura dell'applicazione deve essere la più

semplice possibile l'architettura del sistema deve essere comprensibile

da tutte le persone coinvolte nel progetto non devono esserci parti superflue o duplicazioni le parti che compongono il sistema devono essere,

soltanto, quelle strettamente necessarie alle esigenze correnti

solo quando nuove circostanze lo richiederanno, verranno progettati nuovi componenti, eventualmente riprogettando anche quelli già esistenti

Page 23: MODELLI DI PROCESSO DI PRODUZIONE SOFTWARE. Cicli di vita: business, prodotto e processo.

XP Core Practice: pair programming la scrittura vera e propria del codice è fatta da coppie

di programmatori che lavorano al medesimo terminale

le coppie non sono fisse, ma si compongono associando migliori competenze per la risoluzione di uno specifico problema

il lavoro in coppia permette, scambiandosi periodicamente i ruoli, di mantenere mediamente più alto il livello d'attenzione

i locali dove si svolge il lavoro devono permettere senza difficoltà di lavorare a coppie

Page 24: MODELLI DI PROCESSO DI PRODUZIONE SOFTWARE. Cicli di vita: business, prodotto e processo.

XP Core Practice: testing

ogni funzionalità va sottoposta a verifica, in modo che si possa acquisire una ragionevole certezza sulla sua correttezza

test di sistema costruiti sulla base delle storie concordate con il committente

test di unità che devono poter essere rieseguiti automaticamente, con tempi dell'ordine dei minuti

ogni ristrutturazione o modifica del codice deve mantenere inalterato il risultato dei test già considerati

i test vengono, generalmente, scritti prima della codifica della funzionalità

Page 25: MODELLI DI PROCESSO DI PRODUZIONE SOFTWARE. Cicli di vita: business, prodotto e processo.

XP Core Practice: refactor soprattutto dopo molti cambiamenti nel tempo il

codice diventa poco maneggevole i programmatori spesso continuano a utilizzare

codice non più mantenibile perché continua a funzionare

quando stiamo rimuovendo ridondanza, eliminiamo funzionalità non utilizzate e rinnoviamo un design obsoleto stiamo rifattorizzando

il refactoring mantiene il design semplice, evita complessità inutili, mantiene il codice pulito e conciso così che sia facilmente comprensibile, modificabile e estendibile

Page 26: MODELLI DI PROCESSO DI PRODUZIONE SOFTWARE. Cicli di vita: business, prodotto e processo.

XP Core Practice: collective code ownership

Page 27: MODELLI DI PROCESSO DI PRODUZIONE SOFTWARE. Cicli di vita: business, prodotto e processo.

Cost of Change

Costof

change

time

Waterfall

XP

Page 28: MODELLI DI PROCESSO DI PRODUZIONE SOFTWARE. Cicli di vita: business, prodotto e processo.

6. Modello a spirale

Obiettivo principale = minimizzare i rischi Rischio = misura di incertezza del risultato di un’attività Meno informazione si ha, più alti sono i rischi

Page 29: MODELLI DI PROCESSO DI PRODUZIONE SOFTWARE. Cicli di vita: business, prodotto e processo.

Modello a spirale di Boehm

determinazione obiettivi e vincoli

valutazione alternativeidentificazione rischi

sviluppo e verificapianificazione fase successiva

1 2

34

Page 30: MODELLI DI PROCESSO DI PRODUZIONE SOFTWARE. Cicli di vita: business, prodotto e processo.

Fasi del modello a spirale Determinazione degli obiettivi e dei vincoli Valutazione e riduzione dei rischi e valutazione delle

alternative Progettazione e testing Pianificazione della fase successiva

Page 31: MODELLI DI PROCESSO DI PRODUZIONE SOFTWARE. Cicli di vita: business, prodotto e processo.

Modello a spiraleRisk

analys is

Riskanalys is

Riskanalys is

Riskanalysis Proto-

ty pe 1

Prototyp e 2Prototyp e 3

Opera-tionalprotoyp e

Concept o fOperation

Simulations, models, b en ch marks

S/Wrequi rements

Requi rementvalid ation

DesignV&V

Prod uctdesign Detailed

design

CodeUni t t es t

Integr ationtestAccep tance

testServ ice Develop, v erifynext-l evel p rod uct

Ev aluate altern ativesid en tify, resolve risks

Determine ob jectiv esalternatives and

cons traints

Plan next p has e

Integrationand test p lan

Develop mentplan

Requi rements planLife-cycle plan

REVIEW

Page 32: MODELLI DI PROCESSO DI PRODUZIONE SOFTWARE. Cicli di vita: business, prodotto e processo.

Esempio Obiettivi

Migliorare la qualità del software in modo significativo

Vincoli In tre anni

Senza grandi investimentisenza un cambiamento radicale degli standard dell’azienda

Alternative Riutilizzare software certificato già esistente

Introdurre specifiche e verifiche formaliInvestire in prodotti di testing e di validazione

Page 33: MODELLI DI PROCESSO DI PRODUZIONE SOFTWARE. Cicli di vita: business, prodotto e processo.

Rischi Migliorare la qualità del software può aumentare

eccessivamente i costi I nuovi metodi possono indurre il personale a licenziarsi

Risoluzione dei rischi Studio della letteratura esistente

Avvio di un progetto pilotaAnalisi delle componenti potenzialmente riutilizzabiliValutazione degli strumenti di supporto già esistentiAddestramento e rimotivazione del personale

Page 34: MODELLI DI PROCESSO DI PRODUZIONE SOFTWARE. Cicli di vita: business, prodotto e processo.

Risultati I miglioramenti sono difficili da quantificare per la scarsa

esperienza nell’utilizzo di metodi formali Gli strumenti di supporto disponibili sono insufficienti rispetto allo standard dei sistemi di sviluppo dell’aziendaComponenti software riusabili, ma scarso contributo degli strumenti di supporto alla riusabilità

Pianificazione della fase successiva Finanziare una fase di studio di altri 18 mesi Studiare in maggior dettaglio le opzioni di riuso del software

Sviluppare strumenti di supporto al riuso di softwareEsplorare uno schema di certificazione delle componenti

Page 35: MODELLI DI PROCESSO DI PRODUZIONE SOFTWARE. Cicli di vita: business, prodotto e processo.

Vantaggi e limiti del modello a spirale Vantaggi

Concentra l’attenzione sulle possibilità di riuso Concentra l’attenzione sull’eliminazione di errori Pone al centro gli obiettivi Integra sviluppo e mantenimento Costituisce un framework di sviluppo hardware/software

Limiti Per contratto di solito si specifica a priori il modello di

processo e i “deliverables” Richiede esperienza nella valutazione dei rischi Richiede raffinamenti per un uso generale

Page 36: MODELLI DI PROCESSO DI PRODUZIONE SOFTWARE. Cicli di vita: business, prodotto e processo.

Valutazione dei rischi nei modelli di processo del software Modello a cascata

Alto rischio per sistemi nuovi, per problemi di specifica e di progettazione

Basso rischio per sviluppo di problemi familiarità già acquisita

Modello evolutivo, prototipazione Basso rischio per nuovi sistemi Alto rischio a causa della scarsa visibilità del processo

Modello trasformazionale Alto rischio dovuto alla necessità di tecnologia avanzata e di

elevate capacità da parte degli sviluppatori

Page 37: MODELLI DI PROCESSO DI PRODUZIONE SOFTWARE. Cicli di vita: business, prodotto e processo.

Visibilità del processo software C’è bisogno di documentazione per valutare i progressi

nel processo di sviluppo software Problemi

La programmazione dei tempi di consegna dei “deliverables” può non combaciare con i tempi necessari per completare un’attività

La necessità di produrre documentazione vincola l’iterazione del processo

Il tempo necessario per approvare i documenti è significativo

Il modello a cascata è ancora il modello basato su “deliverables” più usato

Page 38: MODELLI DI PROCESSO DI PRODUZIONE SOFTWARE. Cicli di vita: business, prodotto e processo.

Visibilità dei modelli di processoProcess model Process visibilityWaterfall model Good visibility, each activity produces some

deliverableEvolutionarydevelopment

Poor visibility, uneconomic to producedocuments during rapid iteration

Formaltransformations

Good visibility, documents must be producedfrom each phase for the process to continue

Reuse-orienteddevelopment

Moderate visibility, it may be artificial toproduce documents describing reuse andreusable components.

Spiral model Good visibility, each segment and each ringof the spiral should produce some document.