Verzweigungen sorgen dafür, dass immer nur genau ein Weg genommen wird. Manchmal sollen mehrere Schritte aber tatsächlich gleichzeitig ablaufen. Dafür gibt es die Aufspaltung (englisch: Fork) und die Synchronisation (englisch: Join).
Beide werden als kurzer, dicker Balken dargestellt. Am Fork geht eine Kante hinein und mehrere gleichzeitig laufende Kanten heraus. Am Join laufen mehrere Kanten hinein und erst danach geht es mit einer einzigen Kante weiter.
Am Join wird gewartet, bis alle eingehenden Pfade abgeschlossen sind – erst dann geht es mit dem nächsten Schritt weiter. Stell es dir wie ein Wettrennen vor: Erst wenn jeder Läufer die Ziellinie erreicht hat, wird das Rennen fortgesetzt.
| Konzept | Gemeinsamkeit |
|---|---|
| Fork / Join (UML) | Alle Zweige laufen, Join wartet auf alle |
| AND-Gatter (Elektronik) | Ausgang nur „wahr“, wenn alle Eingänge „wahr“ sind |
In Anforderungstexten erkennst du Parallelität an Wörtern wie während, parallel oder zeitgleich, im Englischen an fork und join.
Erinnerst du dich an das Ablaufende aus Lektion 5.2? Jetzt, mit parallelen Pfaden, wird sein Zweck endlich greifbar.
Der Endknoten beendet die gesamte Aktivität – sofort, inklusive aller anderen Pfade, die parallel noch laufen. Läuft neben einem kurzen Nebenpfad also noch ein wichtiger Hauptpfad, würde ein Endknoten am Nebenpfad diesen Hauptpfad einfach abrupt abwürgen. Das Ablaufende dagegen beendet wirklich nur den einen Pfad, in dem es steht – alle anderen laufen unbeeinflusst weiter.
Ein Beispiel: Während der Tierarzt den Hund untersucht, ruft die Pensionsmitarbeiterin kurz den Besitzer an, um Details zur Fütterung zu klären. Das Telefonat ist schnell erledigt und endet einfach für sich – die Untersuchung durch den Tierarzt läuft davon völlig unberührt weiter.
Beachte: Es gibt trotzdem weiterhin nur einen einzigen Endknoten für die gesamte Aktivität – er steht ganz am Ende des Hauptpfads. Der Nebenpfad braucht ihn nicht, weil er ohnehin schon vorher über das Ablaufende sauber beendet wurde.
Jetzt kennst du alle Kontrollfluss-Elemente. In der letzten inhaltlichen Lektion dieses Kapitels schauen wir uns an, wie man festlegt, wer für welche Aktion verantwortlich ist.