シーケンス図

シーケンス図（シーケンスず: sequence diagram）とは、UMLで定義されている、時間的な順序で並べられたプロセス間の相互作用を示すものである。この図は、機能を実現するために必要な、関与するプロセスとオブジェクト、および交換されるメッセージのシーケンスを描写する。シーケンス図は通常、開発中のシステムの4+1アーキテクチャビューモデルにおけるユースケース実現に関連付けられる。シーケンス図は、イベント図またはイベントシナリオと呼ばれることもある。

1964年にエリクソン社が開発していた電話交換機を制御するソフトウェアの新版の開発でソフトウェアコンポーネントを採用することを提案した。この過程で計算機科学者のイヴァー・ヤコブソンは、シーケンス図を考案し、コラボレーション図を開発した。

 概要 
class=skin-invert-image|200px|right|thumbnail|lang=ja|シーケンス図の例
オブジェクト間のメッセージの流れを時系列的に表現する。イベントの発生順序やオブジェクトの生存（ライフライン、lifeline）、メッセージ（message）、イベントオカレンス（event occurrence）、実行オカレンス（execution occurrence）、相互作用オカレンス（interaction occurrence）などの記述によって、もっぱら時系列にもとづいたシステム分析・設計に使用する。
class=skin-invert-image|サムネイル|340x340ピクセル|UMLのシーケンス図
右|class=skin-invert-image|サムネイル|概要
ユースケースの特定のシナリオに対して、この図は外部アクターが生成するイベント、それらの順序、およびシステム間のイベントの可能性を示す。この図は、アクターからシステムへとシステム境界を越えるイベントを強調する。システムシーケンス図は、ユースケースの主要な成功シナリオ、および頻繁または複雑な代替シナリオに対して作成する必要がある。

シーケンス図には2種類ある。

 シーケンス図（SD）：通常のシーケンス図のバージョンであり、システムがどのように動作するかを記述し、システム内のすべてのオブジェクトが具体的に記述される。
 システムシーケンス図（SSD）：すべてのソフトウェアシステムがブラックボックスとして扱われ、システムが所有するすべてのクラスは描画されない。代わりに、Systemという名前のオブジェクトのみが描画される。

 シーケンス図の主要な要素 
シーケンス図は、並行する垂直線（ライフライン）として、同時に存在する異なるプロセスまたはオブジェクトを示し、水平な矢印として、それらの間で発生した順序で交換されるメッセージを示す。これにより、単純な実行時シナリオをグラフィカルに指定することが可能となる。

システムシーケンス図は、以下を指定し、示す必要がある。

 外部アクター
 これらのアクターによって呼び出されるメッセージ（メソッド）
 前のメッセージに関連付けられた戻り値（ある場合）
 ループまたは反復領域の表示

 システムシーケンス図の読み方 
専門家は、プロジェクトを開発する際、ユーザーとシステムの間で特定のタスクがどのように実行されるかを説明するために、システムシーケンス図を頻繁に使用する。これらのタスクには、反復的なタスク、単純なタスク、または複雑なタスクが含まれる場合がある。目的は、ユースケースを視覚的な形式で説明することである。システムシーケンス図を作成するには、統一モデリング言語（UML）に精通している必要がある。これらのモデルは、アクター（システムに影響を与える人々）とシステムがタスクを実行する背後にあるロジックを示す。シーケンス図の読み取りは、ページ上部にあるアクターまたはシステムから始まる。各アクターまたはシステムの下には、「ライフライン」と呼ばれる長い点線があり、それらに接続されている。アクションは、これらのライフライン間に延びる線で実行される。アクション線とライフラインの間の接続は、アクターまたはシステム間の相互作用を示す。メッセージは、アクションを詳細に説明するために、システムシーケンス図の上部または下部に表示されることがよくある。たとえば、アクターによるログインのリクエストは、login（username, password）で表される。各アクションが実行された後、応答または次のアクションが前のものの下に配置される。線を読み進めることで、提供されたモデルで特定の操作がどのように、どのような順序で実行されるかを詳細に見ることができる。

 図の構成要素 
ライフラインがオブジェクトのものである場合、それは役割を示す。インスタンス名を空白のままにすると、匿名で名前のないインスタンスを表すことができる。 → メッセージは、水平な矢印で記述され、メッセージ名がその上に書かれており、相互作用を示す。実線の矢印の頭は同期呼び出しを表し、開いた矢印の頭は非同期メッセージを表し、破線は応答メッセージを表す。 呼び出し元が同期メッセージを送信する場合、サブルーチンの呼び出しのように、メッセージが完了するまで待機する必要がある。呼び出し元が非同期メッセージを送信する場合、処理を続行でき、応答を待つ必要はない。非同期呼び出しは、マルチスレッドアプリケーション、イベント駆動型アプリケーション、およびメッセージ指向ミドルウェアに存在する。 アクティベーションボックス、またはメソッド呼び出しボックスは、ライフラインの上に描かれた不透明な長方形で、メッセージに応答してプロセスが実行されていること（UMLのExecutionSpecifications）を表す。

自身でメソッドを呼び出すオブジェクトは、メッセージを使用し、さらに詳細な処理を示すために、他のアクティベーションボックスの上に新しいアクティベーションボックスを追加する。オブジェクトが破棄された（メモリから削除された）場合、ライフラインの下にXが描かれ、破線はそれより下に描画されなくなる。これは、オブジェクト自体または別のオブジェクトからのメッセージの結果である必要がある。

図の外部から送信されたメッセージは、塗りつぶされた円（UMLのfound message）から発信されるメッセージ、またはシーケンス図の境界（UMLのgate）から発信されるメッセージによって表すことができる。

UMLは、シーケンス図の機能に大きな改善を導入した。これらの改善のほとんどは、囲んでいる相互作用のより小さな断片を表す相互作用フラグメントのアイデアに基づいている。複数の相互作用フラグメントが結合されて、さまざまな複合フラグメントが作成され、これらが並行処理、条件分岐、およびオプションの相互作用を含む相互作用をモデル化するために使用される。

 脚注 

 外部リンク 



 Introduction to UML 2 Sequence Diagrams by Scott W. Ambler.
 A Quick Introduction to UML Sequence Diagrams  by Yanic Inghelbrecht
 UML 2 Sequence Diagrams

Category:統一モデリング言語ダイアグラム
Category:イヴァー・ヤコブソン