¿Qué es la metodología ágil?

Descripción general del desarrollo de software ágil y modelos ágiles

Agile Methodology 1 1

Visión General de Metodología Ágil

Las metodologías ágiles son enfoques para el desarrollo de productos que se ajustan a los valores y principios descritos en el Manifiesto Ágil para el desarrollo de software. Las metodologías ágiles pretenden ofrecer el producto adecuado, con una entrega incremental y frecuente de pequeños trozos de funcionalidad, a través de pequeños equipos multifuncionales autoorganizados, lo que permite la retroalimentación frecuente del cliente y la corrección del curso según sea necesario.

Con ello, Agile pretende corregir los problemas que plantean los enfoques tradicionales en «cascada», que consisten en la entrega de grandes productos en largos periodos de tiempo, durante los cuales los requisitos de los clientes cambian con frecuencia, lo que hace que se entreguen productos equivocados.

Aplicación de la Metodología ágil

Durante la mayor parte de su breve historia (since 1999-2000), “Ágil” ha sido predominantemente un enfoque para proyectos de desarrollo de software y aplicaciones informáticas.  Desde entonces, sin embargo, se extiende también a otros campos, especialmente en las industrias del conocimiento y los servicios.

La agilidad consiste en responder al mercado y al cliente respondiendo rápidamente a sus necesidades y demandas y siendo capaces de cambiar de dirección según lo exija la situación.  Tanto si se trata de TI como de desarrollo de software o cualquier otro campo en el que haya un flujo de trabajo y una entrega de productos de trabajo, los métodos ágiles son aplicables.  Los métodos ágiles intentan maximizar la entrega de valor al cliente y minimizar el riesgo de crear productos que no satisfagan -o dejen de hacerlo- las necesidades del mercado o del cliente.

Para ello, dividen el tradicionalmente largo ciclo de entrega (típico de los «métodos en cascada» heredados) en periodos más cortos, llamados sprints o iteraciones. La iteración proporciona la cadencia para la entrega de un producto en funcionamiento al cliente, la obtención de retroalimentación y la realización de cambios basados en la retroalimentación.

Así, los métodos ágiles han tratado de reducir los plazos de entrega (entregar pronto, entregar a menudo) para garantizar que lleguen al mercado trozos verticales más pequeños del producto, lo que permite a los clientes dar su opinión antes y asegurarse de que el producto que finalmente reciben satisface sus necesidades.

Agile se ha convertido en un término general para una variedad de métodos y procesos de planificación, gestión y técnicos para gestionar proyectos, desarrollar software y otros productos y servicios de forma iterativa. Entre estos métodos se encuentran Scrum, que es, con mucho, el método más extendido y popular para el software, XP (eXtreme Programming o Paired Programming) y, más recientemente, Kanban.

Los métodos ágiles también incluyen prácticas técnicas -la mayoría de las cuales se engloban bajo el término DevOps- que permiten la automatización de pruebas, la integración continua/entrega continua/despliegue (CI/CD) y, en general, un ciclo de entrega cada vez más reducido para el software y otros productos y servicios.

El uso de Ágil como enfoque de gestión de proyectos ha aumentado de forma espectacular en los últimos años. Gartner predice que los métodos de desarrollo ágil se utilizarán pronto en el 80% de los proyectos de desarrollo de software.

¿Qué es el Manifiesto Ágil?

El Manifiesto Ágil es una declaración de valores y principios fundamentales para el desarrollo de software. El Manifiesto Ágil para el desarrollo de software se creó en 2001 y es una declaración de 4 reglas vitales y 12principios que sirven de guía para las personas en el desarrollo ágil de software. Fue creado por 17 profesionales que ya practicaban métodos ágiles como XP, DSDM, SCRUM, FDD, etc, reunidos en las montañas nevadas del estado norteamericano de Utah, convocados por Kent Beck.

Source: LynneCazaly

4 Valores centrales del Manifiesto Ágil

Individuos e interacciones por encima de procesos y herramientas– El primer valor hace hincapié en el trabajo en equipo y la comunicación. Debemos entender que el desarrollo de software es una actividad humana y que la calidad de la interacción entre las personas es vital. Las herramientas son una parte importante del desarrollo de software, pero hacer un gran software depende mucho más del trabajo en equipo, independientemente de las herramientas que éste utilice.

El software de trabajo por encima de la documentación exhaustiva – La documentación tiene su lugar y puede ser un gran recurso o referencia para los usuarios y compañeros de trabajo por igual. Sin embargo, el objetivo principal del desarrollo de software es desarrollar un software que ofrezca beneficios empresariales, más que una documentación exhaustiva.

Colaboración con el cliente por encima de la negociación de contratos – Los equipos de desarrollo deben trabajar estrechamente y comunicarse con sus clientes con frecuencia. Al escuchar y recibir comentarios, los equipos comprenderán lo que realmente quieren todas las partes interesadas.

Responder a los cambios en lugar de seguir un plan: los cambios son una realidad en el desarrollo de software, una realidad que su proceso de software debe reflejar. Un plan de proyecto debe ser lo suficientemente flexible como para cambiar, según lo exija la situación.

12 principios del Manifiesto Ágil

  • Nuestra máxima prioridad es satisfacer al cliente mediante la entrega temprana y continua de software valioso.
  • Aceptamos los cambios en los requisitos, incluso en las últimas fases del desarrollo. Los procesos ágiles aprovechan el cambio para la ventaja competitiva del cliente.
  • Entregar software funcional con frecuencia, desde un par de semanas hasta un par de meses, con preferencia por la escala de tiempo más corta.
  • Los empresarios y los desarrolladores deben trabajar juntos a diario durante todo el proyecto.
  • Construir proyectos en torno a personas motivadas. Dales el entorno y el apoyo que necesitan, y confía en ellos para que hagan el trabajo.
  • El método más eficiente y eficaz para transmitir información a un equipo de desarrollo y dentro de él es la conversación cara a cara.
  • El software en funcionamiento es la principal medida de progreso.
  • Los procesos ágiles promueven el desarrollo sostenible. Los patrocinadores, los desarrolladores y los usuarios deben ser capaces de mantener un ritmo constante indefinidamente.
  • La atención continua a la excelencia técnica y al buen diseño mejora la agilidad.
  • ● La simplicidad -el arte de maximizar la cantidad de trabajo no realizado- es esencial.
  • Las mejores arquitecturas, requisitos y diseños surgen de equipos autoorganizados.
  • A intervalos regulares, el equipo reflexiona sobre cómo ser más eficaz, y luego afina y ajusta su comportamiento en consecuencia.

Principales metodologías ágiles

Ágil es un término que engloba varios métodos y prácticas. Veamos algunas de las metodologías más populares:

  • Scrum
  • Programación extrema (XP)
  • Desarrollo de software adaptativo (ASD)
  • Método de desarrollo dinámico de software (DSDM)
  • Desarrollo impulsado por las características (FDD)
  • Kanban
  • Desarrollo orientado al comportamiento (BDD)

Metodología Scrum

La metodología Scrum es un marco sencillo para trabajar con proyectos complejos, y fue creada por Ken Schwaber y Jeff Sutherland.

Las metodologías ágiles de desarrollo de software son iterativas, lo que significa que el trabajo se divide en iteraciones, que se denominan Sprints en el caso de Scrum. Scrum es ejecutado por pequeños equipos de entre 7 y 9 personas, incluyendo un Scrum Master y un Propietario de Producto.

En Scrum, los proyectos se dividen en ciclos (normalmente de 2 o 3 semanas) llamados Sprints. El Sprint representa una caja de tiempo dentro de la cual se debe desarrollar un conjunto de características.  Múltiples sprints pueden ser combinados para formar una versión – donde el software formal / entrega del producto se hace al cliente / mercado.

El propietario del producto desglosa la funcionalidad general del producto en características más pequeñas (normalmente descritas como historias épicas y de usuario, o simplemente historias).   Estas Historias se priorizan y se retoman en cada Sprint o Iteración.  La intención del método es que el equipo sea capaz de demostrar al final de cada Sprint piezas de trabajo del producto para el propietario del producto, para asegurarse de que el producto está funcionando como se pretende.

En general, el método Scrum rompe el largo proceso de entrega en cascada en ciclos más pequeños, lo que permite a los equipos de producto y al cliente final revisar con frecuencia el software de trabajo y asegurarse de que cumple con sus requisitos de negocio. Esto asegura que el producto final también cumple con los requisitos finales del cliente.

El método Scrum se caracteriza por ceremonias específicas como la reunión diaria de Standup, la reunión de revisión del Sprint, la demostración al Product Owner y la reunión de retrospectiva del Sprint.  Todas estas reuniones proporcionan oportunidades de colaboración y revisión al equipo para garantizar que el desarrollo avanza según lo previsto y que cualquier problema se resuelve rápidamente.

Programación extrema (XP)

Programación Extrema (XP) – o Programación por parejas – es una metodología desarrollada por Kent Beck a principios de los años 90. Esta metodología ágil se centra en potenciar las relaciones interpersonales como clave del éxito en el desarrollo de software. XP también se centra en promover el trabajo en equipo, cuidar el aprendizaje de los desarrolladores y fomentar un buen ambiente de trabajo. Se caracteriza porque los desarrolladores trabajan por parejas, en las que uno de ellos programa mientras el otro observa; y cambian estos papeles de forma regular a lo largo del Sprint. De este modo, permiten la revisión continua del código y la retroalimentación que mejora la calidad del código y la capacidad del desarrollador.

La Programación Extrema (XP) promueve la retroalimentación continua entre el cliente y los equipos de desarrollo, la comunicación fluida entre todos los participantes, la simplicidad en las soluciones implementadas y la disposición a afrontar cambios. XP es especialmente adecuado para proyectos con requisitos indistintos y muy cambiantes, y en los que existe un alto riesgo técnico.

Desarrollo de software adaptable (ASD)

El Desarrollo Adaptativo de Software (ASD) fue desarrollado por Jim Highsmith y Sam Bayer a principios de la década de 1990. Incorpora los principios de la adaptación continua, es decir, adaptarse al cambio y no luchar contra él. El Desarrollo Adaptativo de Software utiliza un ciclo de desarrollo dinámico conocido como Especular, Colaborar y Aprender. Este ciclo está dedicado al aprendizaje constante y a la intensa colaboración entre los desarrolladores y los clientes debido al cambio constante del entorno empresarial.

A diferencia de la mayoría de las metodologías de desarrollo de software que utilizan un ciclo de vida estático, es decir, Planificar-Diseñar-Construir, ASD ofrece un ciclo de vida iterativo no lineal, en el que cada ciclo puede iterar y modificarse mientras se ejecuta otro.  Apunta hacia el Desarrollo Rápido de Aplicaciones (RAD), que hace hincapié en la velocidad de desarrollo para crear un producto de alta calidad y bajo mantenimiento que implique al usuario lo máximo posible. Las principales características de ASD son:

  • Especular: Es la fase de iniciación del proyecto en la que es necesario establecer los principales objetivos y metas del proyecto conociendo las limitaciones (áreas de riesgo) con las que opera el proyecto.
  • Colaborar: Es la fase donde se centra la mayor parte del desarrollo, manteniendo una coordinación entre equipos que asegure que lo aprendido por un equipo sea comunicado al resto y no tenga que ser aprendido de nuevo por otros equipos desde cero.
  • Aprender: La última etapa termina con una serie de ciclos de colaboración: el trabajo consiste en captar lo que se ha aprendido, tanto lo positivo como lo negativo. Esta etapa es fundamental para la eficacia del proyecto.

Método dinámico de desarrollo de software (DSDM)

El Método de Desarrollo Dinámico de  Software (DSDM) fue desarrollado en el año 1994 por un grupo de proveedores y expertos en el campo del desarrollo de software. El DSDM se centra en proyectos de software caracterizados por presupuestos y calendarios ajustados. Se centra en la entrega frecuente de ciclos de productos, y el desarrollo es iterativo e incremental.

DSDM es un modelo ágil que sin duda puede ayudar a las organizaciones acostumbradas a trabajar por proyectos a cambiar su mentalidad y su forma de trabajar para mejorar su capacidad de aportar valor y reducir el tiempo de comercialización.

Desarrollo orientado a las características (FDD)

La metodología de Desarrollo Dirigido por Características (FDD) está orientada principalmente a equipos más grandes y con más personas que aquellos a los que normalmente se aplican otras metodologías ágiles como Scrum. FDD fue desarrollada por Jeff De Luca y Peter Coad en el año 1997. Esta metodología se centra en iteraciones cortas, que permiten entregas tangibles del producto en un periodo corto de tiempo (2 semanas).

Los proyectos con múltiples equipos y un gran número de personas representan el reto de que no todos tendrán el mismo talento y disciplina. El FDD incluye actividades específicas que ayudan a afrontar los retos de comunicación y coordinación de este tipo de proyectos.

El FDD es un proceso de 5 etapas, de las cuales las 3 primeras son secuenciales y las dos últimas son iterativas (como se muestra en el diagrama anterior). Todas las metodologías ágiles siguen una serie de principios que hacen que se parezcan entre sí. Sin embargo, FDD ofrece soluciones sobre cómo organizar el equipo y cómo programar el código, lo que la hace especialmente viable para grandes equipos de desarrollo que construyen software complejo.

Uno de los libros más populares sobre el método FDD fue publicado por Stephen Palmer en 2002, titulado “A Practical Guide to Feature-Driven Development“.

Método Kanban

El método Kanban fue definido por David Anderson a principios o mediados de la década de 2000, en respuesta a algunos de los desafíos de los diversos métodos ágiles, especialmente Scrum.  Estos métodos, mientras intentaban resolver los desafíos de los métodos tradicionales/en cascada, fueron víctimas de algunos de los mismos desafíos.

El ciclo de sprint de 2-3 semanas se convirtió en una espera demasiado larga para muchos contextos empresariales, los cambios requeridos en la estructura organizativa (nuevas funciones y responsabilidades) y en los procesos de gestión/planificación de proyectos ejercieron demasiada presión sobre las organizaciones, y muchos equipos se encontraron con que no cumplían ni siquiera los compromisos de alcance y calidad a nivel de sprint.  Para la mayoría de las organizaciones, la aplicación de estos métodos resultó muy perturbadora.

El método Kanban se definió como lo contrario: un método evolutivo no disruptivo para la mejora, que en última instancia permite a los equipos entregar de forma continua en lugar de en cubos de tiempo de 2-3 semanas, obtener retroalimentación más rápido y reducir el tiempo de entrega de valor al cliente.

Kanban es un sistema visual para gestionar el trabajo a medida que avanza en un proceso. Kanban visualiza tanto el proceso (el flujo de trabajo) como el trabajo real que pasa por ese proceso. El objetivo de Kanban es identificar posibles cuellos de botella en el proceso y solucionarlos, de modo que el trabajo pueda fluir a través de él de forma rentable y a una velocidad o rendimiento óptimos.

El kanban se define como un sistema de producción altamente eficaz y eficiente. El origen de la metodología Kanban está en los procesos de producción «justo a tiempo» (JIT) ideados por Toyota, en los que se utilizaban tarjetas para identificar las necesidades de material en la cadena de producción. Puede obtener más información sobre el kanban aquí: https://www.nimblework.com/kanban/what-is-kanban/

Desarrollo basado en el comportamiento (BDD)

El Desarrollo Orientado al Comportamiento (BDD) es una metodología de desarrollo ágil orientada al comportamiento. Fue creada por Dan North en 2003 como una evolución de la metodología TDD. Dan North pretendía que las personas no técnicas participaran en el proceso de creación de la funcionalidad técnica del sistema. Ocurre que cuando desarrollamos software, involuntariamente no incluimos los conceptos de negocio presentes en la funcionalidad, lo que da lugar a un posible flujo de errores recurrentes e incluso graves.

BDD utiliza conceptos de lenguaje universal que fomentan la colaboración entre personas con o sin conocimientos técnicos en un proyecto de software. El proceso de desarrollo BDD se basa en la redacción de escenarios de prueba y características. Éstos contienen los requisitos y los criterios de aceptación del comportamiento del sistema. Indican qué necesita la funcionalidad para ponerse en marcha, qué hará a continuación y cuáles serán los resultados tras su ejecución.

BDD ayuda a los equipos a comunicar con mayor precisión los requisitos, a descubrir los defectos con antelación y a construir un software que siga siendo sostenible en el tiempo.

Resumen

Existe una gran variedad de modelos y metodologías de desarrollo basados en los principios de Ágil. En los últimos años, ha aumentado la lista de organizaciones que atribuyen a esta metodología su éxito. Algunos de los nombres más importantes de los medios de comunicación, la tecnología, las finanzas e incluso algunos organismos del Gobierno nacional han adoptado y alabado la eficacia de Ágil.

¿Está preparado para convertirse en Ágil? Digite ofrece una amplia gama de productos para la transformación ágil de las empresas.

Póngase en contacto con nosotros y le ayudaremos en la transformación.

Speed up your Agile planning and execution!

Signup for a FREE Trial of Nimble Agile