Patrones para Slicing
Patrones para Slicing
Patrones para Slicing
-Frederick P. Brooks
SLICING DE HISTORIAS DE USUARIO
¿Cómo dividir historias para que den valor?
La clave es hacer
historias más delgadas
(pero aún verticales)
Reducir el tamaño de lotes
(Historias pequeñas = Slicing)
SLICING DE HISTORIAS DE USUARIO
¿Cómo se hace?
SLICING DE HISTORIAS DE USUARIO
Evaluando la historia
¿La historia satisface los
principios INVEST?
Primera estimación:
Ejemplo
● Como administrador de contenido, puedo publicar una noticia
al sitio web corporativo
Se parte en:
● Como autor, quiero poder enviar el artículo que escribí
● Como editor, me gustaría recibir una notificación cuando el artículo ha
sido enviado para que pueda revisarlo
● Como editor, necesito aprobar un artículo
● Como autor, necesito ver los comentarios de mi editor para que pueda
modificarlo
SLICING DE HISTORIAS DE USUARIO
Variaciones en Reglas de Negocio
En caso de: Una historia contiene otras historias escondidas lo que le dan
complejidad
Aplicar el patrón: Crear nuevas historias que incluyan:
1. Aislar cada regla de negocio por separado
2. Hacerlo en base a la salida esperada
Ejemplo
● Como comprador, quiero buscar vuelos con flexibilidad fechas
Se parte en:
● Como comprador, quiero buscar vuelos entre A y B fechas
● Como comprador, quiero buscar vuelos como en un fin de semana de
diciembre
● Como comprador, quiero buscar vuelos con más o menos N días de A
y B fechas
SLICING DE HISTORIAS DE USUARIO
Interfaz de usuario
En caso de: Evaluar si tiene sentido dividir en cuando el desarrollo de la
interfaz es muy compleja.
Aplicar el patrón:
1. Una historia con la funcionalidad pero interfaz simplificada.
2. Otras historias para completar la interfaz
Ejemplo
● Como usuario, quiero tener el control de mis datos y configuraciones
Se parte en:
● Como usuario, quiero cambiar mis datos básicos
● Como usuario, quiero cambiar la configuración de mis notificaciones
● Como usuario, quiero cambiar las conexiones con mis redes sociales
SLICING DE HISTORIAS DE USUARIO
Mayor esfuerzo primero
En caso de: Cuando una historia puede dividirse en varias partes donde la
mayor parte del esfuerzo irá hacia la implementación del primero.
Aplicar el patrón:
1. Una historia con la funcionalidad más compleja.
2. Otra historia para las demás funcionalidades que utilizan esa
implementación base.
Ejemplo
● Como comprador, quiero pagar mi vuelo con VISA, MasterCard, Diners
Club o American Express
Se parte en:
● Como comprador, quiero pagar con un tipo de tarjeta de crédito
(VISA)
● Como comprador, quiero pagar con las cuatro tarjetas de crédito
tipos (VISA, MC, DC, AMEX)
SLICING DE HISTORIAS DE USUARIO
Simple a Complejo
En caso de: cuando estás discutiendo una historia y ésta parece ser cada vez
más grande: ¿Qué pasa con X? ¿Has considerado y?
Aplicar el patrón:
1. Deténgase y pregunte: ¿Cuál es la versión más simple de esto? Crear
una historia para la versión más simple
2. Otras historias que van aumentando complejidad.
Ejemplo
● Como comprador, quiero buscar vuelos entre dos destinos
Se parte en:
● Como comprador, quiero buscar vuelos entre dos destinos
especificando un número máximo de paradas
● Como comprador, quiero buscar vuelos entre dos destinos, incluidos
los aeropuertos cercanos
● Como comprador, quiero buscar vuelos entre dos destinos usando
fechas flexibles
SLICING DE HISTORIAS DE USUARIO
Variaciones en Datos
En caso de: cuando la complejidad en una historia puede venir de
manejo de variaciones en datos, filtros o acciones
Aplicar el patrón:
1. Haga una historia de usuario por cada tipo de dato o información
2. Haga las siguientes historias con la combinación entre datos y
acciones
Ejemplo
● Como comprador, quiero buscar artículos en diferentes filtros
personalizados y combinados
Se parte en:
● Como comprador, quiero buscar autos por marca, modelo y año
● Como comprador, quiero buscar apartamentos por código postal
y metros cúbicos
● Como comprador, quiero buscar casas por
código postal y número de habitaciones
SLICING DE HISTORIAS DE USUARIO
Hacer un Spike!
SLICING DE HISTORIAS DE USUARIO
Por conectores!
En caso de: Hay historias con conectores como “Y”, “O”, “Si”, “Cuando”, “Pero”,
“Entonces”, “Tan bueno como”, “,”..
Aplicar el patrón:
1. ¿Hay conectores?.
2. ¿Pueden ser historias distintas?
Ejemplo
● Como una familia queremos ir de vacaciones a un lugar con actividades
para adultos y niños para que cada miembro de la familia tenga
actividades a su gusto
Se parte en:
● Como una familia queremos ir de vacaciones a un lugar que tenga
actividades para adultos para que los padres disfrutemos de actividades.
● Como una familia queremos ir de vacaciones a un lugar que tenga
actividades para niños para que nuestros hijos disfruten de actividades para
niños.
SLICING DE HISTORIAS DE USUARIO
por Opciones de Entradas!
En caso de: Muchas aplicaciones web tienen que poder soportar ingresos por
varias opciones y plataformas como PC, tablets, smartphones o touchscreen.
Aplicar el patrón:
1. Descomponer las historias por sus tipos de ingreso.
Ejemplo
● Como miembro del equipo que quiero ver el Scrum Board en mi desktop, táctil, móvil,
copia impresa, para saber el estado del sprint;
Se parte en:
● Como miembro del equipo que quiero ver el Scrum Board en mi desktop, para saber el
estado del sprint;
● Como miembro del equipo Quiero ver el Scrum Board en una pantalla táctil, para saber el
estado del sprint;
● Como miembro del equipo Quiero ver el Scrum Board en mi teléfono móvil, para saber el
estado del sprint;
● Como miembro del equipo Quiero ver el Scrum Board en una copia impresa, para saber el
estado del sprint;
SLICING DE HISTORIAS DE USUARIO
por Dividir por Operaciones!
En caso de: Las historias de usuario a menudo involucran operaciones como
Crear, Leer, Actualizar y Borrar. Estas operaciones son útiles para la gestión de
Entidades tales como Productos, Usuarios u Órdenes de Compra.
Aplicar el patrón:
1. Descomponer las historias por sus operaciones.
Ejemplo
● Como propietario de tienda, quiero administrar los productos en mi tienda web, para
actualizar el precio y la información del producto si se cambia;
Se parte en:
● Como propietario de una tienda, quiero agregar nuevos productos para que los clientes puedan
comprarlos.
● Como propietario de tienda, quiero actualizar los productos existentes, para poder ajustar los
cambios en los precios o la información del producto.
● Como propietario de tienda, quiero eliminar productos, para poder eliminar productos que ya no
tengo en existencia.
● Como propietario de tienda, quiero ocultar productos, por lo que no pueden venderse por el
momento.
SLICING DE HISTORIAS DE USUARIO
por Roles!
En caso de: Las historias de usuario involucran un número de roles (o Grupos)
que ejecutan parte de una funcionalidad. Tomemos por ejemplo: La historias de
usuario para publicar nuevos artículos periodísticos en el sitio web de un diario.
Aplicar el patrón:
1. Descomponer las historias por sus usuarios o roles.
Ejemplo
● Como <dueño del diario> Quiero <publicar noticias en el sitio web> Para <que los clientes
lean las noticias diariamente en la página web del diario>;
Se parte en:
● Como cliente deseo leer un nuevo artículo para estar informado de eventos importantes
● Como periodista deseo publicar un nuevo artículo en el sitio web para que sea leído por
nuestros clientes
● Como editor del diario deseo revisar los artículos antes de ser publicados para evitar errores
gramaticales y de redacción
● Como administrador del sitio web deseo poder eliminar artículos del sitio que puedan ser ofensivos
SLICING DE HISTORIAS DE USUARIO
por caso feliz e infeliz!
En caso de: Las historias de usuario involucran un número de roles (o Grupos)
que ejecutan parte de una funcionalidad. Tomemos por ejemplo: La historias de
usuario para publicar nuevos artículos periodísticos en el sitio web de un diario.
Aplicar el patrón:
1. Una parte que dará soporte al caso de prueba perfecto o “happy path”
2. Otras historias que agregan validaciones y soporte a las excepciones o
“sad path”.
Ejemplo
● Yo como Usuario Deseo ingresar al sistema Para poder hacer uso de las funcionalidades
del sistema;
Se parte en:
● Yo como Usuario Deseo ingresar al sistema satisfactoriamente Para poder hacer uso de
las funcionalidades del sistema;
● Yo como Usuario Deseo ingresar al sistema Para poder hacer uso de las funcionalidades
del sistema;
SLICING DE HISTORIAS DE USUARIO
Dividir por Criterios de Aceptación!
En caso de: Cada historia debe tener criterios de aceptación y es el PO junto con
el equipo de desarrollo quienes tienen que establecer estos criterios. Estos
criterios de aceptación pueden ser indicios de posibles divisiones.
Ejemplo
“Como usuario anónimo quiero poder encontrar artículos para poder ampliar mi conocimiento
tecnológico“.
C.A:
● tienen que ser en inglés.
● tienen que ser de Spring 3.x
● tienen que ser de Directores de Negocio
● tienen que ser de Java 7
Se parte en:
● “Como usuario anónimo quiero poder encontrar artículos en inglés ...”.
● “Como usuario anónimo quiero poder encontrar artículos de Spring 3.x ...“.
● “Como usuario anónimo quiero poder encontrar artículos de Directores de
Negocio ...“.
● “Como usuario anónimo quiero poder encontrar artículos de Java 7 ...“.
Evaluación de la decisión
Una vez aplicamos uno o varios patrones toca evaluar si quedó bien dividida, para esto
algunas preguntas que nos pueden ayudar:
¿Han aparecido historias que ¿Ha aparecido una historia muy obvia
pueden bajar su prioridad, o con la que empezar, por que es la que
incluso, ser borradas? nos va aportar el máximo valor de forma
temprana, o conocimiento, o va a
mitigar el riesgo, etc..?
BIBLIOGRAFÍA