Sviluppo Agile: XP (Extreme Programming) e SCRUM a confronto

Sviluppo Agile: XP (Extreme Programming) e SCRUM a confronto

Lo sviluppo agile rappresenta un vero e proprio movimento, divenuto noto grazie al progetto XP (Extreme Programming), sviluppato da Kent Beck per Daimler Chrysle, con la collaborazione di Ward Cunningham. Nella XP si inseriscono diverse pratiche, tra le quali il refactoring del codice, formalizzato da Martin Fowler.

 

Essa rappresenta, principalmente, una metodologia di gestione del progetto, fondandosi sui seguenti valori fondamentali:

  1. la comunicazione: in XP c’è una forte comunicazione tra tutti gli attori coinvolti: gli sviluppatori, il management ed il cliente
  2. la semplicità: il risultato deve essere semplice e risolvere il solo ambito del problema che è stato posto: non deve cercare di anticipare i problemi futuri ma concentrarsi sulla soluzione del problema contingente. Lo sviluppatore deve pensare in piccolo, concentrando lo sforzo in un ambito ristretto.
  3. il feedback: il sistema è costantemente verificato, in modo da assicurarne la consistenza in ogni momento. Questo avviene tramite la creazione di test di unità che possono essere eseguiti dalla macchina stessa.
  4. il coraggio: se si rende necessario modificare quello che è stato fatto in precedenza, in prima persona o da un altro sviluppatore del team, è necessario procedere senza timore cambiando strada per rimanere vicini all’obiettivo. Questi valori sono applicabili ai diversi aspetti dello sviluppo software: dalla gestione (management), alla progettazione, allo sviluppo, fino alla documentazione.
  5. il pair programming: Extreme Programming prevede che per ogni postazione di lavoro siano presenti due persone. Lo scopo del secondo sviluppatore è quello di verificare che il primo sviluppatore scriva il codice in modo corretto eventualmente per sollevare potenziali problemi o proporre vie alternative di sviluppo.
  6. il testing: prima di scrivere il codice dell’applicazione, viene scritto quello di test. Vengono identificati pochi ma sostanziali test che mettano in luce eventuali malfunzionamenti del codice e se ne codifica l’implementazione. Una volta scritto il test, si passa allo sviluppo del codice vero e proprio.Si noti che, quando si presenta un bug viene creato subito un test per evidenziarlo.
  7. il refactoring: Il sistema è soggetto a continua riscrittura, volta a lasciare il codice nel più semplice stato possibile così da consentire l’implementazione delle funzionalità richieste. Nessuna funzionalità viene aggiunta prima che sia effettivamente necessaria.
  8. standard e proprietà collettiva: la codifica avviene secondo standard definiti, per promuovere la proprietà collettiva del codice. Tutti gli sviluppatori sono responsabili dell’intero sistema e possono in qualsiasi momento intervenire per eseguire gli eventualmente necessari refactoring. Gli sviluppatori dovrebbero inoltre cambiare spesso collega e parte del progetto su cui lavorano, per essere aggiornati sul funzionamento delle altre parti del sistema ed eventualmente per acquisire skill differenti. Lo sviluppo avviene da parte della collettività, senza specializzazioni verticali.
  9. i rilasci piccoli e frequenti: i rilasci del software sono il risultato di iterazioni molto brevi, dove poche e piccole funzionalità vengono implementate nel sistema e subito rilasciate al cliente per il test di accettazione.
  10. l’ integrazione frequente e seriale: l’integrazione delle modifiche nel sistema viene fatta frequentemente, in modo da limitare i conflitti che il nuovo codice (ed il codice di test) potrebbe dare. Inoltre, questa procedura avviene in modo strettamente sequenziale: solo uno sviluppatore alla volta integra le sue modifiche con il sistema, testa e rilascia il codice. Questo, assieme alla programmazione collettiva, consente di risolvere in modo semplice le tipiche problematiche di integrazione su una stessa base di codice del lavoro di diverse persone.

Sviluppo Agile - XP (Extreme Programming) e SCRUM a confronto

Sulla scorta della XP nasce SCRUM, un metodo agile per la gestione di progetti software, in cui viene ribadito il concetto di ciclo di sviluppo costituito da un grande numero di iterazioni di breve durata, caratterizzato da brevi meeting e sprint produttivi. In pratica, SCRUM prevede meeting di dieci minuti al giorno e sprint produttivi di un mese. All’interno di questa iterazione, sono presenti sotto-iterazioni di 24 ore, scandite da un meeting di inizio giornata, per far emergere eventuali problemi da gestire e per sincronizzare il team su quanto fatto nel giorno precedente e su quanto si intende fare nel giorno successivo. Alla fine dello sprint, il team di sviluppo fornisce la nuova funzionalità dimostrabile al cliente. In particolare, tale disciplina di gestione del processo funge da contenitore di pratiche di ingengeria del software già esistenti.

D’altro canto SCRUM essendo basato su di un approccio iterativo ed incrementale, è studiato per quei sistemi i cui requisiti mutano velocemente; e quindi la sua adozione consente di migliorare la comunicazione tra le persone coinvolte e massimizzarne la cooperazione.

Sviluppo Agile - Il processo SCRUM

È bene notare, che nel passaggio tra XP e SCRUM hanno preso vita un certo numero di metodologie mirate alla modellazione e documentazione dei sistemi software con enfasi sull’obiettivo, altri che adottano i concetti agili nello sviluppo dei database, altri ancora che pongono l’enfasi sulle funzionalità richieste dal cliente.

Precedente Ingegneria del software: Il Manifesto Agile Successivo Strategia ed organizzazione dei test software (Testing standards)

Lascia un commento

*