2016-04-01 18 views
1

ステートチャートダイアグラム内でステートが決して一定時間以上実行されないことをグラフィカルに表現するにはどうすればよいですか?無限ループで終わらないように。何かのようにステートチャート:ステートが実行される時間の制限

を入力し、条件違反の場合は別の状態に分岐します。私は何とかガードにそれを含める必要がありますか?または州の活動で?

EDIT:この方向で

(CheckPIN)--[invalid]-->(counter| + inc.)--[counter>3]-->(retainCard) 
    ^     | 
    |-----[counter<=3]-----| 

何か?

凡例:(ステート名|(+ - )の活動)、トランジション: - >は、[ガード]

+1

ステートチャートは私の強みではありませんが、エントリーアクションとガードで修正されたカウンターを追加するとうまくいくはずです。 –

+0

@ThomasKilian私は自分の質問を編集しました、それはあなたが念頭に置いていたものですか? – user8

+0

はい。それでおしまい。私はグラフィカルなツールを使っていますが、似ています。 –

答えて

2

私はあなたの質問が雑草ではあまりにも遠いと思っています。極限まで細かくモデル化することができますが、時間の経過とともにあまり変化を必要としない、より耐久性の高いモデルを作成することを目指すべきです。

H. S. Lahmanは、ムーアステートマシンを本の中で使用する優れたケースであるModel-Based Development: Applicationsを作成します。ムーア状態マシンは、状態間の遷移でアクションが発生する場所とは対照的に、状態へのエントリ時にアクションが発生する場所です。 Mooreステートマシンを使用する最も魅力的な理由は、遷移が一連の関数呼び出しに縮退しないということです。代わりに、完了したことのアナウンスです。ここで

は、すべてのディテールを回避し、より耐久性の高いモデルを作成する方法の例です:

enter image description here

あなたは物事が起こるかが完全にカプセル化されていることがわかります。例えば、ユーザに挑戦することは、PIN番号、網膜スキャン、または皮下チップを伴うことがある。これらの各認証モードで許容される最大障害は、まったく異なる場合があります。そのポリシーは他の場所でも表現できます。

2

は、グラフィカルな答えを与えるために:

enter image description here

はこれがありますどのように私はそれをモデル化するだろう。

counterオブジェクトは通常は必要ありません。単純なカウンタなので、残りの/増分が共通のカウンタを参照することは明らかです。また、そのカウンターには実際の<<flow>>はありません。ステレオタイプの依存関係でなくても十分です。

関連する問題