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
- Kent Beck: Extreme programming explained: Embrace change, Addison-Wesley, ISBN 0201616416
- Kent Beck: Programmazione estrema - Introduzione, Addison-Wesley, ISBN 8871920880
- Alistair Cockburn: Agile Software Development, Addison-Wesley, ISBN 0201699699
- Kim Man Lui: Software Development Rhythms, John Wiley and Sons, ISBN 0470073861
[modifica] Altri progetti
Wikimedia Commons contiene file multimediali su Extreme Programming

