18

アプリケーションの特定のプロセスのUMLシーケンス図を作成しようとしています。

問題は、ほとんどのビジネスロジックが1つのクラスにあり、シーケンス図にマップしようとすると、シーケンス図の同じオブジェクトに対して複数の呼び出しが発生することです。

必要なのは、UMLシーケンス図のスタックトレースに似た表現です。シーケンス図を使用することは可能ですか、それとも同じクラス内の呼び出しを表すためのより良い方法は他の図ですか?お知らせ下さい。

4

3 に答える 3

14

いくつかの提案:

  1. セルフコールを使用して、シーケンス図に連続するメソッドを表示できます。例については、ここの図1を参照してください(セルフコールは、同じライフラインでの循環呼び出しです)。
  2. 別の方法として、アクティビティ図を検討することもできます。メソッドの順序を説明するのにおそらく適しています。
  3. コードをリファクタリングします。単一のクラスの多くのロジックは、通常、悪臭です。スコープがあると仮定すると、リファクタリングは良い考えかもしれません。

hth。

于 2013-02-11T12:46:28.547 に答える
13

UMLシーケンス図でのセルフコールの表現(ステップ7を参照)。

UMLシーケンス図でのセルフコール

呼び出されたメソッドがプライベートである(またはプライベートである必要がある)場合は、実装の詳細としてシーケンス図から安全に除外できます。

しかし、私は神クラスのアンチパターンの匂いがします。クラスには複数の責任があり、分解する必要があります。クラスを分解して、委任を使用する責任が1つだけになるようにします。これらのメソッド呼び出しは、良い出発点になります。

于 2013-02-11T13:24:31.310 に答える
2

自己インスタンスを参照することは実際に可能です

実際、UML仕様2.5b1の607ページでは、ライフラインについて次のように述べられています。名前がキーワードselfの場合、ライフラインは、ライフラインを所有するインタラクションを囲む分類子のオブジェクトを表します。セルフが含まれている場合でも、エンクロージャーのポートが個別に表示される場合があります。

完全な例については、https://web.archive.org/web/20131101211441/http://lowcouple.com/post/47844944042/uml-sequence-diagramsを参照してください。

于 2013-02-13T08:59:19.157 に答える