15. 誤動作の特定
! 機能モデルが偽になって
いるところが誤動作
U1
T
U2
T
U3'
T
U3
T
(U1 ∨ U2∨U3')⇔U3
T
HZ01 HZ02
! 誤動作とリスクアセスメント
T
T
T
T
T
F
F
T
F
T
T の結果からリスクに至る誤
T T F F F
T 動作を特定する
T F T T T
T F T F F
T
T F F T T ! リスクに至るハザード
T F F F F
T
F T T T T
F T T F F
T ! 意図しないトルク増加
F T F T T
F T F F F
T
F F T T T U3 ∧¬U1 ∧¬U2 ∧¬U3’
F F T F F
T
F F F T F
T
F F F F T ! 安全目標
! これを防ぐ=否定する
¬(U3 ∧¬U1 ∧¬U2 ∧¬U3’)
15
17. ただし
! 内部構造などの情報を
エンジン制御
U1
x1
システム
U3 機能モデルに入れると
x3
U2
x2
! それに応じたテストケ
U3’
ースや詳細化条件等を
(U1∨U2)∧U3'⇔U3
得ることができる
U1 U2 U3' U3 (U1 ∨U2)∧U3'⇔U3 HZ01 HZ02
T T T T T
T
T
T
T
F
T
T
F
F
F
T
T
! コンポーネントへの
T
T
T
F
F
T
F
T
T
T
詳細化安全要求を
T F F T F T
T
T
F
F
T
F
F
F
F
T
T 導出できる
F T T T T
F T F T F T
F T T F F T
F T F F T
F F T T F T
F F F T F T
F F T F T
F F F F T
17
22. Fluent命題
! 前ページのMovingやClosedを振る舞いに依存して真偽
が確定する命題と考える。これをFluent命題と呼ぶ。
! Moving状態であることを示す論理変数と考える
! Fluent命題を使うと振る舞いに関する要求文を命題化
することが出来る
! 走行中はドアを開けない : Moving⇒ Closed
Moving Closed
start stop time close open time
Moving false true false Closed false true false
時間軸上でのFluent命題の変化
22
23. (Moving⇒Closed)の意味
意味を理解するために、個別のコンポ
ーネントの振る舞いからシステムで可 Car start
能な全ての状態を合成する
0 1
stop
! 車はスタート/ストップを繰り返す
Door open
Car = (start->stop->Car). 0 1
close
! ドアはオープン/クローズを繰り
start
Door = (open->close->Door). BM01
open start close
0 1 2 3
close stop open
! 車とドアの振る舞いを合成する
stop
全状態空間
||BM01 = (Car||Door).
23
24. !
個々の状態に対して命題論理式を評価してみる
start
open start close
BM01
0 1 2 3
close stop open
stop
Moving F F T T
Closed T F F T
命題論理式
Moving Closed T
T
F
T
! (Moving⇒Closed) は、この状態を禁止する安全要求
24
25. 状態を利用したモデリング
! Moving⇒Closed を満たす状態マシンを定義するのであ
れば満たしていない状態を削除すれば良い
start
open
open start close start
BM01 BM01B
0 1 2 3 0 1 2
close stop open stop
close
stop
Moving F F T T F T F
Closed T F F T T T F
Moving Closed T
T
F
T
T
T
T
25
34. サンプル-2 解答
! 一般的なアブダクション解答
RADIO = OFF,
OFF = (on -> TOP),
TOP = (scan -> SCANNING | reset -> TOP | off -> OFF),
SCANNING = (scan -> SCANNING | reset -> TOP | off -> OFF | lock -> TUNED |
end -> BOTTOM),
TUNED = (scan -> SCANNING | reset -> TOP | off -> OFF ),
BOTTOM = (scan -> BOTTOM | reset -> TOP | off -> OFF).
on scan end
AbRADIO
0 1 reset
2 scan
3 scan
off {lock, reset}
off reset
off
34
35. サンプル-2 演繹解答1
! 演繹による解答
fluent OFF = <off, on> initially 0
fluent ON = <{on, reset, lock}, {off, scan}> initially 0
fluent SCAN = <scan, {end, lock, reset, off}> initially 0
fluent BOTTOM = <end, {reset, off}> initially 0
assert T1 = [](OFF -> X (ON && !BOTTOM && !SCAN ))
assert T2 = [](ON -> X ((OFF || SCAN || reset) && !BOTTOM))
assert T3 = [](SCAN -> X (OFF || ON || BOTTOM || scan))
assert T4 = [](BOTTOM -> X ((ON || OFF || scan)&& ! SCAN))
assert INIT = (OFF && ! ON && !SCAN && !BOTTOM)
constraint T1 = T1
constraint T2 = T2
constraint T3 = T3
constraint T4 = T4
constraint INIT = INIT
||DeRADIO = (T1||T2||T3||T4||INIT).
35
36. おっと、ぜんぜん違う
on
on
off {lock, reset} scan end {lock, on}
DeRADIO
0 1 2 3
{lock, reset} reset
4 scan
5 6 7 on
{lock, reset}
off reset
off reset scan
off reset
off
off
on scan end
AbRADIO
0 1 reset
2 scan
3 scan
off {lock, reset}
off reset
off
36
37. オリジナルとの比較
! 状態マシンを比較することで、解釈の違いや仕様
の読み取り漏れ等が明確になる
! 全然違うと見えたが4ヶ所のみ違う
CheckDe off on scan end
property ||PropDe = (DeRADIO). -1 0 1 2 reset
3 scan
4
||CheckDe = (PropDe||AbRADIO). off {lock, reset}
off reset
AbにはあるがDeにない遷移 off
scan
property ||PropAb = (AbRADIO).
CheckAb off on scan end
||CheckAb = (PropAb||DeRADIO).
-1 0 1 2 3 4
DeにはあるがAbにない遷移 off
reset
{lock, reset}
scan
{lock, reset} off reset
off
on
{lock, on}
37
48. システム状態マシンの生成
! 要求項目に対応する状態マシンを合成してシステム
の振舞いを表す状態マシンを生成する
! この際、明確なトレーサビリティが定義される
reset
on scan reset
DEFAULT
SP01 0 {end, off}
1 {end, lock, on}
2 on
3 {end, on, reset}
SP02
off {end, lock} scan
off
SP03 on
off
scan
DEFAULT
0 {end, off}
1 {end, lock, on, reset}
2 on
off {end, lock, reset}
これが
トレーサビリティ off
48
もしかしたらEND状態が必要かも
49. ! あれが出来る出来ないで
違いは何?
はなく、もっと抽象度の高
いところで議論する必要
がある
reset
on scan reset
DEFAULT
0 1 2 3
{end, off}
off
{end, lock, on}
{end, lock}
on
scan
{end, on, reset}
! 背景にある考え方(関係)
off の違いは何か
off
on scan ! 背景が決まればいつ
何が出来るかは演繹
DEFAULT
0 {end, off}
1 {end, lock, on, reset}
2 on
off {end, lock, reset} で確定する
off ! 無理矢理作ればバグ
on scan end になる
AbRADIO
0 1 2 3
reset scan scan
! そこをはっきりさせないと
off {lock, reset}
off reset
砂地獄の子犬になる
off 49