Analyse und Design objektorientierter Softwaresysteme mit der Unified Modeling Language (UML) - Cheatsheet
Geschichte und Entwicklung von UML
Definition:
Unified Modeling Language (UML) wurde in den 1990er Jahren entwickelt, um die Vielzahl von Diagrammtechniken zu standardisieren, die zur Modellierung von Softwaresystemen verwendet wurden.
Details:
- Ursprung: 1994 durch Grady Booch, James Rumbaugh und Ivar Jacobson bei Rational Software entwickelt
- 1997: UML 1.1 als Standard durch die Object Management Group (OMG) angenommen
- Hauptziel: einheitliche und verständliche Darstellung von Softwarearchitekturen
- Aktuelle Version: UML 2.5.1 (seit Dez. 2017)
- Bietet diverse Diagrammtypen: Klassendiagramme, Use-Case-Diagramme, Sequenzdiagramme, Aktivitätsdiagramme etc.
Grundkonzepte der Modellierung
Definition:
Grundkonzepte der Modellierung: fundamentale Prinzipien und Abstraktionstechniken, die in der Softwaremodellierung verwendet werden.
Details:
- Abstraktion: Reduktion der Komplexität durch Hervorhebung wichtiger Details.
- Kapselung (Encapsulation): Verbergen der internen Zustände eines Objekts und Bereitstellung von Schnittstellen zur Interaktion.
- Modularität: Zerlegung eines Softwaresystems in unabhängige Module, die getrennt entwickelt und gewartet werden können.
- Hierarchie: Strukturierung von Modellen in verschiedene Ebenen oder Schichten zur besseren Organisation.
- Komposition: Zusammenfügen kleinerer Teile zu komplexeren Einheiten.
- Generalisierung und Spezialisierung: Zusammenfassen ähnlicher Konzepte zu allgemeineren Konzepten und Ableiten speziellerer Konzepte aus allgemeinen.
- Assoziation: Definition von Beziehungen zwischen Objekten.
Übersicht der verschiedenen UML-Diagrammtypen
Definition:
Kurze Übersicht der verschiedenen UML-Diagrammtypen für die Modellierung objektorientierter Softwaresysteme.
Details:
- Anwendungsfalldiagramm: Darstellung der Interaktionen zwischen Akteuren und dem System.
- Klassendiagramm: Struktur des Systems durch Klassen, Attribute und Methoden.
- Objektdiagramm: Instanzen von Klassen und deren Beziehungen zu einem bestimmten Zeitpunkt.
- Sequenzdiagramm: Zeitliche Abfolge von Nachrichten zwischen Objekten.
- Kollaborationsdiagramm (Kommunikationsdiagramm): Interaktionen zwischen Objekten und deren Struktur.
- Zustandsdiagramm: Zustände und Übergänge von Objekten während ihres Lebenszyklus.
- Aktivitätsdiagramm: Logischer Ablauf von Aktivitäten und Workflows.
- Komponentendiagramm: Struktur und Abhängigkeiten von Softwarekomponenten.
- Verteilungsdiagramm: physikalische Verteilung von Softwarekomponenten auf Hardware.
Beziehungen in Klassendiagrammen (Assoziationen, Vererbungen, Aggregationen)
Definition:
Beziehungen in Klassendiagrammen definieren die Verbindungen zwischen Klassen. Drei Grundtypen: Assoziationen, Vererbungen, Aggregationen.
Details:
- Assoziation: Verbindung zwischen Klassen; repräsentiert z.B. Nutzung oder Zusammenarbeit.
- Vererbung: Eine Klasse erbt Attribute und Methoden von einer anderen; dargestellt durch eine Linie mit einem unvollständigen Dreieck.
- Aggregation: Spezielle Form der Assoziation; Ganzes-Teil-Beziehung, wobei das Teil unabhängig existieren kann; dargestellt durch eine Raute an der Seite des Ganzen.
Erstellung und Interpretation von Objektdiagrammen
Definition:
Objektdiagramme zeigen spezifische Instanzen von Klassen zu einem bestimmten Zeitpunkt. Sie dienen zur Visualisierung von konkreten Objekten und deren Beziehungen in einem System.
Details:
- Objekte werden durch Rechtecke dargestellt, die den Klassennamen und die Attributwerte enthalten.
- Beziehungen zwischen Objekten werden durch Linien illustriert.
- Diagramme helfen, das Verhalten eines Systems zu einem bestimmten Zeitpunkt zu verstehen.
- Nützlich für die Validierung von Klassendiagrammen.
- Zeigen eine Momentaufnahme des Systems anstelle des gesamten Lebenszyklus.
Darstellung von Nachrichtenfluss in Sequenzdiagrammen
Definition:
Veranschaulicht den Austausch von Nachrichten zwischen Objekten im zeitlichen Verlauf.
Details:
- Sequenzdiagramm zeigt Interaktionen zwischen Objekten in der zeitlichen Abfolge
- Hauptkomponenten: Akteure, Objekte, Lebenslinien, Nachrichten
- Nachrichtenfluss durch Pfeile dargestellt
- Synchroner Nachrichtentyp: durchgezogener Pfeil mit geschlossener Pfeilspitze
- Asynchroner Nachrichtentyp: durchgezogener Pfeil mit offener Pfeilspitze
- Rückgabewerte: gestrichelte Pfeile
- Selbstaufruf: Schleifen innerhalb einer Lebenslinie
- Aktivitätsbalken zeigen aktive Objektphasen
Schlüsselkonzepte von Zustandsdiagrammen (Zustandsmaschinen, Übergangsbedingungen)
Definition:
Zustandsdiagramme visualisieren die Zustände eines Objekts und die Übergänge zwischen diesen Zuständen in einem Softwaresystem.
Details:
- Zustandsmaschinen: Modellieren das Verhalten eines Objekts durch Zustände und Übergänge.
- Zustände: Beschreiben die mögliche Konfiguration eines Objekts zu einem bestimmten Zeitpunkt.
- Übergänge: Definieren Wechsel zwischen Zuständen aufgrund von Ereignissen.
- Übergangsbedingungen: \textit{guard conditions}, die erfüllt sein müssen, damit ein Übergang stattfindet.
- Zustandswechsel: Wird durch Trigger \textit{(events)} initiiert.
Darstellung von Aktionen und Kontrollflüssen in Aktivitätsdiagrammen
Definition:
Darstellung von Aktionen und Kontrollflüssen in Aktivitätsdiagrammen.
Details:
- Aktionen: Elementaroperationen im Diagramm, dargestellt durch Rechtecke mit abgerundeten Ecken.
- Kontrollflüsse: Verbinden die Aktionen, dargestellt durch gerichtete Pfeile.
- Startpunkt: Initialknoten, dargestellt als ausgefüllter Kreis.
- Endpunkt: Aktivitätsendknoten, dargestellt als ausgefüllter Kreis mit äußerem Ring.
- Verzweigungen: Entscheidungs- und Zusammenführungsknoten, dargestellt durch Rhomben.
- Parallele Ausführung: Gabelungs- und Synchronisationsknoten, dargestellt durch dicke Balken.
- Schleifen: Kontrollstrukturen zur wiederholten Ausführung von Aktionen.