Contenu connexe Plus de Francesco Cirillo Plus de Francesco Cirillo (10) 20071123 XPLabs Tour07 Bonsai @ItalianAgileDay2007 Bologna-IT [ITA]1. Migliorare la produttività del software
con Extreme Programming
XPLabsTour07@AgileDayIT2007
Venerdì, 23 novembre 2007
Francesco Cirillo
CEO, XPLabs SRL
Director, MetodiAgili.it
francesco.cirillo@metodiagili.it
ah
2. Questo intervento sostiene:
© 2007 Francesco Cirillo Migliorare la produttività del software con XP XPLabs - S.R.L. 2
3. Acceptance Test
Il metodo di sviluppo software supporta lo sviluppo del business?
© 2007 Francesco Cirillo Migliorare la produttività del software con XP XPLabs - S.R.L. 3
4. Il problema
“Perché i progetti falliscono?”
Overly optimistic schedules
Undermined motivation
Insufficient risk management
Weak Personnel
Contractor failure
Uncontrolled problem employees
Insufficient planning
Heroics
Abandonment of planning under pressure
Adding people to a late project
Wasted time during the fuzzy front end
Noisy, crowded offices
Shortchanged upstream activities
Friction between developers and customers PEOPLE PROCESS
Inadequate design
Unrealistic expectations
Shortchanged quality assurance
Lack of effective project sponsorship
Insufficient management controls
Lack of stakeholder buy-in
Premature or overly frequent convergence
Lack of user input Classic
Mistakes Omitting necessary tasks from estimates
Politics placed over substance
Planning to catch up later
Wishful thinking
Code-like-hell programming
Silver-bullet syndrome
Overestimated savings Requirements gold-plating
from new tools or methods
Feature creep
Switching tools in TECHNOLOGY
PRODUCT Developer gold-plating
the middle of a project
Push-me, pull-me negotiation
Lack of automated
source-code control Research-oriented development
Rielaborato da Rapid Development di Steve McConnell
© 2007 Francesco Cirillo Migliorare la produttività del software con XP XPLabs - S.R.L. 4
5. Il problema
“Perché i progetti falliscono?”
Complessità
Velocità
Overly optimistic schedules
Undermined motivation
Insufficient risk management
Weak Personnel
Contractor failure
Uncontrolled problem employees
Insufficient planning
Heroics
Abandonment of planning under pressure
Adding people to a late project
Wasted time during the fuzzy front end
Noisy, crowded offices
Shortchanged upstream activities
Friction between developers and customers PEOPLE PROCESS
Inadequate design
Unrealistic expectations
Shortchanged quality assurance
Lack of effective project sponsorship
Insufficient management controls
Lack of stakeholder buy-in
Premature or overly frequent convergence
Lack of user input Classic
Mistakes Omitting necessary tasks from estimates
Politics placed over substance
Planning to catch up later
Wishful thinking
Code-like-hell programming
Silver-bullet syndrome
Overestimated savings Requirements gold-plating
from new tools or methods
Feature creep
Switching tools in TECHNOLOGY
PRODUCT Developer gold-plating
the middle of a project
Push-me, pull-me negotiation
Lack of automated
source-code control Research-oriented development
Rielaborato da Rapid Development di Steve McConnell
© 2007 Francesco Cirillo Migliorare la produttività del software con XP XPLabs - S.R.L. 5
6. La risposta XP
Sostituire il motore dei valori con: comunicazione,
feedback, semplicità, coraggio, rispetto
Applicare pratiche volte a ridurre la complessità di
business, tecnica e di comunicazione
© 2007 Francesco Cirillo Migliorare la produttività del software con XP XPLabs - S.R.L. 6
7. La risposta XP
Massimizzare le opportunità di business
Minimizzare il costo del cambiamento
Impiegare al meglio le risorse umane
Sapere come lavoriamo/stiamo lavorando
© 2007 Francesco Cirillo Migliorare la produttività del software con XP XPLabs - S.R.L. 7
8. Minimizzare il costo del cambiamento
Meno strutturalmente complesso è il sistema corrente, e
meno intrinsecamente complesso è il problema da
risolvere, e minore sarà lo sforzo e quindi i costi e i tempi
necessari per introdurre la nuova funzionalità
Se per complessità marginale consideriamo l’incremento
di complessità del sistema necessario per introdurre la
nuova funzionalità, al fine di favorire il cambiamento nel
tempo, lo sforzo da applicare dovrà essere indirizzato a
ridurre la complessità marginale fino a renderla negativa
•Complessità del sistema
•Tempo
© 2007 Francesco Cirillo Migliorare la produttività del software con XP XPLabs - S.R.L. 8
9. Ridurre la complessità marginale
Come?
Mantenere bassa la complessità del sistema
Mantenere bassa la complessità intrinseca del problema
© 2007 Francesco Cirillo Migliorare la produttività del software con XP XPLabs - S.R.L. 9
10. Mantenere bassa la complessità del sistema
Il Refactoring:
Aumentare la capacità del codice di rivelare le intenzioni di
Lightweight design, a qualsiasi membro del team, alla prima occhiata
Migliorare la struttura interna del sistema, consentendo alle
necessarie astrazioni di emergere
“Our job is to solve problems, not spoonfeed compilers (…)
We need clarity so we can communicate using our code. We
value conciseness and the ability to express a requirement in
code accurately and efficiently”.
--Dave Thomas
© 2007 Francesco Cirillo Migliorare la produttività del software con XP XPLabs - S.R.L. 10
11. Mantenere bassa la complessità del sistema
for(int i = 0; i < employees.size(); i++) {
Employee employee = (Employee) employees.get(i);
System.out.println(employee.getName());
System.out.println(employee.getSalary());
}
employees.forEach(printSlip);
“Our job is to solve problems, not spoonfeed compilers (…)
We need clarity so we can communicate using our code. We
value conciseness and the ability to express a requirement in
code accurately and efficiently”.
--Dave Thomas
© 2007 Francesco Cirillo Migliorare la produttività del software con XP XPLabs - S.R.L. 11
12. Mantenere bassa la complessità del sistema
Malleabilità
Continua applicazione di sforzo
Identificare possibilità di refactoring
Assicurare che le strutture dipendono dalle funzionalità
© 2007 Francesco Cirillo Migliorare la produttività del software con XP XPLabs - S.R.L. 12
13. Mantenere bassa la complessità intrinseca
del problema
Per supportare il cambiamento, la complessità intrinseca
della nuova funzionalità da introdurre nel sistema deve
essere continuamente ridotta in componenti ortogonali
più piccoli
No dividi e conquista
Guidato da test
© 2007 Francesco Cirillo Migliorare la produttività del software con XP XPLabs - S.R.L. 13
14. Strategie di sviluppo
Step 1: Obiettivo:
Stanze disponibili Fare una
in un giorno per prenotazione in un
un albergo con albergo per un
una stanza periodo di tempo
Step 2: Step 3:
Stanze disponibili Stanze disponibili
in un giorno per in un giorno per
un albergo con un albergo con
una stanza con una stanza con
una prenotazione una prenotazione
in un giorno in un periodo
© 2007 Francesco Cirillo Migliorare la produttività del software con XP XPLabs - S.R.L. 14
15. Test-Driven versus Test-First
Test Driven =
Test-First
Incrementalità
No gold plating
No testing
Some Themes of Quality Assurance
Quality is everybody’s business
Quality must be an early focus of a project
The best way to achieve quality is to build it in
--James Tomayko
© 2007 Francesco Cirillo Migliorare la produttività del software con XP XPLabs - S.R.L. 15
16. Migliorare la produttività con Eclipse
© 2007 Francesco Cirillo Migliorare la produttività del software con XP XPLabs - S.R.L. 16
17. EasyTracking II - xplabs
© 2007 Francesco Cirillo Migliorare la produttività del software con XP XPLabs - S.R.L. 17
18. La lavagna del team Bees di XPLabs
Rythm Rythm
10 10
9 9
8 8
7 7
6 6
5 5
4 Iteration 1 4 Iteration 1
3 3
2 Iterazione 4 2 Iterazione 4
1 Iteration 2 Iteration 3 1 Iteration 2 Iteration 3
0 0
23 feb 2004 28 feb 2004 4 mar 2004 9 mar 2004 14 mar 2004 19 mar 2004 24 mar 29 mar 3 apr 2004 23 feb 2004 28 feb 2004 4 mar 2004 9 mar 2004 14 mar 2004 19 mar 2004 24 mar 29 mar 3 apr 2004
Accepted Completed Not Completed Average Accepted Completed Not Completed Average
McCabe
McCabe DSI / Class
1,6
1,6 32
1,55
1,55 30
1,5
1,5 28
1,45
1,45 26
1,4
1,4 24
1,35
1,35 22
1,3 20
1,3
1,25 18
1,25
23 f eb 2004 28 f eb 2004 4 mar 2004 9 mar 2004 14 mar 2004 19 mar 2004 24 mar 2004 29 mar 2004 3 apr 2004
1,2
1,2
1,15
1,15
Number of Classes
1,1
1,1
1,05
1,05
11 60
23 f f eb2004
23 eb 2004 28 f f eb2004
28 eb 2004 4 mar 2004
4 mar 2004 99mar 2004
mar 2004 14 mar 2004
14 mar 2004 19 mar 2004
19 mar 2004 24 mar 2004
24 mar 2004 29 mar 2004
29 mar 2004 3 apr 2004
3 apr 2004 55
50
DSI / Method
45
40
4,8
35
4,7
4,6 30
4,5
4,4 25
4,3
20
4,2
4,1 15
4 23 f eb 2004 28 f eb 2004 4 mar 2004 9 mar 2004 14 mar 2004 19 mar 2004 24 mar 2004 29 mar 2004 3 apr 2004
3,9
3,8
3,7
3,6
Number of classes and methods
3,5 400
3,4
23 f eb 2004 28 f eb 2004 4 mar 2004 9 mar 2004 14 mar 2004 19 mar 2004 24 mar 2004 29 mar 2004 3 apr 2004
375
350
Number of Classes and Methods
400
325
375
DSI
300
350
275
325
250
300
1500 275
225
1400 250
200
225
1300 175
200
1200 150
175
125
150
1100
125
100
1000
100
75
900 75
50
800 50
25
25
700 00
600 23 f eb 2004
23 f eb 2004 28 f f eb2004
28 eb 2004 44mar 2004
mar 2004 9 9 mar 2004
mar 2004 14 mar 2004 19 mar 2004 24 mar 2004 29 mar 2004 3 3 apr 2004
14 mar 2004 19 mar 2004 24 mar 2004 29 mar 2004 apr 2004
500
Test Classes Test Methods Application Classes Application Methods
23 f eb 2004 28 f eb 2004 4 mar 2004 9 mar 2004 14 mar 2004 19 mar 2004 24 mar 2004 29 mar 2004 3 apr 2004
Test classes Test methods Application classes Application methods
© 2007 Francesco Cirillo Migliorare la produttività del software con XP XPLabs - S.R.L. 18
19. Risorse – Da dove iniziare?
© 2007 Francesco Cirillo Migliorare la produttività del software con XP XPLabs - S.R.L. 19
20. Risorse – Da dove iniziare?
© 2007 Francesco Cirillo Migliorare la produttività del software con XP XPLabs - S.R.L. 20
21. Domande?
Riferimenti:
Sito XPLabs:
http://www.xplabs.it
Risorse:
http://www.xplabs.it/risorse.html
http://www.metodiagili.it
Tecnica del Pomodoro:
http://www.tecnicadelpomodoro.it
EasyTracking:
http://www.myagileprojects.com
Gruppo XPLabs’ Friends- Italia:
http://it.groups.yahoo.com/group/xplabs-friends/
Gruppo Extreme Programming - Italia:
http://it.groups.yahoo.com/group/extremeprogramming-it/
Extreme Programming User Group – Italia:
http://www.xpug.it/
© 2007 Francesco Cirillo Migliorare la produttività del software con XP XPLabs - S.R.L. 21