SlideShare a Scribd company logo
1 of 82
Download to read offline
Introduzione alle metodologie
e pratiche agili
...ma Agile c'entra qualcosa con l'Open Source?
Relatori
Ilias Bartolini
ilias.bartolini@gmail.com

Roberto Bettazzoni
roberto@bettazzoni.it

http://creativecommons.org/licenses/by-sa/3.0/
02/04/07

1
Programma
Stima
Presentazione
Presentazione delle Metodologie Agili
Q&A sulle metodologie
Presentazione delle Pratiche Agili
Q&A sulle pratiche

3 min.
20 min.
5 min.
20 min.
5 min.

Scelta tra alcune presentazioni / discussioni in
base al vostro interesse ed al tempo restante
Saluti e riferimenti
Q&A di argomenti specifici

02/04/07

3 min.
Fuori

2
Parte a richiesta
Stima
Esempio d'applicazione di tecniche Agili

15 min.

Metodologie agili e l'Open Source

10 min.

Agile e OSS distribuito

15 min.

Come sopra con un approfondimento sulle
pratiche agili distribuite

Approfondimento sull'eXtreme Programming

15 min.

Argomento proposto da voi
A ruota libera
Se vi interessa scambiare informazioni a
ruota libera o fare altre domande
02/04/07

3
Parte 1
Metodologie Agili

02/04/07

4
Pratiche agili ... cosa sono?

Pratiche agili ... cosa sono?
Sono le pratiche utilizzate nelle
metodologie agili.

02/04/07

5
Metodologie agili ... cosa sono?

Metodologie agili ... cosa sono?
Sono le metodologie basate sui valori
dell'Agile Manifesto

02/04/07

6
Il Manifesto dell'Alleanza Agile
Stiamo portando alla luce metodi migliori di sviluppare software
facendolo in prima persona e aiutando altri a farlo. Attraverso questo
tipo di lavoro siamo giunti ai seguenti valori:
Persone e interazioni più che processi e tools
Software che funziona più che una documentazione esaustiva
Collaborazione con il cliente più che negoziazione contrattuale
Rispondere al cambiamento più che seguire un piano prestabilito
Cioè, mentre c'è un valore nelle voci sulla destra,
attribuiamo un valore maggiore a quelle sulla sinistra.
Kent Beck, Mike Beedle, Arie van Bennekum, Alistair Cockburn, Ward Cunningham, Martin Fowler, James Grenning, Jim Highsmith,
Andrew Hunt, Ron Jeffries, Jon Kern, Brian Marick, Robert C. Martin, Steve Mellor, Ken Schwaber, Jeff Sutherland, Dave Thomas.
© 2001, gli autori sopra citati. Questa dichiarazione può essere copiata in ogni forma, ma solo nella sua interezza, compresa la presente nota.

02/04/07

Agile @ ERLUG

7
Metodologie e pratiche
●

Pratica

●

Metodologia

Modalità per il
conseguimento di uno
scopo. Spesso è
formulata in sequenze di
passi.

Insieme di pratiche legate
tra loro da una visione
filosofica d'insieme.

Es: Standup meeting

Es: Scrum

Queste definizioni, nella loro accezione generica, sono fonte di numerose discussioni.
Devono essere considerate come semplificazione per i nostri scopi.
02/04/07

Agile @ ERLUG

8
Metodologie Agili

Rispondere al cambiamento
più che
seguire un piano prestabilito

02/04/07

Agile @ ERLUG

9
Metodologie Agili

Rispondere al cambiamento
più che
seguire un piano prestabilito
Cambia il metodo di approccio al problema.

02/04/07

Agile @ ERLUG

10
Metodologie Agili
Le metodologie 'storiche' hanno un
approccio

PREDITTIVO
(elaborare un piano e seguirlo)
Le metodologie agili hanno un approccio

ADATTATIVO
(rispondere al cambiamento)
02/04/07

Agile @ ERLUG

11
Approccio Predittivo
●
●

●

Specifiche fissate
Condizioni al contorno
note
Metodo
●
●

02/04/07

Progetto la soluzione
La applico

Agile @ ERLUG

12
Approccio Adattativo
●
●

●

Specifiche instabili
Condizioni al contorno
variabili
Metodo.
●

●

02/04/07

Micro decisioni continue.
Sviluppo quello che in quel
momento genera maggiore
valore per il cliente.
verifico il valore prodotto.

Agile @ ERLUG

13
La differenza c'è

Cosa comporta questa diversa filosofia?

02/04/07

Agile @ ERLUG

14
Cosa comporta questa differenza?

Pratiche e
strumenti ad
hoc

02/04/07

Agile @ ERLUG

15
Cosa comporta questa differenza?

Con una base in
comune
02/04/07

Agile @ ERLUG

16
Un passo indietro ... cosa c'era prima?
Le metodologie a cui l'agile si contrapponeva
●

Nesuna metodologia (Cowboy coding)

●

Modello a Cascata (Waterfall)
●

●

'storica',

basato

Modello iterativo (Iterative)
●

02/04/07

La metodologia di costruzione
sull'esperienza manifatturiera.

Basato sul waterfall, permette di avere rilasci più
frequenti, fornendo incrementalmente « parti » del
prodotto finale (o prototipi)

17
Modello a cascata

L'applicazione del modello a cascata
nello sviluppo software.

02/04/07

18
Modello a cascata

I caposaldi
Il processo di sviluppo è diviso in fasi sequenziali
● Ogni fase produce un output che è usato come input per
la fase successiva
● Ogni fase del processo viene documentata
●

Fonte: http://it.wikipedia.org/wiki/Modello_a_cascata

02/04/07

19
Modello a cascata
Fasi del modello a cascata
studio di fattibilità
analisi dei requisiti
progetto
sviluppo
collaudo
integrazione
manutenzione
Fonte: http://it.wikipedia.org/wiki/Modello_a_cascata

02/04/07

20
Modello a cascata
Altri capisaldi nelle applicazioni reali
●

Comunicazione formale
●

●

Ruoli
●

●

Identifica un certo insieme di responsabilità attribuite a un
certo insieme di persone.

Gerarchia
●

02/04/07

Lo scambio di informazioni viene considerato un output
della fase.

La verifica dell'output prodotto da ogni fase viene mappato
su una gerarchia (solitamente quella aziendale).
21
Modello a cascata

02/04/07

22
Funziona ?
Fine dei progetti
●

●

●

Pieno successo.
Competati in tempo e
con tutte le funzionalità
Sottostimati o parziali.
Sottostimato il tempo
e/o il costo oppure
implementati con minori
funzionalità di quelle
richieste
Falliti. Il progetto è
stato abbandonato
durante lo sviluppo.

Fonte: http://www.standishgroup.com/sample_research/chaos_1994_1.php
02/04/07

23
The CHAOS Report 1994
Analisi delle cause

Fonte: http://www.standishgroup.com/sample_research/chaos_1994_1.php
02/04/07

24
L'origine dei fallimenti era già nota
Frederick P. Brooks,
“No Silver Bullet", IFIP, 1986
I believe the hard part of building software to be the specification,
design, and testing of this conceptual construct, not the labor of
representing it and testing the fidelity of the representation. We
still make syntax errors, to be sure; but they are fuzz compared
with the conceptual errors in most systems.
If this is true, building software will always be hard. There is
inherently no silver bullet.
Tom DeMarco & Timothy Lister,
“Peopleware” , pag. 5, 1987
For the overwhelming majority of the bankrupt projects we studied,
there was not a single technological issue to explain the failure.

02/04/07

25
Modelli a iterazioni
●

Maggiore cura nell'analisi dei requisiti

●

Pratiche ad hoc per l'analisi ed il design

●

●

●

02/04/07

Fornire una parte del prodotto (o un prototipo) il
prima possibile
Validare o modificare i requisiti sulla base del
rilascio precedente
Convergere verso l'applicazione richiesta

26
Modelli a iterazioni

Come ?
●
●

●

02/04/07

Specializzazione dell'analisi e del design
Vengono effettuati rilasci parziali che
incrementalmente portano al prodotto
richiesto
Ogni rilascio segue un 'piccolo' modello a
cascata
27
Modelli a iterazioni

02/04/07

28
Modelli a iterazioni

Fonte: http://en.wikipedia.org/wiki/RUP
02/04/07

29
The CHAOS Report 2003
Fine dei progetti
●

●

●

Pieno successo.
Competati in tempo e
con tutte le funzionalità
Sottostimati o parziali.
Sottostimato il tempo
e/o il costo oppure
implementati con minori
funzionalità di quelle
richieste
Falliti. Il progetto è
stato abbandonato
durante lo sviluppo.

Fonte:http://www.standishgroup.com/press/article.php?id=2
02/04/07

30
Confronto The CHAOS Report '94 - '03

02/04/07

31
Modelli a iterazioni
PRO
●

●

Migliore probabilità di produrre ciò che è richiesto
nei requisiti
Reazione agli errori più veloce
CONTRO

●

●

02/04/07

Forte dipendenza dalla stabilità dei requisiti
Comunicazioni formali e lente

32
Chi lo ha detto ?

Distribuisci presto. Distribuisci spesso. E presta
ascolto agli utenti.
La cosa migliore, dopo l'avere buone idee, è
riconoscere quelle che arrivano dagli utenti.
Qualche volta sono le migliori.

02/04/07

33
Eric S. Raymond

7. Distribuisci presto. Distribuisci spesso. E presta
ascolto agli utenti.
11. La cosa migliore, dopo l'avere buone idee, è
riconoscere quelle che arrivano dagli utenti. Qualche
volta sono le migliori.
Eric S. Raymond, La Cattedrale ed il Bazaar, 1998

02/04/07

34
Lezione imparata
●

Il lavoro è svolto dalle persone.
●
●

Una persona con una visione più ampia del problema
ha più possibilità di risolverlo.

●

02/04/07

Un gruppo di persone affiatate lavora meglio.

●

●

Una persona coinvolta e motivata lavora meglio.

Più persone conoscono il problema più è facile trovare
la soluzione.

I clienti e gli utenti sono persone

35
Lezione imparata

Feedback
●

Trarre insegnamento dalla verifica del lavoro
compiuto (proprio ed altrui)
●
●

02/04/07

Condividere l'esperienza con gli altri

●
●

Analizzare quello che si è fatto per migliorarsi
Insegnare mediante l'esempio

La storia insegna

36
Lezione imparata
La conoscenza si trasmette con la
comunicazione.
●

●

02/04/07

La comunicazione diretta è più efficace di
quella formale.
La conoscenza deve essere il più possibile
condivisa ed espressa nel linguaggio
appropriato.

37
Lezione imparata

Dare all'utente ciò che vuole il prima possibile
●

Lavorare in base alle esigenze dell'utente

●

Rilasciare il prima possibile

02/04/07

38
Lezione imparata

La stabilità dei requisiti è vitale,
ma nel mondo reale è rara
... cambiamo il mondo reale
o ci adattiamo?

02/04/07

39
Il Manifesto dell'Alleanza Agile
Stiamo portando alla luce metodi migliori di sviluppare software
facendolo in prima persona e aiutando altri a farlo. Attraverso questo
tipo di lavoro siamo giunti ai seguenti valori:
Persone e interazioni più che processi e tools
Software che funziona più che una documentazione esaustiva
Collaborazione con il cliente più che negoziazione contrattuale
Rispondere al cambiamento più che seguire un piano prestabilito
Cioè, mentre c'è un valore nelle voci sulla destra,
attribuiamo un valore maggiore a quelle sulla sinistra.
Kent Beck, Mike Beedle, Arie van Bennekum, Alistair Cockburn, Ward Cunningham, Martin Fowler, James Grenning, Jim Highsmith,
Andrew Hunt, Ron Jeffries, Jon Kern, Brian Marick, Robert C. Martin, Steve Mellor, Ken Schwaber, Jeff Sutherland, Dave Thomas.
© 2001, gli autori sopra citati. Questa dichiarazione può essere copiata in ogni forma, ma solo nella sua interezza, compresa la presente nota.

02/04/07

Agile @ ERLUG

40
Alcune metodologie agili di sviluppo sw
●

Adaptive Software Development (ASD)

●

Agile Unified Process (AUP)

●

Crystal Clear

●

Extreme Programming (XP)

●

Feature Driven Development (FDD)

●

Lean software development

●

Scrum

●

...........

02/04/07

Agile @ ERLUG

41
Alcune pratiche agili
●

Agile Modeling [and Data Methods]

●

Agile Software Configuration Management

●

Database refactoring

●

Pair programming

●

Planning Game

●

Value Stream Mapping

●

Test-Driven Development (TDD)

●

...

02/04/07

Agile @ ERLUG

42
Metodologie Agili

Domande?

02/04/07

Agile @ ERLUG

43
Riassunto Metodologie Predittive

02/04/07

Agile @ ERLUG

44
Riassunto Metodologie adattative

02/04/07

Agile @ ERLUG

45
Riassunto metodologie adattative

02/04/07

Agile @ ERLUG

46
Extreme Programming
Extreme Programming Explained [2nded] – Kent Beck

Valori
Principi
Pratiche
(approfondimento a dopo)

02/04/07

Agile @ ERLUG

47
Lean Software Development
Taiici Hono – 1988
The Toyota Production System
"Only after American carmakers had exhausted every other
explanation for Toyota's success—an undervalued yen, a
docile workforce, Japanese culture, superior automation—
were they finally able to admit that Toyota's real advantage
was its ability to harness the intellect of 'ordinary'
employees."

Gary Hamel, Harvard Business Review, 02/2006

02/04/07

Agile @ ERLUG

48
Lean Software Development
Applicazione dei principi del metodo Toyota allo
sviluppo software:
Lean Software Development – M.&T. Poppendieck
1. Elimina gli sprechi! (MUDA)
●

Extra-feature, difetti, lavoro inconcluso,
re-learning, attese, logistica (distribuzione)

2. Creare qualità dall'interno (codice)
●

Testing, Continuous integration, Rafactoring

3. Creare conoscenza
02/04/07

Agile @ ERLUG

49
Lean Software Development

1. Eliminare gli sprechi! (MUDA)
●

Extra-feature, difetti, lavoro inconcluso,
re-learning, attese, logistica (distribuzione)

2. Creare qualità dall'interno (codice)
●

Testing, Continuous integration, Rafactoring

3. Creare conoscenza

02/04/07

Agile @ ERLUG

50
Lean Software Development
4. Decidere all'ultimo momento
●

Non troppo presto: potresti non avere abbastanza
informazioni

●

Non troppo tardi: potresti non essere in grado di
attuare la decisione

5. Rilasciare in fretta
●

Value Stream Map

6. Ottimizzare tutto l'insieme
●

02/04/07

Rimuovi i circoli-viziosi
Agile @ ERLUG

51
Lean Software Development
7. Rispettare le persone
●
●

Best practice continuamente sottoposte a critica

●

02/04/07

Coinvolgimento allargato nel processo decisionale
Dare ai gruppi di lavoro spazio per sperimentare
le proprie idee

Agile @ ERLUG

52
Crystal
Sviluppo Software: un gioco cooperativo di
invenzione e comunicazione tra persone
●

●

02/04/07

Ogni metodologia deve essere più leggera possibile
ma «sufficiente» al raggiungimento dell'obiettivo
Non esiste «UNA» metodologia. Ogni processo si
adatta a diverse situazioni: numero di persone,
obiettivi primari da raggiungere, criticalità.

Agile @ ERLUG

53
Crystal
7 principi per il disegno delle metodologie:
●
●
●
●
●

●

●

02/04/07

Più formalismi => più costi iniziali e meno adattabilità
Più comunicazione face-to-face
Più fiducia nelle persone permette meno formalismi
Progetti grandi richiedono maggiori formalismi
Più meccanismi di feedback interno riducono la necessità
di prodotti intermedi
Rimozione dei «colli di bottiglia» del processo: migliori
persone; migliori strumenti; maggiore completezza dei
passi precedenti; più persone
Skill, disciplina, conoscenza vs formalismi, processi,
documentazione
Agile @ ERLUG

54
Scrum
Agile Software Development with SCRUM – K. Schwaber,
M. Beedle
Daily
Scrum

Sprint

Product
Backlog
02/04/07

Sprint
Backlog
Agile @ ERLUG

Sprint
Review

Product

55
Parte 2
Pratiche

02/04/07

56
Alcune pratiche Agili
●

Implementazione
●
●

Refactoring

●

Pair Programming

●
●

Test Driven Development

...

Organizzazione
●
●

Shared Code / Collective Code Ownership

●

02/04/07

Stand-Up Meeting / Daily Scrum
...
Agile @ ERLUG

57
Alcune pratiche Agili
●

Gestione e pianiifcazione
●
●

Release frequenti

●

Customer On Site / Coinvolgimento Reale

●

User Stories e Planning game

●

02/04/07

Continuous Integration

...

Agile @ ERLUG

58
Stand-Up Meeting / Daily Scrum
Non più di 10-20 minuti
Ogni giorno:
●
●

Stessa ora
Stesso posto

3 domande:
●
●
●

Cosa è stato fatto?
Che difficoltà si sono incontrate?
Cosa si è pianificato prima del prossimo incontro?

Eventualmente guidati da un moderatore/facilitatore
02/04/07

Agile @ ERLUG

59
Stand-Up Meeting / Daily Scrum
Condivisione degli obiettivi a breve termine
Comunicazione degli stati di avanzamento
Permette alle criticità di emergere!
Stimola la auto organizzazione
Stimola il «rispetto reciproco»
Trasforma un «insieme di persone» in un «gruppo»
http://www.martinfowler.com/articles/itsNotJustStandingUp.html

02/04/07

Agile @ ERLUG

60
Pair Programming
Due persone, un unico task, una sola tastiera
●
●

02/04/07

Il «pilota» scrive il codice
Il «navigatore» verifica e pensa al prossimo
passo

Agile @ ERLUG

61
Pair Programming
Per un buon pair-programming:
●
●

●
●

●

02/04/07

Il navigatore non deve dormire :)
Invertire i ruoli ogni tanto: strappare la tastiera
dalle mani!
Ruotare le coppie ogni tanto
Le coppie devono essere eterogenee ed
affiatate ...ma tutti devono imparare a
lavorare con tutti (limitazione dell'ego!)
Ricordarsi di fare delle pause ogni tanto :)
Agile @ ERLUG

62
Pair Programming
Perchè pagare due per fare il lavoro di uno?
●

Due persone in pair generalmente sono meno produttive
...ma meno di quanto ci si aspetti!
http://www.comp.polyu.edu.hk/people/doc/cskcchan/pairpaper.pdf

Dipende molto dal contesto, dalle persone e dal tipo di
attività

02/04/07

Agile @ ERLUG

63
Pair Programming

Però....
●

Scambio di conoscenze e formazione on-job

●

Migliore qualità: meno bachi da risolvere in futuro

●

Migliore design: meno costi nell'integrare le future features

●

Conoscenza comune del codice

●

Affiatamento, aumento della comunicazione e coesione

●

Meno distrazioni e più disciplina

02/04/07

Agile @ ERLUG

64
Shared Code / Collective Code Ownership

Chiunque è libero di modificare qualsiasi
porzione di codice un qualsiasi parte del
sistema in qualsiasi momento.
Extreme Programming Explained - Kent Beck

Anche questo... non vi suona familiare?

02/04/07

Agile @ ERLUG

65
Shared Code / Collective Code Ownership
●

Conoscenza condivisa:
Ogni membro del team ha una sommaria
conoscenza di tutto il codice
Strumenti condivisi:
●

●

Diventa essenziale l'utilizzo di strumenti di
versioning!
● Sicurezza e Integrazione
...ringraziamo patch/diff, CVS, SVN, etc.
●

02/04/07

Agile @ ERLUG

66
Shared Code / Collective Code Ownership
●

Responsabilità condivisa:
non c'è più un unico responsabile di certi moduli
software!
● La responsabilità si sposta dal semplice
funzionamento verso la qualità del codice
● Se tutti devono poterci mettere le mani e «capire»
...è meglio scrivere buon codice
(coding convention?)
●

02/04/07

Agile @ ERLUG

67
Continuous Integration
Il codice sviluppato deve essere subito a
disposizione di tutti
1. Lo sviluppo deve il più possibile avvenire sull'ultima
versione del repository/mainline
2. Ogni sviluppatore deve eseguire il commit delle
parti sviluppate appena un task/storia viene
terminato
●

●

Automatizzare l'esecuzione dei test

●

02/04/07

Automatizzare le build
Automatizzare il deploy
Agile @ ERLUG

68
Refactoring
●

BDUF: È facile "azzeccare" come progettare
la soluzione giusta al primo tentativo?
...poi arrivano nuovi requisiti
...poi ci si accorge di nuove soluzioni
...l'ultima modifica manda in crash il sistema!
...il design è talmente decaduto che non si sa da
dove ricominciare :(

●

È più facile aggiungere o cancellare codice?

●

Quanto costa buttarlo via?

02/04/07

Agile @ ERLUG

69
Refactoring

Qualcuno aveva già sentito puzza di bruciato:
«Plan to throw one away; you will, anyhow.»
The Mythical Man-Month - Fred Brooks

02/04/07

Agile @ ERLUG

70
Refactoring

Processo di modifica evolutiva di un
sistema software in modo da non
modificarne il comportamento esterno
migliorandone la sua struttura

02/04/07

Agile @ ERLUG

71
Refactoring

●

modifica il codice in piccoli passi

●

migliora continuamente il design

●

il codice diventa «parlante»

●

richiede disciplina [il pair programming aiuta]

●

la pratica rende perfetti

●

richiede un buon «fiuto»

02/04/07

Agile @ ERLUG

72
Refactoring
Alcune «puzze» comuni

...ed alcune soluzioni

1. codice duplicato
2. metodi/classi lunghe
3. lunghe liste di parametri
4. cambiamenti divergenti
5. shotgun surgery
6. codice «invidioso»
7. liste di switch/if
8. generalizzazione
speculativa: «astronauti»
9. commenti!

1. estrai la parte duplicata
2. separa le competenze
3. introduci/estrai oggetti
4. separa le competenze
5. riunire la responsabilità
6. muovi/estrai metodo
7. polimorfismo
8. canc, canc, canc, canc,
canc, canc, canc, canc
9. nascosto dal deodorante!

02/04/07

Agile @ ERLUG

73
Test Driven Development (TDD)
Nei processi di sviluppo software tradizionali il
collaudo si fa alla fine...
Nella realtà il collaudo non viene mai fatto :(

Perchè?
+ stress => - test
- test => + stress

02/04/07

Agile @ ERLUG

74
Test Driven Development (TDD)
In TDD i test guidano lo sviluppo!
Implementa

Rifattorizza
il codice

Commit

Scrivi i test per una
nuova funzionalità

02/04/07

Agile @ ERLUG

75
Test Driven Development (TDD)
Per un buon TDD:
●

Pensa ai test prima di pensare l'implementazione

●

Una «barra rossa» è meglio di uno schermo bianco

●

I test devono essere semplici e leggibili

●

I test devono essere isolati

●

I test devono essere veloci e lanciati spesso

●

●

02/04/07

Verifica prima il risultato atteso, verifica i casi limite,
verifica le eccezioni
Rifattorizza sia l'implementazione che i test
Agile @ ERLUG

76
Test Driven Development (TDD)
TDD significa anche «Test Driven Design»
●

●

●

●

02/04/07

Permette di definire l'interfaccia degli oggetti prima
di buttarsi sull'implementazione
Permette di concentrarsi sul comportamento
dell'oggetto
Permette di rifattorizzare il codice con maggiore
confidenza
Porta alla realizzazione di architetture con basso
accoppiamento

Agile @ ERLUG

77
Test Driven Development (TDD)
Con TDD posso anche...
●

Documentare l'utilizzo dei miei componenti
attraverso i test

●

Evitare la regressione dei bug

●

Isolare codice legacy

●

Dormire un po' più tranquillo la sera dopo il rilascio

02/04/07

Agile @ ERLUG

78
Test Driven Development (TDD)
TDD non è Unit Testing
●

...ma sono ottimi amici :)

Come testare le interfacce utente?
●

Utilizzando tool ad-hoc

●

Rimuovendo la logica dalle interfacce

Come testare liberandosi da risorse esterne?
●

Mock

TDD può creare dipendenza! :)
02/04/07

Agile @ ERLUG

79
Test Driven Development (TDD)
Strumenti:
●

*Unit: JUnit, PyUnit, NUnit, CPPUnit, PHPUnit, ...

●

DBUnit, SQLUnit, PL/SQL Unit, ...

●

EasyMock, Moquer, MockEJB, ...

●

Selenium, HttpUnit, Jmeter, ...

●

Fit, Fitnesse, ...

...forse pure troppi

02/04/07

Agile @ ERLUG

80
Tante pratiche... ma da dove comincio?
Dipende dal contesto
comincia dai problemi più urgenti
...un passo alla volta...

02/04/07

Agile @ ERLUG

81
Pratiche Agili

DOMANDE?

02/04/07

Agile @ ERLUG

82

More Related Content

What's hot

Instilling Scrum Workshop
Instilling Scrum WorkshopInstilling Scrum Workshop
Instilling Scrum WorkshopRaoul Buzziol
 
2014 07-08 7° webinar pmi-rome agile scrum
2014 07-08 7° webinar pmi-rome agile scrum2014 07-08 7° webinar pmi-rome agile scrum
2014 07-08 7° webinar pmi-rome agile scrumEmiliano Soldi
 
Manifesto per lo Sviluppo Agile di Software
Manifesto per lo Sviluppo Agile di SoftwareManifesto per lo Sviluppo Agile di Software
Manifesto per lo Sviluppo Agile di SoftwareAmmLibera AL
 
Redistributable Intro To Scrum Ita
Redistributable Intro To Scrum ItaRedistributable Intro To Scrum Ita
Redistributable Intro To Scrum ItaLuciano Benetti
 
Scrum! Sopravvivere e gestire progetti tra polli, maiali e clienti
Scrum! Sopravvivere e gestire progetti tra polli, maiali e clientiScrum! Sopravvivere e gestire progetti tra polli, maiali e clienti
Scrum! Sopravvivere e gestire progetti tra polli, maiali e clientiMarco Da Rin Zanco
 
Agile raccontato a mia nonna
Agile raccontato a mia nonnaAgile raccontato a mia nonna
Agile raccontato a mia nonnaFelice Pescatore
 
Impatti dell'introduzione di Scrum
Impatti dell'introduzione di ScrumImpatti dell'introduzione di Scrum
Impatti dell'introduzione di ScrumAndrea Di Pinto
 
Lean Agile Development - a war story (Better Software 2010)
Lean Agile Development - a war story (Better Software  2010)Lean Agile Development - a war story (Better Software  2010)
Lean Agile Development - a war story (Better Software 2010)Fabio Armani
 
Scrum? E' come fare il bucato!
Scrum? E' come fare il bucato!Scrum? E' come fare il bucato!
Scrum? E' come fare il bucato!Manuel Scapolan
 
Percorsi formativi Lean-Agile
Percorsi formativi Lean-AgilePercorsi formativi Lean-Agile
Percorsi formativi Lean-AgileGiulio Roggero
 
Agile Project Management: Integrare metodologie di progetto tradizionali con ...
Agile Project Management: Integrare metodologie di progetto tradizionali con ...Agile Project Management: Integrare metodologie di progetto tradizionali con ...
Agile Project Management: Integrare metodologie di progetto tradizionali con ...Codemotion
 
5 scrum dalle trincee - principi agili
5   scrum dalle trincee - principi agili5   scrum dalle trincee - principi agili
5 scrum dalle trincee - principi agiliAlessio Del Toro
 
Scrum una breve introduzione
Scrum una breve introduzioneScrum una breve introduzione
Scrum una breve introduzionerhubbit
 
Agile e l’arte di semplificare progetti complessi
Agile e l’arte di semplificare progetti complessiAgile e l’arte di semplificare progetti complessi
Agile e l’arte di semplificare progetti complessiGiulio Roggero
 
Agile@scale - Agile Day 2013
Agile@scale - Agile Day 2013Agile@scale - Agile Day 2013
Agile@scale - Agile Day 2013Felice Pescatore
 
Agile project management 1 giornata - board game - v2
Agile project management   1 giornata - board game - v2Agile project management   1 giornata - board game - v2
Agile project management 1 giornata - board game - v2Giulio Roggero
 
Agile requirements - alla ricerca del filo rosso (iad 2013)
Agile requirements - alla ricerca del filo rosso (iad 2013)Agile requirements - alla ricerca del filo rosso (iad 2013)
Agile requirements - alla ricerca del filo rosso (iad 2013)Fabio Armani
 

What's hot (20)

Instilling Scrum Workshop
Instilling Scrum WorkshopInstilling Scrum Workshop
Instilling Scrum Workshop
 
2014 07-08 7° webinar pmi-rome agile scrum
2014 07-08 7° webinar pmi-rome agile scrum2014 07-08 7° webinar pmi-rome agile scrum
2014 07-08 7° webinar pmi-rome agile scrum
 
Dal waterfall allo scrum
Dal waterfall allo scrumDal waterfall allo scrum
Dal waterfall allo scrum
 
Manifesto per lo Sviluppo Agile di Software
Manifesto per lo Sviluppo Agile di SoftwareManifesto per lo Sviluppo Agile di Software
Manifesto per lo Sviluppo Agile di Software
 
Redistributable Intro To Scrum Ita
Redistributable Intro To Scrum ItaRedistributable Intro To Scrum Ita
Redistributable Intro To Scrum Ita
 
Scrum! Sopravvivere e gestire progetti tra polli, maiali e clienti
Scrum! Sopravvivere e gestire progetti tra polli, maiali e clientiScrum! Sopravvivere e gestire progetti tra polli, maiali e clienti
Scrum! Sopravvivere e gestire progetti tra polli, maiali e clienti
 
Semplicemente Agile
Semplicemente AgileSemplicemente Agile
Semplicemente Agile
 
Agile raccontato a mia nonna
Agile raccontato a mia nonnaAgile raccontato a mia nonna
Agile raccontato a mia nonna
 
Impatti dell'introduzione di Scrum
Impatti dell'introduzione di ScrumImpatti dell'introduzione di Scrum
Impatti dell'introduzione di Scrum
 
Agile in 45 minuti
Agile in 45 minutiAgile in 45 minuti
Agile in 45 minuti
 
Lean Agile Development - a war story (Better Software 2010)
Lean Agile Development - a war story (Better Software  2010)Lean Agile Development - a war story (Better Software  2010)
Lean Agile Development - a war story (Better Software 2010)
 
Scrum? E' come fare il bucato!
Scrum? E' come fare il bucato!Scrum? E' come fare il bucato!
Scrum? E' come fare il bucato!
 
Percorsi formativi Lean-Agile
Percorsi formativi Lean-AgilePercorsi formativi Lean-Agile
Percorsi formativi Lean-Agile
 
Agile Project Management: Integrare metodologie di progetto tradizionali con ...
Agile Project Management: Integrare metodologie di progetto tradizionali con ...Agile Project Management: Integrare metodologie di progetto tradizionali con ...
Agile Project Management: Integrare metodologie di progetto tradizionali con ...
 
5 scrum dalle trincee - principi agili
5   scrum dalle trincee - principi agili5   scrum dalle trincee - principi agili
5 scrum dalle trincee - principi agili
 
Scrum una breve introduzione
Scrum una breve introduzioneScrum una breve introduzione
Scrum una breve introduzione
 
Agile e l’arte di semplificare progetti complessi
Agile e l’arte di semplificare progetti complessiAgile e l’arte di semplificare progetti complessi
Agile e l’arte di semplificare progetti complessi
 
Agile@scale - Agile Day 2013
Agile@scale - Agile Day 2013Agile@scale - Agile Day 2013
Agile@scale - Agile Day 2013
 
Agile project management 1 giornata - board game - v2
Agile project management   1 giornata - board game - v2Agile project management   1 giornata - board game - v2
Agile project management 1 giornata - board game - v2
 
Agile requirements - alla ricerca del filo rosso (iad 2013)
Agile requirements - alla ricerca del filo rosso (iad 2013)Agile requirements - alla ricerca del filo rosso (iad 2013)
Agile requirements - alla ricerca del filo rosso (iad 2013)
 

Viewers also liked

SUE AGILE Framework (Italiano)
SUE AGILE Framework (Italiano)SUE AGILE Framework (Italiano)
SUE AGILE Framework (Italiano)Sabino Labarile
 
Integrazione di modelli matematici per la gestione del traffico aereo in Euro...
Integrazione di modelli matematici per la gestione del traffico aereo in Euro...Integrazione di modelli matematici per la gestione del traffico aereo in Euro...
Integrazione di modelli matematici per la gestione del traffico aereo in Euro...Nicola Furlan
 
Complexity indicators: estimation precision and test types
Complexity indicators: estimation precision and test typesComplexity indicators: estimation precision and test types
Complexity indicators: estimation precision and test typesRoberto Bettazzoni
 
SUE AGILE - Presentazione della piattaforma
SUE AGILE - Presentazione della piattaforma SUE AGILE - Presentazione della piattaforma
SUE AGILE - Presentazione della piattaforma Sabino Labarile
 
Test e scrum un caso reale v3.2
Test e scrum   un caso reale v3.2Test e scrum   un caso reale v3.2
Test e scrum un caso reale v3.2Ivan Fioravanti
 
TMap: una metodologia di test business driven
TMap: una metodologia di test business drivenTMap: una metodologia di test business driven
TMap: una metodologia di test business drivenCodemotion
 
Lavorare al meglio con le persone giuste - Agile Method
Lavorare al meglio con le persone giuste - Agile Method Lavorare al meglio con le persone giuste - Agile Method
Lavorare al meglio con le persone giuste - Agile Method InSide Training
 
Team agile vs budget fisso: la nostra esperienza e i nostri errori
Team agile vs budget fisso: la nostra esperienza e i nostri erroriTeam agile vs budget fisso: la nostra esperienza e i nostri errori
Team agile vs budget fisso: la nostra esperienza e i nostri erroriextrategy
 
Marketing 2.0 - L'utente come canale di vendita grazie all'approccio conversa...
Marketing 2.0 - L'utente come canale di vendita grazie all'approccio conversa...Marketing 2.0 - L'utente come canale di vendita grazie all'approccio conversa...
Marketing 2.0 - L'utente come canale di vendita grazie all'approccio conversa...Claudio Vaccaro
 
[500DISTRO] The Scientific Method: How to Design & Track Viral Growth Experim...
[500DISTRO] The Scientific Method: How to Design & Track Viral Growth Experim...[500DISTRO] The Scientific Method: How to Design & Track Viral Growth Experim...
[500DISTRO] The Scientific Method: How to Design & Track Viral Growth Experim...500 Startups
 

Viewers also liked (11)

Perdere il controllo (IAD09)
Perdere il controllo (IAD09)Perdere il controllo (IAD09)
Perdere il controllo (IAD09)
 
SUE AGILE Framework (Italiano)
SUE AGILE Framework (Italiano)SUE AGILE Framework (Italiano)
SUE AGILE Framework (Italiano)
 
Integrazione di modelli matematici per la gestione del traffico aereo in Euro...
Integrazione di modelli matematici per la gestione del traffico aereo in Euro...Integrazione di modelli matematici per la gestione del traffico aereo in Euro...
Integrazione di modelli matematici per la gestione del traffico aereo in Euro...
 
Complexity indicators: estimation precision and test types
Complexity indicators: estimation precision and test typesComplexity indicators: estimation precision and test types
Complexity indicators: estimation precision and test types
 
SUE AGILE - Presentazione della piattaforma
SUE AGILE - Presentazione della piattaforma SUE AGILE - Presentazione della piattaforma
SUE AGILE - Presentazione della piattaforma
 
Test e scrum un caso reale v3.2
Test e scrum   un caso reale v3.2Test e scrum   un caso reale v3.2
Test e scrum un caso reale v3.2
 
TMap: una metodologia di test business driven
TMap: una metodologia di test business drivenTMap: una metodologia di test business driven
TMap: una metodologia di test business driven
 
Lavorare al meglio con le persone giuste - Agile Method
Lavorare al meglio con le persone giuste - Agile Method Lavorare al meglio con le persone giuste - Agile Method
Lavorare al meglio con le persone giuste - Agile Method
 
Team agile vs budget fisso: la nostra esperienza e i nostri errori
Team agile vs budget fisso: la nostra esperienza e i nostri erroriTeam agile vs budget fisso: la nostra esperienza e i nostri errori
Team agile vs budget fisso: la nostra esperienza e i nostri errori
 
Marketing 2.0 - L'utente come canale di vendita grazie all'approccio conversa...
Marketing 2.0 - L'utente come canale di vendita grazie all'approccio conversa...Marketing 2.0 - L'utente come canale di vendita grazie all'approccio conversa...
Marketing 2.0 - L'utente come canale di vendita grazie all'approccio conversa...
 
[500DISTRO] The Scientific Method: How to Design & Track Viral Growth Experim...
[500DISTRO] The Scientific Method: How to Design & Track Viral Growth Experim...[500DISTRO] The Scientific Method: How to Design & Track Viral Growth Experim...
[500DISTRO] The Scientific Method: How to Design & Track Viral Growth Experim...
 

Similar to Introduzione alle metodologie e pratiche Agili ... ma l'agile c'entra qualcosa con l'Open Source? (2006)

Collaborazione, Decisionalità e Gestione della Complessità nel Tempo: cosa ...
Collaborazione, Decisionalità e Gestione della Complessità nel Tempo: cosa ...Collaborazione, Decisionalità e Gestione della Complessità nel Tempo: cosa ...
Collaborazione, Decisionalità e Gestione della Complessità nel Tempo: cosa ...Commit University
 
Una fugace occhiata al Test Driven Development (2006)
Una fugace occhiata al Test Driven Development  (2006)Una fugace occhiata al Test Driven Development  (2006)
Una fugace occhiata al Test Driven Development (2006)Roberto Bettazzoni
 
16. Principi e linee guida (i)
16. Principi e linee guida (i)16. Principi e linee guida (i)
16. Principi e linee guida (i)Roberto Polillo
 
ATDD - Acceptance Test Driven Development
ATDD - Acceptance Test Driven DevelopmentATDD - Acceptance Test Driven Development
ATDD - Acceptance Test Driven DevelopmentGiorgio Marchetti
 
Discover Facilitation: gestire le riunioni in modo efficace
Discover Facilitation: gestire le riunioni in modo efficaceDiscover Facilitation: gestire le riunioni in modo efficace
Discover Facilitation: gestire le riunioni in modo efficaceThinkOpen
 
Agile e Lean in sintesi
Agile e Lean in sintesiAgile e Lean in sintesi
Agile e Lean in sintesiStefano Muro
 
Breaking the ice with agile - cinque strade per rompere il ghiaccio e introdu...
Breaking the ice with agile - cinque strade per rompere il ghiaccio e introdu...Breaking the ice with agile - cinque strade per rompere il ghiaccio e introdu...
Breaking the ice with agile - cinque strade per rompere il ghiaccio e introdu...Pietro Di Bello
 
Agile Lean Conference 2016 - Barengo _I principi del lean software development
Agile Lean Conference 2016 - Barengo _I principi del lean software developmentAgile Lean Conference 2016 - Barengo _I principi del lean software development
Agile Lean Conference 2016 - Barengo _I principi del lean software developmentAgile Lean Conference
 
How Agile Dev Teams work
How Agile Dev Teams workHow Agile Dev Teams work
How Agile Dev Teams workXPeppers
 
Problem Solving
Problem SolvingProblem Solving
Problem SolvingLuca Naso
 
Open Innovation Campus - 05/04/2018 - Agile challenges: essere agili nello sv...
Open Innovation Campus - 05/04/2018 - Agile challenges: essere agili nello sv...Open Innovation Campus - 05/04/2018 - Agile challenges: essere agili nello sv...
Open Innovation Campus - 05/04/2018 - Agile challenges: essere agili nello sv...Vittorio Polizzi
 
User eXperience fast and smart - Come integrare la UX in lean startup
User eXperience fast and smart - Come integrare la UX in lean startupUser eXperience fast and smart - Come integrare la UX in lean startup
User eXperience fast and smart - Come integrare la UX in lean startupGiuseppe Sorrentino
 
User eXperience fast and smart | Giuseppe Sorrentino
User eXperience fast and smart | Giuseppe Sorrentino  User eXperience fast and smart | Giuseppe Sorrentino
User eXperience fast and smart | Giuseppe Sorrentino Codemotion
 
Risolvi i tuoi problemi di sviluppo con agilità - di Stefano Brocchi
Risolvi i tuoi problemi di sviluppo con agilità - di Stefano BrocchiRisolvi i tuoi problemi di sviluppo con agilità - di Stefano Brocchi
Risolvi i tuoi problemi di sviluppo con agilità - di Stefano BrocchiGiuneco S.r.l
 
2014 nov 11 PMI Rome Agile Project Management: Il cambio del paradigma.
2014 nov 11 PMI Rome Agile Project Management: Il cambio del paradigma.2014 nov 11 PMI Rome Agile Project Management: Il cambio del paradigma.
2014 nov 11 PMI Rome Agile Project Management: Il cambio del paradigma.ACT Point
 
Agile web development - Forum IISF - 2016
Agile web development - Forum IISF - 2016Agile web development - Forum IISF - 2016
Agile web development - Forum IISF - 2016Luciano Amodio
 
2 lavorare per_progetti_dr. salvatore barresi_[seminario]
2 lavorare per_progetti_dr. salvatore barresi_[seminario]2 lavorare per_progetti_dr. salvatore barresi_[seminario]
2 lavorare per_progetti_dr. salvatore barresi_[seminario]Salvatore [Sasa'] Barresi
 

Similar to Introduzione alle metodologie e pratiche Agili ... ma l'agile c'entra qualcosa con l'Open Source? (2006) (20)

Collaborazione, Decisionalità e Gestione della Complessità nel Tempo: cosa ...
Collaborazione, Decisionalità e Gestione della Complessità nel Tempo: cosa ...Collaborazione, Decisionalità e Gestione della Complessità nel Tempo: cosa ...
Collaborazione, Decisionalità e Gestione della Complessità nel Tempo: cosa ...
 
Una fugace occhiata al Test Driven Development (2006)
Una fugace occhiata al Test Driven Development  (2006)Una fugace occhiata al Test Driven Development  (2006)
Una fugace occhiata al Test Driven Development (2006)
 
16. Principi e linee guida (i)
16. Principi e linee guida (i)16. Principi e linee guida (i)
16. Principi e linee guida (i)
 
ATDD - Acceptance Test Driven Development
ATDD - Acceptance Test Driven DevelopmentATDD - Acceptance Test Driven Development
ATDD - Acceptance Test Driven Development
 
Discover Facilitation: gestire le riunioni in modo efficace
Discover Facilitation: gestire le riunioni in modo efficaceDiscover Facilitation: gestire le riunioni in modo efficace
Discover Facilitation: gestire le riunioni in modo efficace
 
Agile e Lean in sintesi
Agile e Lean in sintesiAgile e Lean in sintesi
Agile e Lean in sintesi
 
Breaking the ice with agile - cinque strade per rompere il ghiaccio e introdu...
Breaking the ice with agile - cinque strade per rompere il ghiaccio e introdu...Breaking the ice with agile - cinque strade per rompere il ghiaccio e introdu...
Breaking the ice with agile - cinque strade per rompere il ghiaccio e introdu...
 
Agile Lean Conference 2016 - Barengo _I principi del lean software development
Agile Lean Conference 2016 - Barengo _I principi del lean software developmentAgile Lean Conference 2016 - Barengo _I principi del lean software development
Agile Lean Conference 2016 - Barengo _I principi del lean software development
 
How Agile Dev Teams work
How Agile Dev Teams workHow Agile Dev Teams work
How Agile Dev Teams work
 
Relazione Giacomo Barbieri 25 novembre 2013 def
Relazione Giacomo Barbieri 25 novembre 2013 defRelazione Giacomo Barbieri 25 novembre 2013 def
Relazione Giacomo Barbieri 25 novembre 2013 def
 
Problem Solving
Problem SolvingProblem Solving
Problem Solving
 
Mobile Design Research
Mobile Design ResearchMobile Design Research
Mobile Design Research
 
Open Innovation Campus - 05/04/2018 - Agile challenges: essere agili nello sv...
Open Innovation Campus - 05/04/2018 - Agile challenges: essere agili nello sv...Open Innovation Campus - 05/04/2018 - Agile challenges: essere agili nello sv...
Open Innovation Campus - 05/04/2018 - Agile challenges: essere agili nello sv...
 
User eXperience fast and smart - Come integrare la UX in lean startup
User eXperience fast and smart - Come integrare la UX in lean startupUser eXperience fast and smart - Come integrare la UX in lean startup
User eXperience fast and smart - Come integrare la UX in lean startup
 
User eXperience fast and smart | Giuseppe Sorrentino
User eXperience fast and smart | Giuseppe Sorrentino  User eXperience fast and smart | Giuseppe Sorrentino
User eXperience fast and smart | Giuseppe Sorrentino
 
Risolvi i tuoi problemi di sviluppo con agilità - di Stefano Brocchi
Risolvi i tuoi problemi di sviluppo con agilità - di Stefano BrocchiRisolvi i tuoi problemi di sviluppo con agilità - di Stefano Brocchi
Risolvi i tuoi problemi di sviluppo con agilità - di Stefano Brocchi
 
2014 nov 11 PMI Rome Agile Project Management: Il cambio del paradigma.
2014 nov 11 PMI Rome Agile Project Management: Il cambio del paradigma.2014 nov 11 PMI Rome Agile Project Management: Il cambio del paradigma.
2014 nov 11 PMI Rome Agile Project Management: Il cambio del paradigma.
 
Pensare Agile
Pensare AgilePensare Agile
Pensare Agile
 
Agile web development - Forum IISF - 2016
Agile web development - Forum IISF - 2016Agile web development - Forum IISF - 2016
Agile web development - Forum IISF - 2016
 
2 lavorare per_progetti_dr. salvatore barresi_[seminario]
2 lavorare per_progetti_dr. salvatore barresi_[seminario]2 lavorare per_progetti_dr. salvatore barresi_[seminario]
2 lavorare per_progetti_dr. salvatore barresi_[seminario]
 

More from Roberto Bettazzoni

Giornat Mondiale della Retrospettiva 2020 - Riassunto Meetup Remoto
Giornat Mondiale della Retrospettiva 2020 - Riassunto Meetup RemotoGiornat Mondiale della Retrospettiva 2020 - Riassunto Meetup Remoto
Giornat Mondiale della Retrospettiva 2020 - Riassunto Meetup RemotoRoberto Bettazzoni
 
Why you need to change your way of working
Why you need to change your way of workingWhy you need to change your way of working
Why you need to change your way of workingRoberto Bettazzoni
 
TDD Dojo - Test Driven Development Coding Dojo
TDD Dojo - Test Driven Development Coding DojoTDD Dojo - Test Driven Development Coding Dojo
TDD Dojo - Test Driven Development Coding DojoRoberto Bettazzoni
 
Presentation of agile engineering practices
Presentation of agile engineering practicesPresentation of agile engineering practices
Presentation of agile engineering practicesRoberto Bettazzoni
 
Cynefin Lego Game Agenda (versione 2.0 in Italiano)
Cynefin Lego Game Agenda (versione 2.0 in Italiano) Cynefin Lego Game Agenda (versione 2.0 in Italiano)
Cynefin Lego Game Agenda (versione 2.0 in Italiano) Roberto Bettazzoni
 
Pair programming and pair training
Pair programming and pair trainingPair programming and pair training
Pair programming and pair trainingRoberto Bettazzoni
 
Presentazione eXtreme Programming
Presentazione eXtreme ProgrammingPresentazione eXtreme Programming
Presentazione eXtreme ProgrammingRoberto Bettazzoni
 
Programmazione android per esseri umani
Programmazione android per esseri umaniProgrammazione android per esseri umani
Programmazione android per esseri umaniRoberto Bettazzoni
 
Useful Lean Tools: Value Stream Mapping and Kanban
Useful Lean Tools: Value Stream Mapping and KanbanUseful Lean Tools: Value Stream Mapping and Kanban
Useful Lean Tools: Value Stream Mapping and KanbanRoberto Bettazzoni
 

More from Roberto Bettazzoni (15)

Giornat Mondiale della Retrospettiva 2020 - Riassunto Meetup Remoto
Giornat Mondiale della Retrospettiva 2020 - Riassunto Meetup RemotoGiornat Mondiale della Retrospettiva 2020 - Riassunto Meetup Remoto
Giornat Mondiale della Retrospettiva 2020 - Riassunto Meetup Remoto
 
Why you need to change your way of working
Why you need to change your way of workingWhy you need to change your way of working
Why you need to change your way of working
 
TDD Dojo - Test Driven Development Coding Dojo
TDD Dojo - Test Driven Development Coding DojoTDD Dojo - Test Driven Development Coding Dojo
TDD Dojo - Test Driven Development Coding Dojo
 
Presentation of agile engineering practices
Presentation of agile engineering practicesPresentation of agile engineering practices
Presentation of agile engineering practices
 
Unit test in a nutshell
Unit test in a nutshellUnit test in a nutshell
Unit test in a nutshell
 
Presentation TDD in Python
Presentation TDD in PythonPresentation TDD in Python
Presentation TDD in Python
 
Cynefin Lego Game Agenda (versione 2.0 in Italiano)
Cynefin Lego Game Agenda (versione 2.0 in Italiano) Cynefin Lego Game Agenda (versione 2.0 in Italiano)
Cynefin Lego Game Agenda (versione 2.0 in Italiano)
 
Pair programming and pair training
Pair programming and pair trainingPair programming and pair training
Pair programming and pair training
 
Presentazione eXtreme Programming
Presentazione eXtreme ProgrammingPresentazione eXtreme Programming
Presentazione eXtreme Programming
 
Agile e Open Source
Agile e Open SourceAgile e Open Source
Agile e Open Source
 
Esempio di code kata
Esempio di code kataEsempio di code kata
Esempio di code kata
 
Scrum in a nutshell
Scrum in a nutshellScrum in a nutshell
Scrum in a nutshell
 
The BDD live show (ITA)
The BDD live show (ITA)The BDD live show (ITA)
The BDD live show (ITA)
 
Programmazione android per esseri umani
Programmazione android per esseri umaniProgrammazione android per esseri umani
Programmazione android per esseri umani
 
Useful Lean Tools: Value Stream Mapping and Kanban
Useful Lean Tools: Value Stream Mapping and KanbanUseful Lean Tools: Value Stream Mapping and Kanban
Useful Lean Tools: Value Stream Mapping and Kanban
 

Recently uploaded

Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Associazione Digital Days
 
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...Associazione Digital Days
 
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...Associazione Digital Days
 
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Associazione Digital Days
 
Programma Biennale Tecnologia 2024 Torino
Programma Biennale Tecnologia 2024 TorinoProgramma Biennale Tecnologia 2024 Torino
Programma Biennale Tecnologia 2024 TorinoQuotidiano Piemontese
 
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Associazione Digital Days
 
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Associazione Digital Days
 
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...Associazione Digital Days
 
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Associazione Digital Days
 

Recently uploaded (9)

Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
 
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
 
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
 
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
 
Programma Biennale Tecnologia 2024 Torino
Programma Biennale Tecnologia 2024 TorinoProgramma Biennale Tecnologia 2024 Torino
Programma Biennale Tecnologia 2024 Torino
 
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
 
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
 
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
 
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
 

Introduzione alle metodologie e pratiche Agili ... ma l'agile c'entra qualcosa con l'Open Source? (2006)

  • 1. Introduzione alle metodologie e pratiche agili ...ma Agile c'entra qualcosa con l'Open Source? Relatori Ilias Bartolini ilias.bartolini@gmail.com Roberto Bettazzoni roberto@bettazzoni.it http://creativecommons.org/licenses/by-sa/3.0/ 02/04/07 1
  • 2. Programma Stima Presentazione Presentazione delle Metodologie Agili Q&A sulle metodologie Presentazione delle Pratiche Agili Q&A sulle pratiche 3 min. 20 min. 5 min. 20 min. 5 min. Scelta tra alcune presentazioni / discussioni in base al vostro interesse ed al tempo restante Saluti e riferimenti Q&A di argomenti specifici 02/04/07 3 min. Fuori 2
  • 3. Parte a richiesta Stima Esempio d'applicazione di tecniche Agili 15 min. Metodologie agili e l'Open Source 10 min. Agile e OSS distribuito 15 min. Come sopra con un approfondimento sulle pratiche agili distribuite Approfondimento sull'eXtreme Programming 15 min. Argomento proposto da voi A ruota libera Se vi interessa scambiare informazioni a ruota libera o fare altre domande 02/04/07 3
  • 5. Pratiche agili ... cosa sono? Pratiche agili ... cosa sono? Sono le pratiche utilizzate nelle metodologie agili. 02/04/07 5
  • 6. Metodologie agili ... cosa sono? Metodologie agili ... cosa sono? Sono le metodologie basate sui valori dell'Agile Manifesto 02/04/07 6
  • 7. Il Manifesto dell'Alleanza Agile Stiamo portando alla luce metodi migliori di sviluppare software facendolo in prima persona e aiutando altri a farlo. Attraverso questo tipo di lavoro siamo giunti ai seguenti valori: Persone e interazioni più che processi e tools Software che funziona più che una documentazione esaustiva Collaborazione con il cliente più che negoziazione contrattuale Rispondere al cambiamento più che seguire un piano prestabilito Cioè, mentre c'è un valore nelle voci sulla destra, attribuiamo un valore maggiore a quelle sulla sinistra. Kent Beck, Mike Beedle, Arie van Bennekum, Alistair Cockburn, Ward Cunningham, Martin Fowler, James Grenning, Jim Highsmith, Andrew Hunt, Ron Jeffries, Jon Kern, Brian Marick, Robert C. Martin, Steve Mellor, Ken Schwaber, Jeff Sutherland, Dave Thomas. © 2001, gli autori sopra citati. Questa dichiarazione può essere copiata in ogni forma, ma solo nella sua interezza, compresa la presente nota. 02/04/07 Agile @ ERLUG 7
  • 8. Metodologie e pratiche ● Pratica ● Metodologia Modalità per il conseguimento di uno scopo. Spesso è formulata in sequenze di passi. Insieme di pratiche legate tra loro da una visione filosofica d'insieme. Es: Standup meeting Es: Scrum Queste definizioni, nella loro accezione generica, sono fonte di numerose discussioni. Devono essere considerate come semplificazione per i nostri scopi. 02/04/07 Agile @ ERLUG 8
  • 9. Metodologie Agili Rispondere al cambiamento più che seguire un piano prestabilito 02/04/07 Agile @ ERLUG 9
  • 10. Metodologie Agili Rispondere al cambiamento più che seguire un piano prestabilito Cambia il metodo di approccio al problema. 02/04/07 Agile @ ERLUG 10
  • 11. Metodologie Agili Le metodologie 'storiche' hanno un approccio PREDITTIVO (elaborare un piano e seguirlo) Le metodologie agili hanno un approccio ADATTATIVO (rispondere al cambiamento) 02/04/07 Agile @ ERLUG 11
  • 12. Approccio Predittivo ● ● ● Specifiche fissate Condizioni al contorno note Metodo ● ● 02/04/07 Progetto la soluzione La applico Agile @ ERLUG 12
  • 13. Approccio Adattativo ● ● ● Specifiche instabili Condizioni al contorno variabili Metodo. ● ● 02/04/07 Micro decisioni continue. Sviluppo quello che in quel momento genera maggiore valore per il cliente. verifico il valore prodotto. Agile @ ERLUG 13
  • 14. La differenza c'è Cosa comporta questa diversa filosofia? 02/04/07 Agile @ ERLUG 14
  • 15. Cosa comporta questa differenza? Pratiche e strumenti ad hoc 02/04/07 Agile @ ERLUG 15
  • 16. Cosa comporta questa differenza? Con una base in comune 02/04/07 Agile @ ERLUG 16
  • 17. Un passo indietro ... cosa c'era prima? Le metodologie a cui l'agile si contrapponeva ● Nesuna metodologia (Cowboy coding) ● Modello a Cascata (Waterfall) ● ● 'storica', basato Modello iterativo (Iterative) ● 02/04/07 La metodologia di costruzione sull'esperienza manifatturiera. Basato sul waterfall, permette di avere rilasci più frequenti, fornendo incrementalmente « parti » del prodotto finale (o prototipi) 17
  • 18. Modello a cascata L'applicazione del modello a cascata nello sviluppo software. 02/04/07 18
  • 19. Modello a cascata I caposaldi Il processo di sviluppo è diviso in fasi sequenziali ● Ogni fase produce un output che è usato come input per la fase successiva ● Ogni fase del processo viene documentata ● Fonte: http://it.wikipedia.org/wiki/Modello_a_cascata 02/04/07 19
  • 20. Modello a cascata Fasi del modello a cascata studio di fattibilità analisi dei requisiti progetto sviluppo collaudo integrazione manutenzione Fonte: http://it.wikipedia.org/wiki/Modello_a_cascata 02/04/07 20
  • 21. Modello a cascata Altri capisaldi nelle applicazioni reali ● Comunicazione formale ● ● Ruoli ● ● Identifica un certo insieme di responsabilità attribuite a un certo insieme di persone. Gerarchia ● 02/04/07 Lo scambio di informazioni viene considerato un output della fase. La verifica dell'output prodotto da ogni fase viene mappato su una gerarchia (solitamente quella aziendale). 21
  • 23. Funziona ? Fine dei progetti ● ● ● Pieno successo. Competati in tempo e con tutte le funzionalità Sottostimati o parziali. Sottostimato il tempo e/o il costo oppure implementati con minori funzionalità di quelle richieste Falliti. Il progetto è stato abbandonato durante lo sviluppo. Fonte: http://www.standishgroup.com/sample_research/chaos_1994_1.php 02/04/07 23
  • 24. The CHAOS Report 1994 Analisi delle cause Fonte: http://www.standishgroup.com/sample_research/chaos_1994_1.php 02/04/07 24
  • 25. L'origine dei fallimenti era già nota Frederick P. Brooks, “No Silver Bullet", IFIP, 1986 I believe the hard part of building software to be the specification, design, and testing of this conceptual construct, not the labor of representing it and testing the fidelity of the representation. We still make syntax errors, to be sure; but they are fuzz compared with the conceptual errors in most systems. If this is true, building software will always be hard. There is inherently no silver bullet. Tom DeMarco & Timothy Lister, “Peopleware” , pag. 5, 1987 For the overwhelming majority of the bankrupt projects we studied, there was not a single technological issue to explain the failure. 02/04/07 25
  • 26. Modelli a iterazioni ● Maggiore cura nell'analisi dei requisiti ● Pratiche ad hoc per l'analisi ed il design ● ● ● 02/04/07 Fornire una parte del prodotto (o un prototipo) il prima possibile Validare o modificare i requisiti sulla base del rilascio precedente Convergere verso l'applicazione richiesta 26
  • 27. Modelli a iterazioni Come ? ● ● ● 02/04/07 Specializzazione dell'analisi e del design Vengono effettuati rilasci parziali che incrementalmente portano al prodotto richiesto Ogni rilascio segue un 'piccolo' modello a cascata 27
  • 29. Modelli a iterazioni Fonte: http://en.wikipedia.org/wiki/RUP 02/04/07 29
  • 30. The CHAOS Report 2003 Fine dei progetti ● ● ● Pieno successo. Competati in tempo e con tutte le funzionalità Sottostimati o parziali. Sottostimato il tempo e/o il costo oppure implementati con minori funzionalità di quelle richieste Falliti. Il progetto è stato abbandonato durante lo sviluppo. Fonte:http://www.standishgroup.com/press/article.php?id=2 02/04/07 30
  • 31. Confronto The CHAOS Report '94 - '03 02/04/07 31
  • 32. Modelli a iterazioni PRO ● ● Migliore probabilità di produrre ciò che è richiesto nei requisiti Reazione agli errori più veloce CONTRO ● ● 02/04/07 Forte dipendenza dalla stabilità dei requisiti Comunicazioni formali e lente 32
  • 33. Chi lo ha detto ? Distribuisci presto. Distribuisci spesso. E presta ascolto agli utenti. La cosa migliore, dopo l'avere buone idee, è riconoscere quelle che arrivano dagli utenti. Qualche volta sono le migliori. 02/04/07 33
  • 34. Eric S. Raymond 7. Distribuisci presto. Distribuisci spesso. E presta ascolto agli utenti. 11. La cosa migliore, dopo l'avere buone idee, è riconoscere quelle che arrivano dagli utenti. Qualche volta sono le migliori. Eric S. Raymond, La Cattedrale ed il Bazaar, 1998 02/04/07 34
  • 35. Lezione imparata ● Il lavoro è svolto dalle persone. ● ● Una persona con una visione più ampia del problema ha più possibilità di risolverlo. ● 02/04/07 Un gruppo di persone affiatate lavora meglio. ● ● Una persona coinvolta e motivata lavora meglio. Più persone conoscono il problema più è facile trovare la soluzione. I clienti e gli utenti sono persone 35
  • 36. Lezione imparata Feedback ● Trarre insegnamento dalla verifica del lavoro compiuto (proprio ed altrui) ● ● 02/04/07 Condividere l'esperienza con gli altri ● ● Analizzare quello che si è fatto per migliorarsi Insegnare mediante l'esempio La storia insegna 36
  • 37. Lezione imparata La conoscenza si trasmette con la comunicazione. ● ● 02/04/07 La comunicazione diretta è più efficace di quella formale. La conoscenza deve essere il più possibile condivisa ed espressa nel linguaggio appropriato. 37
  • 38. Lezione imparata Dare all'utente ciò che vuole il prima possibile ● Lavorare in base alle esigenze dell'utente ● Rilasciare il prima possibile 02/04/07 38
  • 39. Lezione imparata La stabilità dei requisiti è vitale, ma nel mondo reale è rara ... cambiamo il mondo reale o ci adattiamo? 02/04/07 39
  • 40. Il Manifesto dell'Alleanza Agile Stiamo portando alla luce metodi migliori di sviluppare software facendolo in prima persona e aiutando altri a farlo. Attraverso questo tipo di lavoro siamo giunti ai seguenti valori: Persone e interazioni più che processi e tools Software che funziona più che una documentazione esaustiva Collaborazione con il cliente più che negoziazione contrattuale Rispondere al cambiamento più che seguire un piano prestabilito Cioè, mentre c'è un valore nelle voci sulla destra, attribuiamo un valore maggiore a quelle sulla sinistra. Kent Beck, Mike Beedle, Arie van Bennekum, Alistair Cockburn, Ward Cunningham, Martin Fowler, James Grenning, Jim Highsmith, Andrew Hunt, Ron Jeffries, Jon Kern, Brian Marick, Robert C. Martin, Steve Mellor, Ken Schwaber, Jeff Sutherland, Dave Thomas. © 2001, gli autori sopra citati. Questa dichiarazione può essere copiata in ogni forma, ma solo nella sua interezza, compresa la presente nota. 02/04/07 Agile @ ERLUG 40
  • 41. Alcune metodologie agili di sviluppo sw ● Adaptive Software Development (ASD) ● Agile Unified Process (AUP) ● Crystal Clear ● Extreme Programming (XP) ● Feature Driven Development (FDD) ● Lean software development ● Scrum ● ........... 02/04/07 Agile @ ERLUG 41
  • 42. Alcune pratiche agili ● Agile Modeling [and Data Methods] ● Agile Software Configuration Management ● Database refactoring ● Pair programming ● Planning Game ● Value Stream Mapping ● Test-Driven Development (TDD) ● ... 02/04/07 Agile @ ERLUG 42
  • 47. Extreme Programming Extreme Programming Explained [2nded] – Kent Beck Valori Principi Pratiche (approfondimento a dopo) 02/04/07 Agile @ ERLUG 47
  • 48. Lean Software Development Taiici Hono – 1988 The Toyota Production System "Only after American carmakers had exhausted every other explanation for Toyota's success—an undervalued yen, a docile workforce, Japanese culture, superior automation— were they finally able to admit that Toyota's real advantage was its ability to harness the intellect of 'ordinary' employees." Gary Hamel, Harvard Business Review, 02/2006 02/04/07 Agile @ ERLUG 48
  • 49. Lean Software Development Applicazione dei principi del metodo Toyota allo sviluppo software: Lean Software Development – M.&T. Poppendieck 1. Elimina gli sprechi! (MUDA) ● Extra-feature, difetti, lavoro inconcluso, re-learning, attese, logistica (distribuzione) 2. Creare qualità dall'interno (codice) ● Testing, Continuous integration, Rafactoring 3. Creare conoscenza 02/04/07 Agile @ ERLUG 49
  • 50. Lean Software Development 1. Eliminare gli sprechi! (MUDA) ● Extra-feature, difetti, lavoro inconcluso, re-learning, attese, logistica (distribuzione) 2. Creare qualità dall'interno (codice) ● Testing, Continuous integration, Rafactoring 3. Creare conoscenza 02/04/07 Agile @ ERLUG 50
  • 51. Lean Software Development 4. Decidere all'ultimo momento ● Non troppo presto: potresti non avere abbastanza informazioni ● Non troppo tardi: potresti non essere in grado di attuare la decisione 5. Rilasciare in fretta ● Value Stream Map 6. Ottimizzare tutto l'insieme ● 02/04/07 Rimuovi i circoli-viziosi Agile @ ERLUG 51
  • 52. Lean Software Development 7. Rispettare le persone ● ● Best practice continuamente sottoposte a critica ● 02/04/07 Coinvolgimento allargato nel processo decisionale Dare ai gruppi di lavoro spazio per sperimentare le proprie idee Agile @ ERLUG 52
  • 53. Crystal Sviluppo Software: un gioco cooperativo di invenzione e comunicazione tra persone ● ● 02/04/07 Ogni metodologia deve essere più leggera possibile ma «sufficiente» al raggiungimento dell'obiettivo Non esiste «UNA» metodologia. Ogni processo si adatta a diverse situazioni: numero di persone, obiettivi primari da raggiungere, criticalità. Agile @ ERLUG 53
  • 54. Crystal 7 principi per il disegno delle metodologie: ● ● ● ● ● ● ● 02/04/07 Più formalismi => più costi iniziali e meno adattabilità Più comunicazione face-to-face Più fiducia nelle persone permette meno formalismi Progetti grandi richiedono maggiori formalismi Più meccanismi di feedback interno riducono la necessità di prodotti intermedi Rimozione dei «colli di bottiglia» del processo: migliori persone; migliori strumenti; maggiore completezza dei passi precedenti; più persone Skill, disciplina, conoscenza vs formalismi, processi, documentazione Agile @ ERLUG 54
  • 55. Scrum Agile Software Development with SCRUM – K. Schwaber, M. Beedle Daily Scrum Sprint Product Backlog 02/04/07 Sprint Backlog Agile @ ERLUG Sprint Review Product 55
  • 57. Alcune pratiche Agili ● Implementazione ● ● Refactoring ● Pair Programming ● ● Test Driven Development ... Organizzazione ● ● Shared Code / Collective Code Ownership ● 02/04/07 Stand-Up Meeting / Daily Scrum ... Agile @ ERLUG 57
  • 58. Alcune pratiche Agili ● Gestione e pianiifcazione ● ● Release frequenti ● Customer On Site / Coinvolgimento Reale ● User Stories e Planning game ● 02/04/07 Continuous Integration ... Agile @ ERLUG 58
  • 59. Stand-Up Meeting / Daily Scrum Non più di 10-20 minuti Ogni giorno: ● ● Stessa ora Stesso posto 3 domande: ● ● ● Cosa è stato fatto? Che difficoltà si sono incontrate? Cosa si è pianificato prima del prossimo incontro? Eventualmente guidati da un moderatore/facilitatore 02/04/07 Agile @ ERLUG 59
  • 60. Stand-Up Meeting / Daily Scrum Condivisione degli obiettivi a breve termine Comunicazione degli stati di avanzamento Permette alle criticità di emergere! Stimola la auto organizzazione Stimola il «rispetto reciproco» Trasforma un «insieme di persone» in un «gruppo» http://www.martinfowler.com/articles/itsNotJustStandingUp.html 02/04/07 Agile @ ERLUG 60
  • 61. Pair Programming Due persone, un unico task, una sola tastiera ● ● 02/04/07 Il «pilota» scrive il codice Il «navigatore» verifica e pensa al prossimo passo Agile @ ERLUG 61
  • 62. Pair Programming Per un buon pair-programming: ● ● ● ● ● 02/04/07 Il navigatore non deve dormire :) Invertire i ruoli ogni tanto: strappare la tastiera dalle mani! Ruotare le coppie ogni tanto Le coppie devono essere eterogenee ed affiatate ...ma tutti devono imparare a lavorare con tutti (limitazione dell'ego!) Ricordarsi di fare delle pause ogni tanto :) Agile @ ERLUG 62
  • 63. Pair Programming Perchè pagare due per fare il lavoro di uno? ● Due persone in pair generalmente sono meno produttive ...ma meno di quanto ci si aspetti! http://www.comp.polyu.edu.hk/people/doc/cskcchan/pairpaper.pdf Dipende molto dal contesto, dalle persone e dal tipo di attività 02/04/07 Agile @ ERLUG 63
  • 64. Pair Programming Però.... ● Scambio di conoscenze e formazione on-job ● Migliore qualità: meno bachi da risolvere in futuro ● Migliore design: meno costi nell'integrare le future features ● Conoscenza comune del codice ● Affiatamento, aumento della comunicazione e coesione ● Meno distrazioni e più disciplina 02/04/07 Agile @ ERLUG 64
  • 65. Shared Code / Collective Code Ownership Chiunque è libero di modificare qualsiasi porzione di codice un qualsiasi parte del sistema in qualsiasi momento. Extreme Programming Explained - Kent Beck Anche questo... non vi suona familiare? 02/04/07 Agile @ ERLUG 65
  • 66. Shared Code / Collective Code Ownership ● Conoscenza condivisa: Ogni membro del team ha una sommaria conoscenza di tutto il codice Strumenti condivisi: ● ● Diventa essenziale l'utilizzo di strumenti di versioning! ● Sicurezza e Integrazione ...ringraziamo patch/diff, CVS, SVN, etc. ● 02/04/07 Agile @ ERLUG 66
  • 67. Shared Code / Collective Code Ownership ● Responsabilità condivisa: non c'è più un unico responsabile di certi moduli software! ● La responsabilità si sposta dal semplice funzionamento verso la qualità del codice ● Se tutti devono poterci mettere le mani e «capire» ...è meglio scrivere buon codice (coding convention?) ● 02/04/07 Agile @ ERLUG 67
  • 68. Continuous Integration Il codice sviluppato deve essere subito a disposizione di tutti 1. Lo sviluppo deve il più possibile avvenire sull'ultima versione del repository/mainline 2. Ogni sviluppatore deve eseguire il commit delle parti sviluppate appena un task/storia viene terminato ● ● Automatizzare l'esecuzione dei test ● 02/04/07 Automatizzare le build Automatizzare il deploy Agile @ ERLUG 68
  • 69. Refactoring ● BDUF: È facile "azzeccare" come progettare la soluzione giusta al primo tentativo? ...poi arrivano nuovi requisiti ...poi ci si accorge di nuove soluzioni ...l'ultima modifica manda in crash il sistema! ...il design è talmente decaduto che non si sa da dove ricominciare :( ● È più facile aggiungere o cancellare codice? ● Quanto costa buttarlo via? 02/04/07 Agile @ ERLUG 69
  • 70. Refactoring Qualcuno aveva già sentito puzza di bruciato: «Plan to throw one away; you will, anyhow.» The Mythical Man-Month - Fred Brooks 02/04/07 Agile @ ERLUG 70
  • 71. Refactoring Processo di modifica evolutiva di un sistema software in modo da non modificarne il comportamento esterno migliorandone la sua struttura 02/04/07 Agile @ ERLUG 71
  • 72. Refactoring ● modifica il codice in piccoli passi ● migliora continuamente il design ● il codice diventa «parlante» ● richiede disciplina [il pair programming aiuta] ● la pratica rende perfetti ● richiede un buon «fiuto» 02/04/07 Agile @ ERLUG 72
  • 73. Refactoring Alcune «puzze» comuni ...ed alcune soluzioni 1. codice duplicato 2. metodi/classi lunghe 3. lunghe liste di parametri 4. cambiamenti divergenti 5. shotgun surgery 6. codice «invidioso» 7. liste di switch/if 8. generalizzazione speculativa: «astronauti» 9. commenti! 1. estrai la parte duplicata 2. separa le competenze 3. introduci/estrai oggetti 4. separa le competenze 5. riunire la responsabilità 6. muovi/estrai metodo 7. polimorfismo 8. canc, canc, canc, canc, canc, canc, canc, canc 9. nascosto dal deodorante! 02/04/07 Agile @ ERLUG 73
  • 74. Test Driven Development (TDD) Nei processi di sviluppo software tradizionali il collaudo si fa alla fine... Nella realtà il collaudo non viene mai fatto :( Perchè? + stress => - test - test => + stress 02/04/07 Agile @ ERLUG 74
  • 75. Test Driven Development (TDD) In TDD i test guidano lo sviluppo! Implementa Rifattorizza il codice Commit Scrivi i test per una nuova funzionalità 02/04/07 Agile @ ERLUG 75
  • 76. Test Driven Development (TDD) Per un buon TDD: ● Pensa ai test prima di pensare l'implementazione ● Una «barra rossa» è meglio di uno schermo bianco ● I test devono essere semplici e leggibili ● I test devono essere isolati ● I test devono essere veloci e lanciati spesso ● ● 02/04/07 Verifica prima il risultato atteso, verifica i casi limite, verifica le eccezioni Rifattorizza sia l'implementazione che i test Agile @ ERLUG 76
  • 77. Test Driven Development (TDD) TDD significa anche «Test Driven Design» ● ● ● ● 02/04/07 Permette di definire l'interfaccia degli oggetti prima di buttarsi sull'implementazione Permette di concentrarsi sul comportamento dell'oggetto Permette di rifattorizzare il codice con maggiore confidenza Porta alla realizzazione di architetture con basso accoppiamento Agile @ ERLUG 77
  • 78. Test Driven Development (TDD) Con TDD posso anche... ● Documentare l'utilizzo dei miei componenti attraverso i test ● Evitare la regressione dei bug ● Isolare codice legacy ● Dormire un po' più tranquillo la sera dopo il rilascio 02/04/07 Agile @ ERLUG 78
  • 79. Test Driven Development (TDD) TDD non è Unit Testing ● ...ma sono ottimi amici :) Come testare le interfacce utente? ● Utilizzando tool ad-hoc ● Rimuovendo la logica dalle interfacce Come testare liberandosi da risorse esterne? ● Mock TDD può creare dipendenza! :) 02/04/07 Agile @ ERLUG 79
  • 80. Test Driven Development (TDD) Strumenti: ● *Unit: JUnit, PyUnit, NUnit, CPPUnit, PHPUnit, ... ● DBUnit, SQLUnit, PL/SQL Unit, ... ● EasyMock, Moquer, MockEJB, ... ● Selenium, HttpUnit, Jmeter, ... ● Fit, Fitnesse, ... ...forse pure troppi 02/04/07 Agile @ ERLUG 80
  • 81. Tante pratiche... ma da dove comincio? Dipende dal contesto comincia dai problemi più urgenti ...un passo alla volta... 02/04/07 Agile @ ERLUG 81