広告 システム開発

シーケンス図の書き方 | 分かりやすく図解で解説

シーケンス図とは

シーケンス図とはオブジェクト間のやり取りがどのように流れているのかを時系列で表す図のことをいいます。

シーケンス図サンプル

上記のシーケンス図の例では、「ブラウザ」「サーバ」「データベース」「外部システム」がオブジェクトです。「ブラウザ」上で商品検索すると、オブジェクト間でどのようなやり取りをしているかが、分かりやすく表現されています。これがシーケンス図です。

スポンサーリンク

シーケンス図は、設計の工程でよく使われるUML(Unified Modeling Language)です。基本設計の工程では、各サーバ間の流れをシーケンス図で表現し、詳細設定の工程であれば、よりプログラムに近いクラスの流れをシーケンス図で表す事もあります。

※UMLとはソフトウェアの機能や構造をわかりやすく図で表現する手法です。

シーケンス図で使用する記号一覧

シーケンス図で使用する記号(要素)は下記の通り

名称記号説明
ライフラインライフラインオブジェクトを表現
実行仕様実行仕様ライフラインが実行状態であることを示す
停止停止ライフラインの消滅
同期メッセージ同期メッセージオブジェクト間の命令

※応答メッセージが返ってくるまで待つ

非同期メッセージ非同期メッセージオブジェクト間の命令

※応答メッセージを待たずに次の処理へ

応答メッセージ応答メッセージ同期メッセージ または 非同期メッセージの返却メッセージ

シーケンス図の書き方

シーケンス図で登場する「ライフライン」を決める

まずは処理の流れで登場するオブジェクトを整理します。

今回はWebアプリケーションの「商品検索処理」を例としています。登場するライフラインは以下です。

  • ブラウザ:利用者が操作するWebブラウザ
  • サーバ:Webアプリケーションを管理するWebサーバ
  • データベース:Webアプリケーションで使用するデータを管理
  • 外部システム:連携する外部のシステム

シーケンス図で使用するオブジェクトを決める

オブジェクト間のやり取りを矢印(要求、応答)で記載する

要求メッセージ(同期メッセージ or 非同期メッセージ)

WebブラウザからWebサーバに商品の検索を行います。商品検索は同期処理で行うので「同期メッセージ」で「ブラウザ」→「サーバ」を矢印で結び、矢印の上部に処理の説明を記述します。

商品検索

次にデータベースから「商品情報」を抽出します。

「サーバ」→「データベース」を矢印で結び、矢印の上部「商品情報取得」と記述します。

データベースから商品を検索する

応答メッセージ

要求メッセージ(同期メッセージ もしくは 非同期メッセージ)に対する応答メッセージの矢印を追加します。「データベース」と「サーバ」を点線の矢印で結び、矢印の上部に応答メッセージの返却内容を記述します。

応答メッセージ

シーケンス図の完成

上記と同じように残りのオブジェクト間のやり取りを矢印(要求メッセージ、応答メッセージ)で記述したらシーケンス図の完成です。

以下の例では、「ブラウザ」からの商品検索に対して、商品情報は「データベース」、関連商品の情報は「外部システム」から取得し、その結果を「ブラウザ」へ返却しています。

シーケンス図完成

シーケンス図で使用する複合フラグメント

複合フラグメントとは"条件分岐"や"並行処理"、"ループ処理"などを表す図形(記号)のことをいいます。

名称説明
alt条件分岐
opt条件が満たされた場合のみ実行
ref別のシーケンス図を参照
par並列処理
Loop繰り返し処理
break処理の中断
criticalマルチスレッド環境での同期処理などで排他制御を表す
assert処理が妥当であるかの定義を表す
ignore無効な処理
consider重要な処理

条件分岐(alt)

条件分岐は「alt」複合フラグメントを使用します。条件は「alt」複合フラグメントの中で点線を使い区切り、条件はガードと呼ばれる括弧内に記述します。

下記シーケンス図の例では"国内旅行"と"海外旅行"で分岐しています。

  • 国内旅行の場合:国内システムに国内旅行を検索
  • 海外旅行の場合:海外システムに海外旅行を検索

シーケンス条件分岐

スポンサーリンク

条件一致(opt)

条件が満たされた場合のみの実行は「opt」複合フラグメントを使用します。「alt」は"if-else"と複数の分岐に対して「opt」は"if"のみの分岐です。

下記シーケンス図の例では、国内システムへの検索結果が0件の場合のみ外部システムに再検索しています。

シーケンスopt

外部参照(ref)

外部参照は「ref」複合フラグメントを使用します。「ref」で囲まれた部分は別シーケンスを参照してくださいという意味です。

下記シーケンス図の例では「海外旅行検索」は別紙のシーケンス図を参照しています。

シーケンス図外部参照

並列処理(par)

並行処理は「par」複合フラグメントを使用します。並列で実行される処理は点線で区切ります。

下記シーケンス図の例では「国内旅行検索」と「海外旅行検索」を同時に行っています。

シーケンス図並列

繰り返し(Loop)

繰り返し処理は「Loop」複合フラグメントを使用します。ループ回数は、Loop[開始, 終了](開始、終了共に省略可能)の書式で指定します。

下記シーケンス図の例では、申込人数分「空席照会」と「座席予約」を繰り返し行っています。

シーケンス図繰り返し

中断(break)

繰り返し処理を中断するには「break」複合フラグメントを使用します。中断する条件はガードと呼ばれる括弧内に記述します。

下記シーケンス図の例では、申込人数分「空席照会」と「座席予約」を繰り返し行い、「空席照会」で座席がない場合、繰り返し処理を中断しています。

シーケンス図中断

終わりに

本記事では、設計の工程でよく使用するシーケンス図の書き方について紹介しました。

シーケンス図はオブジェクト間のやり取りを明確にするための図であり、設計書を読み込まなくてもシーケンス図を見ればある程度、処理の流れを把握する事ができます。

そのため、設計の工程である"基本設計書"や"詳細設計書"にシーケンス図が描かれている現場も多く、よく利用されるUMLの一つです。

 

[この記事を見た人は、下記の記事にも注目しています]

helpful