Extreme Programming

Extreme Programming
Información sobre la plantilla
Xpl.JPG
Metodología ágil más conocida; está centrada en la colaboración, la creación temprana y rápida de software

Extreme Programming. La Programación Extrema (XP) es probablemente la metodología ágil más conocida; está centrada en la colaboración, la creación temprana y rápida de software, y una serie de prácticas útiles en el desarrollo de software. XP se funda en cuatro valores: comunicación, simplicidad, retroalimentación y coraje, que incluyen también 12 prácticas fundamentales como la programación por pares, refactorización constante y un desarrollo orientado a las pruebas, entre otras.

Ciclo de vida de XP

El ciclo de vida de XP consiste de 5 fases: Exploración, Planeación, Iteraciones, Producción, Mantenimiento.

Exploración

En la fase de Exploración los clientes escriben las historias de usuario (funcionalidades con que debe contar el sistema) de lo que ellos quisieran incluir para la primera entrega. Cada plantilla describe las características que deben ser adicionadas al programa. Al mismo tiempo el equipo del proyecto se familiariza con las herramientas, la tecnología y las prácticas que utilizarán en el proyecto. La tecnología ha ser usada será probada y las posibles arquitectura para el sistema son exploradas construyendo un prototipo del sistema. La fase de exploración toma entre unas cuantas semanas a unos cuantos meses, dependiendo de que tanto los programadores conocen la tecnología.

Planeación

La fase de planeación configura la prioridad para las historias de usuario, contenidas en las tarjetas CRC (Clase-Responsabilidad-Colaboración, una técnica que reemplaza a los diagramas para la representación de modelos, en las que se escriben las responsabilidades) y se realiza un contrato del contenido para la primera entrega. Los programadores primero estiman cuánto esfuerzo requieren para cada historia y se hace una programación de acuerdo a esta estimación. El tiempo de la programación de la primera entrega normalmente no excede dos meses y el tiempo de la fase como tal toma un par de días.

Iteraciones

La fase de iteraciones hacia la entrega incluye varias iteraciones del sistema antes de la primera entrega. La programación que se determinó en la etapa de planeación es dividida en un número de iteraciones donde cada una tomará de una a cuatro semanas para ser implementada. La primera iteración crea la arquitectura de todo el sistema; esto es logrado seleccionando las historias que hacen cumplir la estructura para todo el sistema. El cliente decide las historias seleccionadas para cada iteración. Las pruebas funcionales creadas por los clientes son para correr al final de cada iteración. Al final de la última iteración, el sistema estará listo para ser entregado y llevarlo a producción.

Producción

La fase de producción requiere pruebas extras y chequeos de la ejecución del sistema antes de que sea entregado al cliente. En ésta fase, se pueden encontrar nuevos cambios y se toma la decisión si serán incluidos en la entrega actual. Durante esta fase, las iteraciones pueden necesitar ser recortadas de tres semanas a una semana. Después que la primera entrega es producida para el uso del cliente, el proyecto XP debe mantener el sistema en producción corriendo mientras que también se estén produciendo nuevas iteraciones.

Mantenimiento

La fase de mantenimiento requiere también un esfuerzo para soportar las tareas de los clientes. Así, la velocidad del desarrollo puede desacelerarse después de que el sistema está en producción. La fase de mantenimiento puede requerir incorporar nuevas personas al equipo y cambiar la estructura del equipo. Dentro de esta fase se llega a un estado llamado “de muerte”, que sucede cuando el cliente no tiene más historias para ser implementadas. Esto requiere que el sistema satisfaga también las necesidades en otros aspectos, como por ejemplo lo concerniente a la ejecución y la confiabilidad. Éste es el momento en el proceso XP cuando la documentación necesaria del sistema es finalmente escrita porque no habrá más cambios en la arquitectura, diseño o código. La muerte puede ocurrir si el sistema no está entregando los artefactos deseados o si se está convirtiendo muy costoso implementarlo.

Actores y sus responsabilidades

Hay diferentes roles en XP para diferentes tareas y propósitos durante el proceso y sus prácticas.

  • Programador. El programador escribe las pruebas y mantiene el código del programa tan simple y definido como sea posible.
  • Cliente. Escribe las historias (especificaciones) y pruebas funcionales, decide cuando es logrado cada requisito y determina la prioridad de la implementación de cada uno de ellos.
  • Verificadores (Testers). Ayudan al cliente a escribir pruebas funcionales, las corren regularmente, comunican los resultados de las mismas y mantienen las herramientas de prueba.
  • Seguidor de rastros (Tracker). El seguidor de rastros retroalimenta en XP. Sigue las estimaciones hechas por el equipo, es decir, la estimación del esfuerzo; y da retroalimentación en cómo están de acertados para mejorar las futuras estimaciones.
  • Facilitador. Es la persona responsable del proceso como un todo. Un buen entendimiento de XP es importante en este rol para habilitar al entrenador para guiar a los otros miembros del equipo en el siguiente proceso.
  • Consultor técnico. El consultor técnico es un miembro externo que procesa el conocimiento técnico específico necesitado y guía al equipo en resolver sus problemas específicos.
  • Administrador. El administrador toma las decisiones. Para lograr esto, él se comunica con el equipo del proyecto para determinar la situación actual y distinguir cualquier dificultad o deficiencia en el proceso.

Ventajas

  • Programación organizada.
  • Menor taza de errores.
  • Satisfacción del programador.

Desventajas

  • Es recomendable emplearlo solo en proyectos a corto plazo.
  • Altas comisiones en caso de fallar.

Beneficios

  • El cliente tiene el control sobre las prioridades.
  • Se hacen pruebas continuas durante el proyecto.
  • La XP es mejor utilizada en la implementación de nuevas tecnologías donde los requerimientos cambian rápidamente.

Alcance

La metodología XP no es aplicable en todas partes ni se han identificado todos sus límites. Es decir, se necesita todavía mucha investigación empírica y experimental en diferentes perspectivas. Sin embargo se han identificado algunas limitaciones:

XP esta dirigido para equipos de trabajo pequeños y medianos. El ambiente físico es también importante en XP. La comunicación y coordinación entre los miembros de proyectos debe existir en todo momento. Sin embargo, la distribución geográfica de los equipos no esta necesariamente fuera del alcance de XP, en caso de que esto incluya dos equipos en proyectos relacionados con una interacción limitada. La cultura del negocio que afecta la unidad de desarrollo es otro aspecto puntual en XP. Cualquier resistencia contra sus prácticas y sus principios en representación de los integrantes, administradores o clientes del proyecto pueden ser suficientes para que el proceso falle.

También la tecnología puede proporcionar insuperables obstáculos para el éxito de un proyecto. Por ejemplo, la tecnología que no soporte los cambios o demandas de largo tiempo de retroalimentación no es aplicable para procesos XP.

Fuentes

  • Fernández Escribano, Gerardo. Introducción a Extreme Programming: Ingeniería del Software II, 9-12-2002
  • fases
  • extremeprogramming