ソフトウェアのモデル駆動開発ツールの一つに、Stateflowがある。
Stateflowは、MATLAB/Simulink上で状態遷移モデルと制御フローモデルを動かすための環境に該当する。
この環境、母体となるMATLAB/Simulinkが組み込み制御システムならあらかたシミュレートできる超高機能ツールなので、ソフトウェア設計モデルのツールとしてはオーバースペックと言えるかもしれない。ただMBSEのようにシステムレベルからモデル駆動やモデルベースの開発を行っている場合は、モデル駆動開発環境として有望な選択肢になると思う。
あまり情報がないので今回簡単に紹介したい。
モデルの記述
題材として、黒線を伝って走るライントレーサーを扱う。
なおMATLAB/Simulinkは、制御理論や信号処理のライブラリが充実しているので制御システムレベルからシミュレートしてこそ価値が出るけれど、今回はあくまで例示としてソフトウェア設計モデルのみを扱う。
全体のシステムのモデルは以下。
「Line Sensor」がライントレーサーの右側センサ・左側センサの入力で、「Motor Signal」が(現実からかなり簡略化しているけれど)右側モータの駆動信号、左側モータの駆動信号を示す。
真ん中の「Line Tracer」がソフトウェア処理のモデルになる。このモデルを状態遷移モデルで記述・実行できるようにするのがStateflowになる。
「Line Tracer」の中のモデルは以下。ソフトウェアの状態遷移モデルを記述している。なおStateflowでは、状態遷移モデルを状態遷移図でも状態遷移表でも書けるようになっている。
処理としては、一定周期ごとにセンサ入力を判定し、直進、左折、右折を実行するようにしている。またセンサが両側とも反応しない異常状態では人手で位置直しすることを期待して停止する。