Das AktivitätsdiagrammAnwendungsgebietAktivitätsdiagramme sind das Notationsmittel der Wahl, wenn es darum geht, Abläufe zu modellieren. Du kannst damit beispielsweise die Abarbeitung eines Anwendungsfalles oder einer Operation visualisieren, aber auch einen kompletten Geschäftsprozess wie z.B. den Einkauf in einem Online-Shop grafisch darstellen. Mit Hilfe dieser Diagrammart kannst du einen komplexen Verlauf unter Berücksichtigung von Nebenläufigkeiten, alternativen Entscheidungswegen und Ähnlichem konkret modellieren und nachvollziehen. Die zentrale Frage dieses Kapitel beantwortet lautet: "Wie realisiert mein System ein bestimmtes Verhalten?". Es wird also immer eine vom System zu bewältigende Aufgabe betrachtet, die in Einzelschritte zerlegt werden muss. Aktivitätsdiagramme ermöglichen insbesondere nach ihrer "radikalen" Überarbeitung in der UML 2 die Modellierung aller gängigen Ablaufkonzepte von höhere Programmiersprachen wie sie dir im weiteren Verlauf deiner Karriere begegnen werden. Von Kontrollstrukturen und Ausnahmebehandlungen bis hin zur parallelen Ablaufsteuerung kann mit Aktivitätsdiagrammen alles notiert werden. Modellieren von AktivitätenEin Aktivitätsdiagramm stellt Aktivitäten mit einem nichttrivialen Charakter dar. Eine Aktivität im Sinne der UML 2 umfasst dabei die Menge von möglichen Abläufen, die sich in der Realität (im Programmiersprachenjargon "zur Laufzeit") unter bestimmten Randbedingungen abspielen können. Analog zu unserem Beispiel des Online-Shops zeigt ein Aktivitätsdiagramm den Rahmen und die Regeln von Verhaltensabläufen auf detailliertem Niveau. Es umfasst Start und Endpunkte (Shop betreten / verlassen), Verzweigungen (Produkt gefällt / gefällt nicht), bestimmte Bedingungen (Benutzeraccount vorhanden / nicht vorhanden) und vieles mehr. Die eigentlichen "Shopbesuche", sprich die Abläufe, die Tag für Tag in nie gleicher Weise vorkommen, werden jedoch nicht aufgezeigt. Notiert werden nur die Regeln, die alle möglichen Abläufe beschreiben. Das TokenkonzeptUm gerade die komplexen Verhältnisse von nebenläufigen Abläufen zu erklären, baut das Aktivitätsdiagrammen auf ein logisches Konzept auf: das Konzept der Token. Unter einem Token stellst du dir am Besten eine Marke vor, die logisch den Punkt anzeigt, an dem sich ein Ablauf gerade befindet. Die Wanderung eines Tokens durch eine Aktivität steht also für die Abarbeitung eines Ablaufs. In einer Aktivität können gleichzeitig beliebig viele Token unterwegs sein, um dadurch parallele Abläufe oder mehrfach instanziierte Abläufe abzubilden. Wie die nächsten Unterpunkte verdeutlichen, lassen sich alle wesentlichen Ablaufkonzepte mit Token erklären. Dabei verwendete Abbildungen und Animationen greifen auf einige UML-Elemente zurück, die dir noch gänzlich unbekannt sind - keine Angst sie werden im weiteren Verlauf ausführlich erläutert. Der Verständlichkeit wegen sind die Token durch kleine Punkte symbolisiert. Dies ist jedoch nicht UML-konform, da Token in Aktivitätsdiagrammen streng genommen grafisch nicht vorhanden sind, sondern nur der Erklärung dienen. Abarbeitung von Aktionen
Animation 06_01; Abarbeitung von Aktionen Verzweigung und VereinigungDa nur wenige Abläufe geradlinig vonstatten gehen, enthalten Aktivitätsdiagramme auch Notationselemente für alternative Abläufe. Diese Entscheidungspunkte sind eine Art "Wegkreuzung" für die Token. Abhängig von dem Ergebnis einer Aktion liegt das Token nur bei genau der Folgeaktion an, für welche die Bedingung zutrifft.
Animation 06_02; Verzweigung Des Weitern lassen sich verschiedene Zweige zu einem Zweig zusammenführen. Hier liegt das Token - egal von welcher Aktion es ausgeht - immer bei der Folgeaktion an. Parallelverarbeitung und SynchronisationNeben den Alternativabläufen ist auch die Verzweigung eines Ablaufs in parallele Zweige möglich. Das Ausgangstoken wird dabei am "Splittingknoten" vervielfacht, sodass es an jeder Folgeaktion anliegt. In welcher zeitlichen Reihenfolge danach jedes Token abgearbeitet wird, hängt von der jeweiligen Anwendung ab. Nach einer Aufteilung können die einzelnen "Teilabläufe" also unabhängig voneinander abgearbeitet werden. Beim Zusammenführen paralleler Abläufe zu einem Ablauf werden die Token so lange an dem Synchronisationsknoten aufgesammelt, bis alle Token der jeweiligen Zweige angekommen sind. Erst danach werden sie wieder zu einem Token "verschmolzen", das bei der Folgeaktion anliegt.
Animation 06_03; Parallelverarbeitung ObjektflüsseNeben den Kontroll-Token, deren Hauptaufgabe das Anregen von Aktionsabläufen ist, gibt es noch Daten-Token. Diese dienen als Transportvehikel, auf denen Daten oder Werte durch das Diagramm getragen werden. Solche Token bewegen sich über Kanten an denen mindestens ein Objektknoten beteiligt ist. In einen Objektknoten hineingehende Token repräsentieren Daten oder Werte, die in dem Objektknoten gesetzt bzw. gesammelt oder durch den Objektknoten repräsentiert werden. Aus einem Objektknoten herausgehende Token transportieren das Objekt selbst bzw. Daten des Objekts in die Folgeaktion. Der Objektknoten ist daher ein Notationsmittel, um den Fluss von Objekten und Werten zu Modellieren, der Knoten an sich stellt kein Objekt/Datenwert dar. ![]() Abbildung 06_01; Objektfluss Verweildauer von TokenToken verweilen nur in Aktionen oder Objektknoten. Übergänge über eine Kante und Abläufe durch alle Kontrollknoten (wie Entscheidungs- oder Parallelisiserungsknoten) sind zeitlos. Um diese Bedingung zu gewährleisten, kann eine Aktion nach Beendigung ihres Ablaufs ein Token nicht einfach "vor die Tür setzen". Kann ein solches Token von der nächsten Aktion oder vom nächsten Objektknoten nicht aufgenommen werden, weil zum Beispiel Bedingungen nicht erfüllt sind, dann würde dieses Token auf der Kante festsitzen. Da dies nicht erlaubt ist, bietet die abgeschlossene Aktion das Token der Folgekanten nur an, wenn ein vollständiger Übergang (auch über Kontrollknoten) möglich ist. Der Token "springt" dann sofort zum Ziel (zu einer Aktion oder einem Objektknoten). Bedingte und gewichtete Abarbeitung von AbläufenAuch mit Hilfe von Bedingungen, die bereits bei den Entscheidungsknoten verwendet wurden, lassen sich Abläufe steuern. Durch Token lassen sich hier zusätzlich Zähler bzw. Gewichte angeben. Eine Kante kann festlegen, dass eine bestimmte Anzahl von Token vorhanden sein muss, damit ein Übergang möglich ist. Bei diesem Vorgang werden dann gleichzeitig mehrere Token transferiert. Alle bisher beschriebenen Eigenschaften von Token gelten auch für diesen Fall. Start und Ende von AbläufenDie Lebensdauer eines Ablaufs entspricht dem eines Tokens. Durch die Erzeugung eines Tokens wird ein Ablauf initiiert, durch die Eigen- oder Fremdzerstörung der Ablauf beendet. Im übertragenen Sinne wird also auch beim Duplizieren eines Tokens eine neuer Ablauf begonnen und beim Verschmelzen zweier Token ein Ablauf zerstört. Inwiefern dies die Realität widerspiegelt ist Sache der Implementierung. Token sind nur ein theoretisches Anschauungsmodell, um verschiedene Verhaltensmodelle in Abläufen zu erklären. |