web-dev-qa-db-ja.com

UMLアクティビティ図でネストされたアクションをどのように表すのですか?

この質問は this one とよく似ていますが、答えが私のニーズと一致しません。それは特定のUMLツール(Papyrus)に焦点を当てていますが、私の質問はUMLについてより一般的です。

アクティビティ図ネストされたアクションを表現したいのですが、私はそれを行うための一般的な方法が何であるかわかりません。他のアクションと同じスコープのアクションがありますが、その実行はより複雑です。 このアクションを他のレベルと同じレベルで表示しながら、その実行に関する詳細を表示したいと思います。

以下の例では、ある種の「back home」アクティビティを示すアクティビティ図で、ネストされたアクションはPet the catアクション。 この図には別の潜在的なエラーがあることに注意してください。質問の最後にある正誤表を参照してください。

Finally back home

私は構造化ノードを使用しましたが、それが正しい方法であるかどうかは不明なので、質問です。ステートチャートでは、同等のものは複合状態になりますが、複合アクションについては何も見つかりません。構造化ノードについては、それに関するいくつかのドキュメントを読んだ後、それがどのように使用されることになっているかがまだわかりません。そのため、この図では完全に間違っているかもしれません。

下の画像のように、トライデントシンボルを使用して別のサブアクティビティを参照する可能性があることも知っていますが、同じ図にすべての情報を表示したいので、ニーズに適合しません(したがって、印刷できます)情報を失うことなく):

Trident sub-activity

では、そのようなネストされたアクションを表す標準方法は何ですか?標準的に、私は有効なUMLを意味します。これは一般的に見られ、可能であればほとんどのUML設計ツールで実行できます。

無関係のエラッタ:私の図では別の問題があり、同じアクションに到達する矢印(Scratch behind the ears)アクションに入る前に、マージノードに移動する必要があります。 このJOTの引用 を含む以下のコメントを参照してください。

16
Tim

どちらも「標準」です。 UML仕様による最初の図は

構造化アクティビティノード

StructuredActivityNodeは、ActivityGroup(15.6節を参照)でもあるアクションであり、その動作は、それに含まれるActivityNodesおよびActivityEdgesによって指定されます。他の種類のActivityGroupとは異なり、StructuredActivityNodeはそれが含むActivityNodesとActivityEdgesを所有しているため、ノードまたはエッジは1つのStructuredActivityNodeにのみ直接含めることができます。ただし、StructuredActivityNodesはネストできます(StructuredActivityNodeとして、アクションとしてもActivityNodeとしても)。したがって、エッジまたはノードは、ネストされた多数のStructuredActivityNodesに間接的に含まれる場合があります。

アクティビティグループ

ActivityGoupsは、ActivityNodesとActivityEdgesのグループ化構成です。ノードとエッジは複数のグループに属することができます。このサブ句は、2つの具体的な種類のActivityGroups、ActivityPartitionsおよびInterruptibleActivityRegionsについて説明します。 StructuredActivityNodesは3番目の種類のActivityGroupですが、これらもアクションであり、アクションに関する第16条の16.11項で説明されています。

2枚目の写真は

呼び出しアクション

InvocationActionは、Behaviorの呼び出しを直接的または間接的に引き起こすアクションです(サブセクション13.2を参照)。 InvocationActionsには、OperationsまたはBehaviorsを呼び出すため、および以前にインスタンス化されたBehaviorsを開始するためのCallActionsが含まれます。追加の種類のInvocationActionを使用すると、シグナルやその他のオブジェクトを対象に送信したり、使用可能なレシーバーにシグナルをブロードキャストしたりできます。

両方のケースの主な違いは再利用です。そもそも、1つの場所(Pet the cat)2つ目は、複数の場所で特定のアクションを(再)使用する場合です。ただし、呼び出しバリアントは、1回限りの使用であっても使用する傾向があります。ここで、複合ダイアグラム(EAではdbl-clickで開く)を追加して、対応するアクションの詳細を表示します。メインフローは概要を表示するだけで、詳細が必要な場合は、dblクリックするだけです。

現在、EAで複合図を作成することは(再び)異なります。パッケージレベルでADを作成し、これを呼び出し要素にドラッグする必要があります。これで、dbl-クリックすると、埋め込まれた図が開きます。

23
qwerty_so