シーケンス図

ユースケース図で「何を作るか」要求仕様を整理し、
クラス図で「何で作るか」属性(データ)と振舞い(機能)を一体化した処理としてどうまとめるか、クラス構造とクラスの関係を整理しました。
次は処理と処理の関係がいつ発生し、いつ終わるか、時系列に沿ったオブジェクト同士の協調処理の順序や関連性をオブジェクト間のメッセージのやり取り(メソッドの起動)で表すシーケンス図を使って整理します。

シーケンス図とは
オブジェクト指向プログラミング以前には、ソフトウェアは目的の処理を実現するため必要なデータをどういう手順で処理するかに着目していました。そこで、繰返し行われる処理は関数やサブルーチンとしてまとめ、それらの関数にデータを渡すこと(関数の呼び出し)で処理を設計しました。
しかし、複雑なデータ構造を扱うようになると、データ自体についても特定の関数周辺で局所的に使われるデータといろいろな箇所で使われる可能性のあるデータを安全に区分けしたい、などの必要性が高まりました。そして、特定のデータ(属性)と関数(メソッド)を一体化してクラスにまとめ、クラス同士のメッセージ交換(インスタンスの生成や操作の起動)により、クラス同士が同調して目的の処理を実現する、オブジェクト指向プログラミングが提案されました。
このメッセージ交換をいつ行うかのタイミングを検討し、明確化するのがシーケンス図です。

シーケンス図の例
ユースケース図でふれた「映画チケットの予約」処理
(イメージをクリックすると拡大イメージが開きます。)

シーケンス図の構成要素
相互作用名

シーケンス図は矩形の枠の左上隅に相互作用名(シーケンス図の名前)を書き込みます。
相互作用名の前にはsd(sequence diagramの略称)を付けます。

ライフライン

シーケンス図で記述する処理に関係するアクターやオブジェクトがライフラインです。アクターはユースケース図に現れたアクターを書きます。オブジェクトはクラス名を矩形で囲い、インスタンスとして存在している期間を垂直に破線で書き示します。また、インスタンスの操作が実行されている期間を活性区間と呼び、ライフライン上の破線の上に縦長の矩形を乗せて示します。
インスタンスの消滅を明示する場合はライフラインの末端に×印を書きます。

メッセージ

同期メッセージ
同期メッセージの矢印形状
戻りメッセージ
戻りメッセージの矢印形状
非同期メッセージ
非同期メッセージの矢印形状
生成メッセージ
生成メッセージの矢印形状
破棄メッセージ
破棄メッセージの矢印形状
オブジェクト間のやり取り(インスタンスの生成や操作の起動と戻り)を矢印付きの線と、メッセージ名、戻り値、引数で表します。
なお、呼び出し先の操作が終了するまで呼び出し元は次の手順に進まない同期メッセージは黒塗りつぶしの三角形矢印に実線を書きます。呼び出した操作が終了し制御が戻されることを明示したい場合は、矢印に破線で戻りメッセージを書きます。また、この時呼び出した操作の活性区間は終わります。
相手の操作を呼び出し、その操作の完了を待たずに次の手順に進む非同期メッセージは矢印に破線で書きます。
この他、メッセージにはインスタンスの生成を指示する生成メッセージ、消滅を指示する破棄メッセージがあります。
※Javaでは消滅を指示する破棄メッセージを明示する必要はありません。

自己メッセージ

自分自身が持つ操作の起動は、自分自身にメッセージを送る自己メッセージを黒塗りつぶしの三角形矢印をコの字状に書いて示します。

設計に戻る