Extreme Programming - XP

Tuesday, June 16, 2020 - 17:15

Extreme Programming, también conocido como XP, es un framework ágil que tiene como objetivo producir software de mayor valor a la vez que mejora la calidad del equipo de desarrollo. A fin de desarrollar y la gestionar proyectos con eficacia, flexibilidad y control.

XP es uno de los frameworks más utilizados dentro de las metodologías ágiles con respecto a las prácticas de ingeniería apropiadas para el desarrollo del software.

Agile es el framework para el desarrollo del software, se hace mediante un proceso iterativo y define las prácticas y roles del equipo. Por su lado, el XP es una metodología basada en la comunicación, la reutilización del código desarrollado y la realimentación.

La programación extrema se diferencia de las metodologías tradicionales principalmente en que pone más énfasis en la adaptabilidad que en la previsibilidad.

Cabe destacar que esta metodología considera que los cambios de requisitos sobre la marcha son un aspecto natural, inevitable e incluso deseable en del desarrollo de proyectos. Además, los equipos que implementan XP son capaces de adaptarse a los cambios de requisitos en cualquier punto de la vida del proyecto, esto es un punto más realista que intentar definir todos los requisitos al comienzo del proyecto e invertir esfuerzos después en controlar los cambios en los requisitos.

Los valores originales de la programación extrema son: simplicidad, comunicación, retroalimentación (feedback), coraje y respeto.

  • La simplicidad es la base de la programación extrema: se simplifica el diseño para agilizar el desarrollo y facilitar el mantenimiento. Un diseño complejo del código junto a sucesivas modificaciones por parte de diferentes desarrolladores hace que la complejidad aumente exponencialmente.
  • La comunicación se realiza de diferentes formas: para los programadores el código comunica mejor cuanto más simple sea. Si el código es complejo hay que esforzarse para hacerlo inteligible. El código autodocumentado es más fiable que los comentarios ya que éstos últimos pronto quedan desfasados con el código a medida que es modificado. Debe comentarse sólo aquello que no va a variar, por ejemplo, el objetivo de una clase o la funcionalidad de un método.
  • Al estar el cliente integrado en el proyecto, su opinión sobre el estado del proyecto se conoce en tiempo real. Al realizarse ciclos muy cortos tras los cuales se muestran resultados, se minimiza el tener que rehacer partes que no cumplen con los requisitos y ayuda a los programadores a centrarse en lo que es más importante.
  • Muchas de las prácticas implican valentía: una de ellas es siempre diseñar y programar para hoy y no para mañana. Esto es un esfuerzo para evitar empantanarse en el diseño y requerir demasiado tiempo y trabajo para implementar el resto del proyecto.
  • El respeto se manifiesta de varias formas: todos los integrantes respetan sus trabajos porque siempre están luchando por la alta calidad en el producto y buscando el diseño óptimo para la solución a través de la refactorización del código. A su vez, los miembros del equipo respetan el trabajo del resto no haciendo menos a otros, esto mejora la autoestima del equipo y eleva su ritmo de producción.

 

Las características fundamentales de XP son:

  • Desarrollo iterativo e incremental: pequeñas mejoras, unas tras otras.
  • Pruebas unitarias continuas, frecuentemente repetidas y automatizadas, incluyendo pruebas de regresión.
  • Programación en parejas: el código es revisado y discutido mientras se escribe entre los integrantes de la pareja.
  • Frecuente integración del equipo de programación con el cliente.
  • Corrección de todos los errores antes de añadir nueva funcionalidad.
  • Refactorización del código, es decir, reescribir ciertas partes del código para aumentar su legibilidad y mantenibilidad, pero sin modificar su comportamiento.
  • Simplicidad en el código: es la mejor manera de que las cosas funcionen. Cuando todo funcione se podrá añadir funcionalidad si es necesario.
  • Propiedad del código compartida: en vez de dividir la responsabilidad en el desarrollo de cada módulo en grupos de trabajo distintos, este método promueve el que todo el personal pueda corregir y extender cualquier parte del proyecto.

¿Cuál es el ciclo de vida y los modelos del Extreme Programming?

En cualquier tipo de metodología de gestión de proyectos, tanto en las tradicionales como en las ágiles, esta programación extrema debe entender lo que el cliente necesita. Para ello se necesita una fase de exploración, estimar el esfuerzo (que requiere una ardua planificación), desarrollar una solución y contar con las posibles iteraciones en cada fase, así como entregar al cliente el producto final tras todo el proceso.

Se puede decir que el XP, al igual que otras metodologías ágiles, tiene un ciclo de vida dinámico. Para ello desarrolla ciclos cortos o iteraciones.

En cada una de las iteraciones se crea un ciclo completo de diseño, pruebas, análisis y desarrollo mediante un conjunto de reglas y técnicas específicas de XP. Habitualmente, el desarrollo de una XP supone entre 10 y 15 iteraciones.

¿Cuáles son las variables de los modelos XP?

Esta metodología se define por las variables de calidad, coste, tiempo y alcance. De las cuatro variables, tres pueden fijarse por actores externos a los desarrolladores, y el valor de la cuarta deberá establecerse por los jefes de proyecto y clientes, es decir, el equipo de desarrollo, que la establecerá en base a la función de las otras.

Como ejemplo para una mejor comprensión, se puede decir que, si un cliente establece la calidad o el alcance y el jefe de proyecto el precio, el grupo de desarrollo podrá determinar el tiempo del proyecto.

Por ejemplo, si el jefe de proyecto establece el precio, y el cliente establece la calidad y el alcance, el grupo de desarrollo será libre para determinar el tiempo que dure el proyecto. Se trata de establecer un equilibrio entre las cuatro variables de este.

Ventajas de la programación extrema:

Antes de hablar de los beneficios de esta metodología es necesario remarcar que solo se puede emplear para proyectos a largo plazo.

Es muy eficiente durante el proceso de pruebas y planificación, su tasa de error es muy pequeña, facilita los cambios, origina una programación muy organizada y la satisfacción del programador, además de fomentar la comunicación entre los desarrolladores y los clientes.

También, el cliente tiene el control sobre las prioridades, durante todo el proyecto se pueden realizar diversas pruebas y, sobre todo, permite ahorrar mucho tiempo y dinero.

Alcance de las metodologías ágiles:

Esta metodología no puede aplicarse en todas partes ni se conocen sus límites. Es necesario una gran investigación dependiendo del proyecto al que se quiera aplicar, pero algunas de las limitaciones son:

La programación extrema está dirigida a pequeños y medianos equipos de trabajo. La coordinación y comunicación entre los miembros del equipo debe ser fluida, sin embargo, su distribución geográfica no está fuera del alcance de XP, en caso de que se realice con equipos que trabajen en proyectos relacionados y tengan una limitada interacción.

Es crucial la cultura del negocio que afecta a la unidad de desarrollo. El proceso puede fallar por cualquier tipo de resistencia en contra de los principios y prácticas que representen los clientes del proyecto, administradores o integrantes.

El Extreme Programming se utiliza para implementar nuevas tecnologías donde los requerimientos cambian con gran facilidad y rapidez a la vez que se implementa con otros frameworks ágiles como Scrum para sacarle el mayor partido a esta metodología.

Roles en Extreme Programming:

  • Programador: considerado el más importante miembro del equipo ya que escribe las pruebas unitarias y el código del sistema.
  • Coach: Es responsable del proceso global y se encarga de guiar a los miembros del equipo para seguir el proceso correctamente.
  • Tester: ayuda al cliente a escribir las pruebas funcionales. Ejecuta pruebas regularmente, difunde los resultados en el equipo y es responsable de las herramientas de soporte para pruebas.
  • Gestor (Big Boss): es el dueño de la tienda y el vínculo entre clientes y programadores. Su labor esencial es la coordinación.
  • Cliente (Customer): es quien escribe las historias de usuario y las pruebas funcionales para validar su implementación. Asigna la prioridad a las historias de usuario y decide cuáles se implementan en cada iteración centrándose en aportar el mayor valor de negocio.
  • Traker: es el encargado de seguimiento. Proporciona retroalimentación al equipo. Debe verificar el grado de acierto entre las estimaciones realizadas y el tiempo real dedicado, comunicando los resultados para mejorar futuras estimaciones.
  • Manager: se encarga de agendar las reuniones, se asegura de que el proceso de juntas sea seguido, registra los resultados de las reuniones para futuros reportes para el Tracker. Asiste a las reuniones y trae información importante, mantiene al equipo feliz y productivo.

Artefactos dentro de XP:

  • Historias de usuario: Representan una breve descripción del comportamiento del sistema, emplea terminología del cliente sin lenguaje técnico. Se realiza una por cada característica principal del sistema y se emplean para hacer estimaciones de tiempo y para el plan de lanzamientos. Reemplazan un gran documento de requisitos y presiden la creación de las pruebas de aceptación.
  • Tarjetas CRC (Clase – Responsabilidad – Colaborador): Estas tarjetas se dividen en tres secciones que contienen la información del nombre de la clase, sus responsabilidades y sus colaboradores. En la siguiente figura se muestra cómo se distribuye esta información.

  • Task Card: Dichas tarjetas tienen como fin identificar las tareas, llevar un registro de inicio y fin, dejar constancia de quién es el encargado del trabajo, el tipo de tarea que es junto a una breve descripción y los puntos estimados que costará llevarla a cabo.



Add new comment

Plain text

  • No HTML tags allowed.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Lines and paragraphs break automatically.