Sequence図とは |
---|
時間的な流れに沿って、オブジェクトやクラス間のメッセージのやり取り(メ ソッドコールやオブジェクト生成など)を記述した、振る舞い図。 |
Keywords |
Lifeline Frame Message Interaction Operator Duration |
シーケンス図の変更 |
まずは下の例を見てみる。
UML1.XのSequence図を見たことがある人なら、かなりの変更がされていることに
気づくだろう。一番大きな変更は、フレームが導入されたことにある。
たとえば、
この図では中央に"alt"の名前がついたフレームが入っている。この中に、
Interaction Constraintとして[x>0][else]という条件文が入っていることから
わかるように、このフレームは、プログラミング言語で言えば"if"にあたる。
こ
のように、かなり細かくメッセージのやり取りを記述できるようになったことが
わかる。"alt"などはInteraction Operatorと呼ぶが、これについてはあとでそ
の種類について詳しく述べる。
Lifeline |
Sequence図の基本は、Lifelineとmessageである。まずLifelineについて説明 する。
Lifelineの上部の四角形を"head"と呼ぶ。ここには、シーケンスを記述するオブジェ クトの名前やクラスの名前を書く。
<オブジェクトの名前> : <このオブジェクトのクラス >
ただし、オブジェクトの名前を書きたくない場合もあるので、その場合は次のよ うにオブジェクトの名前を飛ばして書いてよい。
: <クラスの名前>
破線は、このオブジェクトの存在期間である。オブジェクトが途中で消滅した場 合は、次のように、消滅した場所に「×」を書いて破線を終了させる。
また、オブジェクトが最初から存在せず、途中で生成(create)される場合もある。 そういった場合は、存在し始めた時点にLifelineのheadを置く。
Message |
Messageとは、Lifeline間のコミュニケーションのことである。たとえば、 Operation(メソッドなど)を起動するメッセージや、オブジェクトを生成・破壊するメッ セージ、シグナルを引き起こすメッセージなどがある。
最初の例には、Messageの種類を何通りか挙げた。整理すると以下のようになる。
同期(Synchronous)メッセージ | 同期を取るメッセージで、あるメッセージが別のメッセージを追い越すとい うことはない。 | |
非同期(Asynchronous)メッセージ | 同期を取らないメッセージで、あるメッセージが先に出された別のメッセー ジを追い越すことがある。 | |
応答(reply)メッセージ |
同期メッセージや非同期メッセージに対する応答を返す。 最初の例にはすべて書いているが、自明の場合は省略されることも多い。 |
|
Lost メッセージ | 送信者側は存在しているが、受信イベントが起こることなく途中で消失したメッセー ジ。 | |
Found メッセージ | 受信者側は存在しているが、送信イベントについて描かれていないメッセー ジ。 |
Execution Occurrence |
ExecutionOccurrenceとは、そのオブジェクトで実行が行われている期間を指す。 次の図で矢印で指したような四角形で表すが、省略されることも多い。
FrameとInteraction Operator |
UML2.0では、基本的にSequence図はフレームで囲んで表すことになった。一般的 には"sd"("sd"とは"Sequence Diagram"の略)を用いて、これがSequence図である ことを示し、"sd"のあとにこのSequence図の名前を描く。
名前を用いることで何がいいかというと、Sequence図から別のSequence図を参照
できるようになったことである。
たとえば、次の例では、Sequence図MはSequence図Nを参照(ref:referenceの略)
している。これで、Nは別にMでなくても様々なSequence図から使いまわせるよう
になった。
また、最初に挙げた図では、"alt"(alternativeの略)を用いている。このような、 フレームの役割を決める接頭辞の種類を次の表で説明する(この接頭辞をInteraction Operatorと呼ぶ)。
Interaction Operator | 元の言葉 | 意味 |
alt | alternative | この言葉がついたフレームは、振る舞いの選択をさせるフレームになる。ガー ド条件として書かれた式を評価し、たかだか1つのオペランドが実行される。 |
opt | option | この言葉がついたフレームは、唯一のオペランドを実行するか何もしないか を選択させるフレームになる。 |
break | break | |
par | parallel | このフレームの中に書かれたいくつかのオペランドが平行に実行されること を意味する。 |
seq | weak sequencing | |
strict | strict sequencing | |
neg | negative | 正しくないと定義された否定的なトレースを表す。この言葉がついていないフレーム は、自動的に肯定的なトレースだと考えられる。 |
critical | critical region | 他のイベントに邪魔されてはいけない領域。 |
ignore | ignore | 重要でないMessageで、実行時には無視される領域。 |
consider | consider | ignoreとは逆に、検討しなければならない領域。 |
assert | assertion | |
loop | loop | このフレームの中について、ガード条件の回数のとおりにループ処理を行う 領域。ガード条件には、ループする回数の上限と下限を書ける。 |