Komponentendiagramm – Effiziente Systemmodellierung mit Softwaremodulen
Mit der Unified Modeling Language, zu Deutsch: „vereinheitlichte Modellierungssprache“, steht ein allgemeingültiger ISO-Standard für die Entwicklung von Software und komplexeren Systemarchitekturen zur Verfügung. Die Modellierungssprache, die abgekürzt „UML“ genannt wird, nutzt verschiedene Diagrammarten für Planungen und Entwicklungsprozesse in der objektorientieren Programmierung.
In der aktuellen Version (UML 2.5) unterscheidet man 14 Diagrammtypen, die grob in Verhaltens- und Strukturdiagramme unterteilt werden. Zur letzteren Untergruppe gehören die Komponentendiagramme. Wir erklären, was ein Komponentendiagramm ist, und erläutern an einem konkreten Beispiel die Erstellung eines Komponentendiagramms. Außerdem erfahren Sie, wofür UML-Komponentendiagramme verwendet werden.
- Inklusive Wildcard-SSL-Zertifikat
- Inklusive Domain Lock
- Inklusive 2 GB E-Mail-Postfach
Was ist ein Komponentendiagramm?
UML-Komponentendiagramme stellen die Beziehungen zwischen einzelnen Systemkomponenten in einer statischen Entwurfssicht dar. Dabei können sowohl logische als auch physische Modellierungsaspekte berücksichtigt werden.
Im UML-Kontext sind Komponenten modulare Teile eines Systems, die unabhängig sind und durch äquivalente Komponenten ausgetauscht werden können. Sie sind in sich geschlossen und kapseln beliebig komplexe Strukturen. Kontakt zu anderen Komponenten nehmen die gekapselten Elemente ausschließlich über Schnittstellen auf. Komponenten können nicht nur eigene Schnittstellen zur Verfügung stellen, sondern auch die Schnittstellen anderer Komponenten in Anspruch nehmen, um Zugriff beispielsweise auf deren Funktionen und Dienstleistungen zu erhalten. Zugleich dokumentieren die Schnittstellen in einem Komponentendiagramm die Beziehungen und Abhängigkeiten in einer Software-Architektur.
Bei einer Kapselung wird der direkte Zugriff auf die interne Datenstruktur unterbunden, um beispielsweise Daten vor einem unkontrollierten Zugriff zu schützen. Definierte Schnittstellen regeln den Zugriff und machen einem Benutzer nur diejenigen Methoden und Datenelemente eines Objekts zugänglich, die für ihn relevant sind.
Komponenten kapseln in der Regel Klassen und werden daher auch als Unterform oder Spezialisierung einer Klasse bezeichnet. Wie eine Klasse verfügen sie über eine zusammengesetzte Struktur und können beispielsweise durch Attribute, Methoden und Operationen näher bestimmt werden. Komponenten können eine Sammlung von Klassen sein und beispielsweise zur Laufzeit nicht nur von einer, sondern auch von mehreren Klassen implementiert werden. Obwohl Komponenten häufig mit Klassen gleichgesetzt werden, gibt es punktuell auch Unterschiede. Während Komponenten grundsätzlich Schnittstellen für die Interaktion benötigen, kann bei einer Klasse auch direkt auf eine Methode zugegriffen werden.
Eine Klasse fungiert in der objektorientierten Programmierung als abstraktes Modell, das eine Menge von gleichartigen Objekten beschreibt. Sie verfügen beispielswiese über die gleichen Attribute, Operationen und Beziehungen.
Der Komponentenbegriff ist in UML sehr weit gefasst. Zu den Komponenten zählen unterschiedliche Teile des Systems, wie Datenbanken, Pakete (Packages), Files und Libraries (z. B. Dynamic Link Libraries/DLLs). Neben technischen Komponenten, etwa für einen Datenbankzugriff, gibt es auch fachliche Komponenten, die sich beispielsweise auf Geschäftsbereiche und -prozesse beziehen können. Für die Erfassung solcher Zusammenhänge, die umfangreicher sein können, sieht UML das Stereotyp <<subsystem>> vor.
Da Komponentendiagramme ein System umsetzungsorientiert modellieren, gibt es spezielle Implementierungskomponenten, die gezielt einzelne Realisierungsaspekte herausgreifen. Die Komponenten können beispielsweise genutzt werden, um andere Komponenten zu implementieren, etwa Executables (ausführbare Dateien mit der Endung *.exe) unter Windows.
Unter Implementierung versteht man die konkrete Umsetzung einer entwickelten Software oder eines vorher geplanten Systems. Dabei kann es sich etwa um die konkrete Realisierung von konzipierten Programmen oder von einzelnen Funktionalitäten und Algorithmen handeln.
In der Summe bilden mehrere Komponenten eine umfangreichere Systemarchitektur. Dabei können Komponenten auch andere Komponenten enthalten sowie aufeinander aufbauen, eine Komponente kann also die Existenz anderer Komponenten voraussetzen (Abhängigkeitsbeziehung). Überdies können sich die Software-Module auf verschiedene Realisierungsphasen beziehen: Einige Komponenten dienen vor allem der Planung und Projektierung in der Entwurfszeit, andere Komponenten entstehen erst zur Laufzeit einer Software. Man spricht in diesem Zusammenhang auch von Entwurfs- und Laufzeitkomponenten.
Laufzeit (engl. runtime) bezeichnet die Zeitspanne, in der ein Programm ausgeführt wird und eine Aufgabe bewältigt.
Wofür werden UML-Komponentendiagramme eingesetzt?
Ein Komponentendiagramm sorgt für einen Systemüberblick aus der Vogelperspektive, der die Organisation von Systemkomponenten sowie ihre gegenseitigen Beziehungen und Abhängigkeiten dokumentiert. Dabei stehen Komponentendiagramme für eine ausführungsorientierte Sichtweise, geben also dem Entwickler Auskunft darüber, ob ein System als Ganzes funktioniert und seine Aufgaben und Ziele erfüllt.
Wichtige Zielsetzungen und Verwendungszwecke des Diagrammtyps sind die Modellierung komponentenbasierter Software-Systeme, die Spezifikation einer Software-Architektur sowie die Aufteilung eines Systems in Subsysteme (z. B. grafische Benutzerschnittstelle/GUI, Business-Bereich und Persistenz-Bereich mit relationaler Datenbank). Zudem werden den Teilbereichen und ihren Schnittstellen konkrete Aufgaben und Funktionen innerhalb eines Systems zugewiesen.
UML-Komponentendiagramme sind in der Wirtschaft eine wichtige Basis für den Austausch mit dem Kunden, da Projekte und Planungen durch eine gewisse Komplexitätsreduktion greifbarer und nachvollziehbarer sind und besser kommuniziert werden können. Außerdem unterstützen und erleichtern Komponentendiagramme die Administration der Software-Entwicklung, indem sie etwa Klassen zu verwaltbaren Komponenten zusammenfassen.
Der modulare Ansatz des Diagrammtyps trägt darüber hinaus zur Wirtschaftlichkeit und Effizienz von Projekten bei, da Software-Systeme auch als strukturierte Funktionszusammenhänge aus wiederverwendbaren Komponenten modelliert werden können. Komponentendiagramme visualisieren etwa anschaulich, welche Bausteine an welchen Stellen einer Architektur mehrfach verwendet werden können. Systementwürfe können optimal auf die Wiederverwendbarkeit von Komponenten und deren effizientes Zusammenspiel ausgerichtet werden.
Komponentenbasierte Software-Systeme sparen in der Planungsphase und bei der Umsetzung von Systemen Zeit und Kosten, da auf bereits Vorhandenes zurückgegriffen werden kann. Zudem senken erprobte und bewährte Software-Module die Risiken und reduzieren Fehlerquellen besonders bei der Realisierung komplexerer Projekte. Da für die Umsetzung von Systemen auch käuflich zu erwerbende Dritthersteller-Module zur Verfügung stehen, kann fehlendes eigenes Know-how kompensiert werden.
Aus welchen Elementen besteht ein Komponentendiagramm?
Die Modellierungssprache UML nutzt für die Erstellung von Komponentendiagrammen eine standardisierte Notation, die auf einem eigenen Vorrat an Zeichen und Symbolen basiert. In der folgenden Tabelle erläutern wir die wichtigsten Elemente für Komponentendiagramme in der Version UML 2.0:
Aus diesen Basiselementen lässt sich beispielsweise mit der kostenlosen Open-Source-Software JGraph ein einfaches Komponentendiagramm erstellen.
Die Erstellung eines Komponentendiagramms am Beispiel erklärt
In unserem Beispiel für ein Komponentendiagramm zeigen wir, wie der Aufbau und die Funktionsweise einer E-Mail-Software visualisiert werden. Das Komponentenmodell verdeutlicht, wie drei Basismodule über Schnittstellen interagieren:
- E-Mail-Management (1)
- E-Mail-Eingang (2)
- E-Mail-Ausgang (3)
Das E-Mail-Management (1) ist die Schaltzentrale des Systems, die mit Anwendern und anderen Software-Modulen über mehrere Schnittstellen und Service-Ports interagiert. Damit ein Anwender den ordnungsgemäßen Betrieb überwachen kann, werden für die Systemadministration eine Schnittstelle und ein Service-Port (Management-Port) zur Verfügung gestellt. Der gestrichelte „Use-Pfeil“ zeigt an, dass der Nutzer bei der Ausübung seiner Administrationstätigkeiten von diesem Interface abhängig ist.
Systeme und Komponenten außerhalb der modellierten Architektur können über die zur Verfügung gestellte Schnittstelle „E-Mail abholen“ an das System andocken. Funktionalitäten und Daten, die das Modul E-Mail-Ausgang (3) benötigt, stellt das Management-Modul über die realisierte und angebotene Schnittstelle „E-Mail versenden“ zur Verfügung. Das Management-Modul nimmt auch Dienste und Funktionalitäten in Anspruch, indem es die Schnittstelle „E-Mail empfangen“ des Eingangs-Moduls (2) nutzt. Grafisch werden die Verbindungen zwischen den Komponenten durch die ineinandergreifenden Lollipop- und Socket-Symbole der Interfaces verdeutlicht.
Die Beispielgrafik zeigt die Systemkomponenten in einer sogenannten Black-Box-Sicht, die das Innenleben zugunsten einer besseren Übersichtlichkeit ausblendet. Mit einer White-Box-Sicht widmen sich Komponentendiagramme dem inneren Aufbau von Komponenten. So könnte man die Management-Komponente (1) u. a. mit den funktionalen Unterkomponenten „Frontend“ und „Systemadministration“ ausstatten, die den Administrator bei der Verwaltung des Systems unterstützen:
Die Darstellungstiefe eines Komponentendiagramms lässt sich erweitern, indem beteiligte Elemente noch genauer gemäß UML-Standard definiert werden. Eine verwendete Klasse kann etwa über Attribute und Operationen näher bestimmt werden. Die Optionen für eine detailliertere Spezifikation von Klassen stellt unser Artikel über Klassendiagramme ausführlich dar. Weitere Entwurfs- und Modellierungsoptionen bieten Anwendungsfalldiagramme (Use-Case-Diagramm) und Zustandsdiagramme.