UML-Kompositionsstrukturdiagramme
Das Innere einer Sache. Ihre Teile, die Ports an ihrem Rand und die Konnektoren, die sie verdrahten - das Diagramm, um zu erklären, wie eine einzelne Komponente tatsächlich gebaut ist.
6 Min. LesezeitUML 2.5.125 von 35
Die kurze Antwort
- Ein Teil ist eine Rolle, die eine Instanz in einem Behälter spielt, kein Typ. Dieselbe Klasse kann zweimal als zwei verschieden benannte Teile auftreten.
- Ein Assemblierungskonnektor ist innere Verdrahtung zwischen zwei Teilen; ein Delegationskonnektor überquert die Grenze und leitet weiter.
- Delegation ist der Weg, auf dem ein Ganzes eine Schnittstelle erfüllt, ohne die Arbeit zu tun: was am Port ankommt, bearbeitet ein Teil im Inneren.
- Zeichnen Sie dieses, wenn die Frage lautet, was in einer Sache steckt. Ein Komponentendiagramm beantwortet, wie mehrere Dinge zusammenpassen.
01Was es zeigt#
Ein Kompositionsstrukturdiagramm beantwortet eine Frage: woraus besteht dieses Ding im Inneren? Es nimmt einen einzelnen Klassifizierer - eine Klasse, eine Komponente, ein Teilsystem - und zeichnet seine internen Teile und deren Verdrahtung.
Die Abgrenzung zu den Diagrammen daneben lohnt sich klarzuziehen. Ein Klassendiagramm zeigt Typen und die Beziehungen zwischen ihnen, allgemein. Ein Komponentendiagramm zeigt mehrere Komponenten und die Verträge zwischen ihnen. Ein Kompositionsstrukturdiagramm zoomt in eine davon hinein und zeigt die Laufzeitstruktur darin.
02Teile, Ports, Konnektoren#
| Element | Notation | Was es bedeutet |
|---|---|---|
| Teil | Rechteck innerhalb des Rahmens | Eine im Besitzer gespielte Rolle, geschrieben roleName: Type. Kann in der Ecke eine Multiplizität tragen. |
| Port | kleines Quadrat auf der Grenze | Ein benannter Interaktionspunkt. Alles, was die Grenze kreuzt, geht durch einen, und genau das macht die Grenze bedeutsam. |
| Konnektor | Linie zwischen Teilen | Ein Kommunikationsweg zwischen zwei Teilen im Besitzer. |
| Delegationskonnektor | Linie von einem Port zu einem Teil | Verkehr, der an diesem externen Port ankommt, wird von jenem internen Teil bearbeitet. Das Außen erfährt nie, von welchem. |
| Assemblierungskonnektor | Kugel in einer Fassung | Die angebotene Schnittstelle eines Teils, verdrahtet mit der benötigten eines anderen. |
| Kollaboration | gestrichelte Ellipse | Ein benanntes Rollenmuster - die strukturelle Hälfte eines Entwurfsmusters, ohne sich auf Klassen festzulegen. |
03Warum die Ports das Nützliche sind#
Ein Port ist ein kleines Quadrat und leistet mehr, als er aussieht. Er sagt: das ist der einzige Weg hinein. Nichts von außen erreicht einen Teil direkt; alles kommt an einem Port an und wird nach innen delegiert.
Daraus folgt die Eigenschaft, für die es dieses Diagramm gibt. Das Außen des Kastens hängt nur von den Ports ab, also lässt sich das gesamte Innere umbauen - Teile teilen, zusammenlegen, ersetzen -, ohne dass sich außen etwas ändert, solange die Ports ihre Verträge halten. Es ist Kapselung, als Geometrie gezeichnet.
Ports lassen eine Komponente außerdem mehrere verschiedene Gesichter zeigen. Ein Payment-Orchestrator mit einem öffentlichen API-Port, einem Admin-Port und einem Port zum Publizieren von Ereignissen sagt etwas Präzises über seine Angriffsfläche - und darüber, welche davon eine Firewall oder eine Autorisierungsrichtlinie anders behandeln muss.
04Wann man eines zeichnet#
Dazu greifen, wenn
- Erklären, wie eine nicht offensichtliche Komponente innen aufgebaut ist
- Etwas entwerfen, in dem derselbe Typ in zwei verschiedenen Rollen auftritt
- Eine Komponente mit mehreren getrennten Interaktionspunkten dokumentieren
- Embedded-, Telekommunikations- oder Protokollarbeit, wo dieses Diagramm wirklich tragend ist
Zu etwas anderem greifen, wenn
- Das Innere sind drei Klassen mit offensichtlichen Beziehungen - ein Klassendiagramm reicht
- Sie zeigen mehrere Komponenten statt des Inneren einer - nehmen Sie ein Komponentendiagramm
- Das Interessante ist, was über die Zeit passiert, nicht die Verdrahtung
- Niemand hat gefragt, wie das Innere funktioniert
Das ist eines der selteneren UML-Diagramme, und das zu Recht - die meisten Komponenten haben keine interessante innere Struktur. Hat eine doch eine, drückt nichts anderes sie so direkt aus, und die Alternative ist meist ein Absatz Prosa, den niemand zweimal liest.
In je einer Zeile
- 01Zeigt das Innere genau eines Klassifizierers: seine Teile, Ports und Verdrahtung.
- 02Teile sind zur Laufzeit gespielte Rollen, keine Klassen - dieselbe Klasse kann zwei Teile sein.
- 03Ports sind die einzigen Grenzübertritte, und das macht die Grenze erst real.
- 04Delegationskonnektoren reichen einen externen Vertrag an einen internen Teil weiter.
- 05Das Innere umzubauen ist kostenlos, solange die Ports ihre Verträge halten.
05Häufige Fragen#
Was unterscheidet ein Teil von einer Klasse?
Ein Teil ist eine Rolle, die eine Instanz innerhalb genau eines umgebenden Klassifizierers spielt, und kein eigenständiger Typ. Dieselbe Klasse kann als zwei verschiedene Teile eines Ganzen auftreten, jedes mit eigenem Namen und eigener Multiplizität, denn das Diagramm handelt von der inneren Struktur des Behälters und nicht von Typen.
Was ist ein Delegationskonnektor?
Ein Konnektor von einem Port am äusseren Rand zu einem Port oder Teil im Inneren. Er sagt, dass alles, was aussen ankommt, von jenem inneren Teil bearbeitet wird - so erfüllt ein Ganzes eine Schnittstelle, ohne die Arbeit selbst zu tun.
Was unterscheidet Assemblierungs- und Delegationskonnektor?
Ein Assemblierungskonnektor verbindet zwei Teile im Inneren und verdrahtet die benötigte Schnittstelle des einen mit der angebotenen des anderen. Ein Delegationskonnektor überquert die Grenze und verbindet einen äusseren Port mit etwas im Inneren. Assemblierung ist innere Verdrahtung, Delegation ist Weiterleitung.
Wann dieses statt eines Komponentendiagramms?
Wenn die Frage lautet, was in einer Sache steckt, und nicht, wie mehrere Dinge zusammenpassen. Ein Komponentendiagramm zeigt die Teile eines Systems und ihre Verträge; ein Kompositionsstrukturdiagramm öffnet eines dieser Teile und zeigt, wie es gebaut ist.
In dieser Reihe
- 01Was ist UML?
- 02UML-Symbole
- 03Diagramm auswählen
- 04Klassendiagramme
- 05Klassendiagramm-Beispiele
- 06Klassendiagramm zeichnen
- 07Klassendiagramm-Symbole
- 08Sequenzdiagramme
- 09Sequenzdiagramm-Beispiele
- 10Sequenzdiagramm zeichnen
- 11Anwendungsfalldiagramme
- 12Anwendungsfall-Beispiele
- 13Aktivitätsdiagramme
- 14Aktivitätsbeispiele
- 15Zustandsdiagramme
- 16Zustandsdiagramm-Beispiele
- 17Komponentendiagramme
- 18Komponenten-Beispiele
- 19Komponentendiagramm zeichnen
- 20Komponenten-Symbole
- 21Verteilungsdiagramme
- 22Verteilungsbeispiele
- 23Objektdiagramme
- 24Paketdiagramme
- 25Kompositionsstrukturdiagramme
- 26Kommunikationsdiagramme
- 27Sequenz vs Kommunikation
- 28Zeitverlaufsdiagramme
- 29Interaktionsübersichtsdiagramme
- 30Profildiagramme
- 31UML mit KI
- 32E-Commerce-Beispiel
- 33Banken-Beispiel
- 34Microservices-Beispiel
- 35AWS-Beispiel
Passend dazu
Strukturdiagramme
Grundlagen
Strukturdiagramme
Strukturdiagramme
Verhaltensdiagramme
Strukturdiagramme