Extreme Programming – Metodologia di sviluppo agile

Extreme Programming (abbreviato XP) è una delle prime metodologie agili a essersi affermate nella comunità software, incontrando un particolare successo a fine anni ’90 e inizio 2000. Sviluppato quasi interamente da Kent Beck mettendo insieme diverse tecniche già in uso, Extreme Programming è stato – a detta di molti – il metodo di sviluppo software che ha spostato l’attenzione sulle metodologie agili e ne ha favorito la diffusione.

In italiano Extreme Programming è traducibile con “Programmazione Estrema”. Nonostante il nome possa incutere un certo timore, ti assicuro che utilizzando XP non si rischia la vita anche se comunque è richiesta una certa dose di coraggio, come vedremo più avanti. Il termine “estrema” indica che alcune pratiche sono state portate all’estremo: così per esempio invece che scrivere Unit Test di tanto in tanto, si scrivono sempre.

Extreme Programming esprime 12 regole o pratiche per lo sviluppo software (Pair Programming, Planning Game, Test Driven Development, Whole Team, Refactoring, Continuous Integration, Small Release, Coding Standard, Collective Ownership, Simple Design, System Metaphor, Sustainable Pace). Nel paragrafo successivo ne introdurrò alcune e andremo più a fondo nei prossimi articoli.

Molte delle pratiche incluse inizialmente in XP sono state in seguito riprese e utilizzate ampiamente in altri contesti.

Le pratiche di XP

Uno degli aspetti indubbiamente più interessanti dietro XP è l’utilizzo diffuso di TDD (Test Driven Development), cioè lo scrivere i test prima di iniziare a sviluppare la parte funzionale. Attraverso questa pratica è possibile testare ogni piccola componente software ancora prima che venga implementata e individuare possibili errori fin dalle prime fasi dello sviluppo.

Semplicità, pulizia e chiarezza del codice sorgente sono altri aspetti che Extreme Programming enfatizza e promuove. Si tende a scrivere soltanto il necessario e tutto ciò che non è indispensabile può essere aggiunto in un secondo momento; tutto, inoltre, può essere migliorato o ristrutturato attraverso il refactoring.

Una volta sviluppata una determinata funzionalità, il codice prodotto viene trasferito su un build server. A ogni build vengono avviati i test automatici, in modo da assicurare l’integrità del codice sorgente e dare la possibilità al team di accedere in qualsiasi momento a una versione funzionante del software. Questa pratica è chiamata Continuous Integration e la comunità XP raccomanda di eseguire build frequenti, anche una ogni ora, non meno di una volta al giorno.

Il Pair Programming (programmazione in coppia) è forse la pratica più conosciuta di XP. L’idea di base è che due sviluppatori lavorino insieme alla scrittura del codice: uno assume il ruolo di “guidatore” e l’altro di “navigatore” o “osservatore”.

Per iniziare a implementare Extreme Programming non è obbligatorio adottare tutte le pratiche esposte qui sopra. Ogni organizzazione è ovviamente libera di scegliere cosa implementare, compatibilmente con la propria struttura e vocazione.

valori extreme programming

I cinque valori fondamentali di XP

I valori dietro a Extreme Programming sono gli stessi di tutte le metodologie agili, così come espresso dal manifesto per lo sviluppo agile di software.

Kent Beck, nel suo libro “Extreme Programming Explained”, fa inoltre riferimento a cinque valori fondamentali in XP:

  • Comunicazione – Comunicazione continua tra componenti del team, ma anche con il cliente.
  • Semplicità – È fondamentale mantenere processo e sviluppo semplici. È molto più facile abbozzare un’idea o una parte di software e poi migliorarla in seguito quando si ha una maggiore conoscenza.
  • Feedback – Un feedback continuo è importante in ottica di miglioramento e flessibilità nei confronti del team e del cliente.
  • Coraggio – Coraggio nel prendere decisioni importanti ma anche nel riconoscere che una decisione presa in precedenza si è rivelata non adeguata.
  • Rispetto – Umiltà e rispetto nei confronti di tutte le persone coinvolte nel progetto. Dare a tutti la possibilità di esprimere la propria opinione. Tutte le persone coinvolte nel progetto hanno uguale importanza!

Puoi pensare a questi cinque valori come una piramide, così come illustrato nella figura su in alto.

Il ciclo di sviluppo in XP

Come in Scrum e in tutte le altre metodologie agili, Extreme Programming promuove lo sviluppo iterativo e incrementale organizzato in brevi cicli di sviluppo, detti iterazioni. La pianificazione avviene di solito pochi giorni prima dell’inizio di una nuova iterazione, che come in Scrum ha una durata fissa dalle due alle quattro settimane.

In fase di pianificazione il team seleziona tutte le user story che possono essere completate nell’arco di tempo prestabilito, partendo da quelle attività che hanno un alto valore di business.

Ciò che contraddistingue Extreme Programming è una maggiore enfasi sulla flessibilità e sull’adattamento continuo più che sulla prevedibilità. La flessibilità è indispensabile nell’ambito di una comunicazione diretta e costante all’interno del team di sviluppo, ma anche tra il team e il cliente.

Come abbiamo già visto, anche dal punto di vista dell’implementazione, Extreme Programming promuove la scrittura di soluzioni semplici che possono essere adattate e migliorate in un secondo momento attraverso refactoring o scrittura di componenti aggiuntive.