シーケンス図
ユースケース図で「何を作るか」要求仕様を整理し、
クラス図で「何で作るか」属性(データ)と振舞い(機能)を一体化した処理としてどうまとめるか、クラス構造とクラスの関係を整理しました。
次は処理と処理の関係がいつ発生し、いつ終わるか、時系列に沿ったオブジェクト同士の協調処理の順序や関連性をオブジェクト間のメッセージのやり取り(メソッドの起動)で表すシーケンス図を使って整理します。
シーケンス図とは
オブジェクト指向プログラミング以前には、ソフトウェアは目的の処理を実現するため必要なデータをどういう手順で処理するかに着目していました。そこで、繰返し行われる処理は関数やサブルーチンとしてまとめ、それらの関数にデータを渡すこと(関数の呼び出し)で処理を設計しました。
しかし、複雑なデータ構造を扱うようになると、データ自体についても特定の関数周辺で局所的に使われるデータといろいろな箇所で使われる可能性のあるデータを安全に区分けしたい、などの必要性が高まりました。そして、特定のデータ(属性)と関数(メソッド)を一体化してクラスにまとめ、クラス同士のメッセージ交換(インスタンスの生成や操作の起動)により、クラス同士が同調して目的の処理を実現する、オブジェクト指向プログラミングが提案されました。
このメッセージ交換をいつ行うかのタイミングを検討し、明確化するのがシーケンス図です。
ユースケース図でふれた「映画チケットの予約」処理
(イメージをクリックすると拡大イメージが開きます。)
シーケンス図の構成要素
相互作用名
相互作用名の前にはsd(sequence diagramの略称)を付けます。
ライフライン
インスタンスの消滅を明示する場合はライフラインの末端に×印を書きます。
メッセージ
なお、呼び出し先の操作が終了するまで呼び出し元は次の手順に進まない同期メッセージは黒塗りつぶしの三角形矢印に実線を書きます。呼び出した操作が終了し制御が戻されることを明示したい場合は、矢印に破線で戻りメッセージを書きます。また、この時呼び出した操作の活性区間は終わります。
相手の操作を呼び出し、その操作の完了を待たずに次の手順に進む非同期メッセージは矢印に破線で書きます。
この他、メッセージにはインスタンスの生成を指示する生成メッセージ、消滅を指示する破棄メッセージがあります。
※Javaでは消滅を指示する破棄メッセージを明示する必要はありません。
自己メッセージ