Programming
Giuseppe Scanniello
Università della Basilicata
giuseppe.scanniello@unibas.it
Why Extreme Programming
¢ CHAOS Report, Standish
Group, 1994
l 31.1% dei progetti non
vengono mai realizzati
l 52.7% dei progetti costerà
il 189% del costo
preventivato.
l 16.2% dei progetti viene
completato nei tempi e nei
costi stabiliti (larger
companies: 9%)
l I progetti completati hanno
approssimativamente il
42% delle caratteristiche e
delle funzionalità richieste.
Agile versus
tayloristic methods
¢ Agile methods ¢ Tayloristic methods
l Human-centric (plan-driven,
l Tacit knowledge traditional,
sharing heavyweight)
l Code-centric l Process-centric
l Replace l Explicit knowledge
documentation by l Documentation-
face-to-face centric
communication l Role specialization
l Generalists l Plan and control
l Plan and correct l Contract-focused
l Customer-focused
Knowledge sharing needed
t
Bu en
Kn sine o pm ss
ow ss l
led e ve oce
ge D Pr
Delivered
Software Technology
System Knowledge
XP un po’ di storia
¢ XP è un metodo di sviluppo proposto da
Kent Beck, dopo aver lavorato per parecchi
anni con Ward Cunningham.
¢ Un nuovo approccio al problema dello
sviluppo del software che renda le cose più
semplici degli attuali metodi a cui siamo
abituati.
¢ Secondo Beck e Cunningham l’XP è
basato sul “buon senso comune.”
Beck e l’XP
Qualità (quality)
¢ I project manager
l “Voglio che questi requisiti siano
soddisfatti per i primi del mese
prossimo, e devi fare in modo che la
tua squadra lavori con questo
obiettivo.”
¢ E la qualità?
… hmmm !!!
Qualità
¢ Communication
¢ Simplicity
¢ Feedback
¢ Courage
¢ Communication
Communication ¢
¢
Simplicity
Feedback
¢ Courage
Communication ¢
¢
Simplicity
Feedback
¢ Courage
¢ Customer centric
l Scrivere "Stories", che siano
sempre disponibili
¢ Pair programming
¢ Task estimation
¢ Iteration planning
¢ Design sessions
Simplicity ¢
¢
Simplicity
Feedback
¢ Courage
Feedback ¢
¢
Simplicity
Feedback
¢ Courage
Feedback ¢
¢
Simplicity
Feedback
¢ Courage
¢ Small Iterations
¢ Frequent deliveries
¢ Pair programming
¢ Continuous integration
Courage ¢
¢
Simplicity
Feedback
¢ Courage
Courage ¢
¢
Simplicity
Feedback
¢ Courage
¢ Provide feedback.
¢ Assume simplicity.
¢ Embrace change.
¢ Quality work.
¢ Provide feedback.
¢ Assume simplicity.
Provide Feedback ¢ Make incremental
changes.
¢ Embrace change.
¢ Quality work.
Make Incremental ¢
¢
Assume simplicity.
Make incremental
Change ¢
changes.
Embrace change.
¢ Quality work.
¢ Regression Testing
l Bisogna ritestare un software ogni qual
volta viene modificato.
• Assicura che non sono stati introdotti errori in
conseguenza di cambiamenti.
l I test cases sono stati progettati per essere
ripetuti - sono utilizzati per test successivi.
l Il testing di regressione può essere
eseguito su tutti i tipi di applicazione ( e-
Commerce and web-based systems).
Pratiche: Testing
¢ La pratica del testing pone enfasi sul
regression testing
l Unit test vengono eseguiti continuamente
l I test per feature del sistema vengono
eseguiti continuamente
l Una unit deve superare il test al 100%
¢ Acceptance test – mostra il progresso con il
quale le story sono eseguite.
¢ Possono essere utilizzati tool automatici o
framework per il testing.
l Es. JUnit, JMeter, HttpUnit, JProbe,
OptimizeIt
Pratiche: Refactoring
¢ Developer
¢ Customer
¢ Tester
¢ Coach
¢ Consultant
¢ Program Manager
¢ Evangelist
Further considerations
Strongly disagree
Strongly agree
… altre critiche e
considerazioni
¢ Ci sono anche persone che sostengono che XP
funziona solo per buoni sviluppatori, ovvero,
persone come Kent Beck, che sono in grado di
progettare bene ed in modo semplice.
¢ L’ideatore dell’XP è uno dei pionieri nell’uso dei
framwork software, ideatore dei file CRC, autore
del framework per editor grafici JHotDraw e del
framewok per testing xUnit.
¢ Le pratiche raccomandate da XP non sono un’
invenzione del metodo; esistevano tutte da prima,
il merito è stato di metterle insieme e di provare
che funzionano.
Riferimenti utili e contact
information
¢ Extreme Programming–Embrace Change,
Addison-Wesley, 2000
¢ http://www.extremeprogramming.org/
¢ http://agilealliance.org/home
¢ http://www.refactoring.com/
¢ http://www.xprogramming.com/