¿Cuál es la mejor práctica para las historias de usuarios que contienen dos roles?

8

Tengo varias historias de usuarios en las que múltiples funciones deben compartir la misma característica. He comenzado a escribir estas historias así:

Como un Rol A o un Rol B
Cuando realizo la Acción-X
, debe ocurrir el Evento-Y.

¿Es esta la forma correcta de representar ese concepto en las historias de los usuarios, o debería dividirlo en una historia para cada rol?

Sean Hunter
fuente

Respuestas:

14

Romperlo

un rol por historia; al forzarlo a considerar cada rol de forma aislada, puede encontrar diferencias que aparecen naturalmente

[un ejemplo podría ayudar; puede haber cierta confusión de roles, ya que los roles A y B comparten muchas de las mismas historias; lo más probable es que haya un rol C que 'posee' las historias comunes en su lugar]

Steven A. Lowe
fuente
Gracias por la respuesta. Eso hace las cosas un poco más claras. ¿Qué pasa si la función es algo así como un informe? El informe tendría la misma funcionalidad para Role-A y Role-B, pero Role-A y Role-B aún necesitarían tener diferentes permisos dentro del sistema.
Sean Hunter
2
@Sean reexamina tus definiciones de roles. Si los diferentes permisos dentro del sistema para el rol A y el rol B no afectan el informe, entonces son irrelevantes, y parece probable que A y B no sean los roles correctos para la historia del informe. Por ejemplo, role-Architect y role-Manager tienen acceso al Informe 401K. ¿No tendría más sentido definir "Participante 401K" como un rol más apropiado para este informe?
Steven A. Lowe
Sí, eso tiene sentido. Entiendo de dónde vienes ahora. Gracias por el buen consejo: D.
Sean Hunter
10

Estoy de acuerdo con @Steven. Debes romper la historia o introducir una generalización de los roles. Eso significa que tendrá una generalización de A y B, que se utilizará cada vez que la historia sea la misma para A y B. (Es como la herencia de roles / actores donde la generalización es madre de A y B).

Ladislav Mrnka
fuente
1
Si está de acuerdo con Steven, ¿por qué no lo votó simplemente en lugar de agregar otra respuesta idéntica?
pdr
2
@pdr: No creo que la segunda parte de mi respuesta sea "idéntica" y voté por la respuesta de Steven. No hay una regla que no pueda extender las respuestas publicadas por otros. Eso depende de la comunidad juzgar eso y votar las respuestas que les gusten. Como puede ver, Steven recibió más votos positivos, lo que es justo, así que no veo ningún problema con mi respuesta.
Ladislav Mrnka
1
@pdr Estoy de acuerdo con la incorporación de Ladislav, y también voté por su respuesta. ¡Cuanto más buena información, mejor!
Steven A. Lowe
Entiendo que crear una generalización de usuarios respaldaría una verificación formal de integridad de sus historias, pero creo que es una mala idea escribir historias como esta. La razón es que está en conflicto directo con la primera regla del manifiesto ágil: "Individuos e interacciones sobre procesos y herramientas".
Max Hohenegger
1

Necesitas identificar y abstraer roles

El ejemplo que proporcionaste ...

As a Role-A or a Role-B 
When I perform Action-X 
Event-Y should occure.

no escala porque hay un número exponencial de combinaciones que el programa podría tomar.

Para extraer roles individuales, debe imaginar los pasos desde una perspectiva de primera mano mientras ignora el estado global.

Le recomiendo que eche un vistazo a " Cómo tomar una taza de café ". Demuestra cómo se puede modelar una API REST para una cafetería utilizando diagramas de estado.

El punto es que no podrá dibujar una imagen precisa de cómo el sistema interactúa globalmente hasta que pueda verlo funcionando a nivel local.

Evan Plaice
fuente