Sviluppo Agile I processi (di sviluppo) del software

Transcript

Sviluppo Agile I processi (di sviluppo) del software
Sviluppo Agile
Prof. Filippo Lanubile
I processi (di sviluppo)
del software
bisogni
nuovi o modificati
Processo software
Prodotto software
nuovo o modificato
• Un processo software descrive quali sono le attività
che concorrono a sviluppare un prodotto software e
come le attività sono collegate tra loro
• Assunzione: la qualità del processo implica la
qualità del prodotto
Prof. Filippo Lanubile
1
Attività tipiche nello sviluppo
ed evoluzione del software
• Attività tecniche
– Analisi dei requisiti
(requirements analysis)
– Progettazione
(design)
– Realizzazione
(implementation)
– Collaudo
(testing)
– Messa in esercizio
(deployment)
– Conduzione operativa
(operation)
– Manutenzione
(maintenance)
• Attività organizzative
– Gestione del progetto
(project management)
– Gestione della
configurazione
(configuration
management)
– Assicurazione della
qualità
(quality assurance)
Prof. Filippo Lanubile
Stile di processo a
cascata (waterfall)
•
Suddivide il progetto in base alle attività tecniche
– Le fasi coincidono con le attività
•
Si passa a una fase successiva solo se si completa l’attività e si
supera il punto di controllo
– Tornare indietro è possibile ma come eccezione
Problemi
• Rischio elevato: difficile
stabilire che tutto procede
Analysis
veramente bene
• Difficile da applicare se i
Design
requisiti sono poco noti o
volatili
Implemen•
Time to market ritardato
tation
Testing
Prof. Filippo Lanubile
2
Stile di processo iterativo
•
•
Anche conosciuto come
incrementale, a spirale,
evolutivo
Suddivide il progetto in base a
sottoinsiemi di funzionalità
(iterazioni)
– L’inizio delle iterazioni è
preceduto da una fase
esplorativa
– Ogni iterazione produce
codice (build) testato e
integrato nel sistema
complessivo
– Le iterazioni messe in
produzione sono dette
release
Implementation
Analysis
Testing
Design
Implementation
Analysis
Testing
Design
Iterazione 1
Iterazione 2
• Time boxing: le release
sono rilasciate a intervalli
di tempo regolari
Iterazione 3
Prof. Filippo Lanubile
Non esiste un modo unico per
strutturare lo sviluppo del software
• Sviluppo hoc (build and fix)
– Conoscenza tacita
– Documentazione inesistente o quasi
– Approccio non ripetibile e trasferibile solo con apprendistato
• Sviluppo pianificato (plan-driven)
–
–
–
–
Piano dettagliato delle attività creato a monte
Molta documentazione come forma di comunicazione indiretta
Stile di processo a cascata
Adatto per progetti con requisiti noti a priori e stabili nel tempo
• Sviluppo agile
– Fortemente adattivo rispetto ai cambiamenti in corso d’opera
– Poca documentazione: enfasi sulla comunicazione diretta tra
persone
– Stile di processo iterativo: iterazioni corte e di durata costante
(time-boxed)
– Esempio: Scrum
Prof. Filippo Lanubile
3
http://agilemanifesto.org
Manifesto for Agile Software Development
We are uncovering better ways of developing
software by doing it and helping others do it.
Through this work we have come to value:
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
That is, while there is value in the items on
the right, we value the items on the left more.
Kent Beck - Mike Beedle - Arie van Bennekum - Alistair Cockburn - Ward Cunningham - Martin Fowler James Grenning - Jim Highsmith - Andrew Hunt
Ron Jeffries
Prof.- Filippo
Lanubile- Jon Kern - Brian Marick - Robert C. Martin
- Steve Mellor - Ken Schwaber - Jeff Sutherland - Dave Thomas
Un processo tipico di sviluppo
agile del sw
Incremento del prodotto
Selezione
Product Backlog
Iterazione
(Time-boxed)
Modifica backlog
Raccolta del feedback
Prof. Filippo Lanubile
4
Metodi agili
•
•
•
•
Extreme Programming (XP)
Scrum
Kanban
Prof. Filippo Lanubile
Extreme Programming (XP)
http://www.xprogramming.com/xpmag/whatisxp.htm
Prof. Filippo Lanubile
5
Kanban
• Visualizzazione del flusso di lavoro
• Limitazione del Work in Progress (WIP)
• Rilascio continuo
Prof. Filippo Lanubile
Scrum
Prof. Filippo Lanubile
6
Sprint
• I progetti Scrum fanno progressi in una serie di
iterazioni dette sprint
– Il prodotto è progettato, realizzato e testato durante
lo sprint
• La durata tipica è in genere di 2–4 settimane o
un mese di calendario
– Una durata costante permette una migliore cadenza
• Durante uno Sprint non sono accettate richieste
di modifiche ai requisiti
Prof. Filippo Lanubile
Scrum framework *
Ruoli
• Product owner
• ScrumMaster
• Team
Eventi
• Sprint planning
• Sprint review
• Sprint retrospective
• Daily scrum meeting
Artifact
* Questa parte riadatta materiale tratto da
- Mike Cohn, Introduction to Scrum
- Ken Schwaber and Jeff Sutherland,
The Scrum Guide
• Product backlog
• Sprint backlog
• Burndown charts
Prof. Filippo Lanubile
7
Scrum framework
Ruoli
• Product owner
• ScrumMaster
• Team
Eventi
• Sprint planning
• Sprint review
• Sprint retrospective
• Daily scrum meeting
Artifact
• Product backlog
• Sprint backlog
• Burndown charts
Prof. Filippo Lanubile
Product Owner
• È responsabile del valore del prodotto
• Ha la responsabilità esclusiva di gestione del
Product Backlog
– Definisce le caratteristiche funzionali e non funzionali
(feature) del prodotto
– Assegna le priorità alle feature in base al valore di
mercato
– Adatta le feature e le priorità a ogni iterazione
• Accetta o rifiuta i risultati del lavoro del Team di
Sviluppo
– In base a una definizione di “Done” (lavoro completo)
compresa da tutto il Team di Sviluppo
Prof. Filippo Lanubile
8
Scrum Master
• È una guida al servizio del Team di Sviluppo e
del Product Owner
– Aiuta a creare gli elementi del Product Backlog in
modo chiaro e conciso
– Aiuta a ordinare gli elementi del Product Backlog per
massimizzare il valore
– Facilita gli eventi Scrum
– Rende trasparente il processo di sviluppo mediante
visualizzazione delle informazioni chiave
Prof. Filippo Lanubile
Team di Sviluppo
• Soltanto i membri del Team di Sviluppo creano
l’incremento da rilasciare alla fine di ogni Sprint
• Dimensione: da 3 a 8
– regola delle 2 pizze (americane)
• Autogestione all’interno di uno Sprint
• I singoli membri possono avere competenze
specialistiche e aree di interesse
ma è il Team di Sviluppo nel suo complesso ad
avere la responsabilità finale
Prof. Filippo Lanubile
9
Scrum framework
Ruoli
• Product owner
• ScrumMaster
• Team
Eventi
• Sprint planning
• Sprint review
• Sprint retrospective
• Daily scrum meeting
Artifact
Prof. Filippo Lanubile
• Product backlog
• Sprint backlog
• Burndown charts
Sprint planning
•
•
•
•
Valutazione delle priorità nel Product Backlog
Scelta dello Sprint Goal
Selezione degli item da completare nello Sprint
Creazione dello Sprint Backlog
– Identificazione dei Task e stima (1-16 ore)
– Anche il design di alto livello è considerato
Come pianificatore
di vacanze, voglio
vedere le foto
degli alberghi.
Scrivere lo strato business (8 ore)
Scrivere l’interfaccia utente (4)
Scrivere le test fixtures (4)
Scrivere la classe pippo(6)
Aggiornare i performance tests (4)
Prof. Filippo Lanubile
10
Daily scrum meeting
• Parametri
– Tutti i giorni
– 15-minuti
– In piedi
• Tre domande:
– Cosa hai fatto ieri?
– Cosa farai oggi?
– Ci sono problemi?
• Sono tutti invitati ma solo i membri del team, lo
Scrum Master e il Product owner hanno diritto di
parola
Prof. Filippo Lanubile
Sprint review
• Il team presenta i risultati
raggiunti durante lo Sprint
• Demo delle nuove funzionalità
o dell’architettura sottostante
• Informale
– Regola: 2 ore di preparazione
– Niente slide
• Riunione aperta
– Tutto il team partecipa
– Esterni benvenuti
Prof. Filippo Lanubile
11
Sprint retrospective
• Periodicamente si analizza cosa sta
funzionando e cosa no
• Si discute
– cosa introdurre
– cosa evitare
– cosa continuare
nel prossimo sprint
• Tipicamente da 15 a 30 minuti
• Fatta al termine di ogni sprint
• Partecipa tutto il team
– Possibilmente anche i clienti ed altri ruoli coinvolti
Prof. Filippo Lanubile
Scrum framework
Ruoli
• Product owner
• ScrumMaster
• Team
Eventi
• Sprint planning
• Sprint review
• Sprint retrospective
• Daily scrum meeting
Artifact
• Product backlog
• Sprint backlog
• Burndown charts
Prof. Filippo Lanubile
12
Product Backlog
• Una lista di tutto il lavoro richiesto sul progetto
– L’unica fonte di requisiti per le modifiche da
apportare al prodotto
• È dinamico e cambia continuamente
– Nella prima stesura contiene solo i requisiti
inizialmente conosciuti e meglio compresi
• Le priorità sono stabilite dal Product Owner e
aggiornate all’inizio di ogni sprint
• Le stime degli item pronti per uno Sprint sono
stabilite dal Team di Sviluppo
Prof. Filippo Lanubile
Esempio di product
backlog
Backlog item
Permettere ad un ospite di effettuare una
prenotazione
Come ospite, voglio cancellare una prenotazione.
Come ospite, voglio cambiare le date di una
prenotazione.
Stima
3
5
3
Come impiegato dell’hotel, posso lanciare i report
RevPAR (Revenue Per Available Room =
Fatturato per camera disponibile)
8
Migliorare la gestione delle eccezioni
...
Prof. Filippo Lanubile
...
8
30
50
13
Requisiti funzionali nello
sviluppo agile
Prof. Filippo Lanubile
Descrizione di una
user story
Template
Esempio
In qualità di <ruolo utente>,
In qualità di cliente
occasionale,
voglio visualizzare le foto
dell'albergo selezionato
in modo tale da decidere se
effettuare la prenotazione
voglio <obiettivo>
[in modo tale da <motivo>]
Prof. Filippo Lanubile
14
Prof. Filippo Lanubile
Sprint goal
• Una breve indicazione dell’obiettivo principale
dello Sprint
Cambio Database
B
Fare girare l’applicazione
anche su SQL Server oltre
che su Oracle.
Servizi finanziari
Supportare più indicatori
tecnici di quanto faccia ABC
con dati in tempo reale.
Prof. Filippo Lanubile
15
Sprint backlog
• L'insieme degli elementi del Product Backlog
selezionati per lo Sprint
più un piano per fornire l'Incremento del prodotto
e realizzare lo Sprint Goal
• La gestione è di esclusiva pertinenza del Team di
Sviluppo
– Il lavoro non è assegnato da un project manager
– Quando del nuovo lavoro risulta necessario, il Team di
Sviluppo lo aggiunge allo Sprint Backlog
– Se alcuni elementi del piano non sono più ritenuti utili,
sono rimossi
– La stima del lavoro rimanente è aggiornata nel daily
meeting
Prof. Filippo Lanubile
Uno sprint backlog
Tasks
Lun Mar Mer Gio Ven
8
4
8
16
12
10
4
Testare il middle tier
8
16
16
11
8
Scrivere l’help online
12
8
8
8
8
8
4
Codificare la UI
Codificare il middle tier
Codificare la classe foo
8
Logging degli errori
Prof. Filippo Lanubile
16
Scrum board
Prof. Filippo Lanubile
Una Scrum board fisica
Prof. Filippo Lanubile
17
Una Scrum board digitale
Prof. Filippo Lanubile
Hours
Uno sprint burndown
chart
Prof. Filippo Lanubile
18
Tasks
Lun Mar Mer Gio Ven
Codificare la UI
8
4
8
16
12
10
7
Testare il middle tier
8
16
16
11
Scrivere l’help online
12
Codificare il middle tier
8
50
Hours
40
30
20
10
0
Lun
Mar
Mer
Gio
Ven
Prof. Filippo Lanubile
Riepilogo
Prof. Filippo Lanubile
19
Adattare un processo a
un progetto
• I progetti software differiscono al variare di molti fattori
– tipo di sistema software, natura dei rischi, tecnologie usate,
numero e competenze dei partecipanti, distribuzione
geografica del gruppo, ,
• Non ci sono processi che siano adatti per tutti i progetti
– Scelto un processo base è necessario modificarlo per farlo
funzionare al meglio
• Valutazione retrospettiva (di progetto o di iterazione)
– Cose da tenere
• ciò che ha funzionato bene e che si intende ripetere in futuro
– Problemi
• aree in cui qualcosa non va come dovrebbe
– Cose da provare
• cambiamenti che potrebbero migliorare il processo
Prof. Filippo Lanubile
20