Curso UML

📌 ¿Qué es un Diagrama de Despliegue?

Un Diagrama de Despliegue (Deployment Diagram) muestra la arquitectura física de un sistema: cómo los componentes de software se distribuyen en los nodos físicos (servidores, dispositivos, contenedores, etc.).

Se utiliza para representar:

  • Servidores
  • Dispositivos hardware
  • Contenedores (Docker, máquinas virtuales, etc.)
  • Componentes de software desplegados
  • Conexiones entre nodos

🧱 Elementos del Diagrama de Despliegue

ElementoDescripción
NodoRecurso físico o virtual que ejecuta procesos. Se representa como una caja 3D.
ArtefactoUnidad de implementación como ejecutables, archivos .jar, .dll, etc.
DependenciaIndica que un nodo o artefacto depende de otro.
AsociaciónConexión entre nodos. Representa comunicación.
EstereotiposPermiten detallar tipos de nodos o artefactos (<<device>>, <<executionEnvironment>>, etc.).

📦 Nodo

servidor web
1@startuml
2node "Servidor Web" {
3}
4@enduml

📦 Nodo con Artefacto

Servidor web
1@startuml
2node "Servidor Web" {
3  artifact "app.war"
4}
5@enduml

🧰 Varios Nodos y Conexiones

cliente_servidorWeb
1@startuml
2node "Cliente" <<device>> {
3  artifact "browser.exe"
4}
5
6node "Servidor Web" <<executionEnvironment>> {
7  artifact "app.war"
8}
9
10node "Base de Datos" <<database>> {
11  artifact "mysql_data"
12}
13
14"Cliente" --> "Servidor Web"
15"Servidor Web" --> "Base de Datos"
16@enduml

🧩 Artefactos Independientes

Los artefactos también pueden representarse fuera de los nodos y asignarse con líneas punteadas:

pc cliente
1@startuml
2artifact "cliente.exe"
3artifact "api.jar"
4artifact "bbdd.sql"
5
6node "PC Cliente"
7node "Servidor API"
8node "Servidor DB"
9
10"cliente.exe" -down-> "PC Cliente"
11"api.jar" -down-> "Servidor API"
12"bbdd.sql" -down-> "Servidor DB"
13
14"PC Cliente" --> "Servidor API"
15"Servidor API" --> "Servidor DB"
16@enduml

🧠 Estereotipos Comunes

EstereotipoUso
<<device>>Dispositivo físico
<<executionEnvironment>>VM, contenedor, JVM, etc.
<<database>>Nodo que representa una base de datos

🎓 Ejemplo completo

cliente_servidor
1@startuml
2node "Cliente" <<device>> {
3  artifact "navegador.exe"
4}
5
6node "Servidor Web" <<executionEnvironment>> {
7  artifact "api.war"
8}
9
10node "Servidor de Base de Datos" <<database>> {
11  artifact "postgres_data"
12}
13
14"Cliente" --> "Servidor Web" : HTTP
15"Servidor Web" --> "Servidor de Base de Datos" : JDBC
16@enduml

✅ Buenas Prácticas

  • Usa nombres claros en los nodos.
  • Representa conexiones importantes (HTTP, TCP, JDBC...).
  • No sobrecargues el diagrama con detalles innecesarios.
  • Usa estereotipos para aclarar el rol de cada nodo.