El desarrollo ágil de software, es una metodología de gestión adaptativa, que te permite llevar a cabo proyectos de desarrollo de software, adaptándote a los cambios y evolucionando en forma conjunta con el software.
Se intenta evitar la burocracia de las metodologías tradicionales enfocándose en la gente y los resultados.
Está basado en el desarrollo iterativo e incremental, donde los requisitos y soluciones evolucionan mediante la colaboración de grupos auto organizados y multidisciplinarios.
Se enfatizan las comunicaciones cara a cara en vez de la documentación exhaustiva, dando mayor valor al individuo, a la colaboración con el cliente y al desarrollo incremental del software con iteraciones muy cortas.
Este enfoque está mostrando su efectividad en proyectos con requisitos muy cambiantes y cuando se exige reducir drásticamente los tiempos de desarrollo pero manteniendo una alta calidad.
Las metodologías ágiles, sin duda, están revolucionando la manera de producir software y en Bravent podemos decir que funciona.
Los equipos de software quieren trabajar con metodologías ágiles porque necesitan un proceso que pueda responder de manera eficiente a los cambios en los productos en desarrollo. Nosotros utilizamos Scrum en la mayoría de nuestros proyectos y junto con la herramienta TFS de Microsoft encontramos la sintonía perfecta para realizar nuestros desarrollos.
¿Cuáles son los beneficios que obtenemos?
Estos son los principales beneficios que podemos obtener al utilizar una metodología ágil:
- Satisfacción del cliente a través de la entrega temprana y continua de software de valor.
- Proximidad del cliente, constante iteración con él, es parte del equipo y está presente en la toma de decisiones. Alineamiento entre el cliente y el equipo de desarrollo.
- Gestión regular de las expectativas del cliente y basada en resultados tangibles.
- Resultados anticipados (time to market).
- Flexibilidad y adaptación respecto a las necesidades del cliente, cambios en el mercado, etc.
- Gestión sistemática del Retorno de Inversión (ROI)
- Capacidad para abordar los requisitos cambiantes, incluso si llegan tarde al desarrollo. Los procesos ágiles se doblegan al cambio como ventaja competitiva para el cliente. Permite la mejora continua.
- Equipo implicado y motivado ya que pueden usar su creatividad para resolver problemas y pueden decidir organizar su trabajo. El equipo tiene libertad para la toma de decisiones.
Beneficios de las metodologías ágiles
- Las mejores arquitecturas, requisitos y diseños emergen de equipos que se auto-organizan. Aplana la jerarquía organizacional.
- En intervalos regulares, el equipo reflexiona sobre la forma de ser más efectivo y ajusta su conducta en consecuencia.
- Transparencia y coordinación en el equipo. Todos saben qué tienen que hacer y qué hace cada uno.
- Auto-superación: de forma periódica se evalúa el producto que se está desarrollando.
- Auto-enriquecimiento: transferencia del conocimiento.
- Establecimientos de puntos de control para realizar un seguimiento adecuado sin limitar la libertad y creatividad del equipo.
- Priorización de requerimientos de acuerdo a su valor
- Se proporciona la mínima funcionalidad, de forma que solo se desarrolla lo necesario. Evita escribir código innecesario. Prevalece la simplicidad, lo que conlleva la eliminación del trabajo innecesario
- Versionado rápido
- Calidad del producto obtenido. El software que funciona es la principal medida del progreso.
- Continuas Pruebas durante todo el desarrollo, ya que se realizan testeos por cada iteración de no más de 1 mes de trabajo.
- Mejora la productividad y el control del tiempo requerido para realizar el proyecto.
- Permite dividir el trabajo en módulos minimizando los fallos y el coste.
- Si surge cualquier error, se sabe rápido, disminuyendo riesgos. Mitigación sistemática de los riesgos del proyecto mediante iteraciones fijas
- Permite solucionar rápidamente los problemas que impiden que los equipos progresen.
Metodologías Ágiles
Estas son algunas de las metodologías ágiles de desarrollo de software:
- Adaptive Software Development (ASD).
- Agile Unified Process (AUP).
- Crystal Clear.
- Essential Unified Process (EssUP).
- Feature Driven Development (FDD).
- Lean Software Development (LSD).
- Kanban.
- Open Unified Process (OpenUP).
- Programación Extrema (XP).
- Scrum.
- G300.
- Dynamic Systems Development Method6 (DSDM) [17].
Enlace de interés: Manifiesto ágil http://agilemanifesto.org/iso/es/