Diagramas de comunicación UML
La misma interacción que muestra un diagrama de secuencia, dispuesta para responder a otra pregunta: no cuándo pasan las cosas, sino quién está conectado con quién.
6 min de lecturaUML 2.5.126 de 35
La respuesta corta
- Lleva la misma información que un diagrama de secuencia y solo difiere en la disposición: una red en lugar de un eje de tiempo.
- El orden lo llevan solo los números de mensaje, porque la disposición no lleva ninguno. Los puntos decimales marcan el anidamiento: 1.1 se envía durante el tratamiento de 1.
- Diagrama de colaboración era el nombre de lo mismo en UML 1.x. Los libros antiguos y bastantes herramientas lo siguen usando.
- Elígelo cuando la estructura importe más que el orden: comprobar que un componente solo habla con sus vecinos previstos. Para ramificación y caminos de fallo, usa secuencia.
01Qué muestra#
Un diagrama de comunicación - llamado diagrama de colaboración antes de UML 2 - muestra un conjunto de objetos, los enlaces entre ellos y los mensajes que viajan por esos enlaces. Es uno de los cuatro diagramas de interacción, y lleva exactamente la misma información que el diagrama de secuencia equivalente.
Lo que cambia es qué enfatiza la disposición. Un diagrama de secuencia gasta su geometría en el tiempo: participantes en la parte de arriba, orden hacia abajo por la página. Un diagrama de comunicación gasta la suya en la topología: objetos donde los pongas, enlaces dibujados entre los que se hablan. El orden queda degradado a un número delante de cada mensaje.
02La notación#
| Elemento | Notación | Qué significa |
|---|---|---|
| Objeto | rectángulo, nombre subrayado | Un participante, escrito role: Type. La misma notación de instancia que en un diagrama de objetos. |
| Enlace | línea simple | Estos dos pueden comunicarse. La línea en sí no lleva dirección: es el canal, no el tráfico. |
| Mensaje | flecha pequeña junto al enlace | Una comunicación, etiquetada sequenceNumber: name(arguments). Sobre un enlace pueden ir varios mensajes. |
| Número de secuencia | 1:, 1.1:, 2: | El orden. Los decimales anidan: 1.1 ocurre durante 1. |
| Iteración | 1 * [i = 1..n]: | El mensaje se repite. |
| Guarda | 1 [ok]: | El mensaje solo se envía cuando se cumple la condición. |
La parte que merece aprenderse es la numeración decimal anidada, porque es como este diagrama expresa la profundidad de llamada sin eje vertical. El mensaje 2.1 ocurre dentro del tratamiento del mensaje 2. Lee un diagrama de comunicación por número, no por posición: 1, 1.1, 1.2, 2. La posición carece de significado a propósito.
03Elegir entre este y un diagrama de secuencia#
En principio son intercambiables - una buena herramienta convierte entre ellos automáticamente - así que la elección va del lector.
Prefiere un diagrama de secuencia cuando el asunto sea el orden, cuando haya muchos mensajes, o cuando necesites fragmentos combinados. Nada en la notación de comunicación iguala a un bloque alt para mostrar una rama, y pasada una docena de mensajes la numeración se sigue peor que un eje vertical.
Prefiere un diagrama de comunicación cuando el asunto sea la estructura de conexiones: qué objetos se conocen, dónde están los concentradores, si la forma coincide con la arquitectura que pretendías. Es además el más compacto de los dos para una interacción pequeña repartida entre muchos objetos, porque no reserva una columna por participante.
Valoración honesta: en la práctica dominan los diagramas de secuencia, y si solo vas a aprender un diagrama de interacción, aprende ese. Los de comunicación siguen mereciendo reconocerse, y merecen dibujarse el día concreto en que la pregunta va de acoplamiento y no de orden.
04Cuándo dibujar uno#
Úsalo cuando
- La pregunta es quién habla con quién, no en qué orden
- Buscar problemas de acoplamiento: los concentradores y los enlaces inesperados destacan
- Una interacción pequeña repartida entre muchos objetos, donde un diagrama de secuencia sería sobre todo espacio en blanco
- Mostrar que un diseño encaja con una estructura pretendida, como un patrón
Usa otra cosa cuando
- El flujo tiene ramas o bucles: los fragmentos no tienen equivalente aquí
- Hay más de una docena de mensajes; la numeración deja de ser legible
- El público ya conoce la estructura y necesita el orden
- Quieres mostrar tiempo transcurrido: usa un diagrama de tiempos
En una línea cada uno
- 01La misma información que un diagrama de secuencia, dispuesta para mostrar estructura en vez de tiempo.
- 02La disposición es el grafo de conexiones; la posición no dice nada sobre el orden.
- 03El orden vive en los números de mensaje, y los decimales anidan para mostrar la profundidad de llamada.
- 04Lee por número - 1, 1.1, 1.2, 2 - nunca por posición en la página.
- 05Lo mejor cuando la pregunta es el acoplamiento; usa uno de secuencia cuando sea el orden o la ramificación.
05Preguntas frecuentes#
¿Qué diferencia hay entre un diagrama de comunicación y uno de secuencia?
Llevan la misma información y solo difieren en la disposición. Un diagrama de secuencia pone el tiempo en un eje vertical, así que el orden es obvio y las conexiones no. Uno de comunicación coloca a los participantes como una red, así que quién habla con quién es obvio y el orden hay que leerlo en los números de los mensajes.
¿Cómo funciona la numeración de mensajes?
Los mensajes se numeran en orden de ejecución y el anidamiento se marca con puntos decimales. El mensaje 1.1 es el primero enviado durante el tratamiento del mensaje 1, y 1.1.2 el segundo enviado durante el de 1.1. La numeración es lo único que lleva la secuencia, porque la disposición no lleva ninguna.
¿Un diagrama de comunicación es lo mismo que uno de colaboración?
Sí. Diagrama de colaboración era el nombre en UML 1.x, renombrado a diagrama de comunicación en UML 2.0. Los libros más antiguos, y bastantes herramientas, siguen usando el término viejo.
¿Cuándo elegir un diagrama de comunicación?
Cuando la estructura de una interacción importa más que su orden: comprobar que un componente solo habla con los vecinos previstos, o mostrar el acoplamiento. Donde importan los tiempos, la ramificación o los caminos de fallo, el de secuencia es la mejor herramienta.
En esta serie
- 01¿Qué es UML?
- 02Símbolos UML
- 03Elegir un diagrama
- 04Diagramas de clases
- 05Ejemplos de diagramas de clases
- 06Cómo dibujar un diagrama de clases
- 07Símbolos del diagrama de clases
- 08Diagramas de secuencia
- 09Ejemplos de diagramas de secuencia
- 10Cómo dibujar un diagrama de secuencia
- 11Diagramas de casos de uso
- 12Ejemplos de casos de uso
- 13Diagramas de actividad
- 14Ejemplos de actividad
- 15Diagramas de máquina de estados
- 16Ejemplos de máquina de estados
- 17Diagramas de componentes
- 18Ejemplos de componentes
- 19Dibujar un diagrama de componentes
- 20Símbolos de componentes
- 21Diagramas de despliegue
- 22Ejemplos de despliegue
- 23Diagramas de objetos
- 24Diagramas de paquetes
- 25Diagramas de estructura compuesta
- 26Diagramas de comunicación
- 27Secuencia vs comunicación
- 28Diagramas de tiempos
- 29Diagramas de visión general de interacción
- 30Diagramas de perfil
- 31UML con IA
- 32Ejemplo de e-commerce
- 33Ejemplo bancario
- 34Ejemplo de microservicios
- 35Ejemplo de AWS
Lecturas relacionadas
Diagramas de comportamiento
Fundamentos
Diagramas de comportamiento
Diagramas de estructura
Diagramas de comportamiento
Diagramas de comportamiento