鲍惭尝のシーケンス図でオブジェクト间の相互作用を明确にしよう

n-ozawan

皆さん、こんにちは。技术开発グループの苍-辞锄补飞补苍です。
欧州の研究チームがクモをゾンビ化して操る菌类を発见しました。もし人间が映画のようにゾンビ化した场合、原因は菌类かもしれませんね。

本题です。
これまでシステム开発をしていた人であれば、设计书などでシーケンス図を见たことは多いのではないでしょうか。なんなら新人研修の时に学んだという人もいるかと思います。それぐらい有名であり、システム开発においてはなくてはならない存在と言っても过言ではないシーケンス図。今回はそんなシーケンス図についてのお话です。

シーケンス図

概要

シーケンス図は、オブジェクト间の相互作用を时系列に沿って表现した図です。システムは复数のオブジェクトで构成されており、そのオブジェクト同士はメッセージをやり取りすることでシステムが动作します。「オブジェクト间の相互作用」というのは、オブジェクト间でのメッセージをやり取りを指します。


シーケンス図の仕様は鲍惭尝で定义されています。鲍惭尝には14种类の図が定められており、シーケンス図はその内の1つです。ユースケース図も鲍惭尝の1つです。14种类の図の中でも、クラス図、アクティビティ図、シーケンス図の3つが特に利用されており、シーケンス図はいろいろな所で利用されています。

凡例

シーケンス図の凡例を以下に示します。私个人の判断で恐缩ですが、シーケンス図を読み书きする上で最低限これだけ覚えれば大丈夫なものを记载しています。

説明
フレーム
シーケンス図を囲むことで、このシーケンス図は何を表現しているのかを明示します。省略されていることが多いです。左上の五角形にはこのシーケンス図の名前を記載します。その際は、「’sd’ + 名前」とします。
※’sd’は、’Sequence Diagram’の略です。
ライフライン
オブジェクトやクラスを表现します。一般的に名前は「オブジェクト名:クラス名」のように书きます。どちらか一方のみでも大丈夫です。例えば「山田太郎:顾客」でも良ければ、「山田太郎」や「顾客※」でも翱碍です。※クラス名であることを强调する场合は、先头に「:」を付けます。
実行仕様
ライフラインがアクティブに処理されていることを表现します。
复合フラグメント
分岐処理やループ処理など、ライフライン間の具体的な処理内容を表現します。复合フラグメントには以下があります。

  • alt: 分岐処理(分岐先の処理は点線で区切る)
  • loop: ループ処理(特定の条件になるまでループする)
  • opt: オプション(特定の条件により処理されることを表現)
  • break: 中断処理(特定の条件により処理が中断されることを表現)
  • ref: 外部参照(他で表現したシーケンス図を参照させたいときに使う)
  • par: 並列処理(複数の処理を並列で行うことを表現)
  • critical: 排他処理(処理中は他からの処理を受け付けないことを表現)
ライフラインの消灭
ライフラインがなくなることを表现します。
メッセージ 同期メッセージ
関数呼び出しなど、同期的にメッセージを送信する际に使用します。
非同期メッセージ
HTTP API送信など、非同期的にメッセージを送信する際に使用します。
応答メッセージ
メッセージに対して応答を受ける际に使用します。
オブジェクト作成メッセージ
オブジェクトを作成する际に使用します。
ロストメッセージ
メッセージの送信はあるものの、その送信先がシーケンス図の范囲外にある场合に使用します。

シーケンス図はオブジェクト间の相互作用を表现しますが、时にはシーケンス図に含めたくないオブジェクトも存在します。例えば、とある共通関数のシーケンス図を记载する场合、その共通関数の呼び出し元は不特定多数であり図の本题ではありません。シーケンス図の范囲外とは、そういったシーケンス図で表现していないオブジェクトを指します。
ファウンドメッセージ
メッセージを受信するものの、その送信元がシーケンス図の范囲外にある场合に使用します。

サンプル

参考までにシーケンス図のサンプルを掲载します。


もちろんプログラムに近い内容でシーケンス図を书くことも出来ます。

おわりに

シーケンス図は上流工程から下流工程まで幅広く扱える図です。シーケンス図で整理すると、谁が、谁に、どのタイミングで、何をするのかが分かるようになります。人に説明するためでなく、自分自身がそのシステムを理解するのにも有用ですので、是非、活用することをお勧めします。

ではまた。


Recommendおすすめブログ