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:
- las fases de análisis de las necesidades
- el diseño
- implantación
- pruebas (validación)
- integración
- 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:
- determinar objetivos, alternativas, y desencadenantes de la iteración
- Evaluar alternativas; Identificar y resolver los riesgos
- desarrollar y verificar los resultados de la iteración
- 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?
- Demasiada burocracia ( análisis previo, documentación posterior )
- Desarrollos demasiado largos y cerrados
- 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
Agile
- 374