質問: 大規模な状態数のモデル化の手法 状態数が20個、各状態間で処理を行う中間処理が380個(状態1から2、状態2から1などの両方向存在し、中間処理においても状態で行うような処理と同等の処理を行う)のような大規模な状態数に対して、私たちは1つの状態遷移表を用いて開発を行うことを検討しています。 一方で、このような大規模な状態遷移表を記述すると、動作が重くなるなどの問題点が浮上しています。 そこで、状態数の多い状態遷移表の最適なモデル化の構造を教えていただければ幸いです。 (状態数の多いモデル化はどのように実現するのがベストプラクティスでしょうか。)
回答: 状態遷移はなるべく単純にすべきですが、電話屋さん等「大規模複雑なステートマシン」となる特徴を持つシステムはあります。そのような場合は状態遷移表が有用で、より分かり易い表現方法と言えます。 >そこで、状態数の多い状態遷移表の最適なモデル化の構造を教えていただければ幸いです。 状態遷移表を階層的にしたり、表の中に中間処理まで明示するなどの工夫で効率的な設計を目指す手法があります。stateflowとは別のcaseツール「zipc」製作元の会社では上記手法を「拡張階層化状態遷移表(ehstm:extended hierarchy state transition matrix)設計手法」として提唱しています。 stateflowもehstmで設計するのに十分な仕様を有しています(表の内部に中間処理をグラフィカルに表示する機能こそありませんが)。またメインの状態遷移図はもちろん充実しており、私はいつもstateflowで状態遷移図と状態遷移表を両方表示してstateflowを使います。 >大規模な状態遷移表を記述すると、動作が重くなるなどの問題点... 私も経験がありますが、stateflowで遅くなるのは画面表示です。一度に大量の項目を表示すると動作が重くなるのはどのcaseツールにも言える事だと思います。全体表示すると小さくて読めなくなる様な表は避け、状態の階層化やグループ化を検討すべきです。