La elaboración de casos de uso es una fase crítica en el ciclo de vida del desarrollo de software, particularmente dentro del contexto de la ingeniería de requisitos y el análisis y diseño orientados a objetos. Cierra la brecha entre los casos de uso de alto nivel y las especificaciones detalladas del sistema, permitiendo a desarrolladores, analistas y partes interesadas comprendercómo se comporta un sistema en respuesta a objetivos específicos del usuario.
Esta guía ofrece una visión general completa dela elaboración de casos de uso, incluyendo su propósito, conceptos clave, metodología paso a paso, mejores prácticas y ejemplos del mundo real.
La elaboración de casos de uso es el proceso de refinar un caso de uso de alto nivel en una descripción detallada y accionable del comportamiento del sistema. Transforma una narrativa sencilla de interacción del usuario en una especificación precisa, verificable e implementable.

✅ Objetivo: Definirqué debe hacer el sistema,cómo debe hacerlo, ybajo qué condiciones, con suficiente detalle para el desarrollo y la prueba.
Reduce la ambigüedad: Evita la interpretación errónea de los requisitos.
Mejora la trazabilidad: Enlaza los requisitos con el diseño, el código y los casos de prueba.
Apoya el diseño y la implementación: Proporciona una base para diagramas de clases, diagramas de secuencia y diseño de bases de datos.
Permite la prueba: Facilita la creación de escenarios de prueba y criterios de aceptación.
Mejora la colaboración: Garantiza un entendimiento compartido entre los interesados, desarrolladores y probadores.
Un caso de uso describe una secuencia de acciones que un sistema realiza para obtener un resultado valioso para un actor (un usuario o sistema externo).
Ejemplo: “Retirar efectivo” de un cajero automático.
Una entidad externa que interactúa con el sistema. Puede ser un usuario humano, otro sistema o un desencadenante temporal.
Ejemplo: Cliente, máquina de cajero automático, pasarela de pagos.
Actor primario: Inicia el caso de uso.
Actor secundario: Apoya al actor primario (por ejemplo, un servidor bancario).
Condiciones que deben ser verdaderas antes de que pueda comenzar el caso de uso.
Ejemplo: El usuario debe tener una tarjeta válida y un PIN correcto.
Condiciones que deben ser verdaderas después de que finalice el caso de uso.
Ejemplo: Se entrega efectivo, se actualiza el saldo de la cuenta.
El camino más común a través del caso de uso que conduce al éxito.
Ejemplo: Insertar tarjeta → Ingresar PIN → Seleccionar retiro → Ingresar monto → Recibir efectivo.
Ramificaciones en el caso de uso que manejan excepciones, errores o variaciones.
Ejemplo: PIN inválido → Volver a intentar o cancelar.
Puntos en el flujo principal donde se puede insertar un comportamiento alternativo (por ejemplo, mediante “<>” en UML).
Ejemplo: “<>: Notificar al banco sobre actividad sospechosa.”
Restricciones sobre el comportamiento del sistema (por ejemplo, rendimiento, seguridad, usabilidad).
Ejemplo: “La transacción debe completarse en menos de 3 segundos.”
Comience con un caso de uso de alto nivel (por ejemplo, “Colocar pedido”).
Utilice una plantilla:
Nombre del caso de uso: Colocar pedido
Actor principal: Cliente
Partes interesadas: Cliente, Sistema de gestión de pedidos, Pasarela de pago
Enumere todas las condiciones que deben cumplirse antes de que comience el caso de uso.
El cliente ha iniciado sesión.
El carrito de compras contiene al menos un artículo.
El método de pago está guardado.
Indique lo que debe ser verdadero después de que finalice el caso de uso.
El pedido se crea en el sistema.
El inventario se actualiza.
El pago se procesa.
Se envía un correo de confirmación.
Detalle el camino ideal y exitoso.
El cliente selecciona “Pagar” desde el carrito de compras.
El sistema muestra el resumen del pedido.
El cliente confirma la dirección de envío.
El cliente selecciona el método de pago.
El sistema procesa el pago.
El pago se confirma.
El sistema crea el pedido y genera la confirmación.
Se muestra la confirmación y se envía un correo electrónico.
Liste las posibles desviaciones del flujo principal.
Flujo alternativo A: Stock insuficiente
El sistema verifica el inventario.
El artículo está agotado.
El sistema muestra el mensaje: «El artículo no está disponible».
El cliente puede eliminar el artículo o continuar sin él.
Flujo alternativo B: Pago rechazado
El pago es rechazado.
El sistema muestra el error: «Pago rechazado».
El cliente puede intentarlo de nuevo o elegir otro método.
Flujo alternativo C: Dirección de envío inválida
El sistema valida la dirección.
La dirección es inválida.
El sistema solicita al cliente que la corrija.
Utilice extensiones de estilo UML para mostrar comportamiento opcional.
<>: Notificar al sistema de inventario
Disparador: Cuando un artículo se agota durante el proceso de pago.
Propósito: Alertar al almacén para reabastecer.
<>: Aplicar cupón de descuento
Disparador: El cliente ingresa un código de cupón válido.
Propósito: Reducir el costo total.
Incluya las restricciones del sistema.
El pedido debe procesarse dentro de 5 segundos.
El pago debe cifrarse utilizando TLS 1.3.
El sistema debe soportar 10,000 usuarios concurrentes.
Colaborar con los interesados para garantizar la completitud y precisión.
Pregunte: “¿Cubre esto todos los objetivos del usuario?”
Pregunte: “¿Se han considerado todos los casos extremos?”
Pregunte: “¿Puede un desarrollador construir a partir de esto?”
| Herramienta/Técnica | Propósito |
|---|---|
| Diagrama de casos de uso (UML) | Visualizar actores y casos de uso. |
| Diagrama de secuencia | Mostrar el flujo de mensajes entre objetos durante el caso de uso. |
| Diagrama de actividad | Modelar flujos de trabajo complejos y puntos de decisión. |
| Mapa de historias de usuario | Vincular casos de uso con el recorrido del usuario y prioridades. |
| Tablas de decisión | Aclarar lógica compleja (por ejemplo, reglas de descuento). |
Mantenga los casos de uso centrados en el usuario: Enfóquese en los objetivos del usuario, no en las características del sistema.
Use una nomenclatura consistente: Use el formato verbo-nombre (por ejemplo, “Actualizar perfil”).
Evite el jergón técnico: Escríbalo para interesados no técnicos.
Use un lenguaje claro: Sea claro y conciso.
Iterar: Perfecciona los casos de uso a medida que crece el entendimiento.
Enlazar con otros artefactos: Conecta los casos de uso con diagramas de clases, casos de prueba y historias de usuarios.
Priorizar: Enfócate primero en los casos de uso de alto valor o alto riesgo.
Actor principal: Cliente
Actor secundario: Servidor del banco, Sistema de detección de fraudes
El cliente ha iniciado sesión.
La cuenta de origen tiene fondos suficientes.
No se ha superado el límite de transferencia.
Los fondos se transfieren desde la cuenta de origen a la de destino.
La transacción se registra en ambas cuentas.
Se envía una notificación a ambas partes.
El cliente selecciona «Transferir dinero» desde el panel de control.
El sistema muestra el formulario de transferencia.
El cliente ingresa la cuenta de destino y la cantidad.
El sistema valida la cuenta y la cantidad.
El cliente confirma la transferencia.
El sistema verifica las reglas de detección de fraudes.
La transacción es aprobada y ejecutada.
Se muestra un mensaje de confirmación.
A1: Fondos insuficientes
→ El sistema muestra: «Fondos insuficientes.»
→ El cliente puede cancelar o ajustar la cantidad.
A2: Fraude detectado
→ El sistema bloquea la transferencia y envía una alerta.
→ El cliente debe verificar mediante 2FA o contactar al soporte.
A3: Cuenta de destino inválida
→ El sistema muestra: «Cuenta no encontrada.»
→ El cliente puede volver a ingresarla o usar la búsqueda de cuenta.
<>: Enviar notificación al destinatario
Disparador: Transferencia completada.
Propósito: Informar al destinatario.
<>: Aplicar tarifa de transferencia
Disparador: Monto de transferencia > $1.000.
Propósito: Descontar tarifa de $5.
Todas las transferencias deben registrarse y ser auditables.
Tiempo de respuesta ≤ 2 segundos.
Los datos están cifrados durante la transmisión y en reposo.
| Error común | Solución |
|---|---|
| Demasiado vago (por ejemplo, «El sistema debe procesar pedidos») | Use acciones específicas y medibles. |
| Lenguaje demasiado técnico | Use un lenguaje natural; evite términos de código o bases de datos. |
| Faltan rutas de excepción | Use flujos alternativos para cubrir fallos. |
| Criterios de éxito no claros | Define claramente las postcondiciones. |
| Sin revisión por parte de los interesados | Involucra a usuarios, testers y analistas de negocio. |
La elaboración de casos de uso no es solo un ejercicio de documentación: es un proceso estratégico que garantiza que el sistema satisfaga las necesidades reales de los usuarios con claridad, precisión y completitud. Al expandir sistemáticamente los casos de uso de alto nivel en especificaciones detalladas y accionables, los equipos reducen riesgos, mejoran la comunicación y establecen una base sólida para la entrega exitosa de software.
✅ Consejo final: Trata la elaboración de casos de uso como una conversación iterativa, no como una tarea única. Mejórala a medida que aprendas más sobre el sistema y sus usuarios.
# Nombre del caso de uso: [por ejemplo, Actualizar perfil]
**Actor principal**: [por ejemplo, Cliente]
**Actores secundarios**: [por ejemplo, Base de datos, Servicio de correo electrónico]
**Interesados**: [por ejemplo, Cliente, Equipo de soporte]
### Precondiciones
- [Lista de condiciones]
### Postcondiciones
- [Lista de resultados]
### Escenario principal de éxito (flujo básico)
1. [Paso 1]
2. [Paso 2]
...
### Flujos alternativos
- **A1: [Nombre]**
1. [Paso]
2. [Paso]
- **A2: [Nombre]**
...
### Extensiones (<<extend>>)
- **<<extend>>: [Nombre]**
- Disparador: [Cuándo]
- Propósito: [Por qué]
### Requisitos no funcionales
- [Rendimiento, Seguridad, Usabilidad, etc.]
### Notas
- [Contexto adicional o supuestos]
Siguiendo esta guía, los equipos pueden dominar el arte de la elaboración de casos de uso y construir sistemas que no solo sean funcionales, sino verdaderamente alineados con las expectativas de los usuarios.
Retirar efectivo
Cliente (titular de cuenta bancaria)
Máquina de cajero automático
Servidor del banco (Sistema de banca central)
Pasarela de pagos (para procesamiento de transacciones)
Sistema de detección de fraudes
Impresora (para generación de comprobantes)
Cliente: Quiere retirar efectivo de forma segura y eficiente.
Banco: Garantiza la integridad de las transacciones, la prevención de fraudes y la actualización precisa de las cuentas.
Operador del cajero automático: Mantiene la disponibilidad de la máquina y el inventario de efectivo.
Equipo de Seguridad: Monitorea comportamientos sospechosos y previene el fraude.
El cliente tiene una tarjeta bancaria válida insertada en el ATM.
El cliente se ha autenticado correctamente (ingresó el PIN correcto).
La cuenta del cliente está activa y no está bloqueada.
El ATM tiene efectivo suficiente en el depósito.
La cuenta del cliente tiene un saldo disponible suficiente.
No se ha superado el límite diario de retiro.
Se entrega al cliente la cantidad solicitada de efectivo.
El saldo de la cuenta del cliente se reduce por la cantidad retirada.
Se crea un registro de transacción en el sistema del banco.
Se imprime un comprobante (si se solicita).
El ATM registra la transacción para auditoría y reconciliación.
| Paso | Acción del sistema | Respuesta del actor |
|---|---|---|
| 1 | ATM solicita: “Por favor ingrese su PIN.” | El cliente ingresa el PIN. |
| 2 | El ATM valida el PIN con el servidor del banco. | El sistema confirma que el PIN es correcto. |
| 3 | El ATM muestra el menú principal: “Retirar efectivo, Consultar saldo, Transferir, Salir.” | El cliente selecciona “Retirar efectivo.” |
| 4 | El ATM solicita: “Ingrese la cantidad a retirar.” | El cliente ingresa la cantidad (por ejemplo, $100). |
| 5 | El ATM valida: |
La cantidad está dentro del límite diario.
La cuenta tiene fondos suficientes.
El ATM tiene efectivo suficiente. | El sistema confirma la validez. |
| 6 | El ATM solicita autorización al servidor del banco. | El servidor del banco aprueba la transacción. |
| 7 | El ATM dispensa efectivo desde el depósito. | El cliente recibe el efectivo. |
| 8 | El ATM muestra: “¿Desea un comprobante?” | El cliente selecciona “Sí” o “No”. |
| 9 | Si “Sí”: el ATM imprime el comprobante con:
Fecha/hora
Monto retirado
Saldo restante
ID de transacción | El cliente recoge el comprobante. |
| 10 | El ATM muestra: “Gracias. Por favor retire su tarjeta.” | El cliente retira la tarjeta. |
| 11 | El ATM regresa al estado de espera. | El sistema se reinicia. |
✅ Resultado exitoso: El cliente recibe efectivo y (opcionalmente) un comprobante. La cuenta se actualiza.
Disparador: El cliente ingresa un PIN incorrecto tres veces.
Acción del sistema: El ATM bloquea la tarjeta y muestra: “Tarjeta bloqueada. Comuníquese con su banco.”
Acción del actor: El cliente sale y contacta al banco.
Postcondición: La tarjeta está bloqueada temporalmente; la transacción se registra.
⚠️ Nota: Esta es una medida de seguridad para evitar el acceso no autorizado.
Disparador: El cliente ingresa una cantidad superior al saldo disponible.
Acción del sistema: El ATM muestra: “Fondos insuficientes. Saldo actual: $X.”
Acción del actor: El cliente selecciona “Cancelar” o ingresa una cantidad menor.
Postcondición: No se entrega efectivo; no hay cambio en la cuenta.
Disparador: El cliente ingresa una cantidad válida, pero el cajero automático está vacío o por debajo del mínimo.
Acción del sistema: El ATM muestra: “Efectivo no disponible. Por favor intente más tarde.”
Acción del actor: El cliente cancela o regresa más tarde.
Postcondición: La transacción no se procesa; no hay cambio en la cuenta.
Disparador: El cliente intenta retirar más del límite diario (por ejemplo, $1,000).
Acción del sistema: El ATM muestra: “Excede el límite diario de retiro. Intente con una cantidad menor.”
Acción del actor: El cliente reduce la cantidad o cancela.
Postcondición: La transacción no se procesa.
Disparador: El servidor del banco rechaza la transacción (por ejemplo, debido a una alerta de fraude, congelación de cuenta).
Acción del sistema: El cajero automático muestra: “Transacción rechazada. Por favor, contacte con su banco.”
Acción del actor: El cliente cancela y contacta con el banco.
Postcondición: No se entrega efectivo; no hay cambio en la cuenta.
| Extensión | Disparador | Propósito |
|---|---|---|
| <>: Notificar al sistema de detección de fraudes | Cuando se realiza un retiro en un país extranjero o supera el comportamiento típico | Marcar la actividad sospechosa para su revisión |
| <>: Enviar alerta por SMS al cliente | Después del retiro exitoso | Notificar al cliente sobre la transacción (seguridad mejorada) |
| <>: Aplicar tarifa de retiro | Para titulares de cuentas no primarias o ciertos tipos de cuentas | Cobrar tarifa por servicios específicos |
| <>: Imprimir el historial de transacciones | Si el cliente selecciona “Imprimir historial” en el menú | Proporcionar un resumen impreso de las transacciones recientes |
| Categoría | Requisito |
|---|---|
| Rendimiento | La transacción debe procesarse en menos de 3 segundos. |
| Seguridad | Toda la comunicación está cifrada (TLS 1.3). El PIN nunca se almacena ni se transmite en texto plano. |
| Fiabilidad | El cajero automático no debe dispensar efectivo a menos que el servidor del banco confirme la autorización. |
| Usabilidad | La interfaz debe ser accesible (por ejemplo, botones grandes, guía por voz para personas con discapacidad visual). |
| Disponibilidad | El cajero automático debe estar operativo el 99,9 % del tiempo. |
| Auditoría y cumplimiento | Todas las transacciones deben registrarse y ser rastreables durante 7 años (según las regulaciones bancarias). |
El cajero automático debe mantenerse regularmente para garantizar la disponibilidad de efectivo y la fiabilidad del hardware.
Si la tarjeta no se retira dentro de los 30 segundos después de la transacción, se retendrá automáticamente (función antirobo).
El sistema admite múltiples monedas y cálculos de tipo de cambio (si aplica).
[Cliente] --(Retirar efectivo)--> [Cajero automático]
[Cajero automático] --(Autenticar PIN)--> [Servidor del banco]
[Cajero automático] --(Verificar fondos)--> [Servidor del banco]
[Cajero automático] --(Dispensar efectivo)--> [Caja fuerte]
[Cajero automático] --(Imprimir comprobante)--> [Impresora]
[Cajero automático] --(Notificar al sistema de fraude)--> [Sistema de detección de fraude]
(Nota: En un diagrama UML completo, se mostrarían relaciones de casos de uso como <> y <>.)
Este caso de uso detallado para “Retirar efectivo” proporciona una especificación clara, estructurada y verificable que:
Captura los objetivos del usuario y el comportamiento del sistema.
Maneja excepciones del mundo real.
Apoya la seguridad, el cumplimiento y la usabilidad.
Sirve como base para el diseño, la prueba y la implementación.
Es adecuado para su uso en sprints ágiles, documentos de diseño de sistemas o especificaciones formales de requisitos.
📘 Próximos pasos:
Convierta esto en un diagrama de secuencia para mostrar las interacciones entre objetos.
Crear casos de prueba basado en cada flujo (principal y alternativo).
Enlace a diagramas de clases (por ejemplo, Cuenta, Transacción, ATM, Detector de Fraude).