jueves, 15 de agosto de 2013

Metodologías ágiles: Programación Extrema ( XP)



Hola a todos,

La metodología eXtreme Programming (XP, programación extrema) es una metodología de trabajo para desarrollar software de una manear altamente productiva desarrollada por Kent Beck en 1996.

Tiene muchas detalles en común con SCRUM y Crystal Clear pero se diferencia de ellos por darle una extrema importancia a la calidad del código que se exige como manera de producir de manera sostenible.

XP tiene 5 valores que si no son respetados no se puede decir que se está utilizando esta metodología:
- Comunicación: Tanto interna del equipo como de la empresa/cliente con el equipo.
- Simplicidad: Hacer lo más sencillo y correcto para cumplir con los requisitos actuales.
- Retroalimentación: Tanto el software , como el equipo, como el cliente han de retroalimentarse mutuamente.
- Valentía: Programar para hoy (y solo para hoy) , sabiendo que mañana habrá partes que tal vez se tengan que reescribir (o no), y ser capaz de cuando llegue el momento reescribir todo lo que haga falta.
- Respeto: El equipo ha de estar unido pase lo que pase.

Las características que modelan XP son las siguientes:
- Desarrollo iterativo: Como con SCRUM o con Crystal Clear, entregas pequeñas funcionales e incrementales.
- Pruebas unitarias continuas y automatizadas : Como en Crystal Clear, interesa que el código este probado hasta la saciedad. Si no está probado, no está acabado.
- Programación en parejas: Esto es de lo más arriesgado que propone XP, que dos programadores se pongan en el mismo sitio a trabajar. Esto genera una bajada de rendimiento aparente inicial, pero al poco el rendimiento aumenta rápidamente, debido a que dos cabezas piensan mejor que una y se acaba generando un código mejor, más limpio y legible, más estable, con menos errores y por lo tanto, más barato de mantener.
- Corrección de todos los errores antes de incluir nada nuevo: Sino lo nuevo que construimos está sobre cimientos arenosos.
- Refactorizar el código frecuentemente: Es decir, reescribir ciertas partes del código a fin de conseguir que sea más legible o mantenible.
- Propiedad del código compartida: Todo el código es de todo el mundo, no existe la posibilidad que el proyecto se quede parado por que el "encargado de tal cosa" esté de baja. Todo el mundo sabe de todo, peor o mejor.
- Simplicidad del código. Lo más recomendable es seguir la filosofía KISS. Si algo se ha de complicar, ya se complicará y se intentará hacer más complejo si llega el caso.
- Semanas de 40 horas: Todo el mundo entiende que se puedan pedir sobreesfuerzos puntuales, pero cuando estos sobreesfuerzos se transforman en norma la productividad y la calidad del código baja drásticamente. Si se quiere un código de alta calidad ( y por lo tanto más barato de mantener) interesa tener a los programadores frescos. Es lo mismo que decir que se quiere tener un ritmo sostenible.
- Estándar de códificación: Todos los miembros del equipo se han de poner de acuerdo en picar código en una misma dirección, sino el galimatías que acaba resultando es inmantenible.
- El cliente debería estar dentro del mismo equipo para poder dar feedback en tiempo real.

Las ventajas que otorga XP es que la satisfacción del programador por el trabajo bien hecho es alta y la tasa de errores del producto es muy muy baja , el problema es que no es una metodología recomendada para proyectos de largo plazo.

A fin de poder comparar el efecto de los cambios en los requisitos con  XP respecto con los sistemas tradicionales de producción o con SCRUM hay la siguiente gráfica que lo explica bastante bien:
Se observa claramente que al ser ciclos tan cortos los cambios en los requisitos apenas molestan al correcto desarrollo del proyecto.



LordPakusBlog

0 comentarios :

Publicar un comentario

Entradas populares