Archyno
UMLDiagramas de estructura

Diagramas de estructura compuesta UML

El interior de una cosa. Sus partes, los puertos de su frontera y los conectores que los cablean - el diagrama para explicar cómo está construido de verdad un componente.

6 min de lecturaUML 2.5.125 de 35

La respuesta corta

  • Una parte es un rol que una instancia desempeña dentro de un contenedor, no un tipo. La misma clase puede aparecer dos veces como dos partes con nombres distintos.
  • Un conector de ensamblado es cableado interno entre dos partes; uno de delegación cruza la frontera y reenvía.
  • La delegación es como un compuesto cumple una interfaz sin hacer el trabajo: lo que llega al puerto lo atiende una parte de dentro.
  • Dibuja este cuando la pregunta sea qué hay dentro de una cosa. Un diagrama de componentes responde a cómo encajan varias.
Un diagrama de estructura compuesta UML que muestra el interior del orquestador de pagos. Un puerto de entrada en la frontera izquierda delega a través de IPayment en una parte Authorizer, que se conecta con una parte RiskCheck y luego con una parte LedgerClient, que delega a través de ILedger en un puerto de salida en la frontera derecha.
Un clasificador, abierto. Los cuadraditos de la frontera son puertos; las flechas que la cruzan son conectores de delegación que entregan un contrato externo a una parte interna.

01Qué muestra#

Un diagrama de estructura compuesta responde a una pregunta: ¿de qué está hecha esta cosa por dentro? Toma un único clasificador - una clase, un componente, un subsistema - y dibuja sus partes internas y cómo están cableadas.

Conviene tener clara la distinción con los diagramas de al lado. Un diagrama de clases muestra tipos y las relaciones entre ellos, en general. Un diagrama de componentes muestra varios componentes y los contratos entre ellos. Un diagrama de estructura compuesta se acerca a uno de ellos y muestra la estructura en ejecución que hay dentro.

02Partes, puertos, conectores#

ElementoNotaciónQué significa
Parterectángulo dentro del marcoUn rol interpretado dentro del propietario, escrito roleName: Type. Puede llevar una multiplicidad en la esquina.
Puertocuadradito en la fronteraUn punto de interacción con nombre. Todo lo que cruza la frontera pasa por uno, y eso es lo que hace significativa la frontera.
Conectorlínea entre partesUna vía de comunicación entre dos partes dentro del propietario.
Conector de delegaciónlínea de un puerto a una parteEl tráfico que llega a este puerto externo lo atiende aquella parte interna. El exterior nunca se entera de cuál.
Conector de ensamblajebola en un casquilloLa interfaz proporcionada de una parte cableada a la requerida de otra.
Colaboraciónelipse discontinuaUn patrón de roles con nombre: la mitad estructural de un patrón de diseño, sin comprometerse con clases concretas.

03Por qué los puertos son lo útil#

Un puerto es un cuadradito, y hace más trabajo del que aparenta. Dice: esta es la única entrada. Nada de fuera llega directamente a una parte; todo llega a un puerto y se delega hacia dentro.

De ahí sale la propiedad por la que existe este diagrama. El exterior de la caja depende solo de los puertos, así que todo el interior puede reordenarse - partes divididas, fusionadas, sustituidas - sin que cambie nada fuera, mientras los puertos mantengan sus contratos. Es encapsulación dibujada como geometría.

Los puertos permiten además que un componente presente varias caras distintas. Un orquestador de pagos con un puerto de API pública, un puerto de administración y un puerto de publicación de eventos dice algo preciso sobre su superficie, y sobre cuáles de ellos tiene que tratar de otra forma un cortafuegos o una política de autorización.

04Cuándo dibujar uno#

Úsalo cuando

  • Explicar cómo está construido por dentro un componente no obvio
  • Diseñar algo donde el mismo tipo aparece en dos roles distintos
  • Documentar un componente con varios puntos de interacción distintos
  • Sistemas embebidos, telecomunicaciones o trabajo con protocolos, donde este diagrama es de verdad estructural

Usa otra cosa cuando

  • El interior son tres clases con relaciones obvias: basta un diagrama de clases
  • Estás mostrando varios componentes y no el interior de uno: usa un diagrama de componentes
  • Lo interesante es lo que pasa en el tiempo, no el cableado
  • Nadie ha preguntado cómo funciona el interior

Este es uno de los diagramas UML menos usados, y con razón: la mayoría de los componentes no tiene una estructura interna interesante. Cuando alguno la tiene, nada más la expresa con tanta franqueza, y la alternativa suele ser un párrafo de prosa que nadie lee dos veces.

En una línea cada uno

  1. 01Muestra el interior de exactamente un clasificador: sus partes, puertos y cableado.
  2. 02Las partes son roles interpretados en ejecución, no clases: la misma clase puede ser dos partes.
  3. 03Los puertos son los únicos cruces de la frontera, y eso es lo que hace real la frontera.
  4. 04Los conectores de delegación entregan un contrato externo a una parte interna.
  5. 05Reordenar el interior sale gratis mientras los puertos mantengan sus contratos.

05Preguntas frecuentes#

¿Qué diferencia hay entre una parte y una clase?

Una parte es un rol que desempeña una instancia dentro de un clasificador contenedor concreto, no un tipo por derecho propio. La misma clase puede aparecer como dos partes distintas de un compuesto, cada una con su nombre y multiplicidad, porque el diagrama trata de la estructura interna del contenedor y no de los tipos.

¿Qué es un conector de delegación?

Un conector que va de un puerto de la frontera exterior a un puerto o parte del interior. Dice que lo que llega por fuera lo atiende esa parte interna, que es como un compuesto cumple una interfaz sin hacer el trabajo él mismo.

¿Qué diferencia hay entre un conector de ensamblado y uno de delegación?

Un conector de ensamblado une dos partes del interior, cableando la interfaz requerida de una con la provista de la otra. Uno de delegación cruza la frontera, uniendo un puerto externo con algo de dentro. El ensamblado es cableado interno; la delegación es reenvío.

¿Cuándo dibujar este en vez de uno de componentes?

Cuando la pregunta es qué hay dentro de una cosa y no cómo encajan varias. Un diagrama de componentes muestra las partes de un sistema y sus contratos; uno de estructura compuesta abre una de esas partes y enseña cómo está construida.

En esta serie

Lecturas relacionadas

Todos los artículos