07

15

状態マシン図 演習 解答例1ー1

2010.07.15(23:15)

【出題】
(1-1) 信号機をモデリングしなさい。停電は考えなくてよい。


これ以降、解答例を示しますが、あくまでひとつの解答例です。ほかにもっといいモデルがあるかもしれません。モデリングしてその先、どういう課題を解決したいのか進めてみないとほんとうにこのモデルでいいかどうかはわかりません。なので解答するときは、自分は課題をこうとらえ、その課題に対して少なくともこういうモデルがあればいいと考えました、と説明してください。

信号機のモデルでは、循環する状態遷移があるのが特徴です。基本的にタイムアウトが状態遷移をおこすイベントとなります。

信号機のモデリングですが、赤、青、黄という色を状態の名前につけないようにします。色の意味である、止まれ、進め、注意を状態の名前にしておけば、自動車用の信号でも、歩行者用の信号でも同じモデルで分析を進めることができます。tm はタイムアウトを示します。

(1-2) 1つ前の信号機を拡張し、幹線用信号と支線用信号のあるシステムをモデリングしなさい。


モデルのねらい、ポイントを説明してもらいます。たとえば、「両方の信号が絶対に同時に進めまたは注意にならないモデルを作ること」、などです。

必ずしも、1つの信号機を2つ並べたものでモデリングする必要はありません。もう一度全体を見直して、もっとシンプルに表現する方法はないか考えてみます。

時間は短いですが、両方止まれの状態を作っておくことが事故を避ける基本ですね。

幹線止まれ+支線止まれの状態が2つありますが、同じものではないため、少し違う名前にしておきます。

(1-3) 1つ前の信号機を拡張し、深夜に、幹線用信号は黄色の点滅に変わり、支線用信号は赤色の点滅に変わる機能を追加しなさい。



いままで進めだったものが突然止まれの点滅になっては事故が起きてしまいます。なので深夜モードに変わるときには、両方止まれの状態から移行させます。朝になったら元に戻しますが、そのときも、できるだけ安全な状態遷移をさせます。

将来の要求をいまから予測することはできませんが、これまでに3つ作ったモデルの間で、できるだけ少ない変更で3つのモデルを作るにはどうすればいいか考えてみましょう。

続く

コメントの投稿

非公開コメント

プロフィール

島敏博

Shima Toshihiro 島敏博
信州アルプスハイランド在住。HaskellとElixirが好き。組み込みソフトウェアアーキテクト、C++プログラマ、山歩き、美術館巡り、和食食べ歩き、日本赤十字社救急法指導員、インデックス投資、クラシック音楽、SESSAME会員、状態マシン設計、モデル駆動開発、ソフトウェアプロダクトライン、Rubyist、実践ビジネス英語

■ ツイッター
http://twitter.com/saltheads
■ Facebook
http://www.facebook.com/saltheads
■ Qiita
http://qiita.com/saltheads

印刷する場合は、ブラウザの印刷メニューではなく、このページの上から3cmくらいの青いところにある、「印刷」を押してみてください。少しうまく印刷できます。まだ完全ではないのですが、これで勘弁してください。


カテゴリ
最新記事
月別アーカイブ
最新コメント
検索フォーム
リンク
sessame
RSSリンクの表示