« 2011年10月 | トップページ | 2011年12月 »

シーケンス図を使ったステートチャートの作成(1)

状態遷移図・ステートチャートをシーケンス図から設計する手法があるようです。

モデル検査法
http://apal.naist.jp/~seki/Japanese/ss/2011-2.pdf

例に挙げているのは通信プロトコルのモデル化で、

(1) 正常系のシーケンス図の作成
(2) それぞれのラインに対して、トリガー(入力イベント)を見つける
(3) 状態を見つける
(4) 状態遷移図に起こす
(5) 書きづらい・読みづらいなど、必要に応じて階層化
(6) 上記を、その他の正常系や異常系で繰り返す

といったもの。

今回はサンプルとして、メールソフトからのメール送信について、この手順を追ってみようと思います。

(1) 正常系のシーケンス図の作成

利用者、メールソフト、メールサーバで正常系のシーケンス図を作成。

Photo

まずは、メールサーバの入力イベントで区切ってみると、入ってくる矢印、出ていく矢印に注目。

Photo_4

状態は、「idle」「新着確認」「受付中」がみつけられる。さて、メールサーバの状態はこれだけだろうか。

| | コメント (0) | トラックバック (0)

ハレルの状態遷移図 statechart を勉強する

twitter で @Unity1004 さんがファミコンで有名なスーパーマリオの状態遷移図(=マリオチャート)を描きながら、ハレルの statechart 等の話題が出たりしていたので、僕も勉強してみようと思う。

==

仕様書や設計所が自然言語で記述されている場合、視覚的にわかりやすくするために図や表に整理することが多い。その整理方法のひとつとして状態遷移モデルを状態遷移図に記述する工夫がある。しかし、一般的な状態遷移図では、似たような状態が複数登場したり、オブジェクトがひとつの状態でしかなりえないが、実際のソフトウェアでは複数の状態をもつことも多い。

そこでデビッド・ハレル氏が提唱したハレルチャート(statechart)が登場します。

以下は、astah を使って記述した一般的な「キッチンタイマー」の statechart である。

Statechart_2


参考: http://www.ssi.ist.hokudai.ac.jp/Archives/.../systemdesign2011-5-24-1.pdf 
参考: http://zone.ni.com/devzone/cda/tut/p/id/12848

参考にした2つの説明ページでは、どちらもズームインしながらチャートを作成していく手順である。また、特定のサブ状態(子要素を持つ状態)を検討しているときは、別のサブ状態を抽象化してわかりやすくしている。ちなみに今回使用した astah では、サブ状態の内部には開始疑似状態は作れなかった。

| | コメント (0) | トラックバック (0)

« 2011年10月 | トップページ | 2011年12月 »