投稿元:
レビューを見る
組込み系ソフトウェアの中には、状態遷移が厄介なものがあります。
たとえば、ビデオの再生、停止、一時停止、早送り、、、といったボタンなどです。
単純な処理に思えますが、ビデオが流れている状態として{通常再生, 早送り再生, 巻き戻し再生}の3つがあったとします(実際はもっとあるわけですが)。
それぞれの状態の時に[一時停止]ボタンを押して画面を一時停止したとします。もう一度、[一時停止ボタン]を押したときに、ビデオが流れている状態に戻るわけですが、早送り再生中なら、早送り再生に戻るべきでしょうか? それとも通常再生??
早送り再生に戻るためには、「早送り再生中に、一時停止ボタンが押された」ことを覚えておかなければなりません。
また、中にはデフォルト状態に戻る必要があるパターン(テープを入れ替えるイベントとか)もあります。色々と条件分岐が複雑で厄介です。
★★★
このような状態遷移を分かりやすく表現する方法が本書で述べている「拡張階層化状態遷移表設計手法」です。そして、それをサポートするCASEツールがZIPCというもので、拡張階層化状態遷移表をCのプログラムに変換してくれます。
したがって、ZIPCを使う人はこの表記方法をマスターする必要があります。
そして、使わない人でも状態遷移について考える良い本です。
★★★
テストするには、プッシュダウンオートマトンでモデリングしてから、状態遷移パスを作成することになるのでしょうね。
今度、古川先生に聞いてみようっと。