Bild von Unified Modelling Language (UML) - einfach erklärt

22. Jan 2024

Unified Modelling Language (UML) - einfach erklärt

Einfach erklärt.

Unified Modelling Language, besser bekannt als UML, ist den meisten Softwareentwicklern ein Begriff und obwohl UML-Diagramme grosse Vorteile bieten, wissen nicht alle Entwickler deren Einsatz ausreichend zu schätzen.

  • Welche Vorteile bieten UML-Diagramme eigentlich?
  • Wie setzt man UML richtig ein und worauf gilt es zu achten?

Diese Fragestellungen und mehr hat unser CTO Christian Ewald in einem UML Workshop beantwortet und Tipps für die praktische Umsetzung verraten. Damit wir in Zukunft in der Softwareentwicklung auch dieselbe Sprache sprechen: UML.

UML ist eine grafische Modellierungssprache mit einem breiten Anwendungsbereich, wodurch es zu einem nützlichen Werkzeug wird, das wir beherrschen und auch einsetzen sollten. Mit ihren grafischen Notationen macht es uns UML einfach Softwarekomponenten und Systeme zu planen, um so wichtige Designentscheidungen schon im Vorfeld treffen zu können. Dokumentationen werden damit viel aussagekräftiger und nicht zuletzt bietet es auch eine gute Basis für gemeinsame Diskussionen und der Kommunikation mit Teammitgliedern oder einem Kunden. UML ist relativ leicht und intuitiv zu verstehen, was in seiner grafischen Natur begründet liegt. In der offiziellen Spezifikation sind 14 verschiedene Typen von UML-Diagrammen definiert und alle haben natürlich ihre Berechtigung. Im Rahmen des Workshops haben wir vor allem das Klassendiagramm und das Kollaborationsdiagramm näher betrachtet und praktische Tipps für deren Erstellung besprochen.

Klassendiagramm

Das Klassendiagramm gehört zu den beliebtesten und meist verwendeten UML-Typen, das Klassen und entsprechenden Beziehungen zwischen ihnen grafisch darstellt.

Klassendiagramm mit Erklärungen

Hier dargestellt ist das Diagramm von zwei Klassen "Person" und "Window", welche keine Beziehung zueinander haben. Im obersten Abschnitt wird der Name der Klasse angegeben, während im mittleren Abschnitt die Attribute oder Felder der Klasse und im unteren Abschnitt die Methoden oder Funktionen einer Klasse notiert werden. Sowohl für Attribute als auch für Methoden ist es möglich, zusätzlich zum Namen auch den Datentypen oder entsprechende Default-Werte anzugeben. Bei Methoden wird der Datentyp des Rückgabewertes nach demselben Prinzip an die Signatur der Methode angehängt. Um die Sichtbarkeit von Methoden und Attributen auszudrücken, wird vor dem Namen eines der folgenden Zeichen gestellt:

  • "+" für public
  • "-" für private
  • "#" für protected

 

Diagramme mit Assoziation und Vererbung

Beziehungen zwischen Klassen lassen sich in UML einfach und übersichtlich darstellen, indem man die entsprechenden Klassen mit einer Linie verbindet. Die Darstellung auf der linken Seite ist eine sogenannte Assoziation und in diesem Fall kann ClassA auf die Attribute und Methoden von ClassB zugreifen, jedoch kann ClassB nicht auf die Methoden und Attribute von ClassA zugreifen. In einer konkreten Implementierung könnte ClassB ein Attribut der ClassA sein, somit würde ClassA eine Instanz von ClassB besitzen. Würde man ClassA und ClassB nur mit einer Linie verbinden und den Pfeil weglassen, so könnten sich die beiden Klassen gegenseitig aufrufen. Vererbungen zwischen Klassen lassen sich durch hohle Pfeile darstellen. In der Grafik durch die Superklasse Animal und den spezialisierten Subklassen Bird, Fish und Reptile dargestellt. In der UML-Notation zeigt der Pfeil immer von der Subklasse hin zur Superklasse und in einer Implementierung vererbt die Superklasse ihre Methoden und Attribute an die Subklassen.

 

Diagramme mit Aggregation und Komposition

Klassen können auch über sogenannte Aggregation oder Komposition miteinander in Verbindung stehen. Beim Beispiel der Aggregation besitzt ein Professor eine oder mehrere Klassen, welche er unterrichtet und auch falls der Professor diese Klassen nicht mehr unterrichtet, so würden diese Klassen auch weiterhin existieren. Bei einer konkreten Implementierung wird solch ein Sachverhalt oft durch Dependency Injection über den Konstruktor verwirklicht. Das zweite Beispiel mit einer eingefärbten Raute nennt man Komposition und hier besitzt ein Haus einen oder mehrere Räume, jedoch können diese Räume ohne das Haus nicht existieren und sobald das Haus zerstört wird, so werden auch alle Räume des Hauses zerstört. In einer konkreten Implementierung sieht das oft so aus, dass die Klasse Haus ihre Räume selbst instanziieren und zerstört.

Kollaborationsdiagramm

 

Beispiel eines Kollaborationsdiagramms

 

Ein Kollaborationsdiagramm kann auch durch ein Sequenzdiagramm dargestellt werden und beide beschreiben einen Ablauf in einem System. Die Schritte werden aufsteigend nummeriert und dadurch lässt sich ein Ablauf schnell und ohne Mühe nachvollziehen. Die Schritte selbst lassen sich als Nachrichten zwischen den Klassen interpretieren, welche versendet werden und durch Pfeile wird die Richtung ausgedrückt, in welcher die Nachrichten gesendet werden. Ein grosser Vorteil eines Kollaborationsdiagramms liegt auch in der strukturellen Ähnlichkeit zum Klassendiagramm, wodurch es möglich wird von einem Klassendiagramm ausgehend zu starten und den Ablauf einer Aktivität des Systems zu verdeutlichen.

Tipps für den praktischen Einsatz

  1. Motivation/Mehrwert: Am Anfang sollte man sich die Frage stellen: Was möchte ich mit einem UML-Diagramm erreichen? Ein UML-Diagramm sollte stets einen Mehrwert schaffen, indem es Zusammenhänge grafisch darstellen, wodurch die Basis für Diskussionen geschaffen wird und sich Schwachstellen in einem System leichter erkennen lassen.
  2. Rule of 7: Um die Übersichtlichkeit eines UML-Diagramms zu erhöhen, sollte man sich auf 7 Elemente beschränken, welche im Diagramm dargestellt werden. Zu viele Elemente oder zu viele Details lenken vom Wesentlichen ab und es wird deutlich schwerer eine Aussage zum Diagramm zu machen.
  3. Weglassen: Durch das Weglassen von offensichtlichen oder weniger wichtigen Details kann die Übersicht immens gesteigert werden. UML-Diagramme sollten den entscheidenden Teil eines Systems abbilden oder einen schwierigen Sachverhalt grafisch erklären und hier sollte man sich Gedanken machen, welche Element wirklich nötig sind und welche fürs Verständnis nicht benötigt werden.

Tools

Es gibt zahlreiche Programme und Webseiten zur Erstellung von UML-Diagrammen und Präferenzen können hier stark variieren. Sehr umfangreiche Programme, welche auf UML spezialisierte sind, sind beispielsweise Enterprise Architect von SparxSystems, Visual Paradigm und Rational Rhapsody von IBM. Microsoft bietet die Visualisierungssoftware Visio an und für Open-Source-Enthusiasten ist sicher UMLet interessant. Online-Editoren wie draw.io, Gliffy oder Excalidraw erfordern keine Installation von Software, da alles im Browser erledigt werden kann. Neben Lösungen mit einer grafischen Bedienoberfläche werden auch textbasierte Ansätze angeboten wie Mermaid oder PlantUML. Textbasierte Lösungen bieten den Vorteil, dass sie sich unkompliziert versionieren lassen durch Versionierung der entsprechenden Text-Datei. Eine der besten Lösungen zum Erstellen von UML-Diagrammen ist jedoch Papier und Bleistift oder ein Whiteboard. Die Wahl eines geeigneten Tools zum Erstellen von UML ist natürlich jedem selbst überlassen. Im Workshop selbst haben wir vor allem die analogen Medien (Whiteboard, Papier und Bleistift) wendet und zum Erstellen der Diagramme für diesen Blogbeitrag habe ich mich für PlantUML und draw.io entschieden.

Fazit

Durch den Workshop ist meine Wertschätzung für den Einsatz von UML gestiegen und ich werde zukünftig öfter Sachverhalte anhand eines UML-Diagramms erklären oder das Design eines Systems vor der Implementierung durch ein UML-Diagramm überprüfen. Dadurch wird eine Basis für Diskussionen mit Teamkollegen geschaffen und es lassen sich bessere Lösungen erarbeiten, indem mögliche Fehlerquellen früher erkannt werden. Beim Anfertigen der Diagramme selbst werde ich auf mehr Verständlichkeit und Übersichtlichkeit achten, was durch die Tipps aus dem Workshop leichter anzubringen ist.

Weiterführende Links

UML Spezifikationen  
UMLet  
Draw.io  
Gliffy
Excalidraw
Mermaid
PlantUML Docs
PlantUML Online Editor


Schliessen
Stamp Icon-Print Icon-Clear
S
M
L
XL
XXL