Archyno
UMLStrukturdiagramme

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.
Ein UML-Kompositionsstrukturdiagramm, das das Innere des Payment-Orchestrators zeigt. Ein Eingangsport an der linken Grenze delegiert über IPayment an einen Authorizer-Teil, der sich mit einem RiskCheck-Teil und dann mit einem LedgerClient-Teil verbindet, welcher über ILedger an einen Ausgangsport an der rechten Grenze delegiert.
Ein Klassifizierer, aufgeklappt. Die kleinen Quadrate auf der Grenze sind Ports; die Pfeile, die sie kreuzen, sind Delegationskonnektoren, die einen externen Vertrag an einen internen Teil weiterreichen.

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#

ElementNotationWas es bedeutet
TeilRechteck innerhalb des RahmensEine im Besitzer gespielte Rolle, geschrieben roleName: Type. Kann in der Ecke eine Multiplizität tragen.
Portkleines Quadrat auf der GrenzeEin benannter Interaktionspunkt. Alles, was die Grenze kreuzt, geht durch einen, und genau das macht die Grenze bedeutsam.
KonnektorLinie zwischen TeilenEin Kommunikationsweg zwischen zwei Teilen im Besitzer.
DelegationskonnektorLinie von einem Port zu einem TeilVerkehr, der an diesem externen Port ankommt, wird von jenem internen Teil bearbeitet. Das Außen erfährt nie, von welchem.
AssemblierungskonnektorKugel in einer FassungDie angebotene Schnittstelle eines Teils, verdrahtet mit der benötigten eines anderen.
Kollaborationgestrichelte EllipseEin 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

  1. 01Zeigt das Innere genau eines Klassifizierers: seine Teile, Ports und Verdrahtung.
  2. 02Teile sind zur Laufzeit gespielte Rollen, keine Klassen - dieselbe Klasse kann zwei Teile sein.
  3. 03Ports sind die einzigen Grenzübertritte, und das macht die Grenze erst real.
  4. 04Delegationskonnektoren reichen einen externen Vertrag an einen internen Teil weiter.
  5. 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

Passend dazu

Alle Artikel