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.
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#
| Elemento | Notación | Qué significa |
|---|---|---|
| Parte | rectángulo dentro del marco | Un rol interpretado dentro del propietario, escrito roleName: Type. Puede llevar una multiplicidad en la esquina. |
| Puerto | cuadradito en la frontera | Un punto de interacción con nombre. Todo lo que cruza la frontera pasa por uno, y eso es lo que hace significativa la frontera. |
| Conector | línea entre partes | Una vía de comunicación entre dos partes dentro del propietario. |
| Conector de delegación | línea de un puerto a una parte | El tráfico que llega a este puerto externo lo atiende aquella parte interna. El exterior nunca se entera de cuál. |
| Conector de ensamblaje | bola en un casquillo | La interfaz proporcionada de una parte cableada a la requerida de otra. |
| Colaboración | elipse discontinua | Un 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
- 01Muestra el interior de exactamente un clasificador: sus partes, puertos y cableado.
- 02Las partes son roles interpretados en ejecución, no clases: la misma clase puede ser dos partes.
- 03Los puertos son los únicos cruces de la frontera, y eso es lo que hace real la frontera.
- 04Los conectores de delegación entregan un contrato externo a una parte interna.
- 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
- 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 estructura
Fundamentos
Diagramas de estructura
Diagramas de estructura
Diagramas de comportamiento
Diagramas de estructura