Scrum - Descripción general

Agile se ha convertido en una de las grandes palabras de moda en la industria del desarrollo de software. Pero, ¿qué es exactamente el desarrollo ágil? En pocas palabras, el desarrollo ágil es una forma diferente de ejecutar equipos y proyectos de desarrollo de software.

Para entender qué es nuevo, recapitulemos los métodos tradicionales. En el desarrollo de software convencional, los requisitos del producto se finalizan antes de continuar con el desarrollo.

Modelo de cascada

El modelo de desarrollo de software más utilizado con esta característica es el modelo de cascada, como se muestra en el siguiente diagrama. Sin embargo, en la mayoría de los casos, se agregan nuevas funcionalidades y también pueden cambiar los requisitos anteriores. El modelo Waterfall no está estructurado para adaptarse a estos cambios continuos en los requisitos. Además, el usuario no tendrá claridad sobre la funcionalidad del producto hasta que el producto esté disponible en su totalidad.

Modelo incremental iterativo

En el modelo incremental iterativo, el desarrollo comienza con un número limitado de requisitos finalizados y priorizados. El entregable es un incremento de trabajo del producto. Un conjunto de actividades que van desde los requisitos hasta el desarrollo de código se denomina iteración. Según la funcionalidad del incremento y cualquiera o todos los requisitos nuevos, modificados y pendientes, el siguiente lote de requisitos se asigna a la iteración posterior. El resultado de la iteración posterior es un incremento de trabajo mejorado del producto. Esto se repite hasta que el producto logra las funcionalidades requeridas.

El usuario generalmente no está involucrado en el trabajo de desarrollo y puede causar brechas de comunicación que dan como resultado funcionalidades incorrectas. La implicación es positiva para el equipo de desarrollo, pero exige el tiempo del equipo y puede añadir retrasos. Además, cualquier cambio de requisito informal durante una iteración puede generar confusión y también puede crear escalofríos en el alcance. Con esta premisa, nació el desarrollo ágil.

Desarrollo ágil

El desarrollo ágil se basa en el desarrollo incremental iterativo, en el que los requisitos y las soluciones evolucionan a través de la colaboración en equipo. Recomienda un enfoque iterativo encuadrado en el tiempo y fomenta una respuesta rápida y flexible al cambio. Es un marco teórico y no especifica ninguna práctica particular que deba seguir un equipo de desarrollo. Scrum es un marco de proceso ágil específico que define las prácticas que se deben seguir.

Las primeras implementaciones de métodos ágiles incluyen Rational Unified Process (1994), Scrum (1995), Crystal Clear, Extreme Programming (1996), Adaptive Software Development, Feature Driven Development (1997) y Dynamic Systems Development Method (DSDM) (1995). Estos ahora se conocen colectivamente comoagile methodologies, después de la publicación del Manifiesto Ágil en 2001.

Manifiesto ágil

El Manifiesto Ágil fue publicado por un equipo de desarrolladores de software en 2001, destacando la importancia que se debe dar al equipo de desarrollo, acomodando los requisitos cambiantes y la participación del cliente.

El Manifiesto Ágil es el siguiente:

“Estamos descubriendo mejores formas de desarrollar 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 con el cliente sobre la negociación del contrato
  • Responde al cambio sobre el siguiente plan

Es decir, si bien hay valor en los elementos de la derecha, valoramos más los elementos de la izquierda ".

… Manifiesto para el desarrollo ágil de software, Autores: Beck, Kent, et al. (2001)

Definición de elementos del manifiesto ágil

Los elementos del manifiesto de la izquierda se pueden describir de la siguiente manera:

Artículo del manifiesto Descripción
Individuos e interacciones Se debe dar importancia a:
  • autoorganización y automotivación de los miembros del equipo
  • interacción continua para el trabajo, aclaraciones, información entre los miembros del equipo
Software de trabajo La entrega de software funcional a intervalos de corta duración ayuda a ganar la confianza del cliente y la seguridad en el equipo.
Colaboración con el cliente La participación constante del cliente con el equipo de desarrollo asegura la comunicación de las modificaciones necesarias.
Respondiendo al cambio Céntrese en una respuesta rápida a los cambios propuestos, lo que es posible con iteraciones de corta duración.

El elemento clave de Agile Manifesto es que debemos confiar en las personas y en su capacidad para colaborar. Por esta razón, las metodologías ágiles específicas desarrolladas aprovechan las habilidades de los miembros del equipo al enfatizar el trabajo en equipo y la colaboración a lo largo del ciclo de vida del proyecto.

Principios clave de Agile

El Manifiesto Agile se basa en los siguientes principios:

Principio Descripción
Satisfacción y entrega Satisfacción del cliente mediante software de trabajo temprano y continuo.
Dar la bienvenida al cambio Bienvenidos los requisitos cambiantes, incluso en etapas posteriores de desarrollo.
Entregar con frecuencia Entregue software que funcione con frecuencia (semanalmente en lugar de mensualmente).
La comunicación es la clave Asegurar una asociación cercana de desarrolladores con gente de negocios a diario.
Medio Ambiente y Confianza Construya proyectos alrededor de personas motivadas. Bríndeles el apoyo necesario y confíe en ellos.
Comunicación cara a cara Fomente la conversación cara a cara para garantizar una comunicación eficiente y eficaz.
Software como medida de progreso El software que funciona es la principal medida de progreso.
Desarrollo sostenible Promover el desarrollo sustentable con la capacidad de mantener un ritmo constante durante todo el desarrollo.
Atención a los detalles Atención continua a la excelencia técnica y al buen diseño.
El poder de menos La sencillez es fundamental.
Equipos autoorganizados Atención regular del equipo para ser eficaz en circunstancias cambiantes.

Metodologías ágiles

Metodología de desarrollo de sistemas dinámicos (DSDM)

Es un marco ágil para proyectos de software. Se utilizó para perfeccionar los enfoques tradicionales. La versión más reciente de DSDM se llama DSDM Atern. El nombre Atern es una abreviatura de Arctic Tern, un ave marina que puede viajar grandes distancias y que representa muchas características del método que son formas naturales de trabajo, como la priorización y la colaboración.

Melé

Es el marco ágil más popular, que se concentra particularmente en cómo administrar tareas dentro de un entorno de desarrollo basado en equipos. Scrum utiliza un modelo de desarrollo iterativo e incremental, con una duración más corta de iteraciones. Scrum es relativamente simple de implementar y se enfoca en entregas rápidas y frecuentes.

Programación extrema (XP)

Es un tipo de desarrollo de software ágil. Aboga por lanzamientos frecuentes en ciclos de desarrollo cortos, con el objetivo de mejorar la productividad e introducir puntos de control donde se pueden adoptar nuevos requisitos de los clientes. La metodología toma su nombre de la idea de que los elementos beneficiosos de las prácticas tradicionales de ingeniería de software se llevan a niveles extremos. (Extreme Programming es una disciplina de desarrollo de software que organiza a las personas para producir software de mayor calidad de manera más productiva). XP aborda las fases de análisis, desarrollo y prueba con enfoques novedosos que marcan una diferencia sustancial en la calidad del producto final.

Desarrollo impulsado por pruebas (TDD)

Es un proceso de desarrollo de software que se basa en la repetición de un ciclo de desarrollo muy corto: primero el desarrollador escribe un caso de prueba automatizado que define una mejora deseada o una nueva función, luego produce la menor cantidad de código para pasar esa prueba, y finalmente lleva el nuevo código a estándares aceptables.

Apoyarse

Es una práctica de producción que considera que el gasto de recursos para cualquier objetivo que no sea la creación de valor para el cliente final es un desperdicio y, por lo tanto, un objetivo de eliminación. Trabajando desde la perspectiva del cliente que consume un producto o servicio, el término valor se define como cualquier acción o proceso por el que un cliente estaría dispuesto a pagar. Lean se centra en preservar el valor con menos trabajo.

Kanban

Es un sistema para mejorar y mantener un alto nivel de producción. Kanban es un método mediante el cual se logra Just-In-Time (JIT), la estrategia que emplean las organizaciones para controlar los gastos de inventario. Kanban se convirtió en una herramienta eficaz para respaldar la ejecución de un sistema de producción en su conjunto, y resultó ser una forma excelente de promover la mejora.

Conclusión

Durante los últimos 10 años, existe un volumen cada vez mayor de historias de éxito, donde las empresas han mejorado drásticamente el éxito y el desempeño de sus equipos y proyectos de desarrollo de TI con prácticas ágiles. Esto ha provocado que ágil se adopte ampliamente en una variedad de industrias, incluidos los medios y la tecnología, las grandes corporaciones e incluso el gobierno.

Agile Framework ayuda a los equipos a beneficiarse de:

  • Tiempo de entrega / mercado más rápido
  • Reducir la incertidumbre y el riesgo
  • Aumente el retorno de la inversión (ROI) centrándose en el valor del cliente

Entre estas diferentes metodologías ágiles, Scrum ha demostrado ser un gran éxito en todo el mundo durante los últimos 20 años.