KAOS (109) イベントベースの仕様 (4.4.4-3)

前回は,モード遷移表について見た.観測変数に対して,このモード遷移表を作成するためであった.次の2つのテーブルは,制御変数の状態を定めるために用いる.

イベント表(Event Table)

イベント表は,モードとイベントの関係を示す.

モードには様々な視点がある.下表における停車中(Stopped)・移動中(MovingOK)・高速走行中(TooFast)モードは,速度を観測変数とし,列車の移動に着目したときの様々なモードである.これらをまとめて,AMC(Associated Mode Class)と呼ぶ.ここでは,移動に着目するので,「移動状態(MovementState)」という名前を与える.

一方で,何かトラブルが,この移動状態AMCにおいて生じた時,別の視点から整理が必要である.下表における緊急(Emergency)が相当する.下表は,この別視点である「緊急」と移動に着目したAMCとの関係を示したものと考える.

イベント表

イベント表

制御変数の様々な値と,モードとイベントの関数としての項(Term)と呼ぶ.例えば,先の緊急は一つの「項」である.移動状態AMCにおいてAlarmが,ONのとき,Emergencyは,真になり,AlarmがONで,Reset=Onのトリガーが入った時に,Emergencyは偽となる.項というのは,モードをまとめて別名をつけたものとなる.一度,項として定義すれば,以降で,Emergencyを扱いやすくなる.

条件表(Condition Table)

条件テーブルは,AMCモードや状態の関数として,制御変数や項の種々の値を定義したものである.状態は,観測変数・制御変数・内部変数を用いて,述語として定義する.

下記に例を示す.

条件テーブル(Condition Table)

条件テーブル

ここで注目するのは,ドア状態(DoorsState)である.これもまた別の視点である.ドア状態は,ここまでに見た観測変数の状態,停車中等の状態を用いて,定めることができる.プラットフォームに入っているか,緊急状態であるとき,停車中モードである.かつ,動いていない(MovingOK, TooFastではない)時に,ドアは開く(Open)ことができる.

(nil)