UML-Diagramme werden üblicherweise in strukturelle Diagramme, die beschreiben, woraus ein System besteht, und verhaltensbezogene Diagramme, die beschreiben, was es tut. Die folgenden Beispiele verwenden ein einziges Online-Shop-Szenario, damit sie verglichen und angepasst werden können. UML 2.5.1 ist die hier referenzierte formale Spezifikation.
PlantUML rendert viele UML-Notationen direkt. Einige spezialisierte Diagrammtypen – insbesondere Profil, zusammengesetzte Struktur, Kommunikation und Interaktionsübersicht – können durch eine praktische PlantUML-Näherung ausgedrückt werden, anstatt einen dedizierten Diagramm-Renderer zu verwenden. Die Kommentare kennzeichnen diese Fälle.

Strukturelle Diagramme
1. Klassendiagramm
Zeigt die Klassen des Systems, ihre Daten und Operationen sowie Beziehungen wie Assoziation, Vererbung und Komposition. Verwenden Sie es, um Domänenmodelle oder objektorientierte Designs zu diskutieren.

@startuml
class Customer {
+id: String
+email: String
+placeOrder(): Order
}
class Order {
+number: String
+status: OrderStatus
+total(): Money
}
class OrderLine {
+quantity: int
+unitPrice: Money
}
class Product {
+sku: String
+name: String
}
Customer "1" -- "0..*" Order : places
Order "1" *-- "1..*" OrderLine : contains
OrderLine "*" --> "1" Product : refers to
@enduml
Lesen Sie es:Ein Kunde kann viele Bestellungen aufgeben; eine Bestellung enthält eine oder mehrere Positionen; jede Position verweist auf ein Produkt. Der ausgefüllte Diamant zeigt Komposition an: Die Bestellung besitzt ihre Positionen.
2. Objektdiagramm
Zeigt konkrete Instanzen und Verbindungen zu einem bestimmten Zeitpunkt. Es ist nützlich, um Beispiel-Daten zu veranschaulichen oder ein Klassenmodell mit einem spezifischen Szenario zu erklären. Verwenden Sie in PlantUML die Objektnotation.

@startuml
object "alice:Customer" as alice {
id = C104
email = [email protected]
}
object "order:Order" as order {
number = O9001
status = PAID
}
object "line:OrderLine" as line {
quantity = 2
unitPrice = 19.99
}
object "mug:Product" as mug {
sku = MUG-01
name = Travel mug
}
alice -- order
order *-- line
line --> mug
@enduml
3. Komponentendiagramm
Zeigt ausführbare oder austauschbare Softwareteile und ihre Abhängigkeiten. Verwenden Sie es, um die Anwendungsarchitektur und Integrationsgrenzen zu kommunizieren.

@startuml
component "Web Store" as web
component "Order Service" as orders
component "Payment Adapter" as payments
database "Order DB" as db
cloud "Payment Provider" as provider
web --> orders : REST
orders --> db : SQL
orders --> payments : authorize
payments --> provider : HTTPS
@enduml
4. Diagramm der zusammengesetzten Struktur
Zeigt die internen Teile eines Klassifikators – wie eine Komponente oder Klasse – und wie diese Teile über Schnittstellen verbunden sind. Es ist nützlich, wenn die interne Zusammenarbeit wichtiger ist als die umgebende Systemarchitektur.
PlantUML bietet keine universell unterstützte, dedizierte Syntax für zusammengesetzte Strukturen. Diese Skizze im Stil eines Klassendiagramms vermittelt die Teile und Verbindungen:

@startuml
allowmixing
skinparam componentStyle rectangle
class Car {
}
package "Car" {
component "engine : Engine" as engine {
portout p1
}
component "transmission : Transmission" as trans {
portin p2
portout p3
}
component "wheel : Wheel [4]" as wheels {
portin p4
}
p1 -- p2 : drives
p3 -- p4 : power
}
@enduml Betrachten Sie dies als eine strukturelle Skizze; sie zeigt keine formalen UML-Ports oder Connector-Semantiken.
5. Bereitstellungsdiagramm
Macht Software-Artefakte oder Dienste auf Hardware-Knoten und Ausführungsumgebungen sichtbar. Verwenden Sie es, um zu erklären, wo Software ausgeführt wird und wie Laufzeitknoten kommunizieren.

@startuml
node "Kunden-Gerät" as client {
artifact "Browser"
}
node "Cloud" {
node "Anwendungs-Host" as appHost {
artifact "Store API"
}
database "Bestelldatenbank" as db
}
cloud "Externer Zahlungsanbieter" as pay
client --> appHost : HTTPS
appHost --> db : SQL
appHost --> pay : HTTPS
@enduml
6. Paketdiagramm
Gruppieren Sie Modellelemente in Namespaces oder Schichten und zeigt Abhängigkeiten zwischen diesen Gruppen. Verwenden Sie es, um die Code-Organisation und die architektonische Ausrichtung zu erklären.

@startuml
package "store.web" {
class CheckoutController
}
package "store.application" {
class PlaceOrder
}
package "store.domain" {
class Order
class Product
}
package "store.persistence" {
class OrderRepository
}
CheckoutController ..> PlaceOrder
PlaceOrder ..> Order
PlaceOrder ..> OrderRepository
@enduml
7. Profil-Diagramm
Definiert eine domänenspezifische Erweiterung von UML unter Verwendung von Stereotypen, getaggten Werten und Constraints. Verwenden Sie es, wenn ein Projekt ein konsistentes Modellierungsvokabular jenseits des Standard-UML benötigt.
PlantUML kann die Profil-Konzepte als eine Skizze im UML-Stil anzeigen, aber dies ist kein dedizierter Renderer für Profil-Diagramme.

@startuml
class "«profile» StoreProfile" as Profile
class "«stereotype» «Service»" as Service
class "«stereotype» «Repository»" as Repository
class "«metaclass» Component" as Component
Profile ..> Service : defines
Profile ..> Repository : defines
Service ..> Component : extends
Repository ..> Component : extends
note right of Service
getaggter Wert:
owner: String
end note
@enduml
Verhaltensdiagramme
8. Anwendungsfalldiagramm
Zeigt externe Akteure und die Systemziele, mit denen sie interagieren. Verwenden Sie es, um den Umfang festzulegen und funktionale Anforderungen auf hoher Ebene zu erfassen.

@startuml
left to right direction
actor Kunde
actor "Zahlungsanbieter" as Provider
rectangle "Online-Shop" {
usecase "Produkte durchsuchen" as Browse
usecase "Bestellung aufgeben" as Place
usecase "Für Bestellung bezahlen" as Pay
usecase "Bestellung verfolgen" as Track
}
Customer --> Browse
Customer --> Place
Customer --> Track
Provider --> Pay
Place ..> Pay : <<include>>
@enduml
9. Aktivitätsdiagramm
Modelliert einen Arbeitsablauf: Aktionen, Entscheidungen, parallele Pfade und Übergaben. Verwenden Sie es für Geschäftsprozesse, Betriebsabläufe oder den Kontrollfluss eines Algorithmus.

@startuml
start
:Artikel auswählen;
:Lieferdetails eingeben;
:Gesamtbetrag berechnen;
if (Artikel verfügbar?) then (ja)
:Zahlung autorisieren;
if (Zahlung genehmigt?) then (ja)
:Bestellung erstellen;
:Bestätigung senden;
else (nein)
:Zahlungsfehler anzeigen;
endif
else (nein)
:Nicht verfügbare Artikel anzeigen;
endif
stop
@enduml
10. Zustandsautomatendiagramm
Beschreibt die Zustände, die eine Entität einnehmen kann, sowie die Ereignisse oder Bedingungen, die Übergänge auslösen. Verwenden Sie es, wenn das Verhalten eines Objekts von seinem aktuellen Zustand abhängt.

@startuml
[*] --> Entwurf
Entwurf --> AusstehendeZahlung : einreichen
AusstehendeZahlung --> Bezahlt : Zahlung genehmigt
AusstehendeZahlung --> Storniert : Zahlung abgelehnt
AusstehendeZahlung --> Storniert : Kunde storniert
Bezahlt --> Versendet : Versand
Versendet --> Geliefert : Lieferung bestätigt
Storniert --> [*]
Geliefert --> [*]
@enduml
11. Sequenzdiagramm
Zeigt in zeitlicher Reihenfolge ausgetauschte Nachrichten zwischen Teilnehmern. Verwenden Sie es, um ein Szenario, einen API-Aufruffluss oder eine Interaktion zwischen Diensten zu beschreiben.

@startuml
actor Kunde
participant "Web-Shop" as Web
participant "Bestelldienst" as Orders
participant "Zahlungsdienst" as Payments
Customer -> Web : Checkout einreichen
Web -> Orders : Bestellung erstellen
Orders -> Payments : Zahlung autorisieren
Payments --> Orders : genehmigt
Orders --> Web : Bestellbestätigung
Web --> Customer : Bestätigung anzeigen
@enduml
12. Kommunikationsdiagramm
Betont, welche Objekte zusammenarbeiten und die Verbindungen zwischen ihnen; die Nachrichtennummerierung zeigt die Reihenfolge der Interaktionen an. Verwenden Sie es, wenn das Netzwerk der zusammenarbeitenden Teilnehmer wichtiger ist als eine Zeitachse.
PlantUML verfügt im Standard-UML-Set nicht über einen dedizierten Renderer für Kommunikationsdiagramme. Diese Objekt-Link-Skizze kennzeichnet Nachrichten mit Sequenznummern:

@startuml
object Kunde
object WebShop
object Bestelldienst
object Zahlungsdienst
Customer --> WebStore : 1: checkout()
WebStore --> OrderService : 1.1: createOrder()
OrderService --> PaymentService : 1.2: authorize()
PaymentService --> OrderService : 1.3: approved
OrderService --> WebStore : 1.4: confirmation
@enduml
13. Interaktionsübersichtsdiagramm
Bietet eine hochstufige Kontrollflussansicht von Interaktionen, die einen aktivitätsähnlichen Fluss mit Verweisen auf Interaktionsszenarien kombiniert. Verwenden Sie es, um zu zeigen, wie mehrere Szenarien auf Sequenzebene in einen größeren Prozess integriert sind.
Dieses PlantUML-Beispiel verwendet ein Aktivitätsdiagramm als Übersicht, wobei Szenariennamen für referenzierte Interaktionen stehen:

@startuml
skinparam conditionStyle InsideDiamond
titel Interaktionsübersichtsdiagramm: Auftragsverarbeitungssystem
start
:Kunde legt Bestellung auf;
if (Artikel auf Lager?) then (ja)
partition "sd Kassenablauf" {
:Zahlung autorisieren;
:Lagerbestand abziehen;
}
else (nein)
partition "sd Nachbestellungsprozess" {
:Kunde benachrichtigen;
:Lieferanfrage generieren;
}
endif
fork
partition "sd Versandablauf" {
:Bestellung verpacken;
:An Adresse versenden;
}
fork again
partition "sd Rechnungsstellung" {
:Rechnung generieren;
:Bestätigungs-E-Mail senden;
}
end fork
:Bestellung abschließen;
stop
@enduml Für detaillierte Nachrichtenaustausche innerhalb jedes Szenarios erstellen Sie ein separates Sequenzdiagramm.
14. Zeitdiagramm
Zeigt Zustands- oder Wertänderungen entlang einer Zeitachse an. Verwenden Sie es für zeitkritisches Verhalten, Protokolle, Hardware-Interaktionen oder Anforderungen, die Dauer und Fristen betreffen.

@startuml
robust "Bestellung" als Order
concise "Zahlung" als Payment
@0
Order ist Entwurf
Payment ist Inaktiv
@5
Order ist Ausstehend
Payment ist Verarbeitend
@10
Payment ist Genehmigt
@12
Order ist Bestätigt
@enduml
Diagramm auswählen
Beginnen Sie mit der Frage, die das Diagramm beantworten soll:
-
Was ist im System enthalten?Klasse, Objekt, Komponente, zusammengesetzte Struktur, Paket, Profil oder Bereitstellung.
-
Was macht das System?Anwendungsfall, Aktivität oder Zustandsautomat.
-
Wie arbeiten die Teilnehmer zusammen?Sequenz, Kommunikation, Interaktionsübersicht oder Zeit.
Halten Sie jedes Diagramm auf einen Zweck fokussiert, verwenden Sie konsistente Namen über alle Diagramme hinweg und fügen Sie nur so viel Detail hinzu, wie für das Publikum und die aktuelle Entscheidung erforderlich ist. PlantUML-Ausschnitte sind Ausgangspunkte: Prüfen Sie die vom Renderer unterstützte Syntax, insbesondere für spezialisierte Diagrammtypen.
Der Artikel ist auch in English, Español, فارسی, Français, Bahasa Indonesia, 日本語, Polski, Portuguese, Ру́сский, Việt Nam, 简体中文 and 繁體中文 verfügbar.












