Mit der Unified Modeling Language, zu Deutsch: „ver­ein­heit­lich­te Mo­del­lie­rungs­spra­che“, steht ein all­ge­mein­gül­ti­ger ISO-Standard für die Ent­wick­lung von Software und kom­ple­xe­ren Sys­tem­ar­chi­tek­tu­ren zur Verfügung. Die Mo­del­lie­rungs­spra­che, die abgekürzt „UML“ genannt wird, nutzt ver­schie­de­ne Dia­gramm­ar­ten für Planungen und Ent­wick­lungs­pro­zes­se in der ob­jekt­ori­en­tie­ren Pro­gram­mie­rung.

In der aktuellen Version (UML 2.5) un­ter­schei­det man 14 Dia­gramm­ty­pen, die grob in Ver­hal­tens- und Struk­tur­dia­gram­me un­ter­teilt werden. Zur letzteren Un­ter­grup­pe gehören die Kom­po­nen­ten­dia­gram­me. Wir erklären, was ein Kom­po­nen­ten­dia­gramm ist, und erläutern an einem konkreten Beispiel die Er­stel­lung eines Kom­po­nen­ten­dia­gramms. Außerdem erfahren Sie, wofür UML-Kom­po­nen­ten­dia­gram­me verwendet werden.

KI-Assistent kostenlos – Ihr smarter All­tags­hel­fer
  • DSGVO-konform & sicher gehostet in Deutsch­land
  • Pro­duk­ti­vi­tät steigern – weniger Aufwand, mehr Output
  • Direkt im Browser starten – ohne In­stal­la­ti­on

Was ist ein Kom­po­nen­ten­dia­gramm?

UML-Kom­po­nen­ten­dia­gram­me stellen die Be­zie­hun­gen zwischen einzelnen Sys­tem­kom­po­nen­ten in einer sta­ti­schen Ent­wurfs­sicht dar. Dabei können sowohl logische als auch physische Mo­del­lie­rungs­aspek­te be­rück­sich­tigt werden.

Im UML-Kontext sind Kom­po­nen­ten modulare Teile eines Systems, die un­ab­hän­gig sind und durch äqui­va­len­te Kom­po­nen­ten aus­ge­tauscht werden können. Sie sind in sich ge­schlos­sen und kapseln beliebig komplexe Struk­tu­ren. Kontakt zu anderen Kom­po­nen­ten nehmen die ge­kap­sel­ten Elemente aus­schließ­lich über Schnitt­stel­len auf. Kom­po­nen­ten können nicht nur eigene Schnitt­stel­len zur Verfügung stellen, sondern auch die Schnitt­stel­len anderer Kom­po­nen­ten in Anspruch nehmen, um Zugriff bei­spiels­wei­se auf deren Funk­tio­nen und Dienst­leis­tun­gen zu erhalten. Zugleich do­ku­men­tie­ren die Schnitt­stel­len in einem Kom­po­nen­ten­dia­gramm die Be­zie­hun­gen und Ab­hän­gig­kei­ten in einer Software-Ar­chi­tek­tur.

Fakt

Bei einer Kapselung wird der direkte Zugriff auf die interne Da­ten­struk­tur un­ter­bun­den, um bei­spiels­wei­se Daten vor einem un­kon­trol­lier­ten Zugriff zu schützen. De­fi­nier­te Schnitt­stel­len regeln den Zugriff und machen einem Benutzer nur die­je­ni­gen Methoden und Da­ten­ele­men­te eines Objekts zu­gäng­lich, die für ihn relevant sind.

Kom­po­nen­ten kapseln in der Regel Klassen und werden daher auch als Unterform oder Spe­zia­li­sie­rung einer Klasse be­zeich­net. Wie eine Klasse verfügen sie über eine zu­sam­men­ge­setz­te Struktur und können bei­spiels­wei­se durch Attribute, Methoden und Ope­ra­tio­nen näher bestimmt werden. Kom­po­nen­ten können eine Sammlung von Klassen sein und bei­spiels­wei­se zur Laufzeit nicht nur von einer, sondern auch von mehreren Klassen im­ple­men­tiert werden. Obwohl Kom­po­nen­ten häufig mit Klassen gleich­ge­setzt werden, gibt es punktuell auch Un­ter­schie­de. Während Kom­po­nen­ten grund­sätz­lich Schnitt­stel­len für die In­ter­ak­ti­on benötigen, kann bei einer Klasse auch direkt auf eine Methode zu­ge­grif­fen werden.

Fakt

Eine Klasse fungiert in der ob­jekt­ori­en­tier­ten Pro­gram­mie­rung als abs­trak­tes Modell, das eine Menge von gleich­ar­ti­gen Objekten be­schreibt. Sie verfügen bei­spiels­wie­se über die gleichen Attribute, Ope­ra­tio­nen und Be­zie­hun­gen.

Der Kom­po­nen­ten­be­griff ist in UML sehr weit gefasst. Zu den Kom­po­nen­ten zählen un­ter­schied­li­che Teile des Systems, wie Da­ten­ban­ken, Pakete (Packages), Files und Libraries (z. B. Dynamic Link Libraries/DLLs). Neben tech­ni­schen Kom­po­nen­ten, etwa für einen Da­ten­bank­zu­griff, gibt es auch fachliche Kom­po­nen­ten, die sich bei­spiels­wei­se auf Ge­schäfts­be­rei­che und -prozesse beziehen können. Für die Erfassung solcher Zu­sam­men­hän­ge, die um­fang­rei­cher sein können, sieht UML das Stereotyp <<subsystem>> vor.

Da Kom­po­nen­ten­dia­gram­me ein System um­set­zungs­ori­en­tiert mo­del­lie­ren, gibt es spezielle Im­ple­men­tie­rungs­kom­po­nen­ten, die gezielt einzelne Rea­li­sie­rungs­aspek­te her­aus­grei­fen. Die Kom­po­nen­ten können bei­spiels­wei­se genutzt werden, um andere Kom­po­nen­ten zu im­ple­men­tie­ren, etwa Exe­cu­ta­bles (aus­führ­ba­re Dateien mit der Endung *.exe) unter Windows.

Fakt

Unter Im­ple­men­tie­rung versteht man die konkrete Umsetzung einer ent­wi­ckel­ten Software oder eines vorher geplanten Systems. Dabei kann es sich etwa um die konkrete Rea­li­sie­rung von kon­zi­pier­ten Pro­gram­men oder von einzelnen Funk­tio­na­li­tä­ten und Al­go­rith­men handeln.

In der Summe bilden mehrere Kom­po­nen­ten eine um­fang­rei­che­re Sys­tem­ar­chi­tek­tur. Dabei können Kom­po­nen­ten auch andere Kom­po­nen­ten enthalten sowie auf­ein­an­der aufbauen, eine Kom­po­nen­te kann also die Existenz anderer Kom­po­nen­ten vor­aus­set­zen (Ab­hän­gig­keits­be­zie­hung). Überdies können sich die Software-Module auf ver­schie­de­ne Rea­li­sie­rungs­pha­sen beziehen: Einige Kom­po­nen­ten dienen vor allem der Planung und Pro­jek­tie­rung in der Ent­wurfs­zeit, andere Kom­po­nen­ten entstehen erst zur Laufzeit einer Software. Man spricht in diesem Zu­sam­men­hang auch von Entwurfs- und Lauf­zeit­kom­po­nen­ten.

Fakt

Laufzeit (engl. runtime) be­zeich­net die Zeit­span­ne, in der ein Programm aus­ge­führt wird und eine Aufgabe bewältigt.

Wofür werden UML-Kom­po­nen­ten­dia­gram­me ein­ge­setzt?

Ein Kom­po­nen­ten­dia­gramm sorgt für einen Sys­tem­über­blick aus der Vo­gel­per­spek­ti­ve, der die Or­ga­ni­sa­ti­on von Sys­tem­kom­po­nen­ten sowie ihre ge­gen­sei­ti­gen Be­zie­hun­gen und Ab­hän­gig­kei­ten do­ku­men­tiert. Dabei stehen Kom­po­nen­ten­dia­gram­me für eine aus­füh­rungs­ori­en­tier­te Sicht­wei­se, geben also dem Ent­wick­ler Auskunft darüber, ob ein System als Ganzes funk­tio­niert und seine Aufgaben und Ziele erfüllt.

Wichtige Ziel­set­zun­gen und Ver­wen­dungs­zwe­cke des Dia­gramm­typs sind die Mo­del­lie­rung kom­po­nen­ten­ba­sier­ter Software-Systeme, die Spe­zi­fi­ka­ti­on einer Software-Ar­chi­tek­tur sowie die Auf­tei­lung eines Systems in Sub­sys­te­me (z. B. grafische Be­nut­zer­schnitt­stel­le/GUI, Business-Bereich und Per­sis­tenz-Bereich mit re­la­tio­na­ler Datenbank). Zudem werden den Teil­be­rei­chen und ihren Schnitt­stel­len konkrete Aufgaben und Funk­tio­nen innerhalb eines Systems zu­ge­wie­sen.

UML-Kom­po­nen­ten­dia­gram­me sind in der Wirt­schaft eine wichtige Basis für den Austausch mit dem Kunden, da Projekte und Planungen durch eine gewisse Kom­ple­xi­täts­re­duk­ti­on greif­ba­rer und nach­voll­zieh­ba­rer sind und besser kom­mu­ni­ziert werden können. Außerdem un­ter­stüt­zen und er­leich­tern Kom­po­nen­ten­dia­gram­me die Ad­mi­nis­tra­ti­on der Software-Ent­wick­lung, indem sie etwa Klassen zu ver­walt­ba­ren Kom­po­nen­ten zu­sam­men­fas­sen.

Der modulare Ansatz des Dia­gramm­typs trägt darüber hinaus zur Wirt­schaft­lich­keit und Effizienz von Projekten bei, da Software-Systeme auch als struk­tu­rier­te Funk­ti­ons­zu­sam­men­hän­ge aus wie­der­ver­wend­ba­ren Kom­po­nen­ten mo­del­liert werden können. Kom­po­nen­ten­dia­gram­me vi­sua­li­sie­ren etwa an­schau­lich, welche Bausteine an welchen Stellen einer Ar­chi­tek­tur mehrfach verwendet werden können. Sys­tem­ent­wür­fe können optimal auf die Wie­der­ver­wend­bar­keit von Kom­po­nen­ten und deren ef­fi­zi­en­tes Zu­sam­men­spiel aus­ge­rich­tet werden.

Kom­po­nen­ten­ba­sier­te Software-Systeme sparen in der Pla­nungs­pha­se und bei der Umsetzung von Systemen Zeit und Kosten, da auf bereits Vor­han­de­nes zu­rück­ge­grif­fen werden kann. Zudem senken erprobte und bewährte Software-Module die Risiken und re­du­zie­ren Feh­ler­quel­len besonders bei der Rea­li­sie­rung kom­ple­xe­rer Projekte. Da für die Umsetzung von Systemen auch käuflich zu er­wer­ben­de Dritt­her­stel­ler-Module zur Verfügung stehen, kann fehlendes eigenes Know-how kom­pen­siert werden.

Aus welchen Elementen besteht ein Kom­po­nen­ten­dia­gramm?

Die Mo­del­lie­rungs­spra­che UML nutzt für die Er­stel­lung von Kom­po­nen­ten­dia­gram­men eine stan­dar­di­sier­te Notation, die auf einem eigenen Vorrat an Zeichen und Symbolen basiert. In der folgenden Tabelle erläutern wir die wich­tigs­ten Elemente für Kom­po­nen­ten­dia­gram­me in der Version UML 2.0:

Aus diesen Ba­sis­ele­men­ten lässt sich bei­spiels­wei­se mit der kos­ten­lo­sen Open-Source-Software JGraph ein einfaches Kom­po­nen­ten­dia­gramm erstellen.

Die Er­stel­lung eines Kom­po­nen­ten­dia­gramms am Beispiel erklärt

In unserem Beispiel für ein Kom­po­nen­ten­dia­gramm zeigen wir, wie der Aufbau und die Funk­ti­ons­wei­se einer E-Mail-Software vi­sua­li­siert werden. Das Kom­po­nen­ten­mo­dell ver­deut­licht, wie drei Ba­sis­mo­du­le über Schnitt­stel­len in­ter­agie­ren:

  • E-Mail-Ma­nage­ment (1)
  • E-Mail-Eingang (2)
  • E-Mail-Ausgang (3)

Das E-Mail-Ma­nage­ment (1) ist die Schalt­zen­tra­le des Systems, die mit Anwendern und anderen Software-Modulen über mehrere Schnitt­stel­len und Service-Ports in­ter­agiert. Damit ein Anwender den ord­nungs­ge­mä­ßen Betrieb über­wa­chen kann, werden für die Sys­tem­ad­mi­nis­tra­ti­on eine Schnitt­stel­le und ein Service-Port (Ma­nage­ment-Port) zur Verfügung gestellt. Der ge­stri­chel­te „Use-Pfeil“ zeigt an, dass der Nutzer bei der Ausübung seiner Ad­mi­nis­tra­ti­ons­tä­tig­kei­ten von diesem Interface abhängig ist.

Systeme und Kom­po­nen­ten außerhalb der mo­del­lier­ten Ar­chi­tek­tur können über die zur Verfügung gestellte Schnitt­stel­le „E-Mail abholen“ an das System andocken. Funk­tio­na­li­tä­ten und Daten, die das Modul E-Mail-Ausgang (3) benötigt, stellt das Ma­nage­ment-Modul über die rea­li­sier­te und an­ge­bo­te­ne Schnitt­stel­le „E-Mail versenden“ zur Verfügung. Das Ma­nage­ment-Modul nimmt auch Dienste und Funk­tio­na­li­tä­ten in Anspruch, indem es die Schnitt­stel­le „E-Mail empfangen“ des Eingangs-Moduls (2) nutzt. Grafisch werden die Ver­bin­dun­gen zwischen den Kom­po­nen­ten durch die in­ein­an­der­grei­fen­den Lollipop- und Socket-Symbole der In­ter­faces ver­deut­licht.

Die Bei­spiel­gra­fik zeigt die Sys­tem­kom­po­nen­ten in einer so­ge­nann­ten Black-Box-Sicht, die das In­nen­le­ben zugunsten einer besseren Über­sicht­lich­keit aus­blen­det. Mit einer White-Box-Sicht widmen sich Kom­po­nen­ten­dia­gram­me dem inneren Aufbau von Kom­po­nen­ten. So könnte man die Ma­nage­ment-Kom­po­nen­te (1) u. a. mit den funk­tio­na­len Un­ter­kom­po­nen­ten „Frontend“ und „Sys­tem­ad­mi­nis­tra­ti­on“ aus­stat­ten, die den Ad­mi­nis­tra­tor bei der Ver­wal­tung des Systems un­ter­stüt­zen:

Die Dar­stel­lungs­tie­fe eines Kom­po­nen­ten­dia­gramms lässt sich erweitern, indem be­tei­lig­te Elemente noch genauer gemäß UML-Standard definiert werden. Eine ver­wen­de­te Klasse kann etwa über Attribute und Ope­ra­tio­nen näher bestimmt werden. Die Optionen für eine de­tail­lier­te­re Spe­zi­fi­ka­ti­on von Klassen stellt unser Artikel über Klas­sen­dia­gram­me aus­führ­lich dar. Weitere Entwurfs- und Mo­del­lie­rungs­op­tio­nen bieten An­wen­dungs­fall­dia­gram­me (Use-Case-Diagramm) und Zu­stands­dia­gram­me.

Zum Hauptmenü