Extreme Programming
Por Miguel Armas [ acerca del autor ]
Extreme Programming (XP) surgió a finales de los 90s, cuando la industria del software estaba bajo dos grandes influencias, el cambio de paradigma de programación estructurada a programación orientada a objetos, y el boom de internet enfatizando speed-to-market y el crecimiento de las organizaciones como factores de competitividad para los negocios.
El objetivo de XP es reducir el costo del cambio, usando principios, valores y prácticas básicas, por medio de las cuales un proyecto debe ser mas flexible al cambio.
Los objetivos que XP plantea en detalle son:
- Un intento de reconciliar humanidad y productividad
- Un mecanismo de cambio social
- Un camino a la mejora
- Un estilo de desarrollo
- Una disciplina de desarrollo de software
XP mejora un proyecto en cuatro formas esenciales: comunicación, simplicidad, retroalimentación y coraje, las cuales se establecen como valores.
Valores XP
Comunicación: La comunicación de los requerimientos de un proyecto a los desarrolladores en un proyecto bajo una metodología formal se hace por medio de la documentación, en XP el objetivo es dar a los desarrolladores una visión compartida del sistema, alineada con la de los usuarios del sistema, favoreciendo diseños simples, metáforas comunes, la colaboración entre usuarios y programadores, comunicación verbal frecuente y retroalimentación.
Simplicidad: XP fomenta el iniciar con la solución mas simple y desarrollar a partir de esa versiones mejores. La diferencia con las metodologías convencionales es diseñar y codificar para las necesidades actuales en lugar de las futuras. XP plantea que el riesgo de codificar sin considerar cambios futuros compensa el trabajo de invertir en posibles futuros requerimientos que podrían cambiar antes de ser relevantes.
Retroalimentación: La retroalimentación se da en varios niveles.
Retroalimentación del sistema al ejecutar periódicamente pruebas unitarias e integrales los programadores conocerán el estado del sistema después de implementar cambios
Las pruebas de aceptación elaboradas por el cliente y pruebas, realizadas cada dos o tres semanas permiten al cliente retroalimentar el desarrollo.
Cuando el cliente tiene nuevos requerimientos, la retroalimentación del equipo de trabajo se da al entregar una estimación del tiempo que estos implican.
Coraje: El coraje es un valor que se aplica a varios aspectos, al diseñar y codificar para las necesidades actuales en lugar de las futuras, al alentar a los programadores a mejorar el código sin afectar el comportamiento externo (refactoring), al reconocer cuando alguna parte del código ya no sirve, al ser persistente al buscar la solución de un problema.
Respeto: En XP los miembros del equipo de trabajo deben respetarse entre si, para nunca incorporar cambios que hagan fallar las pruebas o retrasen el trabajo de otra persona. Una forma de respeto al trabajo propio es siempre buscar la mas alta calidad y las mejores soluciones al desarrollar el producto. Nadie en el equipo de trabajo debe sentirse despreciado o ignorado ya que esto mejora la motivación de todos para conseguir los objetivos del proyecto.
Principios de XP
Los principios planteados se basan en los valores establecidos para ayudar a la toma de decisiones en el proyecto. Los principios son mas concretos que los valores y mas fáciles de seguir en situaciones practicas.
La retroalimentación realizada rápidamente es mas útil, el tiempo entre una acción y su retroalimentación es critico para aprender y realizar cambios. El contacto constante con el cliente y su monitoreo en el sistema en desarrollo le permiten guiar el desarrollo de acuerdo a sus necesidades. Las pruebas unitarias indican rápidamente si los cambios realizados funcionan correctamente.
Suponer la simplicidad es tratar cada problema como si su solución fuera extremadamente simple, XP opta por cambios incrementales en lugar de muchas modificaciones al mismo tiempo.
Adoptar el cambio es aceptarlo y planear la solución de nuevos requerimientos para una nueva iteración, aun si estos han cambiado dramáticamente.
Actividades
XP considera cuatro actividades básicas en un proceso de desarrollo
Codificar
XP argumenta que lo mas importante para el desarrollo del producto de software es codificar, actividad que definen en un concepto mas amplio que la definición tradicional. Codificar en XP es hacer diagramas que generaran código, scripts para una aplicación web o código para una aplicación que necesita compilarse. Cuando se presentan varias alternativas a un problema, deben codificarse todas para elegir la mejor con pruebas automatizadas. Comunicar soluciones codificándolas es mas claro y conciso ya que no esta sujeto a interpretaciones.
Probar
No se puede asegurar que algo funcione a menos que se pruebe, las pruebas unitarias automatizadas aseguran que el desarrollador elimine esta incertidumbre si todas las pruebas son satisfactorias. Las pruebas de aceptación aseguran que el cliente tiene el producto que necesita de acuerdo a los requerimientos planteados.
Escuchar
Los programadores no necesariamente conocen el negocio del cual el sistema es una solución, la funcionalidad de este es definida por los expertos del negocio, y para entender como debe ser planteada y construida la solución, los programadores deben escuchar a los expertos del negocio.
Diseñar
En la practica, restringirse solo a codificar, probar y escuchar no basta para crear una buena solución, un buen diseño ayuda a evitar un sistema con muchas dependencias, complejo y difícil de mantener, facilitando de esta forma los cambios incrementales.
Practicas
XP considera 12 practicas agrupadas en cuatro áreas tomadas de las mejores practicas de la ingeniería de software.
Retroalimentación en detalle
Programación en pares
El juego de planeación
Desarrollo dirigido por las pruebas:
Todo el Equipo:
Proceso Continuo
Integración Continua
Diseño mejorado
Liberaciones pequeñas
Comprensión compartida
Estándares de codificación
Responsabilidad colectiva del código
Diseño simple
Sistema de metáforas
Bienestar del programador
Ritmo sustentable
Un diagrama dinámico mas detallado de las actividades de XP
se puede consultar en http://www.extremeprogramming.org/map/project.html
Temas relacionados:
Curso de Análisis y Diseño Orientado a Objetos con UML
Curso de administración de proyectos con CMMI 2, El Proceso Unificado y UML