Einführung

In der komplexen Welt der Softwareentwicklung ist das Verständnis der Interaktion verschiedener Systemteile entscheidend für den Aufbau robuster und wartbarer Anwendungen.UML-Komponentendiagramme dienen als leistungsstarkes Werkzeug zur Modellierung der physischen Aspekte objektorientierter Systeme. Sie bieten eine hochlevelige Übersicht darüber, wie Komponenten organisiert sind, wie sie über Schnittstellen interagieren und wie sie voneinander abhängen.
Egal, ob Sie eine neue auf Microservices basierende Anwendung entwerfen, ein bestehendes Altsystem dokumentieren oder eine Datenbankmigration planen – Komponentendiagramme bieten Klarheit und Struktur. Dieser Leitfaden führt Sie durch die grundlegenden Konzepte, die Notation, die Beziehungen und die praktischen Anwendungen von UML-Komponentendiagrammen unter Nutzung moderner Tools wieden KI-Chatbot von Visual Paradigm undVPasCode zur Optimierung Ihres Modellierungsprozesses.
Was ist ein Komponentendiagramm?
UML Komponentendiagramme werden zur Modellierung der physischen Aspekte objektorientierter Systeme verwendet. Sie sind unerlässlich für:
- Visualisierung der statischen Implementierungssicht eines Systems.
- Spezifizierung komponentenbasierter Systeme.
- Dokumentation der Architektur für Stakeholder und Entwicklungsteams.
- Erstellung ausführbarer Systeme durch Forward- und Reverse-Engineering.
Komponentendiagramme sind im Wesentlichen Klassendiagramme, die sich auf dieKomponenten konzentrieren und nicht auf einzelne Klassen. Sie helfen dabei, komplexe Systeme in handhabbare, modulare Teile zu zerlegen.

Lernen Sie UML schneller, besser und einfacher
Suchen Sie ein kostenloses UML-Tool, um UML schneller, einfacher und zügiger zu lernen?Visual Paradigm Community Edition ist eine UML-Software, die alle UML-Diagrammtypen unterstützt. Es ist ein international preisgekrönter UML-Modellierer, dennoch einfach zu bedienen, intuitiv und vollständig kostenlos.
Kostenloser Download
Komponentendiagramm auf einen Blick
Ein Komponenten-Diagramm zerlegt das tatsächlich entwickelte System in verschiedene Funktionshöhen. Jede Komponente ist für ein klares Ziel innerhalb des gesamten Systems verantwortlich und interagiert nur mit anderen wesentlichen Elementen nach dem Prinzip des Need-to-Know.

Das obige Beispiel zeigt die internen Komponenten einer größeren Komponente:
- Benötigte Schnittstellen:Die Daten (Konto- und Inspektions-ID) fließen über den Port auf der rechten Seite in die Komponente ein und werden in ein Format umgewandelt, das die internen Komponenten verwenden können. Die Schnittstellen auf der rechten Seite werden als benötigte Schnittstellen bezeichnet, die die Dienste darstellen, die die Komponente benötigt, um ihre Aufgabe zu erfüllen.
- Bereitgestellte Schnittstellen:Die Daten werden dann über verschiedene Verbindungen an mehrere andere Komponenten weitergeleitet und durch diese hindurchgeführt, bevor sie an den Ports auf der linken Seite ausgegeben werden. Die Schnittstellen auf der linken Seite werden als bereitgestellte Schnittstellen bezeichnet, die die Dienste darstellen, die von der ausstellenden Komponente bereitgestellt werden.
- Kapselung:Es ist wichtig zu beachten, dass die internen Komponenten von einem großen ‚Kasten‘ umgeben sind, der das Gesamtsystem selbst sein kann (in diesem Fall gäbe es kein Komponentensymbol in der oberen rechten Ecke) oder ein Teilsystem oder eine Komponente des Gesamtsystems (in diesem Fall ist der ‚Kasten‘ selbst eine Komponente).
Grundkonzepte von Komponenten-Diagrammen
EineKomponentestellt einen modularen Teil eines Systems dar, das seine Inhalte kapselt und dessen Manifestation in seiner Umgebung austauschbar ist. In UML 2 wird eine Komponente als Rechteck mit optionalen, vertikal gestapelten Fächern gezeichnet. Eine hochabstrahierte Ansicht einer Komponente in UML 2 kann wie folgt modelliert werden:
- Ein Rechteck mit dem Namen der Komponente.
- Ein Rechteck mit dem Komponentensymbol.
- Ein Rechteck mit Stereotyp-Text und/oder -Symbol.

Architektur Ihrer modularen Systeme mit KI
Komponenten-Diagramme visualisieren die modularen Teile und die physische Manifestation Ihres Systems. Durch die Verwendung vondem KI-Chatbot von Visual Paradigmkönnen Sie sofort Systemarchitekturen brainstormen, bereitgestellte/erforderliche Schnittstellen identifizieren und über eine einfache Konversationsschnittstelle erste Komponenten-Diagramme generieren.
JETZT ERHÄLTLICH: KI-Chatbot – Ihr Design-Partner
Beschreiben Sie einfach Ihre Module, Microservices oder Datenbankstrukturen dem Chatbot. Er wird Ihnen helfen zu definieren:
- Modulare Grenzen:Identifizieren Sie, welche Teile Ihres Systems als Komponenten gekapselt werden sollten.
- Abhängigkeitskartierung:Visualisieren Sie, wie verschiedene ausführbare Dateien und Bibliotheken in Ihrer Version miteinander interagieren.
Jetzt mit KI chatten
Erfahren Sie mehr über unser KI-gesteuertes Modellierungssystem:
KI-Komponenten-Leitfaden Alle KI-Tools
Schnittstellen
Schnittstellen definieren den Vertrag zwischen Komponenten. Im folgenden Beispiel werden zwei Arten von Komponentenschnittstellen gezeigt:
- Bereitgestellte Schnittstelle:Symbole mit einem vollständigen Kreis am Ende (oft als „Lutscher” bezeichnet) stellen eine Schnittstelle dar, die die Komponente bereitstellt. Dies ist eine Abkürzung für eine Realisierungsbeziehung eines Schnittstellenklassifizierers.
- Benötigte Schnittstelle:Symbole mit nur einem Halbkreis am Ende (auch als „Buchsen” bezeichnet) stellen eine Schnittstelle dar, die die Komponente benötigt. In beiden Fällen wird der Name der Schnittstelle in der Nähe des Schnittstellensymbols selbst platziert.

Beispiel für ein Komponenten-Diagramm – Verwendung von Schnittstellen (Bestellsystem)

PlantUML-Äquivalent:
@startuml
skinparam componentStyle uml2
skinparam BackgroundColor white
skinparam DefaultFontName Arial
' Stilkonfiguration, um die blauen Farben anzupassen
skinparam component {
BackgroundColor #66b3ff
BorderColor #004d99
FontColor black
}
skinparam interface {
BackgroundColor #66b3ff
BorderColor #004d99
}
' Komponenten
component "Bestellsystem" as OrderSystem
component "Kunden-Repository" as CustomerRepo
component "Lagersystem" as InventorySystem
' Schnittstellen und Verbindungen
interface "Kundensuche" as CustomerLookup
interface "Produktzugriff" as ProductAccessor
OrderSystem -( CustomerLookup
CustomerLookup - CustomerRepo
OrderSystem --( ProductAccessor
ProductAccessor -- InventorySystem
@enduml 
Teilsysteme
Das TeilsystemKlassifizierer ist eine spezialisierte Version eines Komponenten-Klassifizierers. Daher erbt das Notationselement für Teilsysteme alle gleichen Regeln wie das Notationselement für Komponenten. Der einzige Unterschied besteht darin, dass ein Notationselement für Teilsysteme das Schlüsselwort <<subsystem>> anstelle von <<component>>.

Ports
Ports werden durch ein Quadrat am Rand des Systems oder einer Komponente dargestellt. Ein Port wird häufig verwendet, um die benötigten und bereitgestellten Schnittstellen einer Komponente sichtbar zu machen und fungiert als spezifischer Interaktionspunkt.

Beziehungen
Graphisch ist ein Komponenten-Diagramm eine Sammlung von Knoten und Bögen und enthält üblicherweise Komponenten, Schnittstellen und verschiedene Beziehungen wie Abhängigkeit, Aggregation, Einschränkung, Verallgemeinerung, Assoziation und Realisierung. Es kann auch Hinweise und Einschränkungen enthalten.
| Beziehungen | Notation | Beschreibung |
|---|---|---|
| Assoziation | ![]() |
Eine Assoziation spezifiziert eine semantische Beziehung, die zwischen typisierten Instanzen auftreten kann. Sie hat mindestens zwei Enden, die durch Eigenschaften dargestellt werden, von denen jede mit dem Typ des Endes verbunden ist. |
| Komposition | ![]() |
Die zusammengesetzte Aggregation ist eine starke Form der Aggregation, die erfordert, dass eine Teilinstanz zu einem Zeitpunkt in höchstens einem Composite enthalten ist. Wenn ein Composite gelöscht wird, werden normalerweise alle seine Teile ebenfalls gelöscht. |
| Aggregation | ![]() |
Eine Art von Assoziation, bei der eines ihrer Enden als geteilte Aggregation markiert ist, was bedeutet, dass sie eine geteilte Aggregation aufweist. |
| Einschränkung | ![]() |
Eine Bedingung oder Einschränkung, die in natürlichem Text oder in einer maschinenlesbaren Sprache ausgedrückt wird, um einige der Semantiken eines Elements zu deklarieren. |
| Abhängigkeit | ![]() |
Eine Abhängigkeit zeigt an, dass ein einzelnes oder eine Menge von Modellelementen andere Modellelemente für ihre Spezifikation oder Implementierung benötigt. Die abhängigen Elemente sind semantisch oder strukturell von den Lieferantenelement(en) abhängig. |
| Verallgemeinerung | ![]() |
Eine taxonomische Beziehung zwischen einem allgemeineren Klassifizierer und einem spezifischeren Klassifizierer. Jede Instanz des spezifischen Klassifizierers ist auch eine indirekte Instanz des allgemeinen Klassifizierers und erbt dessen Merkmale. |
Praktische Anwendungen
1. Modellierung von Quellcode
- Identifizieren Sie entweder durch Forward- oder Reverse-Engineering die Menge der interessierenden Quellcodedateien und modellieren Sie sie als Komponenten, die mit dem Stereotyp ” versehen sind
<<file>>. - Für größere Systeme verwenden Sie Pakete, um Gruppen von Quellcodedateien anzuzeigen.
- In Erwägung ziehen, einen getaggten Wert offenzulegen, der Informationen wie die Versionsnummer der Quellcodedatei, ihren Autor und das Datum ihrer letzten Änderung angibt. Verwenden Sie Tools, um den Wert dieses Tags zu verwalten.
- Modellieren Sie die Kompilierungsabhängigkeiten zwischen diesen Dateien mithilfe von Abhängigkeiten. Verwenden Sie erneut Tools, um diese Abhängigkeiten zu generieren und zu verwalten.
Beispiel für eine Komponente – Java-Quellcode

Beispiel für ein Komponenten-Diagramm – C++-Code mit Versionierung

PlantUML-Äquivalent für die Quellcode-Modellierung:
@startuml
skinparam componentStyle uml2
skinparam BackgroundColor white
skinparam DefaultFontName Arial
' Style configuration to match the blue colors
skinparam component {
BackgroundColor #66b3ff
BorderColor #004d99
FontColor black
}
' Components Row 1 (Versions)
component "signal.h (v3.5)" as signal35
component "signal.h (v4.0)" as signal40
component "signal.h (v4.1)" as signal41
' Components Row 2
component "interp.cpp" as interp
component "signal.h (v5.0)" as signal50
' Components Row 3
component "irq.h" as irq
component "device.cpp" as device
' Connections & Layout Overrides
' Top Row left-pointing parents
signal40 .left.> signal35 : <>
signal41 .left.> signal40 : <>
' Vertical dependencies
interp .up.> signal41
signal50 .up.> signal41
interp .down.> irq
device .up.> interp
@enduml
2. Modellierung einer ausführbaren Version
- Identifizieren Sie die Menge der Komponenten, die Sie modellieren möchten. In der Regel umfasst dies einige oder alle Komponenten, die auf einem Knoten leben, oder die Verteilung dieser Komponentenmengen über alle Knoten im System hinweg.
- Betrachten Sie das Stereotyp jeder Komponente in dieser Menge. Bei den meisten Systemen finden Sie eine kleine Anzahl verschiedener Arten von Komponenten (z. B. ausführbare Dateien, Bibliotheken, Tabellen, Dateien und Dokumente). Sie können die Erweiterungsmechanismen von UML verwenden, um visuelle Hinweise für diese Stereotypen bereitzustellen.
- Betrachten Sie für jede Komponente in dieser Menge ihre Beziehung zu ihren Nachbarn. Meistens handelt es sich dabei um Schnittstellen, die von bestimmten Komponenten exportiert (realisiert) und dann von anderen importiert (verwendet) werden. Wenn Sie die Schnittstellen in Ihrem System sichtbar machen möchten, modellieren Sie diese Schnittstellen explizit. Wenn Sie Ihr Modell auf einer höheren Abstraktionsebene halten möchten, lassen Sie diese Beziehungen weg, indem Sie nur Abhängigkeiten zwischen den Komponenten anzeigen.

PlantUML-Äquivalent für ausführbare Releases:
@startuml
skinparam componentStyle uml2
skinparam BackgroundColor white
skinparam DefaultFontName Arial
' Modernes blaues Styling, um Ihren Diagrammstil anzupassen
skinparam component {
BackgroundColor #5cadff
BorderColor #2b7fff
FontColor black
RoundCorner 10
}
skinparam interface {
BackgroundColor #5cadff
BorderColor #2b7fff
}
' Komponenten
component "path.dll" as path
component "collision.dll" as collision
component "driver.dlln(version = "B.2.1.3")" as driver
' Schnittstellen
interface IDrive
interface ISelfTest
' Layout und saubere Verbindungen
path .right.> collision
' Versteckte Layouts verwenden, um eine vertikale Stapelung der Schnittstellen zu erzwingen
IDrive -[hidden]down- ISelfTest
' Treiber sauber links mit seinen Schnittstellen verbinden
driver -left- IDrive
driver -left- ISelfTest
' Saubere, gerade vertikale Abhängigkeitslinie
path .down.> IDrive
@enduml
3. Modellierung einer physischen Datenbank
- Identifizieren Sie die Klassen in Ihrem Modell, die Ihr logisches Datenbank-Schema darstellen.
- Wählen Sie eine Strategie zum Abbilden dieser Klassen auf Tabellen. Sie sollten auch die physische Verteilung Ihrer Datenbanken berücksichtigen. Ihre Abbildungsstrategie wird durch den Ort beeinflusst, an dem Ihre Daten auf Ihrem bereitgestellten System leben sollen.
- Um Ihre Abbildung zu visualisieren, zu spezifizieren, zu erstellen und zu dokumentieren, erstellen Sie ein Komponenten-Diagramm, das Komponenten enthält, die als
<<table>>. - Verwenden Sie wo immer möglich Tools, um Ihnen dabei zu helfen, Ihr logisches Design in ein physisches Design zu transformieren.

PlantUML-Äquivalent für physische Datenbanken:
@startuml
skinparam componentStyle uml2
skinparam BackgroundColor white
skinparam DefaultFontName Arial
skinparam linetype ortho
' Stil-Konfiguration, um die blauen Farben anzupassen
skinparam component {
BackgroundColor #66b3ff
BorderColor #004d99
FontColor black
}
' Übergeordnete Komponente
component "school.db" as school_db
' Untergeordnete Komponenten
component "course" as course
component "department" as dept
component "instructor" as instructor
component "school" as school
component "student" as student
' Versteckte Links zur Erzwingung der horizontalen Ausrichtung
course -[hidden]right- dept
dept -[hidden]right- instructor
instructor -[hidden]right- school
school -[hidden]right- student
' Kompositionsbeziehungen (schwarzer Diamant)
school_db *-- course
school_db *-- dept
school_db *-- instructor
school_db *-- school
school_db *-- student
@endif

Fazit
UML-Komponentendiagramme sind für Architekten und Entwickler unverzichtbar, die die strukturelle Integrität eines Systems kommunizieren müssen. Indem sie sich auf Komponenten, Schnittstellen und deren Beziehungen konzentrieren, bieten diese Diagramme einen klaren Bauplan dafür, wie Softwaremodule miteinander interagieren, voneinander abhängen und sich integrieren.
Mit dem Aufkommen KI-gesteuerter Tools wie dem KI-Chatbot von Visual Paradigm und modellbasierte Modellierung mit VPasCode und PlantUML, das Erstellen und Pflegen dieser Diagramme wurde effizienter und zugänglicher. Ob Sie Quellcode-Abhängigkeiten modellieren, ausführbare Releases planen oder physische Datenbankschemata entwerfen, Komponentendiagramme bieten die erforderliche Klarheit, um skalierbare und wartbare Systeme zu erstellen.
Beginnen Sie noch heute, diese Tools zu nutzen, um Ihre Architektur-Dokumentation zu verbessern und Ihren Entwicklungsworkflow zu optimieren.
Der Artikel ist auch in English, Español, فارسی, Français, English, Bahasa Indonesia, 日本語, Portuguese, Việt Nam, 简体中文 and 繁體中文 verfügbar.

















