Curso UML
🔍 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
1@startuml 2actor Usuario 3participant "LoginController" as Controller 4participant "AuthService" as Servicio 5participant "BDUsuarios" as DB 6 7Usuario -> Controller: introducirCredenciales(user, pass) 8activate Controller 9Controller -> Servicio: validarUsuario(user, pass) 10activate Servicio 11Servicio -> DB: buscarUsuario(user) 12activate DB 13DB --> Servicio: Usuario encontrado o null 14deactivate DB 15Servicio --> Controller: true/false 16deactivate Servicio 17Controller --> Usuario: mostrarResultado() 18deactivate Controller 19@enduml
🔁 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 |