Para construir software no basta con decir "el sistema debe gestionar usuarios" o "el sistema debe permitir reservas". El equipo necesita expresar los requerimientos de una forma que ayude a entender quién necesita algo, qué quiere lograr, cómo interactúa con el sistema y cuándo se considerará que la funcionalidad está correctamente implementada.
Entre las herramientas más usadas para expresar requerimientos se encuentran las historias de usuario, los casos de uso y los criterios de aceptación. Cada una tiene un propósito distinto y puede ser más útil según el contexto.
En este tema veremos qué son, cómo se escriben, cómo se relacionan y qué errores conviene evitar.
Una historia de usuario es una forma breve de expresar una necesidad desde la perspectiva de quien usará o se beneficiará del sistema. Es muy utilizada en enfoques ágiles porque ayuda a mantener el foco en valor, usuario y conversación.
Un formato habitual es:
Ejemplo:
La historia no reemplaza toda la especificación. Es un punto de partida para conversar, aclarar reglas y definir criterios de aceptación.
Una historia de usuario suele incluir tres ideas principales:
| Parte | Propósito | Ejemplo |
|---|---|---|
| Rol | Identifica quién tiene la necesidad. | Como socio del gimnasio... |
| Objetivo | Describe qué quiere lograr. | ...quiero reservar una clase... |
| Beneficio | Explica para qué lo necesita. | ...para asegurar mi lugar sin llamar por teléfono. |
El beneficio es importante porque evita construir funciones sin entender el valor que aportan.
Una historia de usuario debería ser comprensible, negociable, valiosa y verificable. No necesita contener todos los detalles desde el primer momento, pero sí debe permitir una conversación útil.
Una buena historia suele cumplir estas condiciones:
Algunos ejemplos:
Cada historia debe luego enriquecerse con reglas, ejemplos, validaciones y criterios de aceptación.
Un caso de uso describe una interacción entre un actor y el sistema para alcanzar un objetivo. A diferencia de una historia de usuario, suele detallar más el flujo de pasos, las condiciones, las alternativas y los errores posibles.
Los casos de uso son útiles cuando se necesita entender procesos completos, interacciones con varios pasos o reglas importantes. Ayudan a responder:
Un caso de uso puede documentarse con distintos niveles de detalle. Una estructura simple incluye:
| Nombre | Acción u objetivo del actor. |
|---|---|
| Actor principal | Quien inicia o se beneficia directamente del caso. |
| Objetivo | Resultado que el actor quiere lograr. |
| Precondiciones | Condiciones que deben cumplirse antes de comenzar. |
| Flujo principal | Pasos normales para completar el caso con éxito. |
| Flujos alternativos | Variantes válidas del flujo principal. |
| Excepciones | Situaciones de error o casos que impiden completar el objetivo. |
| Postcondiciones | Estado final esperado después de completar el caso. |
Ejemplo: reservar una clase en un gimnasio.
| Nombre | Reservar clase |
|---|---|
| Actor principal | Socio |
| Objetivo | Reservar un lugar en una clase disponible. |
| Precondiciones | El socio está registrado y tiene cuota activa. |
| Flujo principal | El socio consulta clases disponibles, selecciona una clase, confirma la reserva y el sistema registra el cupo. |
| Flujo alternativo | Si quedan pocos cupos, el sistema informa la cantidad disponible antes de confirmar. |
| Excepción | Si la clase no tiene cupo, el sistema no permite reservar y ofrece ver otros horarios. |
| Postcondición | La reserva queda registrada y el socio recibe confirmación. |
| Aspecto | Historia de usuario | Caso de uso |
|---|---|---|
| Enfoque | Necesidad y valor desde la perspectiva del usuario. | Interacción detallada entre actor y sistema. |
| Extensión | Breve, pensada para conversación. | Más detallado, describe pasos y variantes. |
| Uso común | Backlogs ágiles y planificación incremental. | Análisis funcional de procesos e interacciones. |
| Fortaleza | Mantiene foco en valor. | Ayuda a descubrir escenarios, reglas y excepciones. |
| Riesgo | Puede quedar demasiado vaga si no se conversa. | Puede volverse excesivamente detallado si no se controla. |
No son herramientas enemigas. En algunos proyectos se usan historias para priorizar y casos de uso para detallar interacciones complejas.
Los criterios de aceptación describen las condiciones que deben cumplirse para considerar que una historia, funcionalidad o requerimiento está terminado correctamente. Ayudan a evitar interpretaciones distintas sobre lo que significa "listo".
Sirven para:
Un criterio de aceptación debe ser observable y verificable.
Un formato habitual para escribir criterios de aceptación es Dado-Cuando-Entonces:
Ejemplo:
Este formato ayuda a expresar condiciones, acciones y resultados de forma clara.
Historia de usuario:
Criterios de aceptación:
Estos criterios aclaran reglas, límites y resultados esperados.
Los criterios de aceptación son una base para diseñar pruebas. No son exactamente lo mismo que casos de prueba detallados, pero ayudan a definir qué situaciones deben verificarse.
| Criterio de aceptación | Posible prueba |
|---|---|
| El sistema rechaza reservas si no hay cupo. | Intentar reservar una clase completa y verificar mensaje y estado. |
| El usuario recibe confirmación al reservar. | Crear una reserva válida y verificar que se genere la notificación. |
| Solo administradores pueden bloquear horarios. | Intentar bloquear horarios con usuario administrador y usuario común. |
| La cancelación libera el cupo. | Cancelar una reserva y verificar que otro socio pueda reservar ese lugar. |
La elección depende del contexto y del nivel de detalle necesario.
Historia de usuario:
Caso de uso resumido:
Criterios de aceptación:
Al trabajar con estas herramientas suelen aparecer errores como:
Plantilla de historia de usuario:
Plantilla de caso de uso:
| Nombre | Objetivo del caso de uso. |
|---|---|
| Actor principal | Quién inicia o se beneficia del caso. |
| Precondiciones | Qué debe cumplirse antes de comenzar. |
| Flujo principal | Pasos normales para lograr el objetivo. |
| Flujos alternativos | Variantes válidas del flujo principal. |
| Excepciones | Errores o situaciones que impiden completar el objetivo. |
| Postcondiciones | Estado final esperado. |
Plantilla de criterio de aceptación:
Historias de usuario, casos de uso y criterios de aceptación son herramientas complementarias para expresar requerimientos. Las historias ayudan a enfocarse en valor, los casos de uso detallan interacciones y los criterios de aceptación permiten verificar si lo construido cumple lo esperado.
Para quien comienza, la idea principal es esta: un requerimiento bien expresado debe ayudar a entender quién necesita algo, qué quiere lograr, cómo interactúa con el sistema y cómo sabremos que quedó correctamente resuelto.
En el próximo tema veremos la trazabilidad entre necesidades, requerimientos y solución, para comprender cómo conservar la relación entre lo que se pide, lo que se construye y lo que se prueba.