Corso di Ingegneria del Software a.a. 2009/2010 push0 g 0 G

Transcript

Corso di Ingegneria del Software a.a. 2009/2010 push0 g 0 G
Corso di Ingegneria del Software a.a. 2009/2010
Modelli di produzione del software
Corso di Ingegneria del Software
a.a. 2009/2010
Modelli di produzione del software
Mario Vacca
[email protected]
Corso di Ingegneria del Software a.a. 2009/2010
Modelli di produzione del software
Modelli agili
Modelli di produzione del software
Sommario
1. Concetti di base
2. Modelli del ciclo vita del software
2.1
2.2
2.3
2.4
2.5
Modello a cascata
Modelli incrementali
Modelli evolutivi
Comparazione dei modelli
Modelli agili
3. Bibliografia
Corso di Ingegneria del Software a.a. 2009/2010
Modelli di produzione del software
Modelli agili
Modelli Agili
Le assunzioni
I requisiti del cliente evolvono continuamente durante un progetto e quindi
il processo da seguire non è completamente prevedibile e non può essere
completamente predefinito.
I fondamenti
I
È inutile svolgere una onerosa attività di analisi e progettazione
prima della codifica, in quanto gran parte di questo lavoro sarebbe
sprecato.
I
Meglio mantenere una documentazione essenziale, ovvero lo stesso
codice, scritto in modo standard.
I
È più facile e rapido modificare il codice quando il cliente lo chiede
(ovvero spesso!).
Corso di Ingegneria del Software a.a. 2009/2010
Modelli di produzione del software
Modelli agili
Modelli Agili
I fondamenti
Le metodologie Agili sono centrate sulla facilità di modificare il software.
Agile Alliance
Attorno ai principi delle metodologie AGILI è nata un’alleanza di
sviluppatori (Agile Alliance), che ha pubblicato un manifesto.
Corso di Ingegneria del Software a.a. 2009/2010
Modelli di produzione del software
Modelli agili
Modelli Agili
Il manifesto per lo sviluppo agile
Corso di Ingegneria del Software a.a. 2009/2010
Modelli di produzione del software
Modelli agili
Modelli Agili - I Principi sottostanti al Manifesto Agile
1.
La nostra massima priorità è soddisfare il cliente per mezzo di tempestivi e continui rilasci di software di valore.
2.
Siano benvenuti i cambiamenti nelle specifiche , anche a stadi avanzati dello sviluppo. I processi agili sfruttano il
cambiamento a favore del vantaggio competitivo del cliente.
3.
Rilascia software funzionante frequentemente , da un paio di settimane a un paio di mesi, con preferenza per i periodi brevi.
4.
Manager e sviluppatori devono lavorare insieme quotidianamente lungo il progetto.
5.
Basa i progetti su individui motivati . Dai loro l’ambiente e il supporto di cui necessitano e confida nella loro capacità di
6.
Il metodo più efficiente ed efficace di trasmettere informazione verso e all’interno di un team di sviluppo è
portare il lavoro a termine.
la conversazione faccia a faccia .
7.
Il software funzionante è la misura primaria di progresso.
8.
I processi agili promuovono uno sviluppo sostenibile . Gli sponsor, gli sviluppatori e gli utenti dovrebbero essere in grado di
9.
L’attenzione continua per l’eccellenza tecnica e il buon design esaltano l’agilità.
mantenere un ritmo costante indefinitamente.
10.
La semplicità - l’arte di massimizzare l’ammontare di lavoro non svolto - è essenziale.
11.
Le migliori architetture, specifiche e design emergono da team auto-organizzati .
12.
A intervalli regolari il team riflette su come diventare più efficace, dopodiché mette a punto e aggiusta il suo comportamento di
conseguenza.
Corso di Ingegneria del Software a.a. 2009/2010
Modelli di produzione del software
Modelli agili
Modelli Agili
Caratteristiche dello sviluppo Agile
I Adattabilità alle modifiche
Il software va progettato per consentirne la facile modificabilità durante il corso
del progetto (ma anche dopo il rilascio in uso al cliente).
I Iteratività, incrementalità e semplicità
Le fasi di pianificazione, codifica e test sono compresse in tempi molto più ridotti
rispetto a quelli previsti nelle metodologie tradizionali. Ci si deve concentrare su
pochi problemi alla volta, di limitate dimensioni e ben definiti.
I Rilasci frequenti
I team devono sviluppare versioni dei semilavorati in tempi ridotti.
I Testing
Il test va svolto continuamente, durante tutte le fasi del progetto e su tutti i
semilavorati prodotti.
I Documentazione
Conversazione faccia a faccia
I Team di lavoro
Auto-organizzazione
Corso di Ingegneria del Software a.a. 2009/2010
Modelli di produzione del software
Modelli agili
Modelli Agili
“Lesson learnt” dai metodi agili
I
il pair programming
Migliora la comunicazione nel team e porta ad un elevato numero di
ispezioni del software.
I
il focus sulla produzione di programmi
I metodi agili hanno inoltre riportato l’attenzione sul codice,
piuttosto che sulla documentazione accessoria, che spesso assorbe
gran parte del tempo degli sviluppatori.
I
la partecipazione attiva del committente e dell’utente
Clima meno formale e più collaborativo
Più proficuo di un atteggiamento burocratico che vede il cliente
solamente in funzione di un contratto.
La partecipazione degli utenti finali contribuisce a rendere il software
più efficace, in quanto la costruzione viene fatta attorno a chi userà
il software.
E. Capra “Sviluppo del software: metodi agili o metodi tradizionali?”
Corso di Ingegneria del Software a.a. 2009/2010
Modelli di produzione del software
Modelli agili
Modelli Agili
Criticità dei metodi agili - 1/2
La minimizzazione della documentazione (non standardizzata)
(la conoscenza del prodotto è degli sviluppatori)
I
problemi di comprensione dell’organizzazione del sistema quando il
progetto è di grande dimensioni (la comunicazione interna con più di
20 persone diventa difficile)
I
difficoltà nel caso di rotazione e cambiamenti delle risorse del team
I
la realizzazione delle interfacce è rallentata dall’assenza di
documentazione standard e condivisa.
L’attenzione posta al ruolo delle persone
stimola la creatività e la produttività personale
ma rende particolarmente critiche la qualità e le skill dei programmatori.
E. Capra “Sviluppo del software: metodi agili o metodi tradizionali?”
Corso di Ingegneria del Software a.a. 2009/2010
Modelli di produzione del software
Modelli agili
Modelli Agili
Criticità dei metodi agili - 2/2
La definizione delle specifiche attraverso i test
I test descrivono un campione finito di possibili comportamenti, lasciando
indefiniti aspetti e comportamenti che potrebbero presentarsi.
I metodi agili si rivelano poco efficaci nello sviluppo di applicazioni safetycritical, che richiedono una certificazione del prodotto.
La validazione dei requisiti solamente attraverso l’esecuzione di versioni parziali dell’applicazione rischia inoltre di degenerare in processi di
“code&fix” senza fine, rendendo critica l’evoluzione del prodotto.
La semplificazione volta a snellire il processo, riduce la possibilità di
esplorare soluzioni alternative.
E. Capra “Sviluppo del software: metodi agili o metodi tradizionali?”
Corso di Ingegneria del Software a.a. 2009/2010
Modelli di produzione del software
Modelli agili
Programmazione estrema
Modelli Agili
eXtreme Programming (XP) - I fondamenti
Il metodo dell’eXtreme Programming è stato proposto da Kent Beck nel
1999.
I fondamenti del metodo XP:
I evitare la produzione di semilavorati non strettamente necessari alla realizzazione
dell’applicazione
Gli sviluppatori sono invitati a concentrarsi sul codice, la produzione di
documentazione di supporto è considerata come una perdita di tempo.
I non è possibile analizzare e pianificre la produzione di un’applicazione a priori
La produzione di un’applicazione è paragonata da Beck alla guida di
un’automobile: la condotta complessiva è il risultato di un gran numero di
minimi cambiamenti di rotta che il pilota decide in base alla sua istantanea
percezione di curve e ostacoli.
I il processo è il risultato di un gran numero di cambiamenti da decidere di volta in
volta
Corso di Ingegneria del Software a.a. 2009/2010
Modelli di produzione del software
Modelli agili
Programmazione estrema
Modelli Agili
eXtreme Programming (XP) - Perchè “estrema”?
L’XP porta i principi e le pratiche derivate dal buon senso a livello estremo.
(Beck - Programmazione estrema, pag. 10)
eXtreme Programming (XP) - Perchè “estrema”?
Pratiche corrette:
I
revisione del codice
I
test del codice
I
progettazione
I
semplicità
I
architettura
I
verifiche di integrazione
iterazioni brevi
I
Corso di Ingegneria del Software a.a. 2009/2010
Modelli di produzione del software
Modelli agili
Programmazione estrema
Modelli Agili
eXtreme Programming (XP) - Perchè “estrema”?
Pratiche estremizzate:
I
programmazione a coppie (revisione del codice)
I
test unitari e test funzionali (test del codice)
I
refactoring (progettazione)
I
semplicità
I
metafora (architettura)
I
integrazione continua (verifiche di integrazione)
I
Planning Game (iterazioni brevi)
Corso di Ingegneria del Software a.a. 2009/2010
Modelli di produzione del software
Modelli agili
Programmazione estrema
Modelli Agili
eXtreme Programming (XP) - Attività fondamentali
Il lavoro del team di sviluppo è organizzato in quattro attività fondamentali (reiterate durante il progetto dopo i feedback dei
committenti):
I
listening
osservazione dell’ambiente (desideri e bisogni del committente +
opportunità tecnologiche e del mercato)
I
design
progetto e integrazione dell’applicazione
I
coding
scrittura del codice dell’applicazione
I
testing
verifica delle funzionalità
Corso di Ingegneria del Software a.a. 2009/2010
Modelli di produzione del software
Modelli agili
Programmazione estrema
Modelli Agili
eXtreme Programming (XP) - Planning Game
Obiettivo del Planning Game: permettere a clienti, manager e sviluppatori di confrontarsi attorno alle date e ai contenuti dei rilasci di software,
usando come “metrica” di confronto 5 variabili:
I
Portata del progetto (funzionalità da realizzare)
I
Qualità attesa
I
Priorità Composizione dei rilasci parziali.
I
Tempo (date dei rilasci).
I
Costo del progetto.
Corso di Ingegneria del Software a.a. 2009/2010
Modelli di produzione del software
Modelli agili
Programmazione estrema
Modelli Agili
eXtreme Programming (XP) - Planning Game
Le variabili definite da clienti e manager sono:
I
Portata del progetto (funzionalità da realizzare)
I
Qualità attesa
I
Priorità ñ Composizione dei rilasci parziali.
I
Tempo (date dei rilasci).
Corso di Ingegneria del Software a.a. 2009/2010
Modelli di produzione del software
Modelli agili
Programmazione estrema
Modelli Agili
eXtreme Programming (XP) - Planning Game
Le variabili definite dagli sviluppatori sono:
I
I
Tempo necessario a sviluppare una funzionalità.
Costo di realizzazione delle funzioni.
Corso di Ingegneria del Software a.a. 2009/2010
Modelli di produzione del software
Modelli agili
Programmazione estrema
Modelli Agili
eXtreme Programming (XP) - Planning Game
Nella fase di pianificazione clienti/managers e sviluppatori “contrattano”
sui valori da assegnare alle variabili (e.g. se i primi definiscono i tempi, gli
sviluppatori scelgono quali storie realizzare per quella data e il loro costo.
(GAME)
Corso di Ingegneria del Software a.a. 2009/2010
Modelli di produzione del software
Modelli agili
Programmazione estrema
Modelli Agili
eXtreme Programming (XP) - Planning Game
I
LA STRATEGIA
Investire il meno possibile per mettere in produzione il più presto
possibile le funzionalità più importanti, riducendo il rischio.
I
I COMPONENTI
I componenti del Planning Game sono le schede contenenti le storie
di funzionamento del sistema.
I
I GIOCATORI
sviluppatori (responsabili della implementazione) e management
(persone che decidono cosa deve fare il sistema).
I
LE FASI E LE MOSSE
Esplorazione: scoprire cosa il sistema potrebbe fare.
Impegno: decidere quale sottoinsieme di tutti i possibili requisiti realizzare nella
fase successiva.
Gestione: dirigere lo sviluppo in base a come la realtà influenza il piano.
Le mosse di ciascuna fase avvengono di solito nella fase stessa.
Corso di Ingegneria del Software a.a. 2009/2010
Modelli di produzione del software
Modelli agili
Programmazione estrema
Modelli Agili
eXtreme Programming (XP) - Planning Game
Il Planning Game prevede 3 fasi, da eseguire in sequenza, e da iterare
più volte.
I
Esplorazione: scoprire le cose che il sistema software potrebbe fare
per il cliente.
I
Impegno: definire quali impegni prendere nel breve periodo, ovvero
quali funzioni realizzare nel prossimo intervallo di tempo (pianificare
i rilasci).
I
Gestione: gestire in corso dı́opera le attività realizzative in funzione
della realtà operativa del progetto (ritardi disponibilità risorse
variazione requisiti etc ) (aggiornamento del piano di lavoro)
Corso di Ingegneria del Software a.a. 2009/2010
Modelli di produzione del software
Modelli agili
Programmazione estrema
Modelli Agili
eXtreme Programming (XP) - Planning Game
Le mosse della fase di esplorazione:
1. Scrittura di una storia
il management scrive una storia che descrive una funzionalità del
sistema.
2. Stima della durata di una storia
gli sviluppatori stimano il tempo necessario per implementare la
storia.
3. Suddivisione di una storia
Corso di Ingegneria del Software a.a. 2009/2010
Modelli di produzione del software
Modelli agili
Programmazione estrema
Modelli Agili
eXtreme Programming (XP) - User story
Le user stories rappresentano in modo discorsivo le caratteristiche e le
funzioni che gli utenti si aspettano dal software.
Le user stories vengono scritte su delle schede di limitate dimensioni (per
limitarne la lunghezza).
Il cliente assegna ad ogni storia un valore (che dipende dallı́importanza
della user story per il suo business).
Corso di Ingegneria del Software a.a. 2009/2010
Modelli di produzione del software
Modelli agili
Programmazione estrema
Modelli Agili
eXtreme Programming (XP) - User story
Corso di Ingegneria del Software a.a. 2009/2010
Modelli di produzione del software
Modelli agili
Programmazione estrema
Modelli Agili
eXtreme Programming (XP) - User story
Le User Story sono scenari di funzionamento del sistema software da
realizzare, descritti in modo sintetico e discorsivo (eventualmente con use
case UML) che devono:
I
avere un valore economico per il cliente,
I
essere comprensibili per il programmatore,
I
essere stimabili come tempo di realizzazione/costo,
I
essere semplici
Corso di Ingegneria del Software a.a. 2009/2010
Modelli di produzione del software
Modelli agili
Programmazione estrema
Modelli Agili
eXtreme Programming (XP) - Planning Game
Le mosse della fase di impegno:
1. Ordinamento per importanza (a cura del mnagement)
storie indispensabili, storie importanti (economicamente), storie
comode, accessorie
2. Ordinamento per rischio (a cura degli sviluppatori)
stimabili con precisione, con ragionevole sicurezza, non stimabili
3. Stabilire la velocità (a cura degli sviluppatori)
4. Scelta delle funzionalità (a cura del management)
scelta delle storie da implementare per il prossimo rilascio.
Corso di Ingegneria del Software a.a. 2009/2010
Modelli di produzione del software
Modelli agili
Programmazione estrema
Modelli Agili
eXtreme Programming (XP) - Planning Game
Le mosse della fase di gestione:
1. Iterazione (a cura del management)
scelta delle storie da implementare nell’iterazione. L’implemetazione
è un sistema funzionante.
2. Recupero (a cura del management)
scelta delle storie da mantenere nel rilascio in corso se ci sono
problema di sovrastima della velocità di implemtazione.
3. Nuova storia (a cura del management e degli sviluppatori)
Il management può introdurre una nuova storia (e cancellarne altre).
Gli sviluppatori stimano la nuova storia.
4. Nuove stime (a cura degli sviluppatori)
gli sviluppatori possono fare una nuova stima delle storie rimanenti
se capiscono che la stima non è più realistica.
Corso di Ingegneria del Software a.a. 2009/2010
Modelli di produzione del software
Modelli agili
Programmazione estrema
Modelli Agili
eXtreme Programming (XP) - Planning Game
short release
I rilasci frequenti (2-4 settimane) mirano a tenere conto di cambi di
prospettiva, nuovi requisiti o imprecisioni nelle fasi precedenti.
Corso di Ingegneria del Software a.a. 2009/2010
Modelli di produzione del software
Modelli agili
Programmazione estrema
Modelli Agili
eXtreme Programming (XP) - Progettazione
In XP la documentazione della fase di progettazione consiste nella
produzione di schede CRC (Classe, Responsabilità, Collaborazione).
Si individuano i componenti che costituiranno lı́architettura funzionale del
sistema software, le “classi” e per ogni classe si scrive una scheda che
individua:
I
le responsabilità che ha nell’ambito dell’architettura (cosa fa nel
sistema)
I
le azioni / compiti che esegue (utile fare riferimento ai “verbi” usati
dal cliente per descrivere i requisiti) (“metodi”)
I
le altre classi che devono collaborare con questa per soddisfare le
responsabilità, definendo le gerarchie di ereditarietà.
Corso di Ingegneria del Software a.a. 2009/2010
Modelli di produzione del software
Modelli agili
Programmazione estrema
Modelli Agili
eXtreme Programming (XP) - Progrettazione
I
project metaphor
La progettazione in XP è guidata da metafore:
Ad es. il sistema software deve realizzare le funzioni di una
“scrivania virtuale” o di un “foglio” di lavoro elettronico scrivania
virtuale foglio etc.).
Il sistema software da costruire deve essere descritto attraverso
metafore semplici e comprensibili a tutte le persone coinvolte nel
progetto, in modo da poter condividere lo stesso vocabolario e la
stessa percezione di quanto si sta per realizzare.
In XP le metafore sostituiscono le architetture logiche.
Corso di Ingegneria del Software a.a. 2009/2010
Modelli di produzione del software
Modelli agili
Programmazione estrema
Modelli Agili
eXtreme Programming (XP) - Progettazione
I
simple design
La struttura dell’applicazione deve essere il più possibile semplice, in
quanto l’architettura del sistema deve essere facilmente
comprensibile da tutte le persone coinvolte nel progetto. Viene
sviluppato solo quanto è strettamente necessario a soddisfare lo
scenario in esame, eventuali evoluzioni future non vengono
considerate.
Corso di Ingegneria del Software a.a. 2009/2010
Modelli di produzione del software
Modelli agili
Programmazione estrema
Modelli Agili
eXtreme Programming (XP) - Codifica
In XP la codifica è l’attività principale.
XP prevede diverse pratiche a supporto di questa attività:
I
Programmazione a coppie.
I
Proprietà collettiva.
I
Intregrazione continua.
I
Standard di codifica.
I
Refactoring
Corso di Ingegneria del Software a.a. 2009/2010
Modelli di produzione del software
Modelli agili
Programmazione estrema
Modelli Agili
eXtreme Programming (XP) - Codifica
I
pair programming
La programmazione avviene a coppie, con lo scopo di favorire il
controllo reciproco del codice prodotto e di stimolare la generazione
di soluzioni innovative tramite il confronto tra persone diverse. Le
coppie vengono riassortite molto frequentemente, cercando di
affiancare persone con esperienze diverse, in modo da incentivare un
apprendimento continuo.
Le statistiche raccolte dimostrano che la tecnica del pair
programming, pur dilatando i tempi di realizzazione del codice dal
20% al 50% permette di produrre rispetto alle
I
I
I
software di migliore qualità,
programmi meno voluminosi (dal 10 al 25% in meno della media),
un numero di difetti inferiore nel codice (meno 10- 20%)
Corso di Ingegneria del Software a.a. 2009/2010
Modelli di produzione del software
Modelli agili
Programmazione estrema
Modelli Agili
eXtreme Programming (XP) - Codifica
I
collective ownership
Collettivizzazione del codice: il codice dell’applicazione deve essere
accessibile e manipolabile da tutti gli sviluppatori.
Per rendere possibile ciò è necessario che esistano semplici regole
condivise da tutte. La collettivizzazione contribuisce in maniera
indiretta a semplificare il codice, in quanto le parti più oscure,
incomprensibili a tutti fuorché agli autori, hanno un alta probabilità
di essere eliminate.
I
standard di codifica coding standards)
L’assenza della documentazione di supporto tipica dei metodi
tradizionali rende necessari degli standard di codifica (coding
standards), condivisi e validi solo all’interno del team, che
permettano di scrivere il codice in modo omogeneo e uniforme.
Corso di Ingegneria del Software a.a. 2009/2010
Modelli di produzione del software
Modelli agili
Programmazione estrema
Modelli Agili
eXtreme Programming (XP) - Codifica
I
refactoring
L’applicazione necessita di continue riprogettazioni per adattare il
sistema alle nuove esigenze ed integrare fra loro le parti relative alle
varie storie. Il refactoring è la ristrutturazione continua del codice al
fine di renderlo sempre più chiaro, semplice, facilmente modificabile,
eliminare parti superflue, senza modificare la sua funzione.
I
integrazione continua (continuous integration)
Non sono previste sessioni particolari per l’integrazione, che è
continua nel tempo (continuous integration).
Corso di Ingegneria del Software a.a. 2009/2010
Modelli di produzione del software
Modelli agili
Programmazione estrema
Modelli Agili
eXtreme Programming (XP) - Testing
La fase di testing è molto accurata, sia a livello di sistema che di singola
unità. I test di sistema sono costruiti sulla base delle storie concordate con
il committente, i test di unità solitamente sono supportati da strumenti
automatici che rendono la verifica molto efficiente. Il metodo XP addirittura prescrive che i test vadano scritti prima della codifica. La validazione
del software è ridotta alla verifica che esso superi tutti i test che sono
stati ideati: Beck ha una concezione di stampo “popperiano”, secondo la
quale un’applicazione è funzionante finché non viene trovato un test che
dimostra il contrario.
Corso di Ingegneria del Software a.a. 2009/2010
Modelli di produzione del software
Modelli agili
Programmazione estrema
Modelli Agili
eXtreme Programming (XP) - Prassi organizzative
I
ambiente di lavoro
L’ambiente di lavoro deve essere gradevole e informale, con zone
adibite al relax e allo scambio di opinioni fra i membri del team
I
rinuncia al lavoro straordinario
Si tende ad evitare evitare il lavoro straordinario.
I
partecipazione del committente (insite customer)
Forte partecipazione del committente (insite customer). Il
committente è infatti l’unica fondamentale fonte di convalida del
sistema, deve perciò partecipare non solo alla definizione delle storie,
ma anche alla definizione dei test e alle fasi di verifica. Inoltre è la
principale fonte di informazioni sul dominio di applicazione, per cui
la sua presenza full-time con il team è ritenuta essenziale. Il
committente è un collaboratore, non un’entità verso cui si hanno
solo obblighi contrattuali.
Corso di Ingegneria del Software a.a. 2009/2010
Modelli di produzione del software
Modelli agili
Programmazione estrema
Modelli Agili
eXtreme Programming (XP) - I ruoli delle persone
Importanza dei ruoli: la metafora della squadra.
Dualismo cliente-programmatore della programmazione estrema:
“Il programmatore sa come programmare. Il cliente sa che cosa
programmare.“
I
Il programmatore
I
Il cliente
I
I
Il collaudatore (tecnico dei test)
Il tracker
I
Il coach
I
Il consulente
I
Il grande capo
Beck - Programmazione estrema. pag. 148
Corso di Ingegneria del Software a.a. 2009/2010
Modelli di produzione del software
Modelli agili
Programmazione estrema
Modelli Agili
XP - I ruoli delle persone: il programmatore
Il programmatore è il cuore dell’XP.
Il valore principale è la comunicazione con le altre persone.
Attività del programmatore XP:
I
scrivere test che mostrano aspetti vitali del software
I
dividere il programma in parti più piccole, o assemblare parti troppo
piccole in componenti più grandi e più coerenti.
I
trovare un sistema di nomi significativi.
I
sviluppare il software di maggior valore per il cliente, e di non
sviluppare niente che non sia di valore.
Corso di Ingegneria del Software a.a. 2009/2010
Modelli di produzione del software
Modelli agili
Programmazione estrema
Modelli Agili
XP - I ruoli delle persone: il programmatore
Abilità del programmatore XP:
I programmare a coppie (pair programming)
La progrmmazione a coppie implica comunicare e coordinarsi da
vicino con gli altri programmatori per avere successo.
I
semplicità
Implica
I
I
I
selezionare le richieste NECESSARIE.
scrivere codice semplice e comprensibile facilmente
tecnica
Implica
I
I
capacità di riorganizzare il codice (refactoring).
di scrivere test unitari per il codice
Corso di Ingegneria del Software a.a. 2009/2010
Modelli di produzione del software
Modelli agili
Programmazione estrema
Modelli Agili
XP - I ruoli delle persone: il programmatore
Abilità del programmatore XP:
I
mettere da parte la propensione alla proprietà individuale di una
parte del codice in favore della proprietà condivisa dell’intero sistema.
I
coraggio
essere pronti a riconoscere le proprie paure
I
I
I
I
di sembrare stupido
essere ritenuto inutile
diventare superato
non essere abbastanza bravo
per far parte di un gruppo che si diverte a scrivere ottimo
software.
Corso di Ingegneria del Software a.a. 2009/2010
Modelli di produzione del software
Modelli agili
Programmazione estrema
Modelli Agili
XP - I ruoli delle persone: il cliente
Il cliente XP deve:
I
influenzare un progetto senza essere in grado di controllarlo
I
prendere delle decisioni
Importanza delle storie e loro sufficienza a descrivere il problema.
Eliminazione delle storie non importanti.
I
deve imparare a scrivere le storie
I
deve imparare a scrivere test funzionali
creare i dati per un test con l’obiettivo di stabilire condizioni
sufficienti per il funzionamento.
I
deve anche dimostrare coraggio
Corso di Ingegneria del Software a.a. 2009/2010
Modelli di produzione del software
Modelli agili
Programmazione estrema
Modelli Agili
XP - I ruoli delle persone: il tester
Il collaudatore (tecnico dei test) è focalizzato sul cliente.
Il tester ha il compito
I
di aiutare il cliente a scegliere e a scrivere i test funzionali
I
(responsabilità) dell’esecuzione a intervalli regolari dei test funzionali
e dell’affissione dei risultati in un posto visibile a tutti
I
di assicurarsi che gli strumenti di collaudo funzionino bene.
Corso di Ingegneria del Software a.a. 2009/2010
Modelli di produzione del software
Modelli agili
Programmazione estrema
Modelli Agili
XP - I ruoli delle persone: il tracker
Il lavoro del tracker è quello di chiudere il ciclo di feedback.
Il tracker
I
fa le stime
Le dipendono dalla esperienza e dal feedback. Il tracker deve fare un
gran numero di stime, per poi vedere come la realtà si concilia con
esse.
I
contribuisce al miglioramento delle stime fatte del gruppo
è responsabile di osservare il quadro generale
A metà di un’iterazione il tracker deve essere capace di dire al
gruppo se ce la farà o se si debba cambiare qualcosa. Dopo un paio
d’iterazioni nel piano degli impegni, il tracker dovrebbe essere in
grado di stabilire se il gruppo riuscirà a portare a termine il prossimo
rilascio senza grandi cambiamenti.
I
Corso di Ingegneria del Software a.a. 2009/2010
Modelli di produzione del software
Modelli agili
Programmazione estrema
Modelli Agili
XP - I ruoli delle persone: il tracker
Il lavoro del racker è quello di chiudere il ciclo di feedback.
Il tracker
I
è lo storico del gruppo
Conserva
I
I
I
un diario ufficiale dei punteggi dei test funzionali.
un diario ufficiale contente i difetti riportati, i nomi di chi ha
accettato la responsabilità per ciascuno di essi, e quali test sono stati
aggiunti in relazione a ciascun difetto.
ha l’abilità di raccogliere le informazioni senza disturbare più del
necessario l’intero processo
Corso di Ingegneria del Software a.a. 2009/2010
Modelli di produzione del software
Modelli agili
Programmazione estrema
Modelli Agili
XP - I ruoli delle persone: il coach
è responsabile dell’intero processo.
Si accorge quando le persone deviano dal regolare funzionamento del
gruppo, e richiama l’attenzione di tutti sul problema.
“Il ruolo del coach diminuisce man mano che il gruppo matura. Concordemente ai principi del controllo distribuito e dell’accettazione
delle responsabilità, il “processo” dovrebbe essere responsabilità di tutti. All’inizio del passaggio all’XP, questo è troppo da chiedere a ogni
programmatore.” (Beck - Programmazione estrema, cap 22)
Corso di Ingegneria del Software a.a. 2009/2010
Modelli di produzione del software
Modelli agili
Programmazione estrema
Modelli Agili
XP - I ruoli delle persone: il consulente
Pair programming, semplicità generano gruppi estremamente flessibile, ma
poco specialistici.
Di qui la necessità di consulenti esterni
L’obiettivo dei membri del gruppo è di far sÏ che il consulente gli insegni
come risolvere i loro problemi.
Corso di Ingegneria del Software a.a. 2009/2010
Modelli di produzione del software
Modelli agili
Programmazione estrema
Modelli Agili
XP - I ruoli delle persone: il grande capo
Comunicazione onesta con il gruppo:
I
il gruppo deve volere che il capo sappia prima possibile quando le
cose si stanno discostando dal piano, in modo che possa avere il
maggior tempo possibile per reagire.
I
il gruppo spiega le conseguenze dei cambiamenti nella situazione
attuale.
I
il gruppo può invitare il capo a ridurre la portata del progetto.
I
il capo insiste affinché il gruppo faccia ciò che ha dichiarato di fare.
Corso di Ingegneria del Software a.a. 2009/2010
Modelli di produzione del software
Modelli agili
Programmazione estrema
Modelli Agili
XP - Risoluzione dei rischi
XP affronta i principali rischi dei progetti di sviluppo software con
queste modalità:
I
Ritardi nelle consegne: XP prevede cicli di sviluppo brevi, con
iterazioni di durata limitata (3-4 settimane al massimo).
I
Degrado della qualità: XP prevede che vengano eseguiti di
continuo test sui semilavorati, sia pensati dai programmatori che
dagli utenti stessi (per le funzioni).
I
Fraintendimento requisiti: in XP il cliente è parte integrante del
gruppo di lavoro. Le specifiche di progetto vengono continuamente
riviste insieme al cliente durante il progetto, procedendo per
raffinamenti successivi. I cicli di lavorazione sono rapidi, con
frequenti feedback da parte del cliente, che effettua anche
direttamente i test funzionali.
Corso di Ingegneria del Software a.a. 2009/2010
Modelli di produzione del software
Modelli agili
Programmazione estrema
Modelli Agili
XP - Risoluzione dei rischi
I
Variabilità dei requisiti: XP accorcia i tempi dei rilasci e prevede di
procedere per incrementi graduali nello sviluppo in modo da gestire
nuove richieste dei clienti e sviluppo, le modifiche ai requisiti senza
che impattino su porzioni troppo ampie di software già sviluppato.
I
Turn over delle risorse: XP dà responsabilità ai programmatori (si
pianificano essi stessi il lavoro da svolgere e coprono l’intero ciclo di
lavorazione, dalla progettazione alla codifica e testing). Definisce
pratiche innovative di lavoro, che danno fiducia e motivazione al
personale e creano spirito di gruppo (planning game, lavoro di
coppia)
Corso di Ingegneria del Software a.a. 2009/2010
Modelli di produzione del software
Bibliografia
Modelli di produzione del software
Sommario
1. Concetti di base
2. Modelli del ciclo vita del software
2.1
2.2
2.3
2.4
2.5
Modello a cascata
Modelli incrementali
Modelli evolutivi
Comparazione dei modelli
Modelli agili
3. Bibliografia
Corso di Ingegneria del Software a.a. 2009/2010
Modelli di produzione del software
Bibliografia
Bibliografia
Riferimenti bibliografici - Generali
1. R. Pressman “Ingegneria del software” Mc Graw Hill Italia, 5a
edizione, 2007, capitolo 4.
2. P. Jalote “A Concise Introduction to Software Engineering”
Springer, 2008, capitolo 2.
Corso di Ingegneria del Software a.a. 2009/2010
Modelli di produzione del software
Bibliografia
Bibliografia
Riferimenti bibliografici - Specifici
1. K. Beck “Programmazione estrema”, Addison-Wesley, 2000,
(capitolo 22).
2. E. Capra “Sviluppo del software: metodi agili o metodi tradizionali?”
(http://home.dei.polimi.it/ghezzi/_PRIVATE/Capra.pdf)
3. C. Ghezzi, M. Monga, “eXtreme Programming: Programmazione
estrema o revisionismo estremista?”, Mondo Digitale n. 4, 2002.
Corso di Ingegneria del Software a.a. 2009/2010
Modelli di produzione del software
Bibliografia
Bibliografia
Riferimenti bibliografici - Siti utili
1. http://www.Agilealliance.org
2. http://www.Agilemanifesto.org
3. http://wwww.extremeprogramming.org
4. http://www.refactoring.com
5. http:
//www.agiledata.org/essays/databaseRefactoring.html