Archyno
UMLDiagramas de comportamiento

Diagrama de secuencia vs de comunicación

La misma compra dibujada de las dos maneras, para que la compensación se vea en lugar de contarse: una pone el tiempo en el eje vertical, la otra pone la estructura en la página y numera los mensajes.

7 min de lecturaUML 2.5.127 de 35

La respuesta corta

  • Ninguno es mejor. El de secuencia hace evidente el orden y difícil de ver la estructura; el de comunicación hace lo contrario.
  • Semánticamente son la misma interacción sobre el mismo modelo UML, así que una herramienta puede generar uno del otro mecánicamente.
  • Los números de mensaje existen porque no hay eje temporal. Sin ellos el diagrama deja de decir qué pasa cuándo.
  • El orden es lo que la mayoría intenta comunicar, y por eso el diagrama de secuencia gana casi cualquier conversación real.
Un diagrama de comunicación UML del mismo proceso de compra. Un actor Customer está enlazado con un objeto OrderController mediante el mensaje uno, realizar pedido. El controlador está enlazado con un objeto Inventory mediante el mensaje dos, reserve; con un objeto PaymentGateway mediante el mensaje tres, charge; y con un objeto OrderRepo mediante el mensaje cuatro, save. Los cuatro enlaces irradian del controlador.
La compra como diagrama de comunicación: la estructura es inmediata, el orden vive en los números.

01Una interacción, dos dibujos#

Los dos diagramas de abajo describen la misma compra: un cliente realiza un pedido, el controlador reserva existencias, cobra una tarjeta, guarda el pedido y responde. Nada del sistema cambia entre ellos. Solo cambia el eje en el que la notación gasta su espacio.

Un diagrama de secuencia UML de una compra. Un actor Customer llama a placeOrder en el OrderController. El controlador llama a reserve en Inventory y recibe reserved, luego llama a charge en el PaymentGateway y recibe authorised, luego llama a save en el OrderRepo, y finalmente responde al cliente con una confirmación.
La misma compra como diagrama de secuencia: el orden es el eje vertical, y el anidamiento de las llamadas se ve en las barras de activación.

Vuelve a leer la figura de cabecera después de esta. El diagrama de comunicación hace obvio lo que el de secuencia entierra: todos los mensajes pasan por OrderController. Cuatro enlaces irradian de un solo nodo y ninguno conecta a los demás entre sí, que es la forma del diseño y no la de la ejecución. En el diagrama de secuencia ese hecho está repartido por siete filas y hay que buscarlo.

Y lo contrario es igual de cierto. En el diagrama de secuencia ves de un vistazo que la tarjeta se cobra después de reservar existencias, y que la respuesta de la reserva vuelve antes de que salga el cobro. En el diagrama de comunicación ese orden es la diferencia entre los números 2 y 3.

02En qué gasta su espacio cada uno#

Las dos notaciones se definen en UML sobre la misma interacción subyacente, así que es una elección de presentación y no de modelado. Lo que se sigue de esa elección es lo bastante consistente como para ponerlo en una tabla.

ElementoNotaciónQué significa
OrdenSecuenciaSe lee hacia abajo por la página, sin contar. En un diagrama de comunicación sigues los números, lo que es más lento pasados unos seis mensajes.
EstructuraComunicaciónLos enlaces son la disposición, así que concentradores, cadenas y participantes aislados se ven de inmediato. Un diagrama de secuencia no tiene disposición que leer.
AnidamientoSecuenciaLas barras de activación muestran qué llamada sigue en la pila. Los diagramas de comunicación lo expresan con numeración decimal - 2.1 dentro de 2 - que se ojea peor.
Condicionales y buclesSecuenciaLos fragmentos combinados (alt, opt, loop) enmarcan una región del diagrama. Los de comunicación solo tienen guardas en las etiquetas de mensaje.
Número de participantesComunicaciónA un diagrama de secuencia se le acaba el espacio horizontal pasadas seis o siete líneas de vida. Uno de comunicación las coloca en dos dimensiones.
Que se entiendaSecuenciaMucha más gente sabe leer uno sin que se lo enseñen. No es una propiedad de la notación, pero decide la mayoría de las elecciones reales.

La misma información, dos experiencias de lectura muy distintas.

03Elegir entre los dos#

La decisión es más fácil si escribes la frase que el diagrama debe hacer decir a alguien. Si la frase lleva un orden, quieres líneas de vida. Si lleva una forma, quieres enlaces.

Úsalo cuando

  • Secuencia, cuando el asunto es qué pasa antes que qué: protocolos, saludos, condiciones de carrera.
  • Secuencia, cuando los condicionales y bucles forman parte de la historia y necesitas marcos alt o loop.
  • Comunicación, cuando el asunto es quién habla con quién: acoplamiento, un concentrador, una violación de capas.
  • Comunicación, cuando hay más participantes de los que caben en una página como líneas de vida.

Usa otra cosa cuando

  • Comunicación, cuando hay que enseñar la numeración al público antes de que pueda leerlo.
  • Secuencia, cuando en realidad describes estructura: eso es un diagrama de clases o de componentes.
  • Ambos, cuando ni el orden ni la colaboración están en cuestión. La prosa es más corta.
  • Dibujar la misma interacción dos veces como documentación. Quédate con una; la otra la regenera una herramienta.

En la práctica la mayoría de los equipos dibuja diagramas de secuencia y lee algún diagrama de comunicación de vez en cuando, que es un equilibrio razonable: el orden suele ser lo que la gente intenta explicar. El único sitio donde el diagrama de comunicación se gana el sueldo sin discusión es una revisión de diseño sobre acoplamiento, donde cuatro enlaces convergiendo en un nodo hacen el argumento más rápido que cualquier lista de puntos de llamada.

04Qué recordar#

En una línea cada uno

  1. 01Las dos notaciones describen la misma interacción. La elección va de qué nota primero un lector.
  2. 02La secuencia pone el orden en el eje vertical; la comunicación pone la estructura en la página y numera los mensajes.
  3. 03El anidamiento es una barra de activación en una y un número decimal en la otra.
  4. 04Solo los diagramas de secuencia tienen marcos alt, opt y loop: los condicionales son la razón de que la mayoría de los equipos se quede con ellos.
  5. 05Diagrama de comunicación y diagrama de colaboración son el mismo dibujo con nombres de UML 2 y UML 1.

05Preguntas frecuentes#

¿Qué es mejor, un diagrama de secuencia o uno de comunicación?

Ninguno es mejor: enfatizan ejes distintos. El de secuencia hace evidente el orden y difícil de ver la estructura. El de comunicación hace evidente la forma de la colaboración y trabajoso el orden. Elija aquel cuya fortaleza coincida con su pregunta.

¿Los diagramas de secuencia y de comunicación contienen la misma información?

Semánticamente sí: ambos describen una interacción, y UML los define sobre el mismo modelo, así que una herramienta puede generar uno a partir del otro. Lo que cambia es lo que una persona nota primero, y esa es la única razón para tener dos notaciones.

¿Por qué los diagramas de comunicación numeran los mensajes?

Porque no hay eje temporal del que leer el orden. La numeración lo lleva en su lugar, y los números anidados como 2.1 y 2.2 muestran qué llamadas ocurren dentro de cuáles. Sin los números el diagrama deja de decir qué pasa cuándo.

¿Se puede convertir un diagrama de secuencia en uno de comunicación?

Sí, y de forma mecánica. Cada línea de vida pasa a ser un nodo, cada mensaje una etiqueta numerada sobre el enlace entre dos nodos, y el orden de arriba abajo pasa a ser la numeración. Muchas herramientas convierten en ambos sentidos desde una única interacción guardada.

¿Por qué se usan tan poco los diagramas de comunicación?

La mayoría quiere comunicar precisamente el orden, y leerlo de un conjunto de números es más lento que leerlo de arriba abajo. El diagrama de comunicación gana cuando lo que importa es quién habla con quién y no en qué orden, que es una parte menor de las conversaciones reales.

En esta serie

Lecturas relacionadas

Todos los artículos