4

次のシーケンス図は、2 つのライフラインと同期メッセージで構成されています。

ここに画像の説明を入力

私はそれを次のように読みました:

「lifeline1」は、一定期間中に実行されるオブジェクトを表します。

lifelin1 の実行中、および正確に赤い円で「lifeline1」は、その実行を完了するために「lifeline2」から何かを必要とします

そう、

1)「lifeline1」が実行を一時停止してから

2)同期メッセージを呼び出します(回答で少し明確にしてください)

ピンクの線は、「lifeline1」が「lifeline2」に到達して実行する必要がある時間を表します。

3) 青い長方形は、メッセージの実行時間を表します

4) 点線は、「lifeline2」が「lifeline2」に到達して実行を再開するために必要な時間を表します。

5) 黒い長方形は、lifeline1 がアイドル状態だった期間を表します

私はきちんと読んでいますか?

私は何かステップを見逃していますか?

4

2 に答える 2

2

「lifeline1」は、一定期間中に実行されるオブジェクトを表します。

縦の点線は、オブジェクトの寿命を表します。オブジェクトがアクティブ/実行中/制御権を持っている場合、「実行仕様」ボックスが線上に描画されます。

lifelin1 の実行中、および正確に赤い円で「lifeline1」は、その実行を完了するために「lifeline2」から何かを必要とします

実行を開始するために何かが必要な場合、最初に実行仕様が表示されるのではなく、メッセージを受信した後にアクティブになると表示されます。

代わりに、ブロックは lifeline1 がアクティブであり、同期メッセージを送信していることを示しています。

1)「lifeline1」が実行を一時停止してから

このシーケンス図では、一時停止 (またはその他のタイミング) は暗示されていません。

2)同期メッセージを呼び出します(回答で少し明確にしてください)

オブジェクトでメソッドを呼び出すのと似ています。同期メッセージの制御フローは、送信者から受信者にすぐに渡され、同期メッセージを受信すると、受信者がアクティブなオブジェクトとして表示されます。

ピンクの線は、「lifeline1」が「lifeline2」に到達して実行する必要がある時間を表します。

このシーケンス図はタイミングを暗示するものではなく、一連の操作のみを示しています。持続時間のタイミングは、OMG† UML2 スーパーストラクチャーの表 14.1 に示されている持続時間の制約と持続時間の観察の表記法を使用して示されます。

3) 青い長方形は、メッセージの実行時間を表します

青い長方形で表されたプロセスの段階で、メッセージに応答して「lifeline2」オブジェクトが実行されています。「メッセージの実行」と言うのは少し曖昧です。メッセージではなく、オブジェクトが実行されています。

4) 点線は、「lifeline2」が「lifeline2」に到達して実行を再開するために必要な時間を表します。

点線は返信メッセージです。「lifeline1」から送信されたメッセージは同期であるため、返信メッセージを受信するまで実行を継続しません。

5) 黒い長方形は、lifeline1 がアイドル状態だった期間を表します

UML シーケンス図の実行仕様ブロックは、オブジェクトがアクティブに実行されている時期を表します。同期メッセージが返されるのを待っているアイドル状態のオブジェクトは、そのライフラインに実行仕様ブロックなしで表す必要があります。(UML では色に意味はありません。この図では、特定のブロックについて説明できるようにするためのものであり、オブジェクトがアクティブかどうかを示すためのものではありません)

もう少し正式なアプローチをとって、実行がどこにあるかを示すべきではなく、別のオブジェクトのメソッドを呼び出すメソッドがそうでないのと同じように、lifeline1 が継続することを表すために、戻りメッセージが受信された後に開始する必要があると言います。呼び出しが戻るまで制御の流れを受け取ります。

ただし、操作のシーケンスをまだ制御しているように、実行仕様を使用して戻りメッセージを待機しているオブジェクトを表示することは非常に一般的です。

(残念ながら、UML は非常に大きくてふわふわしているため、誰もが思いつくほとんどすべての例を別の方法で読むことができます。UML を使用して、円周率計算を使用してデッドロックのプロセスをチェックするための実行可能モデルを生成したため、より多くのモデルを使用する傾向があります。たとえば、共同開発者に何かを説明するためにホワイトボードに書いている人よりも厳格な解釈)

† UML 標準を維持するオブジェクト管理グループ。「OMG は巨大だ」などとは異なりますが、これも当てはまります。

于 2013-02-02T13:47:10.813 に答える
0

クイック提案

シーケンス図を、チェス盤のような2次元フローチャート図(アクティビティ図)として読み取ります。

長く退屈な拡張回答

チェス盤を想像してみてください。ここでは、フィギュアを動かしている場所に正方形またはセルを配置します。同じことがシーケンス図にも当てはまります。

シーケンス図には、クラスのインスタンス(アクター、テーブル、境界、任意のオブジェクト)がある列と、操作が実行される行があります。

フローチャートのように、操作または「メッセージ」が実行されるたびに、その操作を実行している図があると想像してください。その図は、次の正方形、セル、またはブロックに移動します。

ボードの一部の「セル」は、同じ列(オブジェクトのライフライン)にあります。

各パーティションがセルまたは操作が実行された場所であることを思い出せるように、パーティションのある線の寿命を使用してシーケンス図を描くことがあります。

.......................................................
.........+--------------+............+--------------+..
.........| * : FooClass |............| * : BarClass |..
.........+------+-------+............+------+-------+..
................|...........................|..........
................|...........................|..........
............+---+---+...................+---+---+......
.....start..|   |   |......enter()......|   |   |......
..(*)======>|   |   |==================>|   |   |---+..
............|   |   |...................|   |   |...|..
............+---+---+...................+---+---+...|..
............|   |   |.......return......|   |   |...|..
........+---|   |   |<------------------|   |   |<--+..
........|...|   |   |...................|   |   |......
........|...+---+---+...................+---+---+......
........|...|   |   |....PlayChess()....|   |   |......
........+-->|   |   |==================>|   |   |---+..
............|   |   |...................|   |   |...|..
............+---+---+...................+---+---+...|..
............|   |   |.......return......|   |   |...|..
........+---|   |   |<------------------|   |   |<--+..
........|...|   |   |...................|   |   |......
........|...+---+---+...................+---+---+......
........|...|   |   |..HaveRootBeer()...|   |   |......
........+-->|   |   |==================>|   |   |---+..
............|   |   |...................|   |   |...|..
............+---+---+...................+---+---+...|..
............|   |   |......return.......|   |   |...|..
........+---|   |   |<------------------|   |   |<--+..
........|...|   |   |...................|   |   |......
........|...+---+---+...................+---+---+......
........|...|   |   |...GetSandwich()...|   |   |......
........+-->|   |   |==================>|   |   |---+..
............|   |   |...................|   |   |...|..
............#"""+"""#...................+---+---+...|..
............!   |   !...GetFriesAlso()..|   |   |...|..
............!   |   !...............+---|   |   |<--+..
............!   |   !...............|...|   |   |......
............#"""+"""#...............|...+---+---+......
............!   |   !...............|...|   |   |......
............!   |   !...............+-->|   |   |---+..
............!   |   !...................|   |   |...|..
............#"""+"""#...................+---+---+...|..
....finish..|   |   |...................|   |   |...|..
...(O)<-----|   |   |<------------------|   |   |<--+..
............|   |   |...................|   |   |......
............+---+---+...................+---+---+......
................|...........................|..........
................|...........................|..........
................|...........................X..........
.......................................................

ライフラインは、操作または「メッセージ」が特定のオブジェクトによって実行されることを示します。この例では、ライフラインの一部に、オブジェクトがアイドル状態またはビジー状態のときを示すさまざまな文字(「色」)があることに注意してください。

乾杯。

于 2013-02-01T19:01:36.383 に答える