Diagramas de Secuencia
1. ¿Qué es un Diagrama de Secuencia? #
Un diagrama de secuencia describe cómo los objetos se comunican entre sí a través de mensajes organizados cronológicamente. Se centra en el orden temporal de los eventos, ideal para representar casos de uso.
2. Elementos del Diagrama de Secuencia (con detalle) #
Actor #
Representa un usuario externo o sistema que interactúa con el sistema modelado.
1@startuml 2actor Usuario 3@enduml
Objeto (o participante) #
Un participante es una instancia de una clase que interviene en la interacción. Se representa por su nombre o nombre:Clase.
1@startuml 2participant "Controlador" as Controller 3@enduml
Línea de vida #
Una línea vertical que representa la existencia del objeto durante la secuencia. Inicia en la cabecera del objeto y desciende en el tiempo.
1@startuml 2participant Servicio 3@enduml
Cada participante tiene una línea de vida implícita.
Activación #
Una barra vertical sobre la línea de vida. Representa el período en que el objeto ejecuta una acción.
1@startuml 2activate Servicio 3deactivate Servicio 4@enduml
Mensajes #
Existen distintos tipos:
- Sincrónicos: El emisor espera la respuesta (línea con punta de flecha).
- Asincrónicos: No espera respuesta (línea con punta abierta).
- Respuesta o retorno: Se devuelve un valor (línea discontinua).
1@startuml 2Usuario -> Controller: introducirCredenciales() 3Controller -> Servicio: validarUsuario() 4Servicio --> Controller: resultado 5@enduml
Bucles y condicionales #
loop: repeticiónalt: condición con ramasopt: ejecución opcionalpar: ejecución paralela
1@startuml 2loop por cada producto 3 Controller -> Servicio: comprobarStock() 4end 5@enduml
3. Ejemplo Completo: Proceso de Inicio de Sesión #
Caso de uso #
El usuario introduce sus credenciales. El sistema valida y responde.
Diagrama en PlantUML #
4. Control de Flujo: Bucles y Condiciones #
PlantUML #
1@startuml 2participant Cliente 3participant Sistema 4 5Cliente -> Sistema: iniciarCompra() 6activate Sistema 7 8loop por cada ítem 9 Sistema -> Sistema: verificarStock(item) 10end 11 12alt stock insuficiente 13 Sistema --> Cliente: mostrarError() 14else 15 Sistema --> Cliente: compraExitosa() 16end 17 18deactivate Sistema 19@enduml
5. Diagrama con Asincronía y Retorno #
1@startuml 2participant Frontend 3participant Backend 4 5Frontend -> Backend ++: getDatos() 6Backend --> Frontend --: datosJSON 7@enduml
6. Buenas Prácticas #
| Práctica | Descripción |
|---|---|
| ✅ Usa nombres claros | Los nombres de los objetos y mensajes deben ser comprensibles |
| ✅ Limita la complejidad | Divide en varios diagramas si hay demasiada lógica |
| ✅ Usa activaciones | Ayuda a visualizar qué parte del código se está ejecutando |
| ✅ Representa condiciones | Usa alt, opt y loop para decisiones o iteraciones |
Resumen del tema
Conceptos clave #
- Interacción y orden temporal: visualización cronológica de cómo colaboran los objetos intercambiando mensajes a lo largo del tiempo.
- Líneas de vida y activaciones:
- Línea de vida: línea vertical discontinua que representa la existencia del participante en el tiempo.
- Barra de activación: rectángulo vertical que indica cuándo el objeto está ejecutando activamente código.
- Tipología de mensajes:
- Síncrono (
->): llamada bloqueante en la que el emisor espera la respuesta. - Asíncrono (
->>): envío de señal sin bloqueo del emisor. - Retorno (
-->): respuesta con datos o confirmación hacia el llamador.
- Síncrono (
- Fragmentos combinados de control:
alt: bifurcaciones condicionales alternativas (if / else).opt: bloque de ejecución opcional bajo condición (if simple).loop: iteraciones o bucles repetitivos (while / for).par: ejecución concurrente de interacciones.
Qué debes recordar #
El diagrama de secuencia describe el flujo dinámico temporal de los casos de uso, detallando el intercambio de mensajes síncronos, asíncronos y de retorno entre líneas de vida.