Metodología ágil para el desarrollo de software

Scrum

Metodología Scrum

27/09/2017

Metodología Scrum

Tipos de metodologías

Modelo en cascada

Es un proceso secuencial, fácil de desarrollo en el que los pasos de desarrollo son vistos hacia abajo (como en una cascada de agua) a través de:

  1. las fases de análisis de las necesidades
  2. el diseño
  3. implantación
  4. pruebas (validación)
  5. integración
  6. mantenimiento

Metodología Scrum

Modelo de prototipado

El prototipado permite desarrollar modelos de aplicaciones de software que permiten ver la funcionalidad básica de la misma, sin necesariamente incluir toda la lógica o características del modelo terminado.


El prototipado permite al cliente evaluar en forma temprana el producto, e interactuar con los diseñadores y desarrolladores para saber si se está cumpliendo con las expectativas y las funcionalidades acordadas.

Metodología Scrum

Modelo en espiral

La atención se centra en la evaluación y reducción del riesgo del proyecto dividiendo el proyecto en segmentos más pequeños y proporcionar más facilidad de cambio durante el proceso de desarrollo, así como ofrecer la oportunidad de evaluar los riesgos y con un peso de la consideración de la continuación del proyecto durante todo el ciclo de vida.

Metodología Scrum

Modelo en espiral

Cada viaje alrededor de la espiral atraviesa cuatro cuadrantes básicos: 

 

  1. determinar objetivos, alternativas, y desencadenantes de la iteración
  2. Evaluar alternativas; Identificar y resolver los riesgos
  3. desarrollar y verificar los resultados de la iteración
  4. plan de la próxima iteración

 

Metodología Scrum

Modelo en espiral

Cada ciclo comienza con la identificación de los interesados y sus condiciones de ganancia, y termina con la revisión y examinación

Metodología Scrum

¿Por qué necesitamos una metodología ágil?

  1. Demasiada burocracia ( análisis previo, documentación posterior )
  2. Desarrollos demasiado largos y cerrados
  3. Poca (o nula) interacción con el cliente hasta la finalización del desarrollo

Metodología Scrum

¿Por qué necesitamos una metodología ágil?

No podemos esperar a tener un conjunto de requisitos cerrados completamente.

El negocio evoluciona y la competencia te obliga a reaccionar rápidamente.

Un buen requisito hoy no tiene por qué serlo mañana.

Existen requisitos que son impredecibles

Metodología Scrum

¿Por qué necesitamos una metodología ágil?

Con la actual situación de requisitos para el desarrollo de software podemos asegurar que no se puede predecir un plan a ejecutar.

Metodología Scrum

¿Por qué necesitamos una metodología ágil?

Metodología Scrum

¿Qué es scrum?

Scrum es un proceso en el que se aplican de manera regular un conjunto de buenas prácticas para trabajar colaborativamente, en equipo, y obtener el mejor resultado posible de un proyecto.

Metodología Scrum

¿Qué es scrum?

En Scrum se realizan entregas parciales y regulares del producto final, priorizadas por el beneficio que aportan al receptor del proyecto.
 

Por ello, Scrum está especialmente indicado 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.

Metodología Scrum

¿Qué es scrum?

Scrum también se utiliza para resolver las siguientes situaciones:

  • No se está entregando al cliente lo que necesita
  • Las entregas se alargan demasiado
  • Los costes se disparan
  • La calidad no es aceptable
  • se necesita capacidad de reacción ante la competencia
  • La moral de los equipos es baja

Metodología Scrum

Diferencias

Metodología Scrum

Origen

El concepto de Scrum tiene su origen en un estudio de 1986 sobre los nuevos procesos de desarrollo utilizados en productos exitosos en Japón y los Estados Unidos (cámaras de fotos de Canon, fotocopiadoras de Xerox, automóviles de Honda, ordenadores de HP y otros)

 

En este estudio se comparaba la forma de trabajo de estos equipos altamente productivos y multidisciplinares con la colaboración entre los jugadores de Rugby y su formación de Scrum (melé en español).

Metodología Scrum

Origen

En este estudio se comparaba la forma de trabajo de estos equipos altamente productivos y multidisciplinares con la colaboración entre los jugadores de Rugby y su formación de Scrum (melé en español).

Metodología Scrum

Origen

  • Todos los jugadores se agrupan en una formación en la cual lucharán por obtener el balón.
  • Si un miembro se viene abajo, falla toda la melé.
  • Los jugadores están bien coordinados para empujar al mismo tiempo y avanzar a la misma velocidad.
     

Metodología Scrum

Manifiesto ágil

Individuos e interacciones sobre procesos y herramientas

Software funcionando sobre documentación extensiva

Colaboración con el cliente sobre negociación contractual

Respuesta ante el cambio sobre seguir un plan

Metodología Scrum

Principios manifiesto ágil

Nuestra mayor prioridad es satisfacer al cliente
mediante la entrega temprana y continua de software
con valor.

Aceptamos cambios en los requisitos, incluso en etapas
tardías del desarrollo. Los procesos Ágiles aprovechan
el cambio para proporcionar ventaja competitiva al
cliente.

Metodología Scrum

Principios manifiesto ágil

Entregamos software funcional frecuentemente, entre dos
semanas y dos meses, con preferencia al periodo de
tiempo más corto posible.

Los responsables de negocio y los desarrolladores
trabajamos juntos de forma cotidiana durante todo
el proyecto.

Metodología Scrum

Principios manifiesto ágil

Los proyectos se desarrollan en torno a individuos
motivados. Hay que darles el entorno y el apoyo que
necesitan, y confiarles la ejecución del trabajo.

El método más eficiente y efectivo de comunicar
información al equipo de desarrollo y entre sus
miembros es la conversación cara a cara.

El software funcionando es la medida principal de
progreso.

Metodología Scrum

Principios manifiesto ágil

Los procesos Ágiles promueven el desarrollo
sostenible. Los promotores, desarrolladores y usuarios
debemos ser capaces de mantener un ritmo constante
de forma indefinida.

La atención continua a la excelencia técnica y al
buen diseño mejora la Agilidad.

Metodología Scrum

Principios manifiesto ágil

La simplicidad, o el arte de maximizar la cantidad de
trabajo no realizado, es esencial.

Las mejores arquitecturas, requisitos y diseños
emergen de equipos auto-organizados.

A intervalos regulares el equipo reflexiona sobre
cómo ser más efectivo para a continuación ajustar y
perfeccionar su comportamiento en consecuencia.

Metodología Scrum

Ventajas de Agile - cliente

  • El cliente conoce un plan general (según cada iteración); qué puede realizarse y qué coste tiene.
  • Ver la evolución en plazos de tiempo bastante reducidos.
  • Cambiar requisitos, sustituir funcionalidades y cambiar prioridades sin pagar un coste exagerado.
  • Estar informado en todo momento de la evolución del desarrollo.
  • Puede cancelar en cualquier momento y quedarse con un sistema que trabaje de forma útil que refleje la inversión hecha hasta la fecha.

Metodología Scrum

Ventajas de Agile - programador

  • Saber qué es necesario, y su prioridad.
  • Producir trabajo de calidad en todo momento.
  • Solicitar ayuda "inmediata" del cliente.
  • Realizar estimaciones más realistas y con la misma posibilidad que el cliente de realizar modificaciones sobre éstas.
  • Recibir feedback lo más rápido posible.

Metodología Scrum

Metodología Scrum

Terminología

Sprint:  periodo de corta duración (menor a 4 semanas, el equipo decide) que debe finalizar con un prototipo operativo o producto potencialmente entregable.

Product Backlog: Conjunto de potenciales historias de usuario a lo largo del proyecto. Lista marcada y priorizada por el product owner. Crece y evoluciona durante el desarrollo.

Metodología Scrum

Terminología

Sprint Backlog: Conjunto de funcionalidades (Historias de usuario) que se van a implementar en el Sprint.

Debe acometerse como máximo en un sprint (y a poder ser, mucho menos tiempo)

Nunca puede ser alterado a mitad de un sprint.

Es la lista de trabajos que se debe realizar para generar el incremento previsto.

Metodología Scrum

Pilares básicos

Historias de usuario: Describe funcionalidad que será útil para el usuario. Las historias de usuario no suelen, ni deben, tener el nivel de detalle que suele tener la especificación de un requisito. Son funcionalidades atómicas.

  • Cómo
  • Quiero
  • A fin de
  • Descripción
  • Criterios de aceptación

 

Metodología Scrum

  • Cómo: usuario registrado
  • Quiero: poder listar mis clientes
  • A fin de: editar los datos de un cliente
  • Descripción: Al entrar en el listado de clientes debo poder entrar en el detalle de éste y poder modificar sus datos personales manteniendo la obligatoriedad de los campos como si se tratase de un usuario nuevo.
  • Criterios de aceptación:
    • ​Poder modificar datos de un cliente
    • Que no me permita modificar datos si el formulario no es válido....

Metodología Scrum

Product owner: responsable de gestionar el Product Backlog, priorizarlo, mantenerlo y de crear las historias de usuario. Representa al cliente. Exige y prioriza los requerimientos del producto

Scrum master: Gestor de los equipos.

Responsable del funcionamiento y productividad del desarrollo.

Asegura el seguimiento de la metodología guiando las reuniones y ayudando al equipo ante cualquier problema que pueda aparecer.

Trabaja junto al equipo

Metodología Scrum

Scrum team: Equipo formado por desarrolladores, testers, UX, UI...

Responsables de implementar las funcionalidades del Product owner

Burndown chart: Gráfico que visualiza la evolución de un sprint. Éste tiene una duración,y cada historia de usuario tiene otra, a final de sprint tienen que quedar 0 horas pendientes en las historias de usuario para conseguir el objetivo definido por todos los implicados.

Metodología Scrum

¿Cómo se lleva a cabo día a día?

Para poder conseguir alcanzar al objetivo definido se deben realizar una serie de reuniones

  • Spring Planning
  • Sprint Review
  • Sprint Retrospective
  • Daily Meeting

Metodología Scrum

Sprint Planning

Planificación de la iteración

Metodología Scrum

Sprint Planning

Planificación de la iteración

El cliente presenta la lista de requisitos priorizada.

El equipo examina la lista, añade criterios de aceptación (si fuera necesario) y seleccionalos objetivos más prioritarios que se compromete a completar.

Metodología Scrum

Sprint Planning

Planificación de la iteración

El equipo planifica la iteración, elabora la táctica que le permitirá conseguir el mejor resultado posible con el mínimo esfuerzo.

En este momento es cuando se crear la lista de tareas de la iteración (Spring backlog)

Realiza una estimación conjunta del esfuerzo necesario para cada tarea.

Cada miembro del equipo se autoasigna a las tareas que puede realizar.

Metodología Scrum

Sprint review

Demostración de requisitos completados

Metodología Scrum

Sprint review

Demostración de requisitos completados

Reunión informal donde el equipo presenta al cliente los requisitos completados en la iteración, en forma de incremento de producto preparado para ser entregado con el mínimo esfuerzo, haciendo un recorrido por ellos lo más real y cercano posible al objetivo que se pretende cubrir.

Metodología Scrum

Sprint review

Demostración de requisitos completados

En función de los resultados mostrados y de los cambios que haya habido en el contexto del proyecto, el cliente realiza las adaptaciones necesarias de manera objetiva, ya desde la primera iteración, replanificando el proyecto.

Metodología Scrum

Sprint review

Demostración de requisitos completados

El cliente puede ver de manera objetiva:

  • Cómo han sido desarrollados los requisitos que proporcionó, ver si se cumplen sus expectativas, entender más qué es lo que necesita y tomar mejores decisiones respecto al proyecto

Observaciones:

Un requisito no completado quedará como un requisito más a replanificar

Metodología Scrum

Sprint review

Demostración de requisitos completados

El equipo:

  • Puede ver si realmente entendió cuáles eran los requisitos que solicitó el cliente y ver en qué puntos hay que mejorar la comunicación entre ambos
  • Se siente más satisfecho cuando puede ir mostrando los resultados que va obteniendo. No está meses trabajando sin poder exhibir su obra

Observaciones:

Metodología Scrum

Sprint retrospective

Reunión al finalizar el sprint

Metodología Scrum

Sprint retrospective

Reunión al finalizar el sprint

Se reúne el equipo con el product owner y revisarán de forma conjunta los objetivos marcados en el sprint backlog.

Sirve para valorar de forma objetiva el sprint

Se aplican cambios y ajustes necesarios para el siguiente sprint.

Metodología Scrum

Sprint retrospective

Reunión al finalizar el sprint

Se marcan aspectos positivos (para continuar realizándolos), aspectos negativos (intentar evitarlos lo antes posible) y aspectos a mejorar.

Esta reunión es la que más puede variar dentro de cada empresa puesto que hay diferentes tipos admitidos siempre que se piense qué se hizo bien, mal y qué se puede mejorar.

Metodología Scrum

Sprint retrospective

Reunión al finalizar el sprint

Metodología Scrum

Daily meeting

Reunión diaria

Metodología Scrum

Daily meeting

Reunión diaria

El objetivo de esta reunión es facilitar la transferencia de información y la colaboración entre los miembros del equipo para aumentar su productividad, al poner de manifiesto puntos en que se pueden ayudar unos a otros.

Metodología Scrum

Daily meeting

Reunión diaria

Cada miembro del equipo debe responder las siguientes preguntas y como máximo de 15 minutos:

  • ¿Qué he hecho ayer? ¿Pude hacer todo lo que tenía planeado? ¿Cuál fue el problema?
  • ¿Qué voy a hacer hoy?
  • ¿Qué impedimentos tengo o voy a tener para cumplir mis compromisos en esta iteración y en el proyecto?

Metodología Scrum

Daily meeting

Reunión diaria

Observaciones:

  • La reunión diaria de estado y sincronización del equipo no es para resolver problemas, los problemas se resuelven después de la reunión.
  • El proceso de ejecución de las tareas debe estar consensuado para evitar que cada reunión sea una exposición de discrepancias entre los miembros del equipo

Metodología Scrum

Daily meeting

Reunión diaria

Observaciones:

  • Realizar la reunión diaria de sincronización de pie, para que los miembros del equipo no se relajen ni se extiendan en más detalles de los necesarios.
  • Realizar las reuniones de colaboración entre miembros del equipo justo después de la "Daily meeting"

Metodología Scrum

Estimaciones

Es la parte clave de toda gestión de proyectos. En Scrum no se estiman horas, sino esfuerzo empleado para finalizar con éxito la historia de usuario. Dicho esfuerzo se traducirá en horas más adelante, dependiendo siempre de la velocidad de desarrollo del equipo.

El tiempo puede variar, el esfuerzo necesario, no.

Metodología Scrum

Estimaciones

La labor de estimación debe hacerse con todo el equipo.

  • No se asigna la historia al que más experiencia tiene en ese punto. (Recordemos que el equipo es autogestionado, autosificiente y motivado. Esto provoca que todos puedan hacer de todo.)
  • Las historias involucran a más de una parte del equipo (diseño, programación, testeo, implantación....)

Metodología Scrum

Estimaciones

  • Al estimar con todo el equipo, todos acaban conociendo cada una de las historias, lo que les lleva a, en un futuro, poder abordar el trabajo con éxito.
  • Si alguien viera una posible complicación se plantearía y se decidiría qué hacer
    • Atomizar la historia de usuario (Hacerla más pequeña)
    • Afronta la tarea como equipo y proponer potenciales soluciones.

Metodología Scrum

Estimaciones

Planning poker

Metodología Scrum

Estimaciones

Cada miembro del equipo cuenta con una baraja de 13 cartas.


Cada vez que hay que estimar una historia, cada miembro del equipo selecciona una carta que representa su estimación de tiempo (en puntos de historia) y la coloca bocabajo en la mesa

 

Metodología Scrum

Estimaciones

Cuando todos los miembros del equipo han preparado sus cartas, se les da la vuelta al mismo tiempo. Así obligamos a cada miembro del equipo a pensar por si mismo en lugar de seguir la estimación de otro.
Si hay mucha discrepancia entre dos estimaciones, el equipo discute las diferencias y trata de construir una imagen común del trabajo necesario para la historia. Pueden hacer algún tipo de división en tareas. Después, el equipo estima de nuevo. Este bucle se repite hasta que la estimación de tiempo converge, es decir, que todas las estimaciones sean aproximadamente las mismas para esa historia.

Metodología Scrum

Estimaciones

Los puntos de historia tienen que ser la suma de todos y cada uno de los implicados en dicha historia (diseño, programación, testeo, etc )

Números de las cartas: ¿Por qué pasamos de 40 a 100? Cuando se valora algo en esos números simplemente se debe reflejar que es un trabajo muy difícil de estimar y que puede ser necesario crear historias más pequeñas (si fuera posible)

Metodología Scrum

Estimaciones

Otras cartas:

 

  • 0 : Significa que esta historia está hecha, o que lleva minutos finalizarla (por ejemplo, traducir una cadena de texto)
  • ¿ : No tengo ni idea de cómo estimarla, o no estoy capacitado para realizar una estimación.
  • Taza de café: Tomemos un descanso.

Metodología Scrum

Kanban

Kanban es una palabra japonesa que significa algo así como “tarjetas visuales” (kan significa visual, y ban tarjeta).

Esta técnica se creó en Toyota, y se utiliza para controlar el avance del trabajo, en el contexto de una línea de producción.


El Kanban está dentro de la estrategia Kaizen, es decir, la mejora continua y continuada.

Metodología Scrum

Kanban

Metodología Scrum

Kanban

El trabajo se divide en partes, normalmente cada una de esas partes se escribe en un post-it y se pega en una pizarra.

Los post-it suelen tener información variada, si bien, aparte de la descripción, debieran tener la estimación de la duración de la tarea.


La pizarra tiene tantas columnas como estados por los que puede pasar la tarea (ejemplo, en espera de ser desarrollada, en análisis, en diseño, etc.).

Metodología Scrum

Kanban

El objetivo de esta visualización es que quede claro el trabajo a realizar, en qué está trabajando cada persona, que todo el mundo tenga algo que hacer y el tener clara la prioridad de las tareas.

Cada miembro del equipo sólo debería tener una tarjeta en WIP (work in progress). Si no puede terminarla, debería bloquearla ( El tablero puede tener una columna para las bloqueadas, y será un punto importante a tratar en el daily meeting)

La idea es: centraté en cerrar tareas y no en comenzar tareas.

Metodología Scrum

Burndown

Agile

By Hugo Estévez Rocha