Com a MA que és, la XP basa el seu desenvolupament en les funcionalitats, en les coses que realment importen per assolir els objectius del projecte. En el cas de la XP el que realment importa és:
- Codificar: si al final del dia el programa no fa res, aquell dia no s'ha fet res.
- Verificar: saber si s'està fent bé o no. Una verificació s'ha de programar abans que el programa, d'altra manera només es verifica que fa bé el que ja se sap que fa.
- Escoltar: abans de fer res cal saber quin és el problema que s'ha de resoldre. Per això cal escoltar atentament al client.
- Dissenyar: cal observar el programa, saber quina estructura demana i donar-li. Sinó es fa així es caurà sota el pes de les suposicions i presuposicions que s'hagin fet.
Aquests són els 4 fonaments de la XP. Per assolir l'objectiu que busca la XP els seus ideòlegs descriuen com s'ha de tractar cada un dels punts importants, donen una sèrie de regles i pràctiques per a aconseguir-ho. A continuació es descriuen les regles i pautes descrites per cada un dels punts importants a l'hora de desenvolupar un projecte segons la XP.
Codificant
- El client sempre està disponible. La presència del client dins l'equip és una de les pràctiques, a part de més innovadora, més important. Com ja s'ha vist en l'exemple del C3 de Chrysler, la comunicació és un punt fonamental dina la XP. No només perquè cal escoltar al client sinó també per integrar-lo dins l'equip i fer-lo partícip tant de l'èxit del projecte com del fracàs d'aquest. La responsabilitat del client consisteix a descriure les històries d'usuari i planificar les històries a desenvolupar en cada una de les iteracions.
- El codi ha de seguir els estàndards acordats. Per mantenir la consistència i ser fàcilment llegit pels integrants de l'equip cal seguir una codificació estàndard. Un exemple d'estàndard de codificació és Smalltalk Best Practice Patterns escrits per Kent Beck.
- Codificar la unitat de verificació primer. Codificar primer la unitat de verificació fa que desenvolupar el codi de l'aplicació sigui més ràpid i més fàcil. Només cal desenvolupar el codi necessari per passar el test. Es desenvolupa tan sols el que és necessari i que serà utilitzat, el resultat és el codi més simple.
- Tota la programació de codi es fa amb programació en parella. La programació en parella incrementa la qualitat del codi i, gràcies a la qualitat, no provoca cap pèrdua de temps al final del projecte.
- Les parelles no integren codi al sistema simultàniament. Quan un codi s'integra al sistema prèviament es verifica sobre aquest. Si dues parelles integren codi simultàniament l'integraran a un sistema sobre el que no s'ha verificat el nou codi a causa de l'aparició del codi nou de l'altra parella.
- Integracions freqüents. Cada poques hores les parelles han d'integrar un nou codi al sistema. D'aquesta manera a més de resultats les altres parelles poden desenvolupar sobre l'última versió del sistema.
- Utilitzar codi comú. Tothom té dret a introduir canvis en el codi desenvolupat per una altra parella. El resultat són idees noves, una major qualitat al sistema i més implicació de tots els membres de l'equip sobre el codi.
- Deixar les optimitzacions pel final. No s'ha d'optimitzar ni una línia de codi fins que no es té tot el codi programat i verificat.
- No fer hores extres. Les hores extres treuen l'esperit desitjat a l'equip i fan baixar el nivell de qualitat del sistema. Si falta temps per acabar és millor fer una reunió i acordar canviar la planificació de la iteració.
Planificant
- S'escriuen històries d'usuari. Les històries d'usuari tenen la mateixa finalitat que els casos d'ús, però no són el mateix. Les històries d'usuari les escriu el mateix usuari i en elles descriu una cosa que vol que el programa faci.
- La planificació d'entrega marca el calendari. Les històries d'usuaris es planifiquen en les reunions de planificació d'entrega. Cada membre de l'equip pren les decisions referents tant a l'aspecte tècnic com als plans de negoci. Un cop es tenen estimades totes les històries d'usuari entre els desenvolupadors i el client es decideix quines històries es faran en la present entrega i quines en la següent. L'ordre es decideix tant per la importància que tingui cada una de les històries com per la seva prioritat.
- Fer petites entregues sovint. Les petites entregues permeten al client veure el desenvolupament del projecte i retroalimentar-se amb les opinions que dona el client. En les planificacions d'entregues s'han d'agrupar les històries per poder donar al client petites versions del sistema sovint.
- Es mesura la velocitat del projecte. La velocitat del projecte mesura la quantitat de feina que s'està fent en el projecte. Per calcular-la s'agafen totes les històries d'usuari finalitzades en la iteració actual, i aquesta quantitat es fa servir per, en la següent reunió de planificació d'iteració, decidir quantes històries d'usuari es faran en la iteració que es planifica. Aquesta velocitat va variant al llarg del projecte, això fa que la quantitat d'iteracions o de feina per iteració variï.
- El projecte es divideix en iteracions. El desenvolupament iteratiu dona al projecte molta agilitat. XP recomana dividir els projectes en 12 iteracions d'entre 1 i 3 setmanes cada una. És important que totes les iteracions tinguin la mateixa duració, altrament la velocitat del projecte quedaria alterada. Les iteracions inclouen les tasques de verificació del codi desenvolupat.
- La planificació de cada iteració es fa al començar la iteració. La planificació de les tasques a realitzar just en el moment en què es comença la iteració, i no setmanes o mesos abans, permet adaptar-se amb molta facilitat i sense pèrdua de temps al canvis que sorgeixin. Al començar cada iteració s'escullen quines històries es faran. El nombre d'històries ve marcat per la velocitat de projecte assolida en la iteració anterior.
- Moure la gent. Moure la gent, fer que tothom treballi amb totes les tasques evita que hi hagi tasques que només sàpiga realitzar un membre de l'equip. Si hi ha més d'un membre de l'equip que conegui cada una de les àrees de treball s'evita la pèrdua de temps que pot suposar que un membre de l'equip marxi o que aquest estigui saturat de feina. Amb el coneixement general de tothom s'eviten colls d'ampolla.
- Una reunió a peu dret per començar el dia. Durant un projecte pot passar sovint que una tasca es quedi encallada per un petit problema que es pot resoldre parlant amb un altre membre de l'equip, ja sigui per resoldre un malentès o perquè l'altre s'ha trobat en el mateix problema i l'ha solucionat. Una reunió matutina promou la comunicació entre els membres de l'equip, cadascú pot explicar les solucions que ha trobat, els dubtes que té i a la vegada es promou l'esperit d'equip. La reunió és a peu dret per evitar que s'eternitzi.
- Personalitzar l'XP. L'XP dona una sèrie de pautes a seguir, però és clar que per aplicar-lo a cada projecte en particular hi haurà regles que serviran, d'altres que s'hauran de modificar i d'altres que no se seguiran.
Dissenyant
- Simplicitat. Fer les coses tant senzilles com es pugui. Un codi senzill és més fàcil de programar, més barat i més fàcil de canviar posteriorment. Cal mantenir-ho tot senzill i no afegir mai noves funcionalitats que no són requerides o que encara no estan previstes.
- Escollir un sistema de metàfores. Fer servir un sistema de metàfores, i que tot l'equip el tingui interioritzat a l'hora de posar noms a les classes, pot evitar programar una classe i després trobar-se que aquesta ja existeix.
- Utilitzar cartes CRC per les sessions de disseny. Classe, Responsabilitat i Col·laboració (CRC). Cada targeta representa un objecte, l'objecte és d'una Classe té unes Responsabilitats i Col·labora amb una sèrie d'objectes d'altres classes. En una sessió de CRC es tenen les targetes sobre la taula, en cada una s'hi escriuen els objectes necessaris per al disseny, i cada membre de l'equip les organitza com creu que haurien d'estar relacionades. D'aquesta manera s'aconsegueix que tothom expressi la seva opinió i se'n tregui el millor de cada idea.
- Crear solucions puntuals per reduir el risc. En cas de preveure un risc dins una història d'usuari es recomana, abans de fer l'estimació d'aquesta o d'acceptar-la fer una solució puntual. La solució puntual (spike solution) consisteix a simular el maquinari del que es disposarà i intentar simular la història que es demana. Si s'aconsegueix una aproximació a la solució de la història es pot fer una estimació d'aquesta reduint molt el risc, i a la vegada ja es té una part de la feina feta.
- No afegir funcionalitats abans d'hora. Desenvolupar funcionalitats addicionals que es preveu que puguin ser necessàries tendeix a ser una pèrdua de temps. En qualsevol moment el requeriments poden canviar i pot ser que aquesta s'hagi d'eliminar.
- Refactoritzar sempre que es pugui i quan es pugui. Refactoritzar consisteix en eliminar redundàncies, eliminar funcionalitats no utilitzades, rejovenir un codi obsolet. Refactoritzar permet mantenir un disseny més simple, mantenir el codi més net, evitar redundàncies i funcionalitats no utilitzades, finalment permet estalviar temps en futures modificacions i augmenta la qualitat del codi.
Verificant
- Tot el codi ha de tenir unitats de verificació. Les unitats de verificació són un dels punts forts de l'XP. Cal verificar totes les classes del sistema i és recomanable programar la verificació abans de desenvolupar el codi.
- Tot el codi ha de ser verificat abans de ser entregat. És necessari que a més de verificar totes les classes es verifiqui tots els fragments de programa per garantir-ne la validesa.
- Quan es troba un bug es fa una verificació. Quan es localitza un error es desenvolupa una unitat de verificació capaç de detectar-lo.
- [L'acceptació de les verificacions i el resultat obtingut s'acostumen a publicar.] El client dissenya una sèrie d'escenaris en els quals una
història d'usuari ha de funcionar correctament, un cop verificat el codi cal provar-lo en els escenaris descrits.
Quan utilitzar la XP
La XP està pensada per respondre als canvis en els requeriments d'un projecte. En entorns on el client no té una idea molt clara del que es vol o on els requeriments poden canviar ràpidament és on es treu més profit de la XP. En aquests entorns una metodologia tradicional molt probablement fracassaria, mentre que la XP està pensada per adaptar-s'hi. Tant aquests projectes com qualsevol altre tenen una nivell de risc, les regles i pautes marcades per la XP també permeten reduir-ne els riscos.
És una metodologia pensada per a equips petits. Es recomana que els equips siguin d'entre 2 i 12 membres. Els equips petits permeten adaptar-se més fàcilment als canvis.
La XP pot ser utilitzada en qualsevol tipus de projecte, però els que responen a l'anterior descripció són pels que s'ha pensat expressament. Sempre que es vulgui aplicar cal tenir a la gent motivada i disposada a fer el canvi de mentalitat necessari per tirar endavant el projecte seguint una nova metodologia i, sobretot, cal que el client s'hi atingui, ja que sense la seva figura la XP no té sentit.