web-dev-qa-db-ja.com

UMLシーケンス図に条件を含める方法は?

私は、システムのさまざまな部分のアクションと相互作用のシーケンスを表示するためにUMLシーケンス図を描くのが好きです(アクターと呼ばれていると思います)。

ただし、ここにif then elseステートメントを含める必要があります。私は何か間違ったことをしますか? UMLシーケンス図で条件付きifステートメントを使用できますか?どうやって?

13
Saeed Neamati

多くのタイプのUMLダイアグラムと同様に、ガードを使用して条件を示すことができます。ガードは、遷移を上書きできるブール式です。

ここに例のある画像があります: enter image description here

「[pastDueBalance = 0]」状態に注意してください。

より複雑な条件付きロジックにフラグメントを組み合わせて使用​​することもできます。詳細については、こちら 素敵なmsdnの記事 を参照してください。

18
Falcon

私が知っている4つの可能性があります(パワーの増加に伴い)。

  1. 最も簡単なのは、単純な副作用のないブール式であるguardsを使用することです。
  2. 結合フラグメント(54ページなどを参照)を使用すると、メッセージのセットをグループ化して条件付きを表示できますシーケンス図の流れ(代替案、オプション、ループ)
  3. さらに強力なのは、Object Constraint Language(OCL)で、これにより、(すべてに対して、存在します)そして本格的な (DesignBy-)契約言語 を提供します(それは完全な一次論理とほぼ同じように表現力があります)。
  4. 最も強力な方法は、UMLアクション言語を使用して制約を表現することです UMLアクションセマンティクスに準拠する実行可能なUML(xUML)

私の選択は、あなたがやりたいことを十分に表現できる最も強力でないものでしょう。たとえば、4。のアクションには副作用があり、OCLよりもはるかに脆弱になります。

4
DaveFar

シーケンス図は説明に最適ですが、アクティビティ図を確認してください。

内部の詳細(詳細なルールを含む)を表示する場合は、アクティビティ図を使用します。単純なアクティビティダイアグラムは、一連のアクティビティとルールに焦点を当てており、アクターの責任を示すのは不十分ですが、スイムレーンを使用して個々のアクターの責任を強調することができます。各レーンには、俳優が担当するアクティビティが含まれます。

これらのリンクでは、スイムレーンを含むアクティビティ図について説明しています。

2
NoChance