http://migueljaque.com
Notas sobre Metodologías Ágiles
Estás en:   Inicio Metodologías Programación Extrema ¿Qué es la Programación Extrema?
¿Qué es la Programación Extrema? PDF Imprimir E-mail
Martes, 04 de Marzo de 2008 19:24

La Programación Extrema tuvo su origen en 1996, durante el proyecto C3 que la empresa Chrysler desarrollaba para gestionar sus nóminas. En ese año, Kent Beck fue nombrado jefe de proyecto y, junto con Ron Jeffries, puso en práctica algunas ideas "extremas" sobre el desarrollo de software.

En octubre de 1999 Kent publicó su libro "Extreme Programming Explained - Embrace Change" que constituyó el nacimiento formal de esta metodología.

 

Lo cierto es que en el año 2000 el proyecto fue cancelado. Pero la Programación Extrema ya se había dado a conocer por medio de gente como Ward Cunningham, Martin Fowler y los propios Beck y Jeffries.

Características

Sus características principales son:

Es Iterativa

El proyecto se divide en versiones y estas a su vez en ciclos. Cada versión debe aportar valor al cliente y se diseña para ser puesta en producción. En cada ciclo, se desarrollan historias de usuario que añaden incrementalmente funcionalidad al sistema.

Las historias que se incorporan son elegidas por los usuarios al inicio de cada ciclo, lo aporta una gran flexibilidad al proceso de planificación. Los usuarios eligen las historias que más valor aportan al negocio, haciendo así que se desarrollen en primer lugar los requerimientos más valiosos.

Es Compleja

La Programación Extrema propone un conjunto de técnicas (denominadas prácticas) para ser utilizadas durante el desarrollo. Pero algunas son complejas y otras de difícil implantación. Cada técnica por separado aporta escaso valor al proyecto. Es la combinación de todas ellas la que supone un cambio radical y una mejora sustancial en la flexibilidad del desarrollo.

Sin embargo, la relación entre las técnicas de Programación Extrema es compleja, complementándose y apoyándose unas a otras. Esto puede dificultar en gran medida su implantación, haciendo necesaria la implatación en bloque de grupos de técnicas e impidiendo una introducción progresiva de la metodología.

Es Informal

La Programación Extrema concede un elevado grado de libertad en la ejecución de los procesos. En lugar de establecer procesos formales de trabajo, se limita a señalar los principios y valores que deben guiar la actuación del equipo.

Con esta política se dejan muchas decisiones bajo la responsabilidad personal y se consigue una gran flexibilidad ante situaciones y requerimientos cambiantes o inesperados.

Como contrapartida, resulta difícil dirigir un proyecto con esta metodología sin una experiencia previa, pues sin ella, no existen pautas formales para la toma de decisiones.

Al mismo tiempo, es característica la ausencia de documentación. La Programación Extrema desaconseja la elaboración de cualquier tipo de documentación por considerarla fuente de errores y de información desactualizada. En su lugar, remitie cualquier consulta al código, forzando así a crear código sencillo y fácilmente entendible.

Planificación

La Programación Extrema divide el proyecto en versiones, que se entregarán al cliente, y cada versión en ciclos. No hay un número predefinido de versiones para un proyecto ni ciclos por versión, si bien se recomienda que cada ciclo tenga una duración de entre 1 y 4 semanas.

Tampoco hay diferencias metodológicas entre versiones, el trabajo que se realiza es el mismo en todas las versiones y en todos los ciclos del proyecto.

Cada versión es definida por los usuarios indicando qué Historias de Usuario quieren incluir. Las historias se priorizan de tal forma que, si no es posible completar las solicitadas para una versión, simplemente se posponen para la siguiente. La norma es nunca retrasar la fecha de entrega (ni de ciclo ni de versión), aunque esto conlleve entregar menos funcionalidad de la esperada.

Esta forma de trabajo garantiza que, en condiciones de falta de tiempo, la funcionalidad se pospone la funcionalidad menos importante para el usuario.

En cada ciclo del proyecto se realizan todas las actividades: se capturan los requerimientos de los usuarios mediante historias de usuario, se planifican las historias que entrarán en el ciclo, se desarrollan, se integran con el resto del código y se entregan al cliente. La única diferencia entre ciclo y versión es que el código entregado al finalizar una versión se pone en explotación.

Técnicas Empleadas

(En Programación Extrema, las técnicas se denominan prácticas)

La mayoría de técnicas propuestas por la Programación Extrema se centran en esta actividad. Posiblemente es la metodología que más atención presta a cómo hacer el código, a cómo programar. Otras metodologías, sobre todo las tradicionales centran su atención en las actividades de apoyo (planificación, requerimientos, gestión de configuración...) dejando abandonada la que debería ser la actividad principal.

Las técnicas propuestas para cada actividad son:

Modelado del Negocio

No se define ninguna técnica para esta actividad.

Gestión de Requerimientos

La captura de requerimientos se realiza mediante la técnica de Historias de Usuario. Además, propone la Integración del Usuario en el Equipo haciendo que usuarios y programadores trabajen juntos físicamente.

Diseño

En Programación Extrema la actividad de Diseño sigue la máxima "Lo más sencillo que pueda funcionar", centrándose en un diseño para hoy, en lugar de prever y trabajar para cubrir posibles necesidades futuras. se utilizan dos técnicas: la Metáfora del Sistema y YAGNI.

Implementación

La Programación Extrema propone varias técnicas complementarias para la implementación: Programación en Parejas, Desarrollo Dirigido por Test (TDD), Refactorización, Uso de Estándares y No Usar Horas Extra.

Tests

Los tests juegan un papel muy importante en la fase de Implementación, donde se utilizan tests unitarios y de integración. Sin embargo, para la aceptación del código por parte del cliente, la Programación Extrema sólo utiliza Tests de Aceptación si bien bajo este concepto podrían considerarse incluidos otros tipos de tests.

Despliegue

En los proyectos de Programación Extrema se realizan entregas rápidas y frecuentes. Para conseguirlo, se utiliza la técnica de Versiones Pequeñas.

Gestión de Cambios

La Programación Extrema se centra en el código, tanto como objetivo del proyecto como herramienta de documentación. Así que el código es el único elemento cuyos cambios deben estar bajo control.

En la gestión de cambios del código se utilizan dos técnicas: Integración Continua y Propiedad Compartida.

Gestión del Proyecto

La técnica de planificación, basada en la división en versiones y ciclos y la elección por parte de los usuarios de las historias que compondrán cada versión, recibe el nombre de Juego de Planificación.

Referencias

Wikipedia: Extreme Programming.

Wikipedia: Extreme Programming Practices.

extremeprogramming.org: A Gentle Introduction.

Extreme Programming Explained - Embrace Change - Kent Beck, Ed. Addison Wesley 1999.

Actualizado ( Miércoles, 02 de Abril de 2008 13:00 )
 

Apoyo a la Cultura Libre: Si eres legal ¡¡COMPARTE!!