Monday, 4 May 2009

Scrum

  • Que es Scrum?
Scrum es un proceso iterativo incremental de desarrollo de software. Es un proceso que incluye un esqueleto de un conjunto de prácticas y funciones predefinidas. Los principales roles en Scrum son el ScrumMaster (director de proyecto), el Product Owner (Propietario del producto) y el team (equipo de desarrolladores).

En cada sprint (un período de 2 semanas a 30 días), el equipo crea un incremento potencial a enviar dentro del proyecto (Potentially shippable product increment, como indica la imagen). El conjunto de características que van en cada sprint provienen de la acumulación de Product backlog (trabajo atrasado), los cuales están altamente priorizados en los requisitos de trabajo por hacer.


En las reuniones de planificación del Sprint se decide que Product blacklog va en cada sprint. Durante esta reunión el propietario del producto informa al equipo de los elementos del blacklog que quiere que estén hechos. Luego, el equipo determina la cantidad de éste que son capaces de hacer y comprometerse para entregar en el siguiente sprint. Durante el sprint, nadie es capaz de cambiar el Product blacklog, lo que significa que los requisitos están congelados para un sprint.

  • Tenemos las siguientes definiciones:

Scrum Master -> Director de proyecto
Product Owner -> Representa las partes interesadas y el equipo que incluye a los desarrolladores.
Product Backlog -> Es una lista de todas las cosas que hay que hacer con el producto.
Sprint Backlog -> Es una lista de los temas que se terminaron durante el sprint.
Sprint -> Iteración de trabajo el cual esta siendo completado.
Daily Scrum Meeting -> Reunión que tiene lugas todos los días y permite a los miembros del equipo dar información actualizada sobre el estado actual del sprint.
Staging -> Espacio donde el código se instala después de acabar el sprint.
Acceptante Testing -> Es la comprobación y aceptación de los clientes para asegurar que la iteración del producto coincide con las expectativas del sprint.

  • Product Backlog:
Product Backlog es simplemente una lista de cosas que hay que hacer en algún momento del desarrollo del producto. Éste incluye elementos de valor para el cliente (requisitos funcionales y no funcionales). Se pueden añadir elementos requeridos por el equipo, pero solo los que aportan valor al cliente. El Product Backlog utiliza el más simple y efectivo camino para priorizar requerimientos - una simple lista. Este método no permite tener 100 características de máxima prioridad y fuerza al propietario a tomar decisiones acerca de las prioridades. La facilidad de uso, claro objetivo y transparencia hacen que el Product Backlog sea tan útil para ver el estado del proyecto.

  • Sprint Backlog:
El Sprint Backlog es una lista de tareas con la que el equipo está comprometido y que se completará en el sprint. Durante el sprint, los miembros del equipo actualizarán el backlog para reflejar las tareas completadas y cuánto tiempo piensan que pueden tardar en completarla si aún no está hecha. El tiempo estimado para la finalización del sprint, se calculará diariamente y se dibujará, y se mostrará el sprint burndown en una gráfica como la siguiente:

El equipo hace todo lo posible para meter todo el trabajo posible dentro del Sprint, pero a veces se quiere hacer demasiado o se ha hecho muy poco trabajo. En estos casos hay que quitar o añadir temas dentro del Sprint.
  • Roles:

El scrum define 2 roles, los cerdos y las gallinas. El nombre de los grupos está explicado en un chiste:

A pig and a chicken are walking down a road. The chicken looks at the pig and says, "Hey, why don't we open a restaurant?" The pig looks back at the chicken and says, "Good idea, what do you want to call it?" The chicken thinks about it and says, "Why don't we call it 'Ham and Eggs'?" "I don't think so," says the pig, "I'd be committed, but you'd only be involved."
De esta forma, los cerdos están comprometidos a construir software de manera regular y frecuente, mientras que el resto son gallinas: interesados en el proyecto pero realmente irrelevantes porque, si éste falla, no son un cerdo, es decir, no son los que se habían comprometido a sacarlo adelante. Las necesidades, deseos, ideas e influencias de los roles gallina se tienen en cuenta, pero no de forma que pueda afectar, distorsionar o entorpecer el proyecto Scrum. (fuente Wikipedia).
  • Daily Scrum Meeting:
En estas reuniones básicamente hay que analizar la siguientes preguntas:
  • ¿Qué has hecho desde ayer?
  • ¿Qué es lo que estás planeando hacer hoy?
  • ¿Has tenido algún problema que te haya impedido alcanzar tu objetivo?
También hay que dejar las impresiones sobre el sprint hecho y promover una mejora contínua.

Aquí os dejo un sinóptico (Esquema del desarrollo Scrum) muy interesante sacado de la wikipedia:


también un pequeño chiste que me pareció interesante ponerlo en el blog:


A groso modo, este post pretende reflejar una visión práctica del Scrum, de sus partes y de como se tiene que ejecutar cada parte. Ahora solo hace falta indagar un poco más en el tema y a ponerlo en práctica!.
  • Enlaces de interés:
http://www.scrumdesk.com/Features/Scrum.html
http://geeks.ms/blogs/jorge/archive/2007/05/09/explicando-scrum-a-mi-abuela.aspx

0 comments:

Post a Comment