jueves, abril 17, 2014

Una versión inicial de Definition of Done (Definición de Hecho / Terminado / Realizado)

La  Definition of Done -  DoD - (Definición de Hecho / Terminado / Realizado) es el estándar de calidad que debe cumplir el equipo Scrum, es aquello que les garantiza que han cumplido lo que se han comprometido y que el "Incremento"  de funcionalidad es realmente "potencialmente entregable"

La mejor definición de "done" la leí de Alan Cyment:
 "ALGO ESTA HECHO CUANDO NO TENGO QUE VOLVER A PREOCUPARME DE ELLO"

Si el equipo de desarrollo o alguien del equipo siente que no esta totalmente hecho y ejemplo:

  • falta un despliegue
  • falta una validación
  • duda si se realizaron toda la documentación comprometida
  • o le da "susto" salir a producción con el desarrollo realizado (el incremento de software) por que sabe que tiene unos "pendientes" o cree que le van a reventar en producción muchos bugs
entonces no esta realmente "Done"

La DoD debe estar publica y disponible para el equipo, debe ser un acuerdo entre todos:
  • Product Owner
  • Teaam Developer
  • Scrum Master
Este acuerdo se realiza inicialmente en el sprint cero y se va revisando en cada sprint planning (como fruto de nuevas necesidades o resultado de las retrospectivas), Si hay cambios en la DoD,  es casi seguro que impliquen nuevas tareas en cada sprint.

Aunque el Team Developer (Equipo de Desarrollo) debe ser responsable de cumplir la DoD, el que debe velar por que se logre este compromiso es el Scrum Master.

A continuación les comparto una versión inicial que puede ser evolucionada, corregida, mejorada o aumentada por cada equipo Scrum:

DEFINICIÓN DE HECHO
  • Cada historia de usuario/funcionalidad este codificada, compilada, desplegada por el servidor de integración continúa.
  • Las historias de usuario/funcionalidades cumplan todos los criterios de aceptación acordados con calidad(QA), el Product Owner al inicio del sprint.
  • Las historias de usuario/ funcionalidades construidas no afecten a las funcionalidades ya entregadas, por lo que las pruebas de regresión deben ser satisfactorias.
  • Las funcionalidades/historias de usuario comprometidas funcionen en todos los ambientes comprometidos, ej:
    • Laboratorio
    • Pruebas
    • Preproducción
  • Las funcionalidades/historias de usuario cuentan con pruebas funcionales automatizadas y despues de correr estas el resultado es exitoso.
  • No se tienen advertencias en Rojo en la verificación de código del servidor de integración continua (Sonar) - en caso que estemos trabajando con Jenkins y Sonar - .
  • Las clases de negocio cuentan con pruebas unitarias que verifican su correcto funcionamiento.
  • El Código desarrollado se comentado y estandarizado.
  • Código en el repositorio de control de versiones.
  • El porcentaje de cobertura de pruebas unitarias al código es >= a un XX%
  • El porcentaje de cobertura de pruebas funcionales automatizadas a las funcionalidades/historias de usuario es >= a un XX%
  • Se genere y/o actualice la documentación comprometida para el Sprint
    • Documento de arquitectura
    • Documento de diseño
    • Manual de Usuario
    • Plan de pruebas
    • u otro documento del proceso de desarrollo que le agregue valor al proyecto o que contractualmente estemos comprometidos a entregar
  • [nuevo] Se cumpla con los requisitos no funcionales, por ejemplo:
    • Estándares gráficos
    • Estándares de usabilidad y UX
    • Navegadores y versión de los mismos sobre los que debe funcionar
    • Servidores de base de datos y de aplicaciones sobre los que funcionará
    • Tipo de servicios a emplear
    • etc.



sábado, abril 05, 2014

Twits sobre agilidad y scrum


jueves, abril 03, 2014

Dos twets sobre la felicidad de los equipos de scrum






Recomiendo estos post sobre la felicidad y su efecto en nuestra vida laboral. La importancia de la felicidad en el trabajo es altísima, pues allí pasamos la mayoría de nuestro tiempo y si eso nos aburre, estamos en el lugar equivocado.

http://reflexiones-divinas-y-profanas.blogspot.com/search/label/felicidad


UNA ÚLTIMA FRASE


"SI ODIAS LOS LUNES, CAMBIA DE TRABAJO"


_

martes, abril 01, 2014

Product Backlog Ejemplo - Social Restaurant Wall - SoReWa - Alejandro Arbelaez

Hola a todos

Les comparto un Product Backlog de ejemplo de un proyecto de grado que estoy dirigiendo basado en historias de usuario. El proyecto se llama   Social Restaurant Wall -  SoReWa - eleborado por  Alejandro Arbelaez Acevedo (dragon198658 (at )gmail.com ).

Los Criterios de Aceptación se encuentran en Formato BDD

SCENARIO– Escenario
GIVEN – DADO
WHEN – CUANDO
THEN – ENTONCES

Impor
tancia
Yo como
Deseo
Para
Criterios de Aceptación
en Formato BDD


 1000
Gerente
Crear un menú
Ofrecerle los productos a mis clientes
Escenario 1: No hay un menú creado.
DADO  que este en la pantalla de gerente
Y No haya un menú creado
CUANDO ingrese a gestionar menú
ENTONCES se crea un menú básico con 2 categorías comidas bebidas

-----

Escenario 2: Ya hay un menú creado.
DADO que este en la pantalla de gerente
Y ya hay un menú creado
CUANDO ingrese a gestionar menú
ENTONCES se muestra el menú que ya existe
 980
Gerente
Agregar producto al menú
Para agregar variedad o actualizar mi menú
Escenario 1: Agregar un producto
DADO que este en la pantalla de gestionar menú y llene los campos de un producto
CUANDO  de en el botón guardar
ENTONCES se agrega un producto al restaurante
 960
Gerente
Quitar producto del menú
Quitar productos poco pedidos o que den perdidas
DADO que estoy en la lista de productos
CUANDO oprima el botón eliminar de un producto
ENTONCES se quita ese producto de la lista de productos del restaurante
 940
Gerente
Crear categorías de productos
Para organizar mejor los productos que ofrezco
Escenario 1: hay Categorías.
DADO  que este en el menú del restaurante
CUANDO  llene los campo y de en el botón agregar categoría
ENTONCES se agrega un a nueva categoría al menú
 920
Gerente
Eliminar categoría de productos
Para organizar mejor los productos que ofrezco
Escenario 1:Hay categorías
DADO que este en el menú del restaurante
CUANDO  elija una categoría y de en el botón eliminar
ENTONCES se da una notificación de eliminar y si se confirma se elimina la categoría del menú del restaurante.

----

Escenario 2: No hay categorías
DADO que no hay categorías en el menú
CUANDO  se  de en el botón eliminar
ENTONCES el botón se deshabilita.


 900
Gerente
Editar categorías de productos
Para organizar mejor los productos que ofrezco
Escenario 1: hay categoría
DADO  hay categorías en el menú del restaurante Y se elija una.
Y se editen los campos de la categoría
CUANDO de en el botón guardar
ENTONCES se actualizan los datos de la categoría del menú del restaurante.
 880
Cliente
Ver el menú del restaurante
Poder elegir la comida que voy a pedir
Escenario 1: Elegir categoría
DADO que hay categorías
CUANDO elija una categoría
ENTONCES se muestran los productos de esa categoría


 860
Cliente
Ver detalles de un plato
Poder elegir la comida que voy a pedir
Escenario 1: Hay productos en categoría
DADO Que hay productos en una categoría
CUANDO este navegando la lista de productos
ENTONCES debo poder ver la información detallada del plato(nombre, precio y descripción)
 840
Cliente
Ver disponibilidad de plato
Para ver que productos no puedo pedir
Escenario 1: El plato no está disponible
DADO
hay un plato que no esté disponible y se haya marcado como no disponible
CUANDO esté viendo el menú del restaurante
ENTONCES el plato no se debe mostrar

-----


Escenario 2: El plato está disponible
 820
Cliente
Agregar uno o más productos a mi pedido
Hacer el pedido y poder comer
Escenario 1: Agregar producto a la orden
DADO que quiera agregar un producto
CUANDO oprima el botón “+” para agregar un plato (o más si se toca varias veces)
ENTONCES se agrega(n) el(los) plato(s) al pedido


----

Escena 2: agregar más de un mismo plato
DADO que ya agregue un plato
CUANDO vuelva a darle al botón “+”
ENTONCES este plato se agrega a la orden

----

Escena 3: se hizo un pedido
DADO que se haya hecho un pedido Y aun no se haya pedido la cuenta
CUANDO de al botón “+” de un producto este se agrega al pedido ENTONCES se pregunta si se desea hacer el pedido del producto agregado.


------

Escena 4: se pidió la cuenta
DADO que se pidió la cuenta
CUANDO se vaya a agregar un producto a la orden
ENTONCES La orden no permite agregar más productos
 800
Cliente
Quitar un producto del pedido
Elegir un plato diferente si cambie de parecer y luego hacer el pedido
Escena 1: No se ha despachado el pedido
DADO que estoy en la página del pedido
Y quiera quitar un plato de este Y este no haya sido ya despachado
CUANDO oprima el botón de quitar”-”
ENTONCES este plato se debe quitar del pedido

-----


Escena 2:Se ha despachado el pedido
DADO que un pedido ya ha sido pedido
Y el mesero lo haya marcado como despachado
CUANDO vaya a eliminar un producto de la orden
Desde el cliente de la mesa
ENTONCES se hace un llamado al mesero


-----

Escena 3: Se pidió la cuenta
DADO que se pidió la cuenta
CUANDO los productos ya hayan sido despachados
ENTOCES el cliente ya no puede eliminar el producto desde la terminal de cliente y se ocultan los botones de eliminar producto

 780
Cliente
Hacer pedido
Poder comer los platos que pedí
Escena 1: Hay uno o mas productos en la orden
DADO que estoy en la lista del pedido
Y
CUANDO una el botón de “ordenar”
ENTONCES se envía la notificación a los meseros del pedido con el pedido de la mesa

------


Escena 2: No hay productos en la orden
DADO que no hay productos en la orden
CUANDO se oprima el botón de hacer pedido
ENTONCES se saca un mensaje que diga que no se puede hacer un pedido porque no hay platos en la orden

-----

Escena 3: Ya se pidió la cuenta
DADO que ya se pidió la cuenta
CUANDO se de en el botón hacer pedido
ENTOCNES este botón de pedido se bloquea y se pone un mensaje diciendo que ya el pedido esta por pagarse


-----

Escena 4: hay productos sin despachar
DADO que haya uno o más productos sin despachar
CUANDO se oprima el botón de pedido
ENTONCES se notifica del pedido nuevamente a los meseros
 740
Cliente
Llamar a un mesero
pedir ayuda o asesoría en la mesa
DADO en cualquier parte de la aplicación
CUANDO unas el botón de llamar mesero
ENTONCES se muestra una notificación a los meseros avisándoles que en esta mesa en específico necesitan a un mesero
 720
Mesero
Ver el menú del restaurante
Poder ver buscar los productos que el cliente quiere adicionar a su pedido
Escena 1: No hay ordenes de mesa
DADO que no hay ordenes de mesa
CUANDO de al botón ver menú restaurante
ENTONCES se me presenta una ventana con el menú del restaurante, sin las opciones de agregar a orden

----

Escena 2: hay orden de mesa
DADO que hay una orden de mesa
Y de ver orden d mesa
CUANDO de al botón ver menú restaurante
ENTONCES se me presenta una ventana con el menú del restaurante, con la opción de agregar los platos a la orden de una mesa

Mesero
Ver detalles de un plato
Poder ver la información más detallada de los pedidos
DADO  que estoy viendo el menú del restaurante
CUANDO este navegando la lista de productos
ENTONCES este me debe mostrar sus detalles
 700
Mesero
Agregar uno o más productos a al pedido de un cliente
Cambiar el pedido de los clientes en caso de ellos requerir un cambio
Escena 1: no hay productos
DADO  que no hay productos en una orden
CUANDO oprima el botón”+” agregar producto a pedido
ENTONCES se agrega el producto al pedido y se actualiza el valor total del pedido

----

Escena 2: hay productos en la orden
DADO que hay productos en una orden
Cuando de al botón “+”
ENTOCNES se agrega a la orden de mesa. se actualiza el valor total del pedido

 680
Mesero
Quitar un producto del pedido
Cambiar el pedido de los clientes en caso de ellos requerir un cambio
DADO  Que quiera quitar un producto de un pedido
CUANDO oprima el botón”-” quitar producto a pedido
ENTONCES se quita el producto al pedido y se actualiza el valor total del pedido
 660
Mesero
Ver si un cliente me llama desde su mesa
Poder ir a atenderlo
Escena 1: Cliente hunde el botón llamar mesero
DADO que estoy en la página de atención de mesas
CUANDO  un cliente oprima el botón llamar mesero
ENTONCES se mostrara una notificación de la mesa donde se hace el llamado
 640
Mesero
ver una pedido de una mesa
Enviarlo a cocina
Escena 1: llega pedido
DADO que llegue un pedido de una mesa
Y Aparezca la notificación
CUANDO toque el número de la mesa
ENTONCES debo poder ver la lista de los productos y la mesa de dónde provino el pedido


----

Escena 2: mesa con pedido
DADO que hay una mesa con un pedido
CUANDO toque el botón de la mesa
ENTONCES se muestra al orden de la mesa
 620
Cliente
Ver mi pedido
Ver el estado de este y hacerle seguimiento a lo que consumo
DADO cualquier punto de la aplicación
CUANDO oprima el botón de pedido
ENTONCES se muestra la lista de productos de la orden de la mesa
 600
Cliente
Pedir la cuenta
Pagar lo que he consumido
DADO que este en la lista del pedido
CUANDO una el botón pedir cuenta
ENTONCES se muestra una notificación a los meseros que el cliente desea pagar la cuenta
 580
Mesero
Que me alerten cuando un cliente quiere pedir la cuenta
Poder generar una factura y llevársela al cliente para que este pague su cuenta
DADO  que este en la pantalla de atención de mesas 
CUANDO  que un cliente haya hundido el botón pedir cuenta
ENTONCES se muestre la notificación de la mesa  
 560
Mesero
Atender el pedido de una mesa
Para que el cliente sepa que ya se le tomo la orden
DADO que ya se haya entregado a cocina el pedido
CUANDO oprima el botón “despachar pedido”
ENTONCES se le envía una notificación a la mesa y se marcan los productos como despachados
 520
Mesero
Saber si un cliente agrego más platos a su pedido, después de haber atendido su pedido
Enviar a cocina
DADO que un cliente agregó uno o más productos a la orden
CUANDO  de "actualizar"  pedido
ENTONCES se notificará al mesero y en la lista del pedido de verá el estado de los productos pendientes
 500
Mesero
Ver el tiempo que lleva una mesa esperando atención
Saber que clientes debo atender primero
DADO  que este en la pantalla de atención de mesas
Y haya una notificación de llamado de una mesa
CUANDO se alerte
ENTONCES se muestre un cronometro que vaya contando el tiempo desde que se generó el llamado
 500
Mesero
Ver disponibilidad de plato
Para ver que productos no puedo añadir al pedido de mi cliente
DADO  que este en el menú de restaurante
CUANDO  este navegando los productos o vaya a agregar lo y no está disponible
ENTONCES se notifica que el producto no es válido para agregar al pedido
 440
Cliente
Ver si mesero recibió mi llamado
Para saber que me van a atender pronto
DADO que haya llamado un mesero
CUANDO el mesero acepte la notificación
ENTONCES se mostrara una notificación en la mesa que dice que el mesero los atenderá pronto
 420
Gerente
Ver cantidad de veces que un producto ha sido pedido
Conocer los productos más populares
DADO  que este en la pantalla de los productos del restaurante
CUANDO  esta cargue
ENTONCES se muestra el nombre del producto con su costo y la cantidad de veces que se ha pedido