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.

actor
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.

controlador
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.

servicio
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.

servicio
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).
servicio controlador
1@startuml
2Usuario -> Controller: introducirCredenciales()
3Controller -> Servicio: validarUsuario()
4Servicio --> Controller: resultado
5@enduml

🔁 Bucles y condicionales

  • loop: repetición
  • alt: condición con ramas
  • opt: ejecución opcional
  • par: ejecución paralela
stock
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

credenciales
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

verificar stock
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

backend front
1@startuml
2participant Frontend
3participant Backend
4
5Frontend -> Backend ++: getDatos()
6Backend --> Frontend --: datosJSON
7@enduml

📏 6. Buenas Prácticas

PrácticaDescripción
✅ Usa nombres clarosLos nombres de los objetos y mensajes deben ser comprensibles
✅ Limita la complejidadDivide en varios diagramas si hay demasiada lógica
✅ Usa activacionesAyuda a visualizar qué parte del código se está ejecutando
✅ Representa condicionesUsa alt, opt y loop para decisiones o iteraciones