Archyno
UMLDiagramas de comportamiento

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.
Un diagrama de comunicación UML. Un objeto Merchant envía el mensaje 1, enviar el pago, a un objeto Checkout. Checkout envía el mensaje 2, autorizar el importe, a un objeto PaymentOrchestrator. El orquestador envía el mensaje 3, cobrar la tarjeta, a un objeto CardGateway y el mensaje 4, registrar el asiento, a un objeto Ledger. La secuencia la llevan los números de mensaje, no la disposición.
La autorización de un pago, como diagrama de comunicación. Compáralo con el mismo flujo como diagrama de secuencia: contenido idéntico, y una cosa completamente distinta hecha obvia.

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#

ElementoNotaciónQué significa
Objetorectángulo, nombre subrayadoUn participante, escrito role: Type. La misma notación de instancia que en un diagrama de objetos.
Enlacelínea simpleEstos dos pueden comunicarse. La línea en sí no lleva dirección: es el canal, no el tráfico.
Mensajeflecha pequeña junto al enlaceUna comunicación, etiquetada sequenceNumber: name(arguments). Sobre un enlace pueden ir varios mensajes.
Número de secuencia1:, 1.1:, 2:El orden. Los decimales anidan: 1.1 ocurre durante 1.
Iteración1 * [i = 1..n]:El mensaje se repite.
Guarda1 [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

  1. 01La misma información que un diagrama de secuencia, dispuesta para mostrar estructura en vez de tiempo.
  2. 02La disposición es el grafo de conexiones; la posición no dice nada sobre el orden.
  3. 03El orden vive en los números de mensaje, y los decimales anidan para mostrar la profundidad de llamada.
  4. 04Lee por número - 1, 1.1, 1.2, 2 - nunca por posición en la página.
  5. 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

Lecturas relacionadas

Todos los artículos