introduzione alle metodologie di sviluppo agile

105
Sviluppo Agile Introduzione alle Metodologie di Sviluppo Agile DITEDI, Udine - Italia 14-07-2012

Upload: stefano-valle

Post on 01-Nov-2014

2.220 views

Category:

Technology


0 download

DESCRIPTION

Slide del seminario introduttivo alle metodolgie di sviluppo agile, tenuto presso il Distretto delle Tecnologie Digitali, a Udine, il 14/07/2012

TRANSCRIPT

Page 1: Introduzione alle metodologie di sviluppo agile

Sviluppo Agile Introduzione alle Metodologie di Sviluppo Agile

DITEDI, Udine - Italia 14-07-2012

Page 2: Introduzione alle metodologie di sviluppo agile

STEFANO MARASPIN

Page 3: Introduzione alle metodologie di sviluppo agile

STEFANO VALLE

Page 4: Introduzione alle metodologie di sviluppo agile

http://www.mvassociati.it/

Page 5: Introduzione alle metodologie di sviluppo agile

http://www.ditedi.it/

Page 6: Introduzione alle metodologie di sviluppo agile

http://friuli.grusp.org/

Page 7: Introduzione alle metodologie di sviluppo agile

http://www.hubme.in/

Page 8: Introduzione alle metodologie di sviluppo agile

APPROCCIO TIPICO

Page 9: Introduzione alle metodologie di sviluppo agile

Analisi dei requisiti

Stesura specifiche

Progettazione

Implementazione

Installazione

Manutenzione

9

Page 10: Introduzione alle metodologie di sviluppo agile

NON SIAMO INDOVINI

Page 11: Introduzione alle metodologie di sviluppo agile

Utilizzo funzionalità software

7% 13%

16%

19%

45% Sempre

Spesso

Qualche volta

Raramente

Mai

11

(Standish Group Study Reported at XP2002)

Page 12: Introduzione alle metodologie di sviluppo agile

ESTREMA INGEGNERIZZAZIONE?

Page 13: Introduzione alle metodologie di sviluppo agile

LE ESIGENZE CAMBIANO

Page 14: Introduzione alle metodologie di sviluppo agile

UN PROGETTO FALLITO NON EVOLVE

Page 15: Introduzione alle metodologie di sviluppo agile

44%

24%

32% Challenged

Failed

Successful

(2009 Standish Chaos Report)

La sorte dei progetti software

Page 16: Introduzione alle metodologie di sviluppo agile

NON CONSIDERA IL CAMBIAMENTO

Page 17: Introduzione alle metodologie di sviluppo agile

Il progetto tipico

17

Page 18: Introduzione alle metodologie di sviluppo agile

Il progetto tipico

18

Page 19: Introduzione alle metodologie di sviluppo agile

Il progetto tipico

19

Page 20: Introduzione alle metodologie di sviluppo agile

Il progetto tipico

20

Page 21: Introduzione alle metodologie di sviluppo agile

Il progetto tipico

21

Page 22: Introduzione alle metodologie di sviluppo agile

Il progetto tipico

22

Page 23: Introduzione alle metodologie di sviluppo agile

Meglio, vero?

23

Page 24: Introduzione alle metodologie di sviluppo agile

DA…

Page 25: Introduzione alle metodologie di sviluppo agile

…A

Page 26: Introduzione alle metodologie di sviluppo agile

PRIMA DI PARTIRE

Page 27: Introduzione alle metodologie di sviluppo agile

I piani dell’esperienza utente

J.J. Garrett – The elements of User Experience

Page 28: Introduzione alle metodologie di sviluppo agile

Diagrammi dei casi d’uso

28

Page 29: Introduzione alle metodologie di sviluppo agile

Diagrammi di Sequenza

29

Page 30: Introduzione alle metodologie di sviluppo agile

USER STORIES

Page 31: Introduzione alle metodologie di sviluppo agile

User stories

31

Come magazziniere

voglio poter filtrare l’archivio ordini

secondo la data di ricezione

per consultare rapidamente gli ultimi ordini evasi

Page 32: Introduzione alle metodologie di sviluppo agile

User stories

32

Come magazziniere

voglio poter filtrare l’archivio ordini

secondo la data di ricezione

per consultare rapidamente gli ultimi ordini evasi

ruolo

obiettivo

motivazione

Page 33: Introduzione alle metodologie di sviluppo agile

Com’è fatta un’iterazione? 1. Consideriamo il contesto 2. Prioritizziamo ciò che va sviluppato 3. Lo sviluppiamo 4. Misuriamo com’è andata

33

Page 34: Introduzione alle metodologie di sviluppo agile

TUTTO CIÒ CHE C’È DA FARE

Page 35: Introduzione alle metodologie di sviluppo agile

PRIORITÀ ALLE COSE IMPORTANTI

Page 36: Introduzione alle metodologie di sviluppo agile

SCRIVIAMO IL CODICE

Page 37: Introduzione alle metodologie di sviluppo agile

Gestione delle Versioni

Page 38: Introduzione alle metodologie di sviluppo agile

FARE REFACTORING

Page 39: Introduzione alle metodologie di sviluppo agile

MODIFICHE A CODICE SENZA TEST

Page 40: Introduzione alle metodologie di sviluppo agile

PRONTI PER ANDARE ONLINE?

Page 41: Introduzione alle metodologie di sviluppo agile

TEST DRIVEN DEVELOPMENT

Page 42: Introduzione alle metodologie di sviluppo agile

TEST UNITARI

Page 43: Introduzione alle metodologie di sviluppo agile

TEST FUNZIONALI

Page 44: Introduzione alle metodologie di sviluppo agile

BDD

Page 45: Introduzione alle metodologie di sviluppo agile

TOOL

Strumenti di test

Page 46: Introduzione alle metodologie di sviluppo agile

CONTINUOUS INTEGRATION

Page 47: Introduzione alle metodologie di sviluppo agile

PAROLA CHIAVE: AUTOMATIZZARE

Page 48: Introduzione alle metodologie di sviluppo agile

MISURE IN RETROSPETTIVA

Page 49: Introduzione alle metodologie di sviluppo agile

QUANT’È LA DURATA DI UN’ITERAZIONE?

Page 50: Introduzione alle metodologie di sviluppo agile

PRONTI PER LA PROSSIMA!

Page 51: Introduzione alle metodologie di sviluppo agile

IL MANIFESTO

Page 52: Introduzione alle metodologie di sviluppo agile

PIÙ CHE SEGUIRE UN PIANO

Page 53: Introduzione alle metodologie di sviluppo agile

RISPONDERE AL CAMBIAMENTO

Page 54: Introduzione alle metodologie di sviluppo agile

PIÙ CHE PROCESSI E STRUMENTI

Page 55: Introduzione alle metodologie di sviluppo agile

INDIVIDUI E INTERAZIONI

Page 56: Introduzione alle metodologie di sviluppo agile

PIÙ CHE DOCUMENTAZIONE ESAUSTIVA

Page 57: Introduzione alle metodologie di sviluppo agile

SOFTWARE FUNZIONANTE

Page 58: Introduzione alle metodologie di sviluppo agile

PIÙ CHE NEGOZIAZIONE DEL CONTRATTO

Page 59: Introduzione alle metodologie di sviluppo agile

COLLABORAZIONE COL CLIENTE

Page 60: Introduzione alle metodologie di sviluppo agile

PRATICHE, METODOLOGIE

Page 61: Introduzione alle metodologie di sviluppo agile

% adozione metodologie agili

61

State of Agile Survey 2011 – http://www.versionone.com

Page 62: Introduzione alle metodologie di sviluppo agile

EXTREME PROGRAMMING

Page 63: Introduzione alle metodologie di sviluppo agile

COMUNICAZIONE

Page 64: Introduzione alle metodologie di sviluppo agile

SEMPLICITÀ

Page 65: Introduzione alle metodologie di sviluppo agile

CORAGGIO

Page 66: Introduzione alle metodologie di sviluppo agile

RISPETTO

Page 67: Introduzione alle metodologie di sviluppo agile

FEEDBACK

Page 68: Introduzione alle metodologie di sviluppo agile

PRATICHE PRIMARIE

• Sit Together

• Whole Team

• Informative Workspace

• Energized Work

• Pair Programming

• Stories

• Slack

• Weekly Cycle

• Quarterly Cycle

• Ten-Minute Build

• Continuous Integration

• Test-First Programming

• Incremental Design

68

Page 69: Introduzione alle metodologie di sviluppo agile

PRATICHE AGGIUNTIVE

• Real Customer Involvement

• Incremental Deployment

• Team Continuity,

• Shrinking Teams

• Root Cause Analysis

• Shared Code

• Code and Tests

• Single Code Base

• Daily Deployment

• Negotiated Scope Contract

• Pay-per-use

69

Page 70: Introduzione alle metodologie di sviluppo agile

SCRUM

Page 71: Introduzione alle metodologie di sviluppo agile

Team roles

Immagini relative a SCRUM da http://www.axosoft.com – Licenza Creative Commons

Page 72: Introduzione alle metodologie di sviluppo agile

________________________________

________________________________

________________________________

________________________________

________________________________

________________________________

________________________________

________________________________

________________________________

________________________________

________________________________

________________________________

________________________________

________________________________

________________________________

________________________________

________________________________

________________________________

________________________________

________________________________

Backlog

Page 73: Introduzione alle metodologie di sviluppo agile

________________________________

________________________________

________________________________

________________________________

________________________________

________________________________

________________________________

________________________________

________________________________

________________________________

________________________________

________________________________

________________________________

________________________________

________________________________

________________________________

________________________________

________________________________

________________________________

________________________________

Sprint

Page 74: Introduzione alle metodologie di sviluppo agile

KANBAN

Page 75: Introduzione alle metodologie di sviluppo agile

Standup Meeting

Page 76: Introduzione alle metodologie di sviluppo agile

Burndown Chart

Page 77: Introduzione alle metodologie di sviluppo agile

Retrospettive

Immagini relative a SCRUM da http://www.axosoft.com – Licenza Creative Commons

Page 78: Introduzione alle metodologie di sviluppo agile

BISOGNA COMUNQUE STARE ATTENTI

Page 79: Introduzione alle metodologie di sviluppo agile

NON SEMPRE APPROCCIO MIGLIORE

Page 80: Introduzione alle metodologie di sviluppo agile

FRAGILITÀ ARCHITETTURALE

Page 81: Introduzione alle metodologie di sviluppo agile

PIANIFICAZIONE CROSS-PROGETTO

Page 82: Introduzione alle metodologie di sviluppo agile

GESTIRE LE INTERRUZIONI

Page 83: Introduzione alle metodologie di sviluppo agile

TUTTI I TASK STESSO EFFORT?

Page 84: Introduzione alle metodologie di sviluppo agile

STATO DI FLOW

Page 85: Introduzione alle metodologie di sviluppo agile

IGNORARE IL CONTESTO DI UTILIZZO

Page 86: Introduzione alle metodologie di sviluppo agile

IGNORARE GLI UTENTI

Page 87: Introduzione alle metodologie di sviluppo agile

Consideriamo chi saranno

87

Fonte: Information Architecture Second Edition – Wodtke & Govella

Page 88: Introduzione alle metodologie di sviluppo agile

Immaginiamoli (Personae)

Esempio di Personae da un progetto MV Associati – Immagini (con licenza Creative Commons) reperite da web

Page 89: Introduzione alle metodologie di sviluppo agile

Come interagiranno?

Fonte: Information Architecture Second Edition – Wodtke & Govella

Page 90: Introduzione alle metodologie di sviluppo agile

Limitiamoci alle storie scelte

Fonte: Information Architecture Second Edition – Wodtke & Govella

Page 91: Introduzione alle metodologie di sviluppo agile

DESIGN DALL’INTERFACCIA

Page 92: Introduzione alle metodologie di sviluppo agile

VALIDARE TUTTO CON TEST UTENTE

Page 93: Introduzione alle metodologie di sviluppo agile

L’impiego di metodi agili porta ad un aumento nella produttività,

efficienza, qualità, time-to-market e soddisfazione del cliente che varia dal 10% al 100%.

David F. Rico http://davidfrico.com/rico08b.pdf

Page 94: Introduzione alle metodologie di sviluppo agile

ACCOGLIERE IL CAMBIAMENTO

Page 95: Introduzione alle metodologie di sviluppo agile

NON IGNORARE LA REALTÀ

Page 96: Introduzione alle metodologie di sviluppo agile

CONSIDERARE IL CONTESTO

Page 97: Introduzione alle metodologie di sviluppo agile

PRINCIPIO DEL FAIL FAST

Page 98: Introduzione alle metodologie di sviluppo agile

QUALCHE DOMANDA?

Page 99: Introduzione alle metodologie di sviluppo agile

Grazie per l’attenzione

Stefano Maraspin @maraspin [email protected]

Stefano Valle @stefanovalle [email protected]

Page 100: Introduzione alle metodologie di sviluppo agile

Per Approfondire:

100

Page 101: Introduzione alle metodologie di sviluppo agile

Per Approfondire:

101

Page 102: Introduzione alle metodologie di sviluppo agile

Altri Argomenti Introdotti:

102

Page 103: Introduzione alle metodologie di sviluppo agile

Photo Credits • 8.http://www.flickr.com/photos/andyarthur/7153821133/ • 10.http://www.flickr.com/photos/twcollins/561072853/ • 14. http://www.flickr.com/photos/tweek/53286527/ • 16.http://www.flickr.com/photos/matthew/1350844425/ • 24.http://www.flickr.com/photos/stormino/3883174942/ • 25.http://www.flickr.com/photos/tanaka_juuyoh/4434234095 • 26.http://www.flickr.com/photos/chrishimself/3489202131/in/photostream • 30.http://www.flickr.com/photos/princessashley/3419971842/ • 35.http://www.flickr.com/photos/59937401@N07/5857263351/ • 36.http://www.flickr.com/photos/keremtapani/6160276128/ • 38.http://www.flickr.com/photos/criminalintent/6071312217/ • 39.http://www.flickr.com/photos/nomadic_lass/5503362755/ • 40.http://www.flickr.com/photos/30998987@N03/5408763863/ • 41.http://www.flickr.com/photos/44534236@N00/6894533130/ • 42.http://www.flickr.com/photos/techsavvyed/5926978939/ • 43.http://www.flickr.com/photos/sayamindu/5677186091 • 44.http://www.flickr.com/photos/enerva/5480788967/ • 46.http://www.flickr.com/photos/65666394@N04/5977381389/ • 47.http://www.flickr.com/photos/faircompanies/4956047516/ • 48.http://www.flickr.com/photos/matsuyuki/4058166150/ • 49.http://www.flickr.com/photos/22244945@N00/3278869535/ • 50.http://www.flickr.com/photos/rowens27/3163470179/ • 52.http://www.flickr.com/photos/idovermani/3903032710/ • 53.http://www.flickr.com/photos/willfolsom/6151515711/

103

Page 104: Introduzione alle metodologie di sviluppo agile

Photo Credits • 54.http://www.flickr.com/photos/caitlinator/3432730564/ • 55.http://www.flickr.com/photos/portofsandiego/5494425609/ • 56.http://www.flickr.com/photos/evergreenkamal/384258822/ • 58.http://www.flickr.com/photos/istolethetv/4803781313/ • 60.http://www.flickr.com/photos/hectoralejandro/4357626028/ • 62.http://www.flickr.com/photos/maveric2003/2501462876/in/photostream • 63-67.http://www.flickr.com/photos/maveric2003/2500638947/in/photostream & others from Eric Chan • 72.http://www.flickr.com/photos/royskeane/413103429/ • 73-75.http://www.axosoft.com/ontime/videos/scrum • 76.http://www.flickr.com/photos/mannewaar/3530731814/ • 77-79.http://www.axosoft.com/ontime/videos/scrum • 80.http://www.flickr.com/photos/sandman_kk/3788034781/ • 81.http://www.flickr.com/photos/ifl/7238282472/ • 83.http://www.flickr.com/photos/arg0s/7244729110/ • 84.http://www.flickr.com/photos/barteko/6127853971/ • 85.http://www.flickr.com/photos/photon_de/2700323949/ • 86.http://www.flickr.com/photos/webtreatsetc/4842422256/ • 88.http://www.flickr.com/photos/katiegail/431702206/sizes/l/in/photostream/ • 93.http://www.flickr.com/photos/baldiri/5734993652/ • 97.http://www.flickr.com/photos/12023825@N04/2898021822/ • 98.http://www.flickr.com/photos/king-edward/3758847141/ • 99.http://www.flickr.com/photos/grenade/3040654024/ • 100.http://www.flickr.com/photos/dobs/4128798936 • other pictures taken by S. Maraspin, courtesy of vectorportal.com or from fotolia archives

104

Page 105: Introduzione alle metodologie di sviluppo agile

Stefano Maraspin @maraspin [email protected]

Stefano Valle @stefanovalle [email protected]