Metodologia àgil (Filosofia)

Comparat amb el desenvolupament de programari tradicional, la metodologia àgil està destinada a sistemes complexos amb projectes dinàmics, on fer prediccions acurades del temps necessari de desenvolupament és molt complicat. Com a conseqüència d’això es perdrien molts diners. Els diversos anys d’experiència han ajudat a conforma les metodologies àgils.

Adaptatiu contra Predictiu

Les metodologies de desenvolupament existeixen en un continu des d’adaptatiu fins a predictiu. Les metodologies àgils formen part de les adaptatives. Un dels elements clau del desenvolupament adaptatiu és l’anomenat Rolling Wave, el qual determina objectius, però dóna flexibilitat a l’hora d’aconseguir-les, aquests objectius també estan sotmesos a possibles canvis futurs. Com més lluny es trobi, en el temps, un objectiu, un desenvolupament adaptatiu serà més imprecís sobre el que passara en aquella data. Un equip que utilitzi desenvolupament adaptatiu no pot informar sobre que farà la pròxima setmana, però si quines funcionalitats implementaran al llarg del mes següent. Si a l’equip se li demana una predicció del que tindran fet al cap de sis mesos (o qualsevol quantitat considerable de temps) l’equip només serà capaç d’informar de l’objectiu principal, o una predicció aproximada de cost que tindrà.

D’altra banda, els mètodes predictius s’enfoquen en analitzar i planificar el futur amb detall per tal de poder controlar els possibles perills futurs. En els casos més extrems, un equip que utilitzi una metodologia predictiva és capaç de dir totes les tasques que es realitzaran al llarg del projecte. Aquestes metodologies es basen en una fase inicial d’anàlisi molt detallada, ara bé, si durant el desenvolupament alguna cosa va malament, serà molt difícil canviar la direcció del projecte. Normalment aquests equips tenen una junta de control de canvis, que s’assegurara que només els canvis més importants s’afegeixin al projecte.

Desenvolupament iteratiu i Desenvolupament en cascada

Una de les diferències principals entre el desenvolupament àgil i el desenvolupament en cascada és que la fase de testing es realitza en diferents etapes. En el Model de desenvoluament en cascada, hi ha una etapa de testejament quan s’està acabant una de les fases d’implementació, mentre que, en les metodologies àgils i especialment en la Programació Extema, es realitzen de forma paral·lela amb el desenvolupament del codi.

Com que les fases de testing es realitzen a cada petita iteració, els usuaris poden provar i validar aquesta petita peça del programari. Això permet que els usuaris puguin fer millors decisions sobre el futur d’aquest programa. Tenir a cada iteració del desenvolupament la possibilitat de replantejar el camí que seguira el programa (p.e l’Scrum té com a màxim iteracions d’un mes), permet a l’equip intentar màximitzar el valor que ofereix el programa.

Aquesta planificació iterativa permet veure el desenvolupament del programari com un organisme que es va adaptant als canvis que es van produint. Sempre que el programari s’utilitzi, i especialment si té competència, les iteracions en el desenvolupament àgil aportarant canvis.

Codi i documentació

En una carta al IEEE Computer, Steven Rakitin va expressar el seu cinisme sobre el desenvolupament àgil, criticant un article que defensava el desenvolupament àgil com “un altre intent de minimitzar la disciplin de l’enginyeria del programari”, i traslladant el “Treballar en codi per sobre la documentació” a “només volem escriure codi, recorda els programadors de veritat no escriuen documentació”.

Aquest aspectes són discutits pels defensors del desenvolupament àgil, que diuen que els desenvolupadors haurien d’escriure documentació si és la millor manera d’aconseguir els objectius rellevants, però que habitualment hi ha millors maneres d’aconseguir-los que escrivint una documnentació estàtica. Es diu que la documentació haurià de ser amb prou feines acceptable (de l’anglès Just Barely Good Enough (JBGE), ja que molta documentació serià una pèrdua de temps, perquè habitualment els desenvolupadors no se’n refien d’una documentació molt detallada, perquè normalment no està sincronitzada amb el codi, d’altra banda molt poca documentació o una molt pobre pot donar problemes per manteniment, comunicacio, aprenentatge, etc.

Metodologia àgil (el què)

Les metodologies àgils o processos àgils de desenvolupament de programari (com, per exemple, XP, Scrum, DSDM, Cristal, etc.) són aquelles metodologies de desenvolupament que es basen en l’adaptabilitat de qualsevol canvi com a mitjà per augmentar les possibilitats d’èxit d’un projecte.

La majoria dels mètodes àgils intenten minimitzar el risc desenvolupant el programari en iteracions, que típicament duren d’una a quatre setmanes. Cada iteració és com un projecte en miniatura del projecte final, i inclou totes les tasques necessàries per després implementar les funcionalitats noves: planificació, anàlisi de requisits, disseny, codificació, testatge, i documentació. Mentre que una iteració pot no afegir prou funcionalitats per garantir alliberar el producte, un projecte de programari àgil pretén ser capaç d’alliberar programari nou al final de totes les iteracions. En molts casos, el programari s’allibera al final de cada iteració, especialment quan el programari és basat en la web i es pot llançar fàcilment. Malgrat tot, al final de cada iteració, l’equip reavalua les prioritats de projecte.

Els principis bàsics de la metodologia àgil són:

  • Els individus i les seves interaccions per sobre dels processos i les eines
  • El programari que funciona per sobre de la documentació exhaustiva
  • La col·laboració amb el client per sobre de la negociació de contractes
  • La resposta davant del canvi per sobre de seguir un pla tancat