UML Grundlagen – Diagrammtypen, Klassendiagramm, Sequenzdiagramm & OCL
Dieser Beitrag ist eine Begriffserklärung zu UML – inklusive Prüfungsfragen und Tags.
In a Nutshell
UML ist eine standardisierte visuelle Sprache zur Modellierung von Software und Systemen, die strukturierte und verhaltensorientierte Diagramme bietet, um Anforderungen, Entwurf und Kommunikation konsistent zu dokumentieren.
Kompakte Fachbeschreibung
UML trennt Struktur und Verhalten. Strukturelle Diagramme wie Klassendiagramm und Paketdiagramm beschreiben statische Elemente, verhaltensorientierte Diagramme wie Aktivitätsdiagramm, Sequenzdiagramm und Zustandsdiagramm zeigen Abläufe und Reaktionen. Zentrale Beziehungen sind Assoziation, Aggregation, Komposition und Generalisierung, ergänzt durch Abhängigkeiten und Realisierung. Sichtbarkeiten steuern Zugriff, Multiplikitäten beschreiben Kardinalitäten, Stereotype und Profile erlauben Anpassung an Domänen. Textuelle Nebenbedingungen formuliert man mit OCL, etwa Invarianten, Vorbedingungen und Nachbedingungen.
Prüfungsrelevante Stichpunkte
- Strukturdiagramme wie Klassen, Objekte, Pakete, Komponenten, Verteilung
- Verhaltensdiagramme wie Aktivität, Sequenz, Kommunikation, Zustände, Anwendungsfälle
- Beziehungen verstehen: Assoziation, Aggregation, Komposition, Generalisierung, Realisierung, Abhängigkeit
- Kardinalitäten korrekt notieren und mit Geschäftsregeln abgleichen
- OCL nutzen für präzise Bedingungen, daraus Akzeptanzkriterien und Tests ableiten
- Zustände mit Guard-Bedingungen und Aktionen modellieren, sicherheitsrelevante Übergänge prüfen
- Wirtschaftlichkeit durch frühzeitige Fehlerentdeckung, bessere Kommunikation
- Modelle versionieren, reviewen, abnehmen, Bezug zu Anforderungen und Testfällen dokumentieren
Kernkomponenten
- Notationselemente: Klasse, Attribut, Operation mit Sichtbarkeit
- Beziehungen: Assoziation, Aggregation, Komposition, Generalisierung
- Multiplikitäten und Rollenbezeichnungen an Kanten
- Pakete, Namenräume, Import und Sichtbarkeitsregeln
- Komponenten und Schnittstellen mit Realisierung
- Aktivitätselemente: Aktion, Entscheidung, Zusammenführung, Verzweigung, Synchronisation
- Interaktionselemente: Lifeline, Nachricht, Aktivierung im Sequenzmodell
- Zustandsautomat mit Zuständen, Übergängen, Guard, Entry und Exit
- Profile, Stereotype, Tagged Values für domänenspezifische Anpassungen
- OCL für Invarianten, Vorbedingungen, Nachbedingungen und darauf aufbauende Testfälle
Praxisbeispiel
Domäne: Bibliothek Ausleihe
Klassendiagramm:
Klassen: Leser, Medium, Ausleihe
Beziehungen: Leser zu Ausleihe (1 zu *), Medium zu Ausleihe (1 zu *)
Ausleihe hat Attribute: startdatum, enddatum, istVerlaengert
Operation: verlaengern() mit Regel: enddatum = enddatum + 14 Tage wenn Medium verlängerbar
Sequenz: "Medium ausleihen"
Akteure: Leser, System, Katalog, Ausleihservice
Ablauf:
1. Leser sendet "Medium ausleihen" an System
2. System fragt Katalog nach Verfügbarkeit
3. Katalog antwortet "verfügbar"
4. System ruft Ausleihservice: Ausleihe anlegen mit Leser und Medium
5. Ausleihservice erstellt Ausleihe und bestätigt, System meldet Erfolg
OCL Beispiel:
Context Ausleihe::inv RueckgabedatumGueltig: self.enddatum > self.startdatum
Vorteile und Nachteile
Vorteile
- Gemeinsame Sprache für Fachbereich und Technik
- Bessere Analyse und Entwurfsqualität
- Schnellere Testableitung
- Klare Dokumentation, bessere Wartbarkeit
Nachteile
- Einarbeitungsaufwand
- Gefahr überbordender Modelle
- Fehlende Verbindlichkeit ohne Prozess und Pflege
- Mögliche Missverständnisse bei uneinheitlicher Notation
Typische Prüfungsfragen (mit Kurzantwort)
- Hauptkategorien UML Diagramme? Strukturdiagramme (Klassen, Pakete, Komponenten) und Verhaltensdiagramme (Aktivität, Sequenz, Zustände, Anwendungsfälle).
- Unterschied Aggregation vs. Komposition? Aggregation = schwache Ganzes-Teil-Beziehung ohne Lebenszyklusbindung, Komposition = starke Beziehung mit gemeinsamer Lebensdauer.
- OCL in UML nutzen? Für präzise formale Nebenbedingungen wie Invarianten, Vor- und Nachbedingungen, die sich gut in Tests überführen lassen.
- *Kardinalitäten 1, , 0..1? 1 = genau ein Element, * = null bis beliebig viele, 0..1 = optionales einzelnes Element.
- Systeme in UML abgrenzen? Über Systemgrenzen im Anwendungsfalldiagramm und Paket-/Komponentenschnittstellen.
- Testfälle aus UML ableiten? Aus Szenarien in Sequenz/Aktivitätsdiagrammen und OCL-Bedingungen.
- Generalisierung nutzen? Wenn gemeinsame Eigenschaften in Basisklasse ausgelagert werden, Spezialisierungen erweitern/überschreiben.
- Korrektes Klassendiagramm für IHK? Klassen mit sinnvollen Namen, Attribute mit Typen/Sichtbarkeit, Operationen, Beziehungen mit Kardinalitäten, Rollen.
Wichtigste Quellen
- https://www.omg.org/spec/UML
- https://martinfowler.com/books/uml.html
- https://de.wikipedia.org/wiki/Unified_Modeling_Language