Modellbasierte Anforderungsspezifikation sicherheitskritischer ...
Modellbasierte Anforderungsspezifikation sicherheitskritischer ...
Modellbasierte Anforderungsspezifikation sicherheitskritischer ...
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
in einer Aktionssprache an den Kontrollflusskanten (siehe 5.1.4.4.4). Das zweite Vorgehen kann<br />
zwar vollständig auf vordefinierte UML-Aktionen zurückgreifen, die Notation ist allerdings weniger<br />
intuitiv zu begreifen und belegt - zumindest bei einer kleinen Zahl an Verzweigungs-<br />
Alternativen - erheblich größere Flächen im Diagramm. Beide Varianten werden im Folgenden<br />
mit ihren jeweiligen Anwendungsgebieten diskutiert.<br />
Guards sind Ausdrücke, die sich in eine boolesche Aussage auflösen lassen und einer Kante des<br />
Kontrollflusses zugeordnet sind. Ist der Ausdruck wahr, kann ein Token die Kante passieren,<br />
ist der Ausdruck falsch, ist die Kante für Token gesperrt. Zusammen mit Entscheidungsknoten<br />
lassen sich somit Strukturen aufbauen, die den weiteren Ablauf hinter dem Entscheidungsknoten<br />
vorgeben. Dies zeigt Bild 5.17.<br />
act [Aktivitaet] Entscheidung[ Entscheidung ]<br />
<br />
Selbsttest durchfuehren<br />
{allocatedTo = BUe-Steuerung }<br />
[Systemfehler erkannt]<br />
<br />
Systemfehler melden<br />
{allocatedTo = BUe-Steuerung }<br />
Abbildung 5.17.: Entscheidungsstrukturen mit guards und Entscheidungsknoten<br />
Im dort dargestellten Beispiel wird im Kontrollfluss zu verschiedenen Folgeaktivitäten verzweigt,<br />
je nach dem, ob ein Systemfehler aufgetreten ist, oder nicht. Anzumerken ist allerdings, dass die<br />
Ausdrücke der guards hier in natürlicher Sprache formuliert sind. Für ein ausführbares Modell<br />
müsste jedoch eine Sprache wie z.B. die OCL verwendet werden.<br />
Diese Art der Modellierung ist insbesondere dann geeignet, wenn sich der Kontrollfluss nur in<br />
wenige Zweige 3 aufspaltet und entweder keine Ausführbarkeit erforderlich ist oder aber sich für<br />
die guards einfache Ausdrücke in einer Aktionssprache ableiten lassen. Sind hingegen komplexe<br />
Aktivitätsabläufe zur Ermittlung der booleschen Aussage erforderlich, eignet sich eher die im<br />
Folgenden beschriebene Vorgehensweise mit bedingten Knoten.<br />
Ein bedingter Knoten besteht dabei aus mehreren clauses (Klauseln), die jeweils aus einer test<br />
section und einer body section bestehen. In der test section muss genau eine Aktivität einen booleschen<br />
Wert an einem speziellen result-Pin bereitstellen. Ist der am Pin anstehende Wert wahr,<br />
3 Zwei, maximal drei ausgehende Zweige scheinen eine sinnvolle Grenze darzustellen<br />
65