# UML Aktivitätsdiagramm für Autorennen?



## Cojones (30. August 2011)

Hallo,

ich versuche gerade ein Diagramm für ein Autorennen zu erstellen, bin allerdings bei der textuellen Erstellung hängegeblieben, da ich nicht so wirklich weiß, wie ich das in UML umsetzen soll.

Hier meine Idee:
- Jede Runde/Kurve erneut

-- Gegner überholen
---> Neue Position im Rennen

-- Gegner überholt werden
---> Neue Postion im Rennen

-- Unfall
--- Boxengasse
----> Neue Position im Rennen
---> Ausgeschieden

-- Boxengasse
---> Neue Position im Rennen

-- Strafe wegen Verstoß
--- Durchfahrtstrafe
----> Neue Position im Rennen
----> Ausgeschieden

-- Fahrfehler
--- Unfall
--- Gegner überholt werden

-- Fahrzeugprobleme
--- Boxengasse
----> Ausgeschieden

=> Rennen abgeschlossen, X. Position, ggf. Preisgeld

Wie würdet ihr sowas am besten umsetzen? Vielen Dank!


----------



## Cojones (31. August 2011)

Kann man das so machen?


----------



## Cojones (2. September 2011)

Niemand?


----------



## Steiner_B (2. September 2011)

Hallo,

Also mir sind da jetzt mehrere Sachen aufgefallen:
Vorweg mal: Ich kann mich nicht erinnern das es im UML Standart diese Art der Schleifendefinitionen gibt, also diese strichlierten Boxen.

Des weiteren musst du in jeder Unterkomponente dafür sorgen das ein Eintrittspunkt vorhanden ist  (also z.B.: Kurven-Schleife) und du auf jeden Fall zu einem End-Knoten kommst (Wenn du Kurve++ ausführst erreichst du nie einen).

Im Aktivitätsdiagramm müssten alle Bedingungen bei Verzweigungen in Eckigen Klammern stehen.


----------



## Cojones (2. September 2011)

Hallo,

erst mal vielen Dank für die Antwort!

Diese Schleifendefinition ist ein Loop-Node, der soweit ich das gelesen hab, für solche Sachen einzusetzen sind (Loop-Nodes Beschreibung). Hab ich da was falsch verstanden?

Das mit der Kurve++/Runde++ hab ich von hier. Dort wird es so beschrieben, dass es nach den X++ wieder zurück in den Test geht.

Das heißt also, beide Bedingungen in den Test-Bereichen einfach in []?


----------



## Steiner_B (2. September 2011)

> Diese Schleifendefinition ist ein Loop-Node, der soweit ich das gelesen hab, für solche Sachen einzusetzen sind (Loop-Nodes Beschreibung). Hab ich da was falsch verstanden?


Nein, hast recht. Hab gerade nochmal nachgelesen, man kanns so machen.



> Das mit der Kurve++/Runde++ hab ich von hier. Dort wird es so beschrieben, dass es nach den X++ wieder zurück in den Test geht.


Das ist in der UML2 Definition nicht genau spezifiziert worden, das Problem wenn man keine Endknoten einzeichnet liegt darin, dass man in komplexeren Diagrammen oft nicht erkennen kann an welchen Stellen eine Unteraktivität verlassen werden darf. Wir haben uns auf der Uni darauf geeinigt immer Endknoten einzuzeichnen.



> Das heißt also, beide Bedingungen in den Test-Bereichen einfach in []?


Ja, aber viel wichtiger wäre es die Bedingungen bei den Verzweigungen im Body in Klammern zu setzen, also "Gegner überholen", "Durchfahre Kurve ohne Vorkommnisse", etc. Einfach alle Kantenbeschriftungen nach Verzweigungsknoten.


----------



## Cojones (2. September 2011)

Steiner_B hat gesagt.:


> Das ist in der UML2 Definition nicht genau spezifiziert worden, das Problem wenn man keine Endknoten einzeichnet liegt darin, dass man in komplexeren Diagrammen oft nicht erkennen kann an welchen Stellen eine Unteraktivität verlassen werden darf. Wir haben uns auf der Uni darauf geeinigt immer Endknoten einzuzeichnen.


Das heißt also, einfach 2 Endknoten nach den beiden X++ hinzuzufügen?



Steiner_B hat gesagt.:


> Ja, aber viel wichtiger wäre es die Bedingungen bei den Verzweigungen im Body in Klammern zu setzen, also "Gegner überholen", "Durchfahre Kurve ohne Vorkommnisse", etc. Einfach alle Kantenbeschriftungen nach Verzweigungsknoten.


Wollte ich eigentlich auch, aber bei all den Verzweigungen gibt es sehr viele Bedingungen (20-30), die erfüllt sein müssen, damit es mit der Verzweigung weitergeht. Das kann ich ja nicht wirklich alles in eine riesige []-Klammer schreiben. Hast du eine Idee, wie man das sonst lösen kann?


----------



## Steiner_B (2. September 2011)

> Das heißt also, einfach 2 Endknoten nach den beiden X++ hinzuzufügen?


Meiner Meinung nach musst du nur vom X++ Knoten einen Pfeil zu einem Endknoten ziehen.



> Wollte ich eigentlich auch, aber bei all den Verzweigungen gibt es sehr viele Bedingungen (20-30), die erfüllt sein müssen, damit es mit der Verzweigung weitergeht. Das kann ich ja nicht wirklich alles in eine riesige []-Klammer schreiben. Hast du eine Idee, wie man das sonst lösen kann?


Ich finde die Beschriftungen die du jetzt dort hast ziemlich gut. Bei einem Aktivitätsdiagramm soll ja Verhalten, und nicht Programmfluss beschrieben werden, daher sind Aussagekräftige Bedingungen sinnvoller als z.B.: x > 5.
Das einzige was du machen solltest ist "Gegner überholen" etc. in "[Gegner überholen]" zu ändern.


----------



## Cojones (3. September 2011)

Hi,

noch mal vielen Dank für deine Hilfe. Ich habe nachgebessert:





Was meinst du dazu?


----------



## Cojones (13. September 2011)

Hallo mal wieder,

ich möchte auf diesem Aktivitätsdiagramm basierend zwei Diagramme erstellen, die jeweils den Best-Case und Worst-Case darstellen. Welches Diagramm würdet ihr mir da empfehlen?

Gruß,
Cojones


----------



## Steiner_B (13. September 2011)

Hallo,

Wozu möchtest du das verwenden? Ich meine theoretisch kannst du aus dem Diagramm das du schon hast alles rauslöschen was du für die jeweiligen Fälle nicht brauchst, aber mir ist nicht bekannt das sowas normalerweise gemacht wird. Aus dem kompletten Diagramm kann man ja schon die verschiedenen Fälle herauslesen.


----------



## Cojones (13. September 2011)

Ja, das stimmt. Allerdings ist das Diagramm für Leute bestimmt, die sich mit UML nicht allzu gut auskennen und sich dementsprechend nicht vorstellen können, wie verschiedene diese beiden Fälle sein können. Daher wollte ich zur Veranschaulichung eine Best- und einen Worst-Case darstellen.


----------



## Cojones (19. September 2011)

Keine Ideen?


----------



## Steiner_B (19. September 2011)

Von mir nicht, und das liegt hauptsächlich daran, dass Best/Worst-Case Darstellungen in UML nicht vorgesehen sind.


----------



## Cojones (19. September 2011)

Muss ja kein UML sein, nur irgendwas um diese beiden Fälle darzustellen.


----------

