Skip to content
IRC-Coding IRC-Coding
UML Klassendiagramm Sequenzdiagramm Aktivitätsdiagramm OCL Kardinalitäten

UML Grundlagen: Diagrammtypen, Beziehungen, Kardinalitäten & OCL (prüfungsrelevant)

UML erklärt: Struktur- und Verhaltensdiagramme, Beziehungen (Aggregation/Komposition), Kardinalitäten, OCL, Testableitung, Lernstrategie und Prüfungsfragen.

S

schutzgeist

1 min read
UML Grundlagen: Diagrammtypen, Beziehungen, Kardinalitäten & OCL (prüfungsrelevant)

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

  1. 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).
  2. 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.
  3. 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”.
  4. 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.
  5. Komponenten/Schnittstellen – Komponentendiagramme zeigen Softwarebausteine und deren Schnittstellen. Sie sind besonders für die Architekturmodellierung und die Darstellung von Abhängigkeiten relevant.
  6. Aktivität (Entscheidung, Parallelität) – Aktivitätsdiagramme modellieren Geschäftsprozesse und Abläufe. Verzweigungen, Entscheidungen und Parallelisierung mit Fork/Join werden hier dargestellt.
  7. Sequenz (Lifeline, Nachricht) – Sequenzdiagramme zeigen die Interaktion zwischen Objekten über die Zeit. Lifelines repräsentieren Objekte, Nachrichten die Kommunikation synchron oder asynchron.
  8. 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.
  9. Stereotype/Profile – Stereotype erweitern UML-Elemente um domänenspezifische Bedeutungen. Profile sammeln Stereotype und Regeln für bestimmte Anwendungsbereiche, z.B. für Echtzeitsysteme.
  10. 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)

  1. Hauptkategorien von UML-Diagrammen? Strukturdiagramme und Verhaltensdiagramme.
  2. Aggregation vs Komposition? Aggregation schwach; Komposition bindet Lebenszyklus.
  3. 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

  1. Verständniseinstieg: Vergleiche ein konkretes Klassendiagramm mit einem Sequenzdiagramm für denselben Use Case.
  2. Vertiefungsmethode: Modelliere ein kleines Projekt in mehreren Diagrammtypen und prüfe die Konsistenz.
  3. Prüfungsfokustraining: Übe die Unterscheidung von Aggregation und Komposition sowie typische Kardinalitäten.
  4. 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

  1. https://www.omg.org/spec/UML
  2. https://martinfowler.com/books/uml.html

FAQ: UML Grundlagen, Diagrammtypen und Notation

1. Was ist UML?

UML steht für Unified Modeling Language. Sie ist eine standardisierte grafische Modellierungssprache zur Beschreibung, Planung und Dokumentation von Softwaresystemen und Geschäftsprozessen.

2. Welche Hauptkategorien von UML-Diagrammen gibt es?

UML-Diagramme werden in Strukturdiagramme und Verhaltensdiagramme unterteilt. Strukturdiagramme zeigen den statischen Aufbau, Verhaltensdiagramme den dynamischen Ablauf.

3. Was ist ein Klassendiagramm?

Ein Klassendiagramm ist ein Strukturdiagramm, das Klassen, deren Attribute, Operationen und Beziehungen zueinander darstellt. Es bildet das statische Grundgerüst eines Systems.

4. Was ist ein Sequenzdiagramm?

Ein Sequenzdiagramm ist ein Verhaltensdiagramm, das den zeitlichen Ablauf von Nachrichten zwischen Objekten darstellt. Lifelines repräsentieren Objekte, Pfeile die Nachrichten.

5. Was ist ein Aktivitätsdiagramm?

Ein Aktivitätsdiagramm modelliert Abläufe, Prozesse und Entscheidungen. Es zeigt Aktivitäten, Verzweigungen, Parallelisierungen und den Fluss von einer Aktivität zur nächsten.

6. Was ist ein Zustandsdiagramm?

Ein Zustandsdiagramm zeigt die Zustände, die ein Objekt im Laufe seines Lebens annehmen kann, sowie die Ereignisse und Bedingungen, die Zustandsübergänge auslösen.

7. Was ist eine Assoziation?

Eine Assoziation ist eine lose Beziehung zwischen zwei Klassen. Sie zeigt, dass Objekte der beteiligten Klassen miteinander in Verbindung stehen, ohne dass ihr Lebenszyklus voneinander abhängig ist.

8. Was ist eine Aggregation?

Eine Aggregation ist eine “gehört zu”-Beziehung, bei der die Teile auch unabhängig vom Ganzen existieren können. Sie wird mit einer leeren Raute auf der Seite des Ganzen dargestellt.

9. Was ist eine Komposition?

Eine Komposition ist eine starke “gehört zu”-Beziehung, bei der die Teile nicht ohne das Ganzen existieren können. Sie wird mit einer gefüllten Raute auf der Seite des Ganzen dargestellt.

10. Was ist eine Generalisierung?

Eine Generalisierung beschreibt eine Vererbungsbeziehung. Eine spezialisierte Klasse erbt Attribute und Operationen einer allgemeineren Klasse und kann diese erweitern oder überschreiben.

11. Was bedeuten Multiplizitäten?

Multiplizitäten geben an, wie viele Objekte einer Klasse mit wie vielen Objekten einer anderen Klasse in Beziehung stehen dürfen. Typische Angaben sind 1, 0..1, 1..* und *.

12. Was ist OCL?

OCL steht für Object Constraint Language. Sie ist eine formale Sprache, mit der Nebenbedingungen, Invarianten sowie Vor- und Nachbedingungen für UML-Modelle präzise beschrieben werden.

13. Wofür werden OCL-Invarianten genutzt?

OCL-Invarianten formulieren Bedingungen, die zu jedem Zeitpunkt gelten müssen. Aus ihnen lassen sich Testfälle ableiten, um die Korrektheit eines Systems zu überprüfen.

14. Was ist ein Paketdiagramm?

Ein Paketdiagramm gruppiert Modellelemente in Paketen und zeigt deren Abhängigkeiten. Es hilft, große Systeme übersichtlich zu strukturieren und Namensräume zu definieren.

15. Was ist ein Komponentendiagramm?

Ein Komponentendiagramm zeigt Softwarekomponenten, deren Schnittstellen und Abhängigkeiten. Es wird häufig für die Architekturmodellierung und die Planung größerer Systeme verwendet.

16. Was ist ein Use-Case-Diagramm?

Ein Use-Case-Diagramm zeigt die Funktionen eines Systems aus Sicht der Akteure. Es modelliert, welche Rollen mit dem System interagieren und welche Anwendungsfälle sie auslösen.

17. Was ist eine Lifeline?

Eine Lifeline ist eine gestrichelte Linie im Sequenzdiagramm, die das Leben eines Objekts oder einer Rolle während einer Interaktion darstellt. Sie ist die Basis für den Austausch von Nachrichten.

18. Was ist ein Guard?

Ein Guard ist eine Bedingung in eckigen Klammern an einem Zustandsübergang. Der Übergang wird nur ausgeführt, wenn die Bedingung wahr ist, z.B. [betrag > 0].

19. Was ist ein Stereotyp?

Ein Stereotyp erweitert ein UML-Element um eine spezifische Bedeutung. Es wird in doppelten spitzen Klammern geschrieben, z.B. <<interface>> oder <<abstract>>.

20. Was ist der Unterschied zwischen synchroner und asynchroner Nachricht?

Eine synchrone Nachricht blockiert den Absender, bis der Empfänger die Verarbeitung abgeschlossen hat. Eine asynchrone Nachricht erlaubt dem Absender, sofort weiterzuarbeiten, während der Empfänger die Nachricht später verarbeitet.

21. Was ist ein Strukturdiagramm?

Ein Strukturdiagramm zeigt den statischen Aufbau eines Systems, also Klassen, Objekte, Komponenten, Pakete und deren Beziehungen. Beispiele sind Klassendiagramm, Komponentendiagramm und Paketdiagramm.

22. Was ist ein Verhaltensdiagramm?

Ein Verhaltensdiagramm beschreibt den dynamischen Ablauf eines Systems. Dazu gehören Aktivitäts-, Sequenz-, Zustands- und Use-Case-Diagramme.

23. Was bedeutet Sichtbarkeit in UML?

Sichtbarkeit regelt den Zugriff auf Attribute und Operationen. + steht für public, - für private, # für protected und ~ für package. Sie beeinflusst die Kapselung und Wiederverwendbarkeit.

24. Warum sollten UML-Modelle versioniert werden?

UML-Modelle ändern sich im Projektverlauf. Eine Versionierung ermöglicht es, frühere Stände nachzuvollziehen, Änderungen zu reviewen und die Konsistenz mit Anforderungen und Tests sicherzustellen.

25. Wie kann man aus UML-Modellen Tests ableiten?

Aus OCL-Invarianten, Vor- und Nachbedingungen sowie aus den definierten Beziehungen und Kardinalitäten lassen sich gezielt Testfälle entwickeln. Zum Beispiel prüft ein Test, ob eine Komposition tatsächlich Teile beim Löschen des Ganzen entfernt.
Zurück zum Blog
Share:

Ähnliche Beiträge