« 「リーン開発の現場」の感想part6~累積フロー図は生産管理の流動曲線管理または追番管理である | トップページ | Redmineチケットの担当者を固定にする手法はWBS駆動に凝り固まり過ぎ »

2014/08/03

「朝の3分モデリング講座」の温水洗浄便座 セサレットの状態マシン図

「朝の3分モデリング講座」の温水洗浄便座 セサレットの状態マシン図を書いてみた。

朝の3分モデリング講座 - 例で理解するUML状態マシン図 - YouTube

温水洗浄便座 セサレットの状態マシン図の特徴:
(1)着座センサーとフラッシュセンサー(便器洗浄)は並列処理で動作する。
(2)便器に座ると、着座センサーONになる。
便器から立つと、着座センサーOFFになる。

(3)着座センサーONでおしりボタンを押すと、おしり洗浄中になる。
(4)おしり洗浄中に、停止ボタンを押すと洗浄が終わる。おしり洗浄中は60秒を過ぎると、自動的に終了する。

「おしり洗浄中」ステータスの意味:
(1)停止ボタンもタイマーも、おしり洗浄停止処理(exit)を実行後に動作する。
(2)おしり洗浄開始処理が始まってから「おしり洗浄中」状態に移る。

温水洗浄便座はどこの家にもあるから、誰でも描けそうだが、意外と複雑。
下記にさらに問題が追加されていた。

パズルっぽくて、考えると面白そう。

状態マシン図セミナー2014年2月 事前宿題

(引用開始)
【問題1】
このセサレットに、【ビデボタン】と、【乾燥ボタン】を追加してください。
状態マシン図に追加して設計してください。

要求:「おしり洗浄中」に【乾燥ボタン】を押すと、おしり洗浄が止まって乾燥を開始してください。
(そのほかも同様にしてください。おしり洗浄とビデ洗浄と乾燥はどれか1つしかできません。)

【問題2】
問題1を解いたセサレットに、【流すボタン】を追加してください。

要求:着座しているときも、着座していないときも、流せるようにしてください。
また、流し始めると、途中で止める方法はありません。

【問題3】
問題2を解いたセサレットに、
おしり洗浄のムーブ機能、
ビデ洗浄のムーブ機能
を追加してください。

要求:おしり洗浄は、【ムーブOFF】と【ムーブON】の状態があり、【おしりボタン】を押すたびに交互に変えてください。
このときも、おしり洗浄は、開始してから60秒あとに必ず止めてください。
ビデ洗浄も同様に処理してください。

【問題4】
問題3を解いたセサレットを仕様変更して、【流す小ボタン】、【流す大ボタン】にしてください。さらに、
着座してから、60秒以内に起立すると、流す小が、
着座してから、60秒あと以上に起立すると、流す大が
自動的に起きるように追加してください。
さらに、着座中に、一度でも【おしりボタン】が押されれば、流す大が
自動的に起きるようにしてください。
(引用終了)

個人的には、UMLのダイアグラムの中で、状態マシン図が重要だと思っている。
プログラミングやソフトウェアテストで最も使えるからだ。
実際、状態マシン図が書ければ、そこからプログラムに落とせるし、テストケースの仕様にもなる。

たぶん、DSLのように、プログラムの自動生成のための元ネタとなるモデルそのものにもなるはず。
実際、形式手法の一つであるモデル検査のSPINも、状態マシン図をプログラムからリバースして作成し、状態遷移をしらみつぶしに実行して、仕様の不備を見つける手法を採用している。

著者の方のBlogには、astahで描かれた状態マシン図の書き方について詳細に書かれているので、後でじっくり読む。

島ぶくろ 状態マシン図

|

« 「リーン開発の現場」の感想part6~累積フロー図は生産管理の流動曲線管理または追番管理である | トップページ | Redmineチケットの担当者を固定にする手法はWBS駆動に凝り固まり過ぎ »

モデリング」カテゴリの記事

astahによるUMLモデリング」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



« 「リーン開発の現場」の感想part6~累積フロー図は生産管理の流動曲線管理または追番管理である | トップページ | Redmineチケットの担当者を固定にする手法はWBS駆動に凝り固まり過ぎ »