Hi! Ich sitze derzeit an folgendem Problem: Fuer Dokumentation von Sicherheitsrelevanter Software (ASIL) soll jede Funktion mit entsprechenden Ablaufkombinationen (je nach Parameter) beschrieben werden, damit diese im Anschluss anhand dieser Daten getestet werden kann. Soll heissen wenn ich eine Funktion habe die So aussieht (ch hoffe, ich mache gerade keinen Fehler):
1 | void func() |
2 | {
|
3 | switch(haus.farbe) |
4 | {
|
5 | case gelb: /* 1.1 */ |
6 | maler.streichen.gelb = TRUE; |
7 | if (haustier.vogel.ort == IM_KAEFIG /* +1.1.1 */ |
8 | {
|
9 | haustier.katze.hunger == TRUE; |
10 | }
|
11 | else /* 1.1.2 */ |
12 | {
|
13 | if (haustier.vogel.status == TOT) /* +1.1.2.1 */ |
14 | {
|
15 | haustier.vogel.hunger == FALSE; |
16 | }
|
17 | else /* +1.1.2.2 */ |
18 | {
|
19 | haustier.vogel.hunger == TRUE; |
20 | }
|
21 | }
|
22 | break; |
23 | case gruen: /* 1.2 */ |
24 | if ((haustier.katze.status == TOT) &&\ /* +1.2.1 */ |
25 | (oma.zuhause == TRUE)) |
26 | {
|
27 | oma.gemuet = TRAURIG; |
28 | }
|
29 | maler.streichen.gruen = TRUE; |
30 | break; |
31 | case blau: /* +1.3 */ |
32 | maler.streichen.blau = TRUE; |
33 | break; |
34 | default:
|
35 | break; |
36 | }
|
37 | }
|
38 | }
|
Alle Kombinationen, die durchlaufen werden koennen, sind im Kommentar dahinter markiert. Diejenigen, mit + davor, sind tatsaechliche Aeste, in denen etwas getan wird. Soll heissen ich moechte mir aus dieser Funktion die Daten wie z. B. 1.2.4.3.1.2.3 und die darunterstehenden Aufrufe ansehen. Warum das Ganze in einem Programm loesen? Weil man sich hierbei sehr schnell vertut was die Aststruktur angeht - vorallem, wenn man eine dicke State-Machine hat, die recht viel abarbeitet. Jetzt meine Frage: Kennt jemand zufaellig ein Programm die visualisierung (jeglicher Art) der Baumstruktur aller moeglichen Ablauefe einer Funktion realisiert? Danke und Gruss, Armin