Caso de Estudio Ágil (2/5): Historias de Usuario
May 16, 2021

Continúa la traducción capítulo capítulo 23 del libro Agile Estimating and Planning, de Mike Cohn. En este segundo artículo veremos la conveniencia de escribir tarjetas físicas y cómo puede organizarse una reunión de brainstorming para hacer que los miembros del equipo vayan deduciendo los requisitos (en forma de historias de usuario). Es recomendable estructurar el brainstorming por temáticas para no dejar ninguna funcionalidad sin analizar.

Los miembros del equipo también pueden estimar el tamaño o complejidad de los requisitos mediante un juego conocido como planning poker, en el que se estima el tamaño y complejidad de cada historia en unidades llamadas story points. Más adelante, las historias de usuario grandes habrá que descomponerlas en varias más manejables.
Una regla básica que hay que recordar es que las historias de usuario bien definidas deben ser independientes, negociables, valorables, estimables, pequeñas y verificables (Independent, Negotiable, Valuable, Estimable, Small, Testable –INVEST-).
A continuación se describe cómo transcurre la reunión inicial de análisis de requisitos en un proyecto ágil. Al finalizar la reunión (que puede durar entre 2 y 4 horas), los miembros del equipo del proyecto Havannah habrán consensuado los requisitos con 32 historias de usuario, y también habrá consensuado la estimación del proyecto en 146 story points.
¿Quiere saber cómo se hace?

[…]
–Y bien… ¿cómo empezamos a escribir historias de usuario? –preguntó Francisco.
–Vamos a usar estas tarjetas –dijo Carlos, a la vez que le daba un paquete de tarjetas a cada persona–. A mí me gusta escribir historias de usuario con esta plantilla. –Carlos sacó un rotulador y escribió en la pizarra:
“Como [rol], quiero que [objetivo] para que [motivo]”


Brainstorming para escribir Historias de Usuario

- Como jugador, puedo iniciar una nueva partida
- Como jugador, puedo recuperar una partida grabada
- Como jugador, puedo elegir el nivel de juego del ordenador
- Como jugador, me gustaría ser capaz de jugar contra otra persona desde mi ordenador
- Como jugador, me gustaría que la apariencia del juego fuera agradable estéticamente
- Como jugador, me gustaría ser capaz de elegir entre tablero y fichas de madera o metal
- Como jugador, quiero ser capaz de ver un tutorial interactivo para el juego
- Como jugador, quiero que el juego tenga música de fondo
- Como jugador, puedo elegir la música de fondo
- Como jugador, me gustaría deshacer y rehacer movimientos
- Como jugador, quiero colocar una ficha en el tablero usando el ratón o bien el teclado
- Como jugador, quiero que un indicador visual muestre de quién es el turno
- Como jugador, me gustaría que un indicador visual indicase la última ficha jugada (¿parpadeando?)
- Como jugador, me gustaría pedir pistas algunas veces
- Como jugador, me gustaría ser capaz de grabar partidas
- Como jugador, quiero poder abandonar el juego
- Como jugador, quiero reiniciar la partida para rendirme y comenzar de nuevo
- Como nuevo jugador, quiero acceder a un sistema de ayuda online
- Como jugador, quiero que todas las fichas que componen la forma ganadora parpadeen para que yo pueda distinguir la figura ganadora
- Como jugador novel, me gustaría que el sistema me advirtiese que acabo de hacer un movimiento malo y que se me dé la oportunidad de deshacerlo
- Como jugador novel, cuando es mi turno, me gustaría que el sistema me mostrase cualquier posición que debería jugar, porque si no lo hago, el sistema jugará en esa posición y ganará
- Como jugador, me gustaría que el sistema tardase no más de dos segundos en mover (en un PC de 2 GHz)
Estimando Historias de Usuario en “Puntos-Historia” (Story Points)


Descomponiendo las historias grandes



- Como jugador, puedo jugar contra un motor débil que reconozca solo anillos (8)
- Como jugador, puedo jugar contra un motor débil que reconozca solo puentes (5)
- Como jugador, puedo jugar contra un motor débil que reconozca solo bifurcaciones (8)
Independizando unas historias de otras

Historias dependientes


Resultado del Brainstorming: 32 historias y 146 puntos
Las historias y sus estimaciones se muestran a continuación:- Como jugador, me gustaría deshacer y rehacer movimientos [2]
- Como jugador, puedo iniciar una nueva partida [1]
- Como jugador, puedo recuperar una partida grabada [2]
- Como jugador, puedo elegir el nivel de juego del ordenador [1]
- Como jugador, puedo jugar contra un motor débil que reconozca solo anillos [8]
- Como jugador, puedo jugar contra un motor débil que reconozca solo puentes [5]
- Como jugador, puedo jugar contra un motor débil que reconozca solo bifurcaciones [8]
- Como jugador, puedo jugar contra un motor medio [8]
- Como jugador, puedo jugar contra un motor fuerte [20]
- Como jugador, me gustaría ser capaz de jugar contra otra persona desde mi ordenador [3]
- Como jugador, quiero que el ordenador reconozca una figura ganadora [2]
- Como jugador, quiero una pantalla de relieve cuando el juego comienza [5]
- Como jugador, quiero un diseño de fondo integrado con los tableros [5]
- Como jugador, me gustaría ser capaz de elegir entre tablero y fichas de madera o metal [8]
- Como jugador, me gustaría pedir pistas algunas veces [1]
- Como jugador, quiero ser capaz de ver un tutorial interactivo para el juego [8]
- Como jugador, quiero que el juego tenga música de fondo [5]
- Como jugador, puedo elegir la música de fondo [1]
- Como jugador, quiero colocar una ficha en el tablero usando el ratón o bien el teclado [3]
- Como jugador, quiero que un indicador visual muestre de quién es el turno [2]
- Como jugador, me gustaría que un indicador visual indicase la última ficha jugada (¿parpadeando?) [2]
- Como jugador, me gustaría ser capaz de grabar partidas [3]
- Como jugador, quiero poder abandonar el juego [1]
- Como jugador, quiero reiniciar la partida para rendirme y comenzar de nuevo [1]
- Como nuevo jugador, quiero acceder a un sistema de ayuda online [8]
- Como jugador, quiero que todas las fichas que componen la forma ganadora parpadeen para que yo pueda distinguir la figura ganadora [3]
- Como jugador novel, me gustaría que el sistema me advirtiese que acabo de hacer un movimiento malo y que se me dé la oportunidad de deshacerlo [8]
- Como jugador novel, cuando es mi turno, me gustaría que el sistema me mostrase cualquier posición que debería jugar, porque si no lo hago, el sistema jugará en esa posición y ganará [3]
- Como jugador, me gustaría que el sistema tardase no más de dos segundos en mover (en un PC de 2 GHz) [8]
- Como jugador, quiero que el sistema registre cuántos juegos he ganado y perdido (¿por grado de dificultad?) [3]
- Como jugador, quiero hacer anotaciones en juegos grabados [3]
- Como jugador, me gustaría avanzar movimientos para revisar una partida ya jugada [5]
