掲示板一覧   -   トピック一覧
   Enterprise Architect 全般
     シーケンス図で実行仕様とメッセージグループ


スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 トピック
未登録ゲスト
投稿日時: 2007-10-30 18:33

シーケンス図で実行仕様とメッセージグループ

1)
シーケンス図で次のようなシーケンスを表現したいのですが、
実行仕様を続けることと、メッセージグループを新規にすることを両立させることができずに困っています。
(番号は振りたいメッセージ番号です)

1.0 Object1からObject2に同期メッセージが飛ぶ
1.1 Object2からObject3に同期メッセージが飛ぶ
2.0 Object3からObject2に同期メッセージが飛ぶ
  このとき、1.Xの実行仕様は生きたまま(Object2は1.1の応答待ちになります)
2.1 Object2からObject4に同期メッセージが飛ぶ
(以下略)

2.0にするため「新規メッセージグループの開始」を行うと実行仕様は切断されてしまいます。2.0にしたメッセージの「送信元の実行仕様を上に延長」しても同じです。

また、意味的にはObject3にて2.X系のメッセージの実行仕様は1.X系の実行仕様の上に重なって欲しいのですが、それも実現する方法が見つかりません。

2)
同じように、以下のシーケンスで実行仕様が切断されて困っています。

2.6 2.0(同期メッセージ)の戻りメッセージがObject3からObject2に飛ぶ
2.7 Object2からObject3に非同期メッセージが飛ぶ
  この非同期メッセージは2.6のACKになるので実行仕様はここまで同一にしたい

何か設定等見落としていますでしょうか?
tkouno
投稿日時: 2007-10-31 10:01
EA Administrator
投稿: 3939

Re: シーケンス図で実行仕様とメッセージグループ

頂きましたご質問に回答させていただきます。

まず、シーケンス図の番号についてですが
Enterprise Architectでは、番号が増えるということは
新しい処理になるという前提があり、同じ処理内で
番号が変わる(今回は1.xから2.xに変わる)ことは
想定していませんでした。

そのため、番号が変わる前後では強制的に実行仕様を
切断しています。この点は、投稿の中にある方法では
対応することはできないと思います。

この点はご要望に沿えず申し訳ございません。

それ以外の点について、意識あわせのために
シーケンス図を作成してみました。

お手数をおかけし申し訳ございませんが、この内容について
ご希望の点との相違をお知らせください。
(シーケンス番号は、上記のようにEnterprise Architectの機能では
ご希望を満たすことはできませんので、メッセージの名前として
手作業で入力しています。)

未登録ゲスト
投稿日時: 2007-10-31 11:38

Re: シーケンス図で実行仕様とメッセージグループ

まず1点、お詫びいたします。投稿した2.7の向きが逆でした。
申し訳ありませんでした。

メッセージ番号の件は理解しました。
今回やろうとしたことは、
・ある処理A中(Object1とObject2が関係する)に、
・別の処理Bが起動する(Object2とObject3,4が関係する)
・処理Bは処理Aより優先度が高いため処理Aがサスペンドになる
という状況を記述しようとしました。
このような状況は想定していない、という理解です。
今後もこのような状況には対応しない、ということであってますでしょうか?

次に作成していただいた図との相違点ですが
・(前述のとおり)2.7の向きが逆
・2.6の後にある番号なしメッセージ(Object2←Object3)は存在しない
・Object1←Object2の番号なしメッセージは2.7のメッセージの後
・2.6と2.7のメッセージは同じ実行仕様にのせたい
以上です。
わざわざ図を作成していただいてありがとうございます。
もう少し、ご面倒をおかけいたします。
tkouno
投稿日時: 2007-10-31 13:09
EA Administrator
投稿: 3939

Re: シーケンス図で実行仕様とメッセージグループ

まず1点誤解されているかもしれない点について
念のため補足いたします。

mamoさんが想定されているような割り込みの処理自体は
(特に組込みの機器において)一般的なものであり
例外的なものではないと思います。

Enterprise Architectが想定していないのは、番号の振り方の
ルールについて、です。今回の場合であれば、EAの持つ自動で番号を振る機能を
利用することはできないということになります。

この点について、誤解されているかもしれないと文面から感じましたので
補足いたします。



なお、このような複雑なシーケンスをどのように表現するか、という点については
明確・一意なルールはありません。UMLは表現記法なので、
ある状況をどのように表現するか、については
一意に定まらない場合もあります。

例えば、今回の例で言えば、1.1の処理中に割り込みで
2.0の処理が発生するということになり
1.1の実行がサスペンドするということでした。

この場合、1.1の処理がサスペンドしているわけですから
実行仕様が切れる(処理が行われていない)と表現することも
可能かと思いますし、ご希望のような2段構成で
実行仕様を表現する(切れないことで、実行が完全に終了している
わけではなく、継続していることを暗に示す)ことも
ありえると思います。

UML仕様書の14.3.19章には「メソッドの活動を表現するため、
生存線の線を覆ううすい灰色か白の矩形を使用する」
(日本語訳※より引用:655ページ)とありますので、この内容を
文字通り解釈すると、サスペンドしている部分は
実行仕様が存在しないという表現が可能と考えました。
(サスペンド=活動していない、という解釈です。)


※:「UML2.0仕様書 2.1対応」 オーム社

未登録ゲスト
投稿日時: 2007-10-31 15:04

Re: シーケンス図で実行仕様とメッセージグループ

度々ありがとうございます。

一般的には仰るとおりの書き方が正しいのかもしれません。
ただ、自分が書いているダイアログの場合のは、サスペンドは「活動していない」のではなく「待機している」というニュアンスが適切なので、質問させていただきました。
添付された図のような書き方では、1.0のメッセージに付随する生存期間が正しく表現できていない、という指摘をドキュメントの受領側から受けているため、何とか上手く表現したいと思っています。
# とりあえず、今回はダイアログをイメージ保存しPaintでいじってしまおうと思います(^^;

tkouno
投稿日時: 2007-10-31 15:17
EA Administrator
投稿: 3939

Re: シーケンス図で実行仕様とメッセージグループ

お力になれず申し訳ございません。
その後もいろいろと試していたのですが
現時点では、ご要望の結果となるような描画は不可能と思われます。
(実行仕様を2階層にするには、自分へのメッセージを
送信した人へメッセージを送信するしかない制約があります。)

この点に限らず、もう少し柔軟なシーケンス図の作成については
機能強化要望として検討いたします。
(現在のような、意味を考慮した制約をなくし、どのような
状況においてもEnterprise Architectが持つ調整機能を
呼び出せるようなオプションの追加になるのでしょうか)

技術的(内部的)に可能かどうか現時点では判断できませんが
ご提示のような割り込みが多い場合には役に立つモードかと
思われます。


このたびはご要望に沿うことができず
申し訳ございません。

今後ともよろしくお願いします。

スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ