Tabla de contenidos
El desarrollo de software ágil es un concepto usado en el desarrollo de software para describir las metodologías de desarrollo incrementales (Cohen, Lindvall & Costa, 2003). Es una alternativa en la gestión tradicional de proyectos TI, donde se hace hincapié en el empoderamiento de las personas para colaborar y tomar decisiones en equipo, además potencia la planificación continua, pruebas permanentes y la integración conjunta del código y los despliegues.
Como parte de este modelo, se han agrupado varias metodologías de desarrollo, las cuales se basan en el Manifiesto Ágil. Este es un documento elaborado en febrero de 2001 por líderes y expertos de la industria del software, que está basado en la experiencia de lo que funciona y no funciona en dicho campo de la ingeniería.
Las técnicas ágiles varían en prácticas y énfasis, pero comparten características comunes, incluyendo el desarrollo iterativo y un enfoque en la interacción, la comunicación y la reducción de artefactos intermedios que consumen muchos recursos. Desarrollar en iteraciones permite al equipo adaptarse rápidamente a las necesidades cambiantes. Trabajando en instalaciones cercanas y centrándose en la comunicación, permite que los equipos puedan tomar decisiones y actuar sobre ellas de inmediato, en lugar de esperar respuestas de otras instancias posteriores.
La reducción de los artefactos intermedios que no agregan valor a la entrega final representa más recursos, que se pueden dedicar al desarrollo del producto en sí y su terminación oportuna.
Recomendaciones de una metodología de software ágil
Ahora, aplicado al entorno competitivo y real para la ejecución de un proyecto bajo metodologías ágiles, se deben contemplar estas recomendaciones:
- Es imperativa la participación activa de los usuarios.
- El equipo de desarrollo debe tener la facultad para tomar decisiones.
- Los requisitos evolucionan, pero la escala de tiempo y fechas de entregas son fijas (control del alcance).
- Capturar los requisitos a un alto nivel, ligero y visual (prototipos).
- Desarrollar versiones pequeñas, incrementales e itere sobre ellas.
- Enfocarse en la entrega frecuente de productos.
- Completar cada funcionalidad antes de pasar a la siguiente.
- Aplicar la regla 80/20, trabajar funcionalidades principales – principio de Pareto.
- Las pruebas se integran en todo el ciclo de vida del proyecto – prueba temprano y con frecuencia.
- Un enfoque de colaboración y cooperación entre todas las partes interesadas, es esencial.
Compendio de Metodologías ágiles
Actualmente se conocen diferentes metodologías relacionadas con el agilismo, como una respuesta a la creciente necesidad de la industria por entregar productos de calidad en el menor tiempo y costo posible.
Entre ellas, se pueden mencionar:
Extreme programming (XP), Scrum, Lean, Kanban, Feature Driven Development (FDD), Agile Unified Process (AUP), Agile Modeling, Crystal Clear Methods, Dynamic Systems Development Methods (DSDM). A continuación, se detallan las más relevantes y usadas:
Extreme programming (XP)
Metodología que se centra en el desarrollo, en lugar de aspectos de gestión de proyectos. XP fue diseñada para que las organizaciones tuvieran libertad de adoptar la totalidad o parte de la metodología.
Los proyectos XP comienzan con una fase de planificación de entregables “release plan”, seguido de varias iteraciones, cada una de las cuales termina con pruebas de aceptación del usuario. Cuando el producto tiene suficientes características para satisfacer a los usuarios, el equipo termina la iteración y libera el software.
Los usuarios escriben «historias de usuario» – user stories – para describir la necesidad que el software debe cumplir. Dichas historias ayudan al equipo a estimar el tiempo y los recursos necesarios para construir el entregable y para definir las pruebas de aceptación. El usuario o su representante hacen parte del equipo de XP, de tal forma que puede agregar detalles sobre los requisitos, mientras el software está siendo construido en sus iteraciones.
Para crear un plan de despliegue, el equipo divide las tareas de desarrollo en iteraciones, cada una de ellas con su propio plan. Al final de una iteración, los usuarios realizan pruebas de aceptación, mapeando contra las historias de usuario. Si encuentran errores, corregir los fallos se convierte en una actividad para la siguiente iteración.
Se caracteriza también por la programación por pares y la integración continua (diaria) de código fuente en una línea base del proyecto.
Scrum
Fue propuesta por Ken Schwaber y Jeff Sutherland en 1995. Actualmente es la metodología ágil más usada y extendida en el mundo. Surge de las iniciativas de prototipado rápido, bajo un entorno en que los requisitos se encuentran incompletos en el inicio y son cambiantes durante el desarrollo, A diferencia de XP, la metodología Scrum incluye tanto los procesos de gestión como de desarrollo.
En Scrum se realizan entregas parciales y regulares del producto final, priorizadas por el beneficio que aportan al solicitante del proyecto. Por ello, Scrum está especialmente pensado para proyectos en entornos complejos, donde se necesita obtener resultados pronto, donde los requisitos son cambiantes o poco definidos, donde la innovación, la competitividad, la flexibilidad y la productividad son fundamentales.
Scrum también se utiliza para resolver situaciones en las que no se está entregando al cliente lo que necesita, cuando las entregas se alargan demasiado, los costos se disparan o la calidad es inaceptable; cuando se necesita capacidad de reacción ante la competencia, cuando la rotación de los equipos es alta, cuando es necesario identificar y solucionar ineficiencias sistemáticamente o cuando se quiere trabajar utilizando un proceso especializado en el desarrollo de productos.
Se compone de: planeación de la iteración, ejecución y cierre de la iteración (demostración y retrospectiva)
Lean Development
Según esta metodología, la perfección se persigue a través de la reducción de las actividades sin valor agregado, pero también a través de perfeccionar el flujo y eliminado la sobrecarga.
La definición de Lean aplicada a software es un reto, porque no hay ningún método o proceso específico asociado. Lean no es comparable con el resto de metodologías explicadas en este artículo. Podría llamarse Lean a un proceso del ciclo de vida de desarrollo de software o a un proceso de administración de proyectos, sólo si se comprueba que cumple los valores y principios establecidos para dicho concepto. Para implementarlo, debe crear o ajustar su propio proceso de desarrollo de software, comprendiendo los principios y adoptando los valores básicos de Lean.
Kanban
La metodología se enfoca en mejorar la visibilidad del flujo de trabajo, limitar el trabajo en curso de acuerdo con la capacidad disponible y medir el tiempo de ciclo de vida de una actividad.
Para ello se divide el trabajo en bloques, cada actividad se clasifica dentro de alguno de los bloques y se ubica en un tablero general, el cual se conoce como tablero Kanban. Para cada bloque se definen los límites de trabajo en progreso que van a ser los umbrales para la ejecución de actividades o acciones en cada etapa definida. Usualmente los bloques se definen como trabajo pendiente, en progreso y completado. Las actividades se incorporan al flujo de trabajo de manera constante sin restricción alguna, salvo cuando se sobrepase el límite o umbral, para lo cual se miden en tiempo real los cuellos de botella y el lead time – tiempo de una actividad para ser completada.
En Kanban, los equipos multi-funcionales son opcionales, y el tablero no necesita estar en manos de un equipo específico. Un tablero está relacionado con un flujo de trabajo, no necesariamente con un equipo o proyecto.
Cultura organizacional y los métodos ágiles
En el contexto actual, las organizaciones requieran cambios y evolucionar rápidamente con sus sistemas de información y en sus necesidades tecnológicas. El principal problema para el desarrollo de software al interior de una compañía es la abundancia de requerimientos y la necesidad de priorizar su atención. Bajo este panorama, se hace relevante la adopción de metodologías ágiles, razón por la cual es importante analizar la relación e impacto entre éstas y la cultura organizacional.
Varios trabajos sugieren que podría haber dificultades para separar la cultura organizacional del uso del método de software ágil y que podría haber interacción entre el contexto cultural y en el paradigma ágil. Algunos autores hacen hincapié en la flexibilidad cultural de los métodos ágiles teniendo en cuenta los resultados o experiencias previas en organizaciones muy diversas.
Tomando como referencia conceptual el modelo de valores en competencia, conocido en inglés como “Competing values model – CVM”, se trata de entender la relación entre la adopción de metodologías ágiles y la cultura organizacional de una manera transversal. El modelo está basado en dos ejes:
- Grado de susceptibilidad al cambio
- Enfoque interno/externo
A mayor susceptibilidad al cambio se enfatiza en la flexibilidad y la espontaneidad, mientras que la estabilidad se centra en el control, la continuidad y el orden. El enfoque interno subraya la integración y el mantenimiento del sistema socio-técnico, mientras que el enfoque externo enfatiza en la competencia y la interacción con el entorno organizacional. A continuación, se esquematiza en el gráfico:

Como resultado de la combinación de estos dos ejes, se identifican cuatro tipos de orientación cultural a saber: orientación jerárquica, cultura de grupo, cultura de mercado o racional, y cultura en desarrollo.
De acuerdo con estudios recientes se encuentra que el paradigma de software ágil por su naturaleza y estructura se ajusta más fácilmente a una cultura organizacional en desarrollo, pero también es compatible con culturas racionales o de grupo, compartiendo algunos principios de cada una de ellas.
Adaptado por la división consultoría de EvaluandoSoftware.com