UML (Unified Modeling Language)
Dieser Beitrag ist eine Begriffserklärung zu UML – inklusive Prüfungsfragen, Kernkomponenten und Tags.
In a Nutshell
UML ist eine standardisierte visuelle Sprache zur Modellierung von Software und Systemen. Sie hilft, Anforderungen, Entwurf und Kommunikation konsistent zu dokumentieren.
Kompakte Fachbeschreibung
UML trennt Struktur und Verhalten:
- Strukturdiagramme (z.B. Klassendiagramm, Paketdiagramm, Komponentendiagramm)
- Verhaltensdiagramme (z.B. Aktivitätsdiagramm, Sequenzdiagramm, Zustandsdiagramm)
Beziehungen:
- Assoziation
- Aggregation
- Komposition
- Generalisierung
Kardinalitäten (Multiplikitäten) beschreiben Beziehungen (z.B. 1, 0..1, 0..*). Mit OCL lassen sich Nebenbedingungen formal formulieren (Invarianten, Vor-/Nachbedingungen) – daraus können Tests abgeleitet werden.
Prüfungsrelevante Stichpunkte
- Strukturdiagramme vs. Verhaltensdiagramme: UML teilt Diagramme in diese beiden Hauptkategorien. Strukturdiagramme zeigen den statischen Aufbau (z.B. Klassendiagramm), Verhaltensdiagramme den dynamischen Ablauf (z.B. Sequenzdiagramm).
- Beziehungen korrekt unterscheiden: Assoziation, Aggregation, Komposition und Generalisierung werden unterschiedlich notiert und haben unterschiedliche Semantik. Besonders Aggregation und Komposition werden in Prüfungen oft verwechselt.
- Kardinalitäten sind IHK-typischer Prüfpunkt: Multiplizitäten wie
1,0..1,1..*oder*beschreiben, wie viele Objekte an einer Beziehung beteiligt sind. Falsch gesetzte Kardinalitäten verfälschen das Modell. - OCL für präzise Bedingungen nutzen: Die Object Constraint Language formuliert formale Nebenbedingungen, Vor- und Nachbedingungen. Aus OCL-Ausdrücken lassen sich gezielt Testfälle ableiten.
- Zustände mit Guards modellieren: Guards in Zustandsdiagrammen sind Bedingungen, die erfüllt sein müssen, damit ein Zustandsübergang erfolgen kann. Sie präzisieren das Verhalten eines Systems.
- Modelle versionieren, reviewen und abnehmen: UML-Modelle sind lebendige Dokumente. Sie müssen versioniert, regelmäßig überprüft und mit den Anforderungen abgeglichen werden, um ihren Wert zu behalten.
Kernkomponenten
- Klasse/Attribut/Operation + Sichtbarkeit – Eine Klasse modelliert einen Typ von Objekten. Attribute beschreiben Daten, Operationen das Verhalten. Sichtbarkeiten wie
+,-,#und~regeln den Zugriff (public, private, protected, package). - Beziehungen (Assoziation, Aggregation, Komposition) – Assoziation ist eine lose Verbindung, Aggregation eine “gehört zu”-Beziehung mit schwacher Lebenszyklusabhängigkeit, Komposition eine starke Lebenszyklusabhängigkeit. Bei Komposition existieren Teile nur mit dem Ganzen.
- Multiplizitäten + Rollen – Multiplizitäten geben an, wie viele Objekte einer Klasse mit Objekten einer anderen Klasse verknüpft sein dürfen. Rollen benennen die Funktion einer Klasse in einer Beziehung, z.B. “Kunde” und “Bestellung”.
- Pakete/Namensräume – Pakete gruppieren zusammengehörige Modellelemente und reduzieren die Komplexität großer Modelle. Sie helfen, Namensräume und Zuständigkeiten klar zu strukturieren.
- Komponenten/Schnittstellen – Komponentendiagramme zeigen Softwarebausteine und deren Schnittstellen. Sie sind besonders für die Architekturmodellierung und die Darstellung von Abhängigkeiten relevant.
- Aktivität (Entscheidung, Parallelität) – Aktivitätsdiagramme modellieren Geschäftsprozesse und Abläufe. Verzweigungen, Entscheidungen und Parallelisierung mit Fork/Join werden hier dargestellt.
- Sequenz (Lifeline, Nachricht) – Sequenzdiagramme zeigen die Interaktion zwischen Objekten über die Zeit. Lifelines repräsentieren Objekte, Nachrichten die Kommunikation synchron oder asynchron.
- Zustandsautomat (Guard, Entry/Exit) – Zustandsdiagramme beschreiben das Verhalten eines Objekts durch Zustände und Übergänge. Entry-, Exit-Aktionen und Guards präzisieren, wann Zustände betreten, verlassen oder gewechselt werden.
- Stereotype/Profile – Stereotype erweitern UML-Elemente um domänenspezifische Bedeutungen. Profile sammeln Stereotype und Regeln für bestimmte Anwendungsbereiche, z.B. für Echtzeitsysteme.
- OCL + Testableitung – OCL erlaubt präzise, formale Aussagen über Modelle. Invarianten, Vor- und Nachbedingungen können direkt als Grundlage für automatisierte Tests genutzt werden.
Praxisbeispiel (Bibliothek)
Klassendiagramm:
Leser 1..* Ausleihe
Medium 1..* Ausleihe
Ausleihe: startdatum, enddatum
OCL Invariante:
enddatum > startdatum
Vorteile und Nachteile
Vorteile
- Gemeinsame Sprache für Fachbereich/Technik
- Frühere Fehlerentdeckung
- Bessere Testableitung
- Klare Dokumentation
Nachteile
- Einarbeitungsaufwand
- Gefahr überbordender Modelle
- Ohne Pflege verliert es Wert
Typische Prüfungsfragen (mit Kurzantwort)
- Hauptkategorien von UML-Diagrammen? Strukturdiagramme und Verhaltensdiagramme.
- Aggregation vs Komposition? Aggregation schwach; Komposition bindet Lebenszyklus.
- Wofür nutzt man OCL? Formale Nebenbedingungen → Tests.
Freie Antwort
Für die Prüfung gilt: lieber wenige Diagramme, dafür korrekt und konsistent. Kardinalitäten und Beziehungen müssen zu Geschäftsregeln passen. Modelle gehören versioniert und mit Anforderungen/Testfällen verknüpft.
Lernstrategie
- Verständniseinstieg: Vergleiche ein konkretes Klassendiagramm mit einem Sequenzdiagramm für denselben Use Case.
- Vertiefungsmethode: Modelliere ein kleines Projekt in mehreren Diagrammtypen und prüfe die Konsistenz.
- Prüfungsfokustraining: Übe die Unterscheidung von Aggregation und Komposition sowie typische Kardinalitäten.
- Fehlervermeidung: Halte Benennung, Multiplizitäten und Beziehungen konsistent über alle Diagramme.
Übungsbeispiel 1: Klassendiagramm für eine Bibliothek
Modelliere die Klassen Leser, Medium und Ausleihe. Eine Ausleihe verbindet Leser und Medium. Die Multiplizitäten sind 1..* zwischen Leser und Ausleihe sowie Medium und Ausleihe, weil ein Leser mehrere Ausleihen haben kann und ein Medium in mehreren Ausleihen enthalten sein kann.
Übungsbeispiel 2: Aggregation vs. Komposition erkennen
Eine Universität hat Fakultäten (Aggregation: Fakultäten können auch unabhängig existieren). Ein Auto hat einen Motor (Komposition: ohne Auto existiert der Motor in diesem Kontext nicht mehr). Aggregation ist schwach, Komposition bindet den Lebenszyklus.
Übungsbeispiel 3: OCL-Invariante formulieren
Eine Banküberweisung hat die Invariante: betrag > 0. In OCL: context Überweisung inv: self.betrag > 0. Daraus lässt sich ein Testfall ableiten, der negative Beträge als ungültig markiert.
Übungsaufgabe 1: Diagrammtyp bestimmen
Welches UML-Diagramm zeigt den Austausch von Nachrichten zwischen Objekten über die Zeit?
Lösung: Das Sequenzdiagramm. Es stellt Lifelines und Nachrichten in zeitlicher Abfolge dar.
Übungsaufgabe 2: Beziehung identifizieren
Ein Unternehmen besteht aus Abteilungen, die beim Untergang des Unternehmens ebenfalls aufgelöst werden. Welche Beziehung liegt vor?
Lösung: Es handelt sich um eine Komposition. Die Abteilungen können nicht ohne das Unternehmen existieren.
Übungsaufgabe 3: OCL-Test ableiten
Eine Klasse Buchung hat ein Attribut datum. Formuliere eine OCL-Invariante und einen Testfall, der sich daraus ergibt.
Lösung: Invariante: context Buchung inv: self.datum <= heute. Testfall: Eine Buchung mit einem zukünftigen Datum wird als ungültig abgelehnt.
Themenanalyse
- Technischer Kern: Diagrammtypen, Beziehungen und Kardinalitäten. UML bietet eine einheitliche Notation für den strukturellen und dynamischen Entwurf. Korrekte Beziehungen und Multiplizitäten sind das Rückgrat eines gültigen Modells.
- Implementierungsherausforderungen: Konsistenz zwischen verschiedenen Diagrammen. Ein Klassendiagramm muss zu den Nachrichten im Sequenzdiagramm und den Zuständen im Zustandsdiagramm passen. Inkonsistenzen führen zu Missverständnissen und fehlerhafter Umsetzung.
- Sicherheitsimplikationen: OCL-Invarianten als frühe Validierung. Formale Nebenbedingungen helfen, ungültige Zustände frühzeitig zu erkennen und können in automatisierte Tests überführt werden.
- Dokumentationspflichten: Modelle versionieren und mit Anforderungen verknüpfen. UML-Diagramme sind Teil der Projektdokumentation. Sie müssen nachvollziehbar, versioniert und mit Anforderungen sowie Testfällen verknüpft sein.
- Wirtschaftliche Bewertung: Modellierungsaufwand vs. Fehlerkosten sparen. UML erfordert Zeit und Einarbeitung, vermeidet aber teure Fehler durch frühere Kommunikation und bessere Planung.
Wichtigste Quellen
FAQ: UML Grundlagen, Diagrammtypen und Notation
1. Was ist UML?
2. Welche Hauptkategorien von UML-Diagrammen gibt es?
3. Was ist ein Klassendiagramm?
4. Was ist ein Sequenzdiagramm?
5. Was ist ein Aktivitätsdiagramm?
6. Was ist ein Zustandsdiagramm?
7. Was ist eine Assoziation?
8. Was ist eine Aggregation?
9. Was ist eine Komposition?
10. Was ist eine Generalisierung?
11. Was bedeuten Multiplizitäten?
1, 0..1, 1..* und *.12. Was ist OCL?
13. Wofür werden OCL-Invarianten genutzt?
14. Was ist ein Paketdiagramm?
15. Was ist ein Komponentendiagramm?
16. Was ist ein Use-Case-Diagramm?
17. Was ist eine Lifeline?
18. Was ist ein Guard?
[betrag > 0].19. Was ist ein Stereotyp?
<<interface>> oder <<abstract>>.20. Was ist der Unterschied zwischen synchroner und asynchroner Nachricht?
21. Was ist ein Strukturdiagramm?
22. Was ist ein Verhaltensdiagramm?
23. Was bedeutet Sichtbarkeit in UML?
+ steht für public, - für private, # für protected und ~ für package. Sie beeinflusst die Kapselung und Wiederverwendbarkeit.