Fuente matriz de la información "Extreme Programming Explained: Embrace Change (1999) - Kent Beck"
![](https://static.wixstatic.com/media/899b46e8401d4aedb3421b319e2c3c62.jpg/v1/fill/w_980,h_713,al_c,q_85,usm_0.66_1.00_0.01,enc_auto/899b46e8401d4aedb3421b319e2c3c62.jpg)
Xp es una metodología ágil centrada en potenciar las relaciones interpersonales como clave para el éxito en desarrollo de software, promoviendo el trabajo en equipo, preocupándose por el aprendizaje de los desarrolladores, y propiciando un buen clima de trabajo. XP se basa en realimentación continua entre el cliente y el equipo de desarrollo, comunicación fluida entre todos los participantes, simplicidad en las soluciones implementadas y coraje para enfrentar los cambios. XP se define como especialmente adecuada para proyectos con requisitos imprecisos y muy cambiantes, y donde existe un alto riesgo técnico.
La programación extrema fue formulada por Kent Beck, autor del primer libro sobre la materia, Extreme ProgrammingExplained: Embrace Change (1999). Es el más destacado de los procesos ágiles de desarrollo de software.
En Ingeniería del Software cubre la etapa de DESARROLLO. Los programadores creen que ser capaz de adaptarse a los cambios de requisitos en cualquier punto de la vida del proyecto es una aproximación mejor y 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.
Clasificación de la metodología: Desarrollo iterativo e incremental: Pequeñas mejoras, unas tras otras.
Objetivos:
• Establecer las mejores prácticas de Ingeniería de Software en los desarrollo de proyectos.
• Satisfacción del cliente.
• Mejorar la productividad de los proyectos.
• Potenciar el trabajo en grupo.
• Garantizar la Calidad del Software desarrollando, haciendo que este supere las expectativas del cliente.
• Minimizar el riesgo actuando sobre las variables del proyecto: Coste, Tiempo, Calidad, Alcance.
Fases:
Exploración: Es la fase en la que se define el alcance general del proyecto. En esta fase, el cliente define lo que necesita mediante la redacción de sencillas “historias de usuarios”. Los programadores estiman los tiempos de desarrollo en base a esta información.
Planificación: La planificación es una fase corta, en la que el cliente, los gerentes y el grupo de desarrolladores acuerdan el orden en que deberán implementarse las historias de usuario, y, asociadas a éstas, las entregas. Típicamente esta fase consiste en una o varias reuniones grupales de planificación. El resultado de esta fase es un Plan de Entregas.
Iteraciones: Esta es la fase principal en el ciclo de desarrollo de XP. Las funcionalidades son desarrolladas en esta fase, generando al final de cada una un entregable funcional que implementa las historias de usuario asignadas a la iteración. Como las historias de usuario no tienen suficiente detalle como para permitir su análisis y desarrollo, al principio de cada iteración se realizan las tareas necesarias de análisis, recabando con el cliente todos los datos que sean necesarios.Las iteraciones son también utilizadas para medir el progreso del proyecto. Una iteración terminada sin errores es una medida clara de avance.
Puesta en producción: Si bien al final de cada iteración se entregan módulos funcionales y sin errores, puede ser deseable por parte del cliente no poner el sistema en producción hasta tanto no se tenga la funcionalidad completa. En esta fase no se realizan más desarrollos funcionales, pero pueden ser necesarias tareas de ajuste.
Roles:
Programador: es quien escribe las pruebas unitarias y produce el código del sistema. Debe existir una comunicación y coordinación adecuada entre los programadores y otros miembros del equipo.
Cliente: escribe las historias de usuario y las pruebas funcionales para validar su implementación. Además, asigna la prioridad a las historias de usuario y decide cuáles se implementan en cada iteración centrándose en aportar mayor valor al negocio. El cliente es sólo uno dentro del proyecto pero puede corresponder a un interlocutor que está representando a varias personas que se verán afectadas por el sistema.
Encargado de pruebas (Tester): El encargado de pruebas ayuda al cliente a escribir las pruebas funcionales. Ejecuta las pruebas regularmente, difunde los resultados en el equipo y es responsable de las herramientas de soporte para pruebas.
Encargado de seguimiento (Tracker): El encargado de seguimiento proporciona realimentación al equipo en el proceso XP. Su responsabilidad es verificar el grado de acierto entre las estimaciones realizadas y el tiempo real dedicado, comunicando los resultados para mejorar futuras estimaciones.
Entrenador (Coach): Es responsable del proceso global. Es necesario que conozca a fondo el proceso XP para proveer guías a los miembros del equipo de forma que se apliquen las prácticas XP y se siga el proceso correctamente.
Consultor: Es un miembro externo del equipo con un conocimiento específico en algún tema necesario para el proyecto. Guía al equipo para resolver un problema específico.
Gestor (Big boss): Es el vínculo entre clientes y programadores, ayuda a que el equipo trabaje efectivamente creando las condiciones adecuadas. Su labor esencial es de coordinación.
Ventajas:
Da lugar a una programación sumamente organizada.
Ocasiona eficiencias en el proceso de planificación y pruebas.
Cuenta con una tasa de errores muy pequeña.
Propicia la satisfacción del programador.
Fomenta la comunicación entre los clientes y los desarrolladores.
Facilita los cambios.
Permite ahorar mucho tiempo y dinero.
Puede ser aplicada a cualquier lenguaje de programación.
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.
Desventajas:
Es recomendable emplearla solo en proyectos a corto plazo.
En caso de fallar, las comisiones son muy altas.
Requiere de un rígido ajuste a los principios de XP.
Puede no siempre ser más fácil que el desarrollo tradicional.
Nuestra conclusión: Extreme Programming es una disciplina para el desarrollo de software basada en los valores de simpleza, comunicación, feedback y coraje. Funciona formando un equipo completo y con todas las personas juntas en presencia de prácticas simples, con suficiente feedback para permitirle al equipo ver en dónde están y para ajsutar las prácticas a su situación única.
Yorumlar