|
14 | 14 |
|
15 | 15 | #CHECK: check_metamodel_graph |
16 | 16 |
|
17 | | -.. feat_req:: Parent requirement |
18 | | - :id: feat_req__parent__abcd |
19 | | - :safety: QM |
20 | | - :status: valid |
21 | | - |
22 | | -.. Parent requirement has the correct safety level |
23 | | -#EXPECT-NOT: feat_req__child__abce: parent need `feat_req__parent__abcd` does not fulfill condition `{'and': ['safety == QM']}`. |
24 | | - |
25 | | -.. feat_req:: Child requirement |
26 | | - :id: feat_req__child__abce |
27 | | - :safety: QM |
28 | | - :satisfies: feat_req__parent__abcd |
29 | | - :status: valid |
30 | 17 |
|
31 | | -.. feat_req:: Parent requirement2 |
32 | | - :id: feat_req__parent__abcd2 |
| 18 | +.. Checks if the child requirement has the at least the same safety level as the parent requirement. It's allowed to "overfill" the safety level of the parent. |
| 19 | +.. ASIL decomposition is not foreseen in S-CORE. Therefore it's not allowed to have a child requirement with a lower safety level than the parent requirement as |
| 20 | +.. it is possible in an decomposition case. |
| 21 | +.. feat_req:: Parent requirement QM |
| 22 | + :id: feat_req__parent__QM |
33 | 23 | :safety: QM |
34 | 24 | :status: valid |
35 | 25 |
|
36 | | -.. Parent requirement has the correct safety level |
37 | | -#EXPECT-NOT: feat_req__child__abce2: parent need `feat_req__parent__abcd2` does not fulfill condition `{'and': ['safety == QM']}`. |
38 | | - |
39 | | -.. feat_req:: Child requirement2 |
40 | | - :id: feat_req__child__abce2 |
| 26 | +.. feat_req:: Parent requirement ASIL_B |
| 27 | + :id: feat_req__parent__ASIL_B |
41 | 28 | :safety: ASIL_B |
42 | | - :satisfies: feat_req__parent__abcd2 |
43 | 29 | :status: valid |
44 | 30 |
|
45 | | -.. feat_req:: Parent requirement3 |
46 | | - :id: feat_req__parent3__abcd |
47 | | - :safety: ASIL_B |
| 31 | +.. feat_req:: Parent requirement ASIL_D |
| 32 | + :id: feat_req__parent__ASIL_D |
| 33 | + :safety: ASIL_D |
48 | 34 | :status: valid |
49 | 35 |
|
50 | | -.. Graph check without combined condition (no and or or) |
51 | | -#EXPECT: feat_req__child__abce3: parent need `feat_req__parent3__abcd` does not fulfill condition `safety == QM`. |
| 36 | +.. Positive Test: Child requirement QM. Parent requirement has the correct related safety level. Parent requirement is `QM`. |
| 37 | +#EXPECT-NOT: feat_req__child__1: parent need `feat_req__parent__QM` does not fulfill condition `safety == QM`. |
52 | 38 |
|
53 | | -.. comp_req:: Child requirement3 |
54 | | - :id: feat_req__child__abce3 |
| 39 | +.. feat_req:: Child requirement 1 |
| 40 | + :id: feat_req__child__1 |
55 | 41 | :safety: QM |
56 | | - :satisfies: feat_req__parent3__abcd |
| 42 | + :satisfies: feat_req__parent__QM |
57 | 43 | :status: valid |
58 | 44 |
|
| 45 | +.. Positive Test: Child requirement ASIL B. Parent requirement has the correct related safety level. Parent requirement is `QM`. |
| 46 | +#EXPECT-NOT: feat_req__child__2: parent need `feat_req__parent__ASIL_B` does not fulfill condition `safety == QM`. |
59 | 47 |
|
| 48 | +.. feat_req:: Child requirement 2 |
| 49 | + :id: feat_req__child__2 |
| 50 | + :safety: ASIL_B |
| 51 | + :satisfies: feat_req__parent__ASIL_B |
| 52 | + :status: valid |
60 | 53 |
|
| 54 | +.. Positive Test: Child requirement ASIL D. Parent requirement has the correct related safety level. Parent requirement is `QM`. |
| 55 | +#EXPECT-NOT: feat_req__child__3: parent need `feat_req__parent__ASIL_D` does not fulfill condition `safety == QM`. |
61 | 56 |
|
| 57 | +.. feat_req:: Child requirement 3 |
| 58 | + :id: feat_req__child__3 |
| 59 | + :safety: ASIL_D |
| 60 | + :satisfies: feat_req__parent__ASIL_D |
| 61 | + :status: valid |
62 | 62 |
|
| 63 | +.. Negative Test: Child requirement QM. Parent requirement is `ASIL_B`. Child cant fulfill the safety level of the parent. |
| 64 | +#EXPECT: feat_req__child__4: parent need `feat_req__parent__ASIL_B` does not fulfill condition `safety == QM`. |
63 | 65 |
|
| 66 | +.. comp_req:: Child requirement 4 |
| 67 | + :id: feat_req__child__4 |
| 68 | + :safety: QM |
| 69 | + :satisfies: feat_req__parent__ASIL_B |
| 70 | + :status: valid |
64 | 71 |
|
| 72 | +.. Negative Test: Child requirement QM. Parent requirement is `ASIL_D`. Child cant fulfill the safety level of the parent. |
| 73 | +#EXPECT: feat_req__child__5: parent need `feat_req__parent__ASIL_D` does not fulfill condition `safety == QM`. |
65 | 74 |
|
| 75 | +.. comp_req:: Child requirement 5 |
| 76 | + :id: feat_req__child__5 |
| 77 | + :safety: QM |
| 78 | + :satisfies: feat_req__parent__ASIL_D |
| 79 | + :status: valid |
66 | 80 |
|
| 81 | +.. Positive Test: Child requirement ASIL_B. Parent requirement has the correct related safety level. Parent requirement is `QM`. |
| 82 | +#EXPECT-NOT: feat_req__child__6: parent need `feat_req__parent__QM` does not fulfill condition `safety != ASIL_D`. |
67 | 83 |
|
| 84 | +.. feat_req:: Child requirement 6 |
| 85 | + :id: feat_req__child__6 |
| 86 | + :safety: ASIL_B |
| 87 | + :satisfies: feat_req__parent__QM |
| 88 | + :status: valid |
68 | 89 |
|
| 90 | +.. Positive Test: Child requirement ASIL_B. Parent requirement has the correct related safety level. Parent requirement is `ASIL_B`. |
| 91 | +#EXPECT-NOT: feat_req__child__7: parent need `feat_req__parent__ASIL_B` does not fulfill condition `safety != ASIL_D`. |
69 | 92 |
|
| 93 | +.. feat_req:: Child requirement 7 |
| 94 | + :id: feat_req__child__7 |
| 95 | + :safety: ASIL_B |
| 96 | + :satisfies: feat_req__parent__ASIL_B |
| 97 | + :status: valid |
70 | 98 |
|
| 99 | +.. Negative Test: Child requirement ASIL_B. Parent requirement is `ASIL_D`. Child cant fulfill the safety level of the parent. |
| 100 | +#EXPECT: feat_req__child__8: parent need `feat_req__parent__ASIL_D` does not fulfill condition `safety != ASIL_D`. |
71 | 101 |
|
| 102 | +.. comp_req:: Child requirement 8 |
| 103 | + :id: feat_req__child__8 |
| 104 | + :safety: ASIL_B |
| 105 | + :satisfies: feat_req__parent__ASIL_D |
| 106 | + :status: valid |
72 | 107 |
|
73 | 108 |
|
74 | | -.. .. feat_req:: Parent requirement 2 |
75 | | -.. :id: feat_req__parent2__abcd |
76 | | -.. :safety: QM |
77 | 109 |
|
78 | | -.. .. Parent requirement has the correct safety level |
79 | | -.. #EXPECT-NOT: feat_req__child2__abce: parent need `feat_req__parent2__abcd` does not fulfill condition |
| 110 | +.. Parent requirement does not exist |
| 111 | +#EXPECT: feat_req__child__9: Parent need `feat_req__parent0__abcd` not found in needs_dict. |
80 | 112 |
|
81 | | -.. .. feat_req:: Child requirement 2 |
82 | | -.. :id: feat_req__child2__abce |
83 | | -.. :safety: QM |
84 | | -.. :satisfies: feat_req__parent2__abcd |
| 113 | +.. feat_req:: Child requirement 9 |
| 114 | + :id: feat_req__child__9 |
| 115 | + :safety: ASIL_B |
| 116 | + :status: valid |
| 117 | + :satisfies: feat_req__parent0__abcd |
85 | 118 |
|
86 | | -.. .. Parent requirement does not exist |
87 | | -.. #EXPECT: feat_req__child3__abce: Parent need `feat_req__parent0__abcd` not found in needs_dict. |
88 | 119 |
|
89 | | -.. .. feat_req:: Child requirement 3 |
90 | | -.. :id: feat_req__child3__abce |
91 | | -.. :safety: ASIL_B |
92 | | -.. :status: valid |
93 | | -.. :satisfies: feat_req__parent0__abcd |
94 | 120 |
|
95 | | -.. .. feat_req:: Parent requirement 3 |
96 | | -.. :id: feat_req__parent3__abcd |
97 | | -.. :status: invalid |
98 | 121 |
|
99 | | -.. .. Graph check without combined condition (no and or or) |
100 | | -.. #EXPECT: comp_req__parent4__abcd: parent need `feat_req__parent3__abcd` does not fulfill condition `status == valid`. |
| 122 | +.. Parent requirement does not exist |
| 123 | +#EXPECT: feat_saf_dfa__child__10: Parent need `feat_req__parent__QM` does not fulfill the condition `safety != QM`. |
101 | 124 |
|
102 | | -.. .. comp_req:: Child requirement 4 |
103 | | -.. :id: comp_req__parent4__abcd |
104 | | -.. :status: valid |
105 | | -.. :satisfies: feat_req__parent3__abcd |
| 125 | +.. feat_req:: Child requirement 10 |
| 126 | + :id: feat_saf_dfa__child__10 |
| 127 | + :safety: ASIL_B |
| 128 | + :mitigates: feat_req__parent__QM |
0 commit comments