Extreme programming

La programmazione estrema (in inglese extreme programming, abbreviata XP) è una metodologia agile di sviluppo software, caratterizzata da cicli di sviluppo brevi, frequenti riscontri da parte del cliente e un insieme coordinato di pratiche di ingegneria del software. Il metodo è concepito per…

La programmazione estrema (in inglese extreme programming, abbreviata XP) è una metodologia agile di sviluppo software, caratterizzata da cicli di sviluppo brevi, frequenti riscontri da parte del cliente e un insieme coordinato di pratiche di ingegneria del software. Il metodo è concepito per favorire l'adattamento ai cambiamenti dei requisiti e il miglioramento della qualità del software, attraverso la collaborazione tra i membri del gruppo di sviluppo e il coinvolgimento del cliente.

L'extreme programming fu sviluppato negli anni novanta da Kent Beck, in particolare nell'ambito del progetto Chrysler Comprehensive Compensation (C3), finalizzato alla realizzazione di un sistema per la gestione delle retribuzioni della Chrysler. Il metodo venne descritto sistematicamente da Beck nel libro Extreme Programming Explained: Embrace Change, pubblicato nel 1999 e successivamente rielaborato in una seconda edizione, scritta con Cynthia Andres e pubblicata nel 2004.

Tra le pratiche caratteristiche del metodo figurano la programmazione in coppia (pair programming), lo sviluppo guidato dai test, il refactoring, l'integrazione continua e i rilasci frequenti di software funzionante. Tali pratiche si fondano su cinque valori: comunicazione, semplicità, feedback, coraggio e rispetto. La denominazione extreme programming deriva dall'idea di applicare con particolare intensità alcune pratiche considerate efficaci nell'ingegneria del software, portandole a un livello definito «estremo».

Origini e sviluppo

Le origini dell'extreme programming risalgono alla fine degli anni ottanta, nell'ambiente degli sviluppatori del linguaggio di programmazione Smalltalk. In questo contesto, Kent Beck e Ward Cunningham collaborarono allo sviluppo di pratiche di ingegneria del software orientate all'adattamento ai cambiamenti e alla collaborazione tra i membri dei gruppi di sviluppo. Durante i primi anni novanta, entrambi continuarono a sperimentare e perfezionare tali pratiche nell'ambito di diversi progetti software.

Il passaggio da un insieme di pratiche sperimentali a un metodo di sviluppo riconoscibile avvenne nel 1996, quando Beck assunse la guida tecnica del progetto Chrysler Comprehensive Compensation (C3), dedicato alla realizzazione di un sistema per la gestione delle retribuzioni della Chrysler. Il progetto rappresentò il principale contesto nel quale le pratiche che avrebbero costituito l'extreme programming furono integrate in un approccio unitario. Secondo Martin Fowler, che partecipò al progetto come consulente, Beck iniziò a utilizzare la denominazione extreme programming intorno al 1997.

Nella seconda metà degli anni novanta, il metodo iniziò a diffondersi attraverso gruppi di discussione su Internet e il wiki creato da Cunningham, dove Beck e Ron Jeffries, anch'egli coinvolto nel progetto C3, contribuirono alla descrizione e alla discussione delle pratiche XP. Un momento importante nella formalizzazione e nella diffusione del metodo fu la pubblicazione, nel 1999, del libro Extreme Programming Explained: Embrace Change, scritto da Beck ed edito da Addison-Wesley, nel quale vennero esposti sistematicamente i valori, i principi e le pratiche dell'approccio.

Il progetto Chrysler C3

Il progetto Chrysler Comprehensive Compensation (C3) aveva l'obiettivo di sostituire diversi sistemi preesistenti per la gestione delle retribuzioni dei dipendenti della Chrysler, basati principalmente sul linguaggio COBOL, con un'applicazione unificata. Lo sviluppo del nuovo sistema, realizzato in Smalltalk, iniziò nel 1995, ma incontrò difficoltà tecniche e organizzative che impedirono di raggiungere i risultati previsti.

Nel 1996 Kent Beck venne coinvolto nel progetto per esaminarne i problemi. In seguito alla sua valutazione, il codice esistente fu abbandonato e lo sviluppo riprese adottando un nuovo approccio. Beck assunse il ruolo di consulente e responsabile metodologico, mentre Ron Jeffries contribuì al coordinamento quotidiano del gruppo. Furono introdotte pratiche quali la programmazione in coppia, i test automatizzati, il refactoring, l'integrazione continua e la pianificazione attraverso brevi iterazioni. L'esperienza costituì il principale contesto di definizione e sperimentazione dell'extreme programming.

Nel maggio 1997 una prima versione del sistema entrò in produzione e venne utilizzata per elaborare le retribuzioni di circa 10 000 dipendenti. L'obiettivo successivo era estenderne l'utilizzo ad altre categorie di personale, fino a sostituire progressivamente i sistemi precedenti. Nonostante il proseguimento dello sviluppo, le ulteriori fasi di distribuzione non furono completate.

Secondo la ricostruzione di Martin Fowler, le attività di sviluppo di nuove funzionalità furono interrotte nel 1999. La conclusione formale del progetto è documentata al 1º febbraio 2000, senza che fosse stata completata la successiva fase di distribuzione. Nel resoconto di un intervento di Jeffries alla conferenza XP 2000, Fowler riportò tra le difficoltà emerse la divergenza di obiettivi tra il dipartimento responsabile delle retribuzioni e quello dei sistemi informativi, oltre al deterioramento della comunicazione tra il gruppo di sviluppo e i responsabili aziendali.

Il sistema inizialmente distribuito rimase operativo anche dopo l'interruzione dello sviluppo, prima di essere successivamente sostituito. L'esperienza di C3 ebbe un ruolo significativo nella diffusione iniziale dell'extreme programming, pur non avendo raggiunto l'obiettivo originario di sostituire integralmente i sistemi di gestione delle retribuzioni della Chrysler.

Servizi correlati

Altre voci

C

Collaudo del software

Il collaudo del software (anche software testing in lingua inglese), in informatica, indica un procedimento, che fa parte del ciclo di vita del software, utilizzato per individuare le carenze di correttezza, completezza e affidabilità delle componenti software in corso di sviluppo. Consiste…

Leggi la voce →
P

Principio di antifragilità

Il principio di antifragilità è applicabile a qualsiasi ambito ed indica l'attitudine di alcuni sistemi di modificarsi e migliorare a fronte di sollecitazioni, fattori di stress, volatilità, disordine. È un principio enunciato e ampiamente descritto da Nassim Nicholas Taleb nel suo libro del…

Leggi la voce →
E

Employee Relationship Management

I sistemi di Employee Relationship Management (sigla ERM; traducibile come "gestione relazioni con gli impiegati") sono sistemi che supportano la gestione delle relazioni con i collaboratori di una azienda: nascono dall'idea che una gestione più attenta delle relazioni con i collaboratori può…

Leggi la voce →
M

MariaDB

MariaDB è un RDBMS nato da un fork di MySQL creato dal programmatore originale di tale programma. Aperto ai contributi della comunità, l'area di sviluppo principale è lo storage engine Aria, precedentemente chiamato Maria da cui deriva MariaDB; si tratta di un'evoluzione di MyISAM. Viene…

Leggi la voce →
I

Ingegneria del software

L' ingegneria del software (software engineering in inglese) è quella disciplina informatica che si occupa dei processi produttivi e delle metodologie di sviluppo finalizzate alla realizzazione di sistemi software. Si propone una serie di obiettivi legati all'evoluzione dello sviluppo del…

Leggi la voce →
Pair programmingP

Pair programming

La programmazione in coppia, meglio nota come pair programming, è una metodologia di sviluppo del software di tipologia agile nella quale due programmatori lavorano insieme sulla stessa postazione di lavoro. I due solitamente hanno due ruoli distinti che possono scambiarsi: uno, detto…

Leggi la voce →