El desarrollo de software ágil es un grupo de valores, principios y prácticas de desarrollo de software basados en el desarrollo incremental, donde los requisitos y las soluciones evolucionan a través de la colaboración entre equipos autoorganizadores y multifuncionales

 

 

Agile fue desarrollado en 2001 por un grupo de desarrolladores de software que se reunieron para promover mejores formas de desarrollo de software. Este grupo incluyó a representantes de Extreme Programming, SCRUM, DSDM, Adaptive Software Development, Crystal, Feature-Driven Development, Pragmatic Programming, y otros simpatizantes de la necesidad de una alternativa a los procesos de desarrollo de software tradicional  (y de documentacion "pesada")

Lo que surgió de esta discusión fue un acuerdo sobre un conjunto común de valores y principios que subyacen a los nuevos enfoques para el desarrollo de software ligero. Este fue el Manifiesto para el Desarrollo de Software Ágil que dice: "Estamos descubriendo mejores maneras de desarrollar el software haciéndolo y ayudando a otros a hacerlo. A través de este trabajo hemos llegado a valorar:

  • Individuos e interacciones sobre procesos y herramientas
  • Software de trabajo sobre documentación completa
  • Colaboración del cliente sobre la negociación del contrato
  • Responder a los cambios a lo largo de un plan

 

Es decir, mientras que si existe valor en las entidades a la derecha, se valora mas a las entidades expresadas  a la izquierda"

Es importante señalar que Agile no aboga por abandonar los valores de las entidades. Estos valores le ayudan a desarrollar el software, es sólo que han sido excesivamente enfatizados por la mayoría de las organizaciones.  Agile, sigue estos principios:

 

  • Nuestra máxima prioridad es satisfacer al cliente a través de la entrega temprana y continua de software valioso.
  • Damos la bienvenida a los requisitos cambiantes, incluso tarde en el desarrollo. Los procesos ágiles aprovechan el cambio para la ventaja competitiva del cliente.
  • Ofrecemos entregas de  software funcional, con frecuencia, de un par de semanas a un par de meses.
  • Los empresarios y desarrolladores deben trabajar juntos todos los días a lo largo del proyecto.
  • Construimos proyectos alrededor de individuos motivados. Déles el ambiente y la ayuda que necesitan, y confíen en ellos para conseguir el trabajo hecho.
  • El método más eficiente y eficaz de transmitir información a un equipo de desarrollo y dentro de él es la conversación cara a cara.
  • El software trabajando es la medida primaria del progreso.
  • Los procesos ágiles promueven el desarrollo sostenible. Los patrocinadores, desarrolladores y usuarios deben ser capaces de mantener un ritmo constante indefinidamente.
  • La atención continua a la excelencia técnica y al buen diseño aumenta la agilidad.
  • La simplicidad -el arte de maximizar la cantidad de trabajo no realizado- es esencial.
  • Las mejores arquitecturas, requerimientos y diseños emergen de equipos auto-organizados.

 

Mucha gente piensa que Agile es sólo un conjunto de procesos y herramientas útiles. Este no es el caso. Ágil es un conjunto de valores y principios comunes que los procesos y herramientas tienen en común. Las prácticas mismas están evolucionando con el tiempo y nuevas prácticas ágiles como Kanban están surgiendo. Estas prácticas no deben ser implementadas rígidamente porque son sólo un medio para un fin. Puede y debe seleccionar las prácticas que necesita y adaptarlas para su situación. Mientras sigas los valores y principios fundamentales, sigues siendo ágil.

Conceptualmente Agile es un subconjunto de principios Lean y prácticas que a su vez son un subconjunto de Systems Thinking.

 

Por ejemplo, los fundadores de Scrum reconocen que Scrum se inspiró en Lean Product Development practicado por compañías japonesas como Fuji-Xerox, Canon, Honda y NEC en los años 70 y 80. En los últimos años esto ha sido totalmente desarrollado en Lean Software Development. Lean a su vez es acerca de ver todo el sistema y entender sus suposiciones y lazos de retroalimentación que se explora más plenamente en el pensamiento de sistemas.