LCD_FIELDCD Player Panel
4.1 ObCL 記述支援環境の概要
仕様記述言語ObCL を用いて記述した仕様を計算機上で検討できるよう、ObCL記述 支援環境とシミュレーション環境を構築した。
この環境は,
ObCL →ObML コンバータ
ObTS シミュレーション環境ObML
ObCL 記述環境
からなる.
4.1.1 ObCL
→
ObMLコンバータ
4.1.2 ObTS
シミュレーション環境
ObMLシミュレーション環境ObMLの原型は伊藤[13]によって報告されたものである.ObML は関数型言語Standard ML で記述されている.またObTS モデルもMLの関数群とし て実装されており,シミュレーション機能の関数群と共に動作する.
シミュレーションは,ObTSモデルでのステップ動作にしたがって進行する.シミュレー タは,各ステップごとのオブジェクトの動作状態とイベントに関するスナップショットのリ スト(システムコンフィギュレーションと呼んでいる)を動作結果として返す.通常,イベ ント列を与えてそのシミュレーション結果を見る場合は,システムコンフィギュレーショ ンをプリティプリント関数を用いて読みやすいかたちに整形して使用する.後述4.2.1節 に示した例ではこのようにして得られた出力を使用している.また,仕様の確認のために 動作の検査をしたい場合には,システムコンフィギュレーションを検査用ML関数に与え て処理する.後述4.2.2 節において,検査用ML関数を用いた動作チェックの例を示す.
図4.1 にシミュレーションに使用する主要な型のMLコードを示す.
type Name = string
(3
属性に新しい型を追加するために必要な作業は
1. Attribute typeに追加する。
2. eqCommon関数に等価判定を追加する。
3. ppAttrVal関数に表示機能を追加する
3)
10 datatype Attribute type =
Int of int
j String of string
j Null of Attr
type Attribute = Name 3 Attribute type
typ e Event =Name 3 (Attribute list)
type Env = (Name 3 Attribute list) list
datatyp e X=
Initial
20 jState ofstring
jSingleof ((X3 Attribute list 3 Event list3 Env) 0>
(X 3Attribute list3 Event list))
j Parallel of ((X 3 Attributelist 3 Event list 3 Env)->
(X3 Attribute list 3 Event list))list
jNull
jName
typ e Object=
(X3 Attribute list 3 Eventlist3 Env) 0> (X 3Attributelist3 Event list)
type ObjectConf = Object 3X 3 Attribute list
4.1.3 ObCL
記述環境
設計者が設計の途中でどのような仕様とすべきかを検討している段階では,妥当な仕様 を見出すまでにかなりの試行錯誤が必要である.経験的には,仕様を検討するときにはい ろいろな場合を想定して一番良かろうというものに決め,波及する影響を考え…,という 作業を頭のなか(あるいは机上)で繰り返している.とりわけ組込みシステムの場合には,
実機あるいはクロス環境ができていない段階では設計者の経験に照らして判断するしか ないことが多い.このようなときに,仕様を少し変更し,計算機上少し動かして確認し,
また少し修正し…,という作業を繰り返すことができれば,仕様検討の効率を上げること ができる.しかし,4.1.1節に示したObCL→ObMLコンバータを用いてこの作業を行う と,小さな変更のたびにObCLとMLの間を往復しなければならず,やや不便である.
ObCL記述環境は,そのような作業を支援するための対話的な環境で,関数型言語
Stan-dard ML 上に構築されている.以下のような機能が用意してある.
MLのデータとして記述したクラス/フィールド/イベントクラスなどを対話的ある いはバッチ的に処理するための関数群.
ML関数として記述されたクラス/フィールド/イベントクラスなどをObCL記述に 変換する.
対話環境上のObCL記述をシミュレーション可能なコードに変換する.
これらの機能を用いて,記述する→シミュレーションする→記述する→…という作業手 順でシステムの仕様を検討しながら記述を進めることができる.