El desarrollo ágil o la programación extrema (XP), permiten a los sistemas cambiar conforme se desarrollan.
Las metodologías ágiles surgen en el nuevo milenio como resultado de algo que se venía gestando hacia fines de la década del 90 y que se concretó en el año 2001. En este año se reunieron algunos representantes de los modelos ágiles y dieron origen a lo que se denomina el manifiesto ágil.
“Estamos descubriendo formas mejores de desarrollar software tanto por nuestra propia experiencia como ayudando a terceros. A través de este trabajo hemos aprendido a valorar:
- Individuos e interacciones sobre procesos y herramientas.
- Software funcionando sobre documentación extensiva.
- Colaboración con el cliente sobre negociación contractual.
- Respuesta ante el cambio sobre seguir un plan. Esto es, aunque valoramos los elementos de la derecha, valoramos más los de la izquierda.”
Las metodologías ágiles, como su nombre lo indica, buscan brindar flexibilidad al proceso de desarrollo de software. De esta forma, intentan lograr un punto que sea útil entre las restricciones de los modelos orientados a los planes y la libertad absoluta.
El enfoque ágil requiere frecuentes reuniones cara a cara con los desarrolladores de sistemas y usuarios mientras modifican, afinan y ponen a prueba cómo el sistema satisface las necesidades de los usuarios y cuáles son sus capacidades.
La metodología ágil es una metodología de desarrollo de software que se basa en valores, principios y prácticas básicas. Los cuatro valores son comunicación, simpleza, retroalimentación y valentía.
La programación extrema (XP) usa pares de programadores que trabajan juntos para diseñar, poner a prueba y codificar partes de los sistemas que se desarrollan.
El modelo de desarrollo de las metodologías ágiles es evolutivo, iterativo y trabaja con timeboxed, que refiere a que las iteraciones poseen tiempos fijos.
La planificación es adaptativa y los entregables evolutivos. Esto permite brindar valor al negocio en forma rápida y adaptarse fácilmente a los cambios.
Se observan cinco etapas: exploración, planeación, iteraciones para la liberación de la primera versión, puesta en producción y mantenimiento.
EXPLORACIÓN
El analista explorará su entorno para evaluar su convicción de que puede y debe lidiar con el problema mediante el desarrollo ágil, ensamblará el equipo y evaluará las habilidades de sus miembros.
Esta etapa puede requerir desde unas cuantas semanas (si conoce de antemano a los miembros de su equipo y la tecnología que va a usar) hasta unos cuantos meses (si todo es nuevo). También tendrá que examinar activamente las tecnologías potenciales necesarias para crear el sistema. Durante esta etapa debe practicar con la estimación del tiempo necesario para realizar varias tareas. En la exploración, los clientes también experimentan escribiendo historias de los usuarios. El punto es hacer que el cliente refine una historia con el detalle suficiente como para que el analista pueda estimar en forma competente la cantidad de tiempo necesaria para crear la solución y convertirla en el sistema que está planeando.
PLANEACIÓN
Esta etapa tal vez sólo requiera de unos cuantos días. En esta el analista y sus clientes se ponen de acuerdo en una fecha, que puede ser cualquier día a partir de dos meses hasta medio año después de la fecha en curso, para entregar soluciones a sus problemas empresariales más estresantes (se concentrará en el conjunto más pequeño y valioso de historias). Si sus actividades de exploración fueron suficientes, esta etapa debe ser muy corta.
Todo el proceso de planeación ágil se ha caracterizado mediante la idea de un juego de planeación según la idea de Beck. El juego de planeación establece reglas que pueden ayudar a formular la relación del equipo de desarrollo ágil con sus clientes empresariales. Aunque las reglas forman una idea de cómo quiere usted que actúe cada una de las partes durante el desarrollo, no están diseñadas para sustituir una relación. Son la base para crear y mantener una relación.
Entonces, utilizamos la metáfora de un juego. Para ello hablaremos en términos del objetivo del juego, la estrategia a perseguir, las piezas a mover y los jugadores involucrados. El objetivo del juego es maximizar el valor del sistema producido por el equipo ágil. Para poder averiguar el valor, se debe deducir los costos de desarrollo y el tiempo, los gastos y la incertidumbre requeridos para que el proyecto de desarrollo pueda continuar.
La estrategia que persigue el equipo de desarrollo ágil siempre tiene una incertidumbre limitante (minimización del riesgo). Para hacer esto, el equipo diseña la solución más simple posible, pone el sistema en producción tan pronto como sea posible, obtiene retroalimentación del cliente empresarial sobre lo que está funcionando y adapta su diseño a partir de ahí. Las tarjetas de historias se convierten en las piezas del juego de planeación que describen con brevedad la tarea, proveen anotaciones y un área para rastrear las tareas.
Hay dos jugadores principales en el juego de planeación: el equipo de desarrollo y el cliente empresarial. No siempre es fácil decidir qué grupo empresarial en particular será el cliente empresarial, ya que el proceso ágil es un rol excepcionalmente exigente para el cliente. Los clientes deciden qué debe abordar primero el equipo de desarrollo. Sus decisiones establecerán prioridades y revisarán la funcionalidad durante todo el proceso.
ITERACIONES PARA LA LIBERACIÓN DE LA PRIMERA VERSIÓN
La tercera etapa en el proceso de desarrollo ágil está compuesta por las iteraciones para la liberación de la primera versión. Por lo general éstas son iteraciones (ciclos de prueba, retroalimentación y modificación) de aproximadamente tres semanas de duración. El analista se esforzará en bosquejar toda la arquitectura del sistema, aun y cuando sólo esté en forma de bosquejo o esqueleto.
Uno de los objetivos es realizar pruebas funcionales escritas por el cliente al final de cada iteración. Durante la etapa de las iteraciones también debe preguntarse si hay que alterar el itinerario de trabajo o si está lidiando con demasiadas historias. Convierta cada iteración exitosa en pequeños rituales e involucre en ellos tanto a los clientes como a los desarrolladores. Celebre siempre su progreso aunque éste sea pequeño, debido a que esto forma parte de la cultura de motivar a todos a que trabajen lo más duro que puedan en el proyecto.
PUESTA EN PRODUCCIÓN
Durante esta fase se llevan a cabo varias actividades. El ciclo de retroalimentación se agiliza de manera que en vez de recibir retroalimentación por una iteración cada tres semanas, las revisiones de software se entregan en una semana. Puede instituir sesiones informativas diarias para que todos sepan lo que los demás están haciendo. El producto se libera durante esta fase, pero se puede mejorar si se le agregan otras características. Poner un sistema en producción es un suceso emocionante; disponga de tiempo para celebrar con sus compañeros de equipo la ocasión. Uno de los lemas de la metodología ágil con el que todos estamos sinceramente de acuerdo es que ¡desarrollar sistemas debe ser divertido!
MANTENIMIENTO
Una vez liberado el sistema, debe seguir funcionando sin problemas. Es posible agregar características, considerar las sugerencias más riesgosas de los clientes y a rotar los miembros del equipo.