Extreme Programming

Da Wikipedia, l'enciclopedia libera.

L'Extreme Programming (espressione inglese per programmazione estrema, spesso abbreviato in XP) è una metodologia agile e un approccio all'ingegneria del software formulato da Kent Beck, Ward Cunningham e Ron Jeffries. Beck scrisse il primo libro sull'XP, Extreme Programming Explained, pubblicato nel 1999.

Tra gli aspetti caratteristici dell'extreme programming vi sono la programmazione a più mani (generalmente in coppia), la verifica continua del programma durante lo sviluppo per mezzo di programmi di test e la frequente reingegnerizzazione del software, di solito in piccoli passi incrementali, senza dover rispettare fasi di sviluppo particolari.

Indice

[modifica] Regole

Dodici regole sono alla base di Extreme Programming:

  • Progettare con il cliente;
  • Test funzionali e unitari;
  • Refactoring (riscrivere il codice senza alterarne le funzionalità esterne);
  • Progettare al minimo;
  • Descrivere il sistema con una metafora, anche per la descrizione formale;
  • Proprietà del codice collettiva (contribuisce alla stesura chiunque sia coinvolto nel progetto);
  • Scegliere ed utilizzare un preciso standard di scrittura del codice;
  • Integrare continuamente i cambiamenti al codice;
  • Il cliente deve essere presente e disponibile a verificare (sono consigliate riunioni settimanali);
  • Open Workspace;
  • 40 ore di lavoro settimanali;
  • Pair Programming (due programmatori lavorano insieme su un solo computer).

[modifica] Modello dei processi

James Donovan Wells individua quattro linee guida:

  • Comunicazione (tutti possono parlare con tutti, persino l'ultimo dei programmatori con il cliente);
  • Semplicità (gli analisti mantengano la descrizione formale il più semplice e chiara possibile);
  • Feedback (sin dal primo giorno si testa il codice);
  • Coraggio (si dà in uso il sistema il prima possibile e si implementano i cambiamenti richiesti man mano).

Individua inoltre quattro fasi di progetto, ognuna delle quali con le sue regole interne:

  • Pianificazione (User Stories, Release Planning, Small Releases, Project Velocity, Load Factor, Iterative Development, Iteration Planning, Move People Around, Daily Stand Up Meeting, Fix XP);
  • Progettazione (Simplicity, System Metaphor, CRC Cards, Spike Solution, Never Add Early, Refactoring);
  • Sviluppo (Customer Always Available, Standards, Unit Test First, Pair Programming, Sequential Integration, Integrate Often, Collective Code Ownership, Optimize Last, No Overtime);
  • Testing (Unit Test Framework, Bug's found, Functional Test o Acceptance Tests).

[modifica] Ruolo di XP nell'ingegneria del software

Su Extreme Programming c'è da dire che, essendo una metodologia molto famosa, è anche molto controversa. In effetti si può notare che, per quanto particolareggiata, è comunque una metodologia leggera non troppo differente dalle altre. Deve sicuramente la sua fortuna al lavoro dell'autore che ha saputo coglierne gli aspetti positivi e trasmetterli, anche quando i progetti gestiti sono falliti, fra questi il primo in assoluto. D'altronde è Kent Beck stesso ad ammettere questi fallimenti, anzi a considerarli parte integrante della filosofia di fondo della metodologia ed a confermare che di tutte le pratiche di Extreme Programming, la più importante è il carisma del project manager.

Extreme Programming però ha dato un impulso importante alla diffusione delle metodologie leggere ed alla discussione sulle singole pratiche e sulle conseguenze dei loro utilizzi. Da questo punto di vista la bibliografia su Extreme Programming è vastissima ed è utile sfruttarne le risorse disponibili per una riflessione approfondita sui particolari delle metodologie leggere in generale.

[modifica] Voci correlate

[modifica] Bibliografia

[modifica] Altri progetti

[modifica] Collegamenti esterni

Strumenti personali