この記事ではUML(統一モデリング言語)の1つである「シーケンス図」について、用語の意味から作り方、作成に便利なツールまで、初心者の方にも分かりやすく解説していきます。
1. シーケンス図とは
シーケンス図とは「プログラムの処理の流れや概要」を設計する際に使われます。オブジェクト指向のソフトウェア設計においては、グローバルスタンダードの設計手法と言っても過言ではありません。
プログラムの処理の流れや概要について、具体的には「クラスやオブジェクト間のやり取り」を「時間軸に沿って」、図で表現します。UMLの中では「相互作用図」の1つに位置付けられています。なお、シーケンス図はシステム設計時のみならず設計書の無い既存システムの分析(リバースエンジニアリング)にも使われることがあります。
2. シーケンス図のメリット
・プログラムの処理概要が整理できる
システムが巨大化・複雑化するほど実行手順が増えていきます。仕様書無しはありえないですし、文字ベースの仕様書にしても読み解くのに時間がかかります。また、記述漏れやミスの発見が難しいという問題があります。
シーケンス図は視覚的に、共通の記述ルールにもとづいてシステム処理の流れを把握することができます。ロジックの流れが明確になるので、プログラムの概要および処理手順について、早く正確に理解することができます。
・追加開発時に仕様が確認できる
シーケンス図が活躍するのはシステム開発の時だけではありません。システム納品後の保守運用フェーズにおいてもシーケンス図は便利です。
保守運用担当者の多くは、開発者とは別人です。トラブル発生時にコードを1から解読するのはとても非効率なのです。シーケンス図があればシステムの仕様を早期把握し、解決に向けての施策をスムーズに実施することができます。また同じ理由で、システムを仕様追加する際にもシーケンス図は有効です。
3. シーケンスの構成要素
シーケンス図で使用される要素は、大きく分けて「ライフライン」「実行仕様」「停止」「メッセージ」の4種類です。
- オブジェクトやクラスを表現するときは「ライフライン」を使用します。箱の中には「オブジェクト名:クラス名」という書き方をしますが、どちらか一方のみの記入でも大丈夫です。
- 「実行仕様」はライフライン上で処理が実行されていることを意味します。もちろん、実行仕様はライフライン上に設置されます。
- 「停止」は実行仕様の逆で、ライフラインで処理が行われていないことを意味します。システムの処理が完了し、ライフラインを破棄するときに使用されます。
- 「メッセージ」は5パターン存在します。「同期」「非同期」「応答」「ファウンド(Found)」「ロスト(Lost)」です。メッセージの概念としては「ライフライン上の処理先に同期されるメッセージ」というイメージです。
4. シーケンス図の書き方
ここではシーケンス図でよく使われる用語と、それに準じた書き方について紹介していきます。
4.1 条件分岐(Alt)
条件分岐は「Alt」複合フラグメントを使用します。[](ガードという括弧)内に分岐条件を記載し、各処理を点線で区切って記載します。
4.2 アサーション(Assert)
アサーションは「処理内容が妥当であるか」をチェックするためのシステムを表します。シーケンス図内で{}内に成立すべき内容を記載します。四角で囲んだ左上に記載する文字は「assert」です。
4.3 並列処理(Par)
並列処理は、四角で囲んだ左上に「par」で記載されます。また、並列で実行される処理は、「条件分岐」と同じように点線で区切られます。
4.4 ループ処理(Loop)
ループ条件の書き方は、Loop[開始条件、終了条件]です。小売店レジの例だと[1、購入した商品数]で表すことができます。
4.5 重要処理(Consider)
重要処理は名前の通り、特に重要な処理をしている部分を表すための複合フラグメントです。重要処理は「有効処理」と表現されることもあります。
四角で囲むときは、左上に「consider{メッセージ1、メッセージ2…}」と記入します。メッセージ内容は「注目すべき処理内容」を記入しましょう。
4.6 不正(Neg)
不正(Neg)も名前の通り、不正な処理に対してエラーを返す記述部分を表す手法です。エラーを返すシステムの部分を四角でパッケージ化し、左上に「neg」と記入しておきましょう。
4.7 条件指定(Opt)
複合フラグメント「条件指定(Opt)」は「条件が満たされたときに作動するシステム」を表現します。
5. umlシーケンス図の作成ポイント
シーケンス図を作成するのであれば、必ず「シナリオ」を意識しましょう。具体的には、シーケンス図を作成する前に業務フローを明確にし、「クライアントがどのようなシナリオでシステムを利用するのか」を把握しておきましょう。
よくあるシーケンス図の失敗例は「書き込みすぎ」「複数シナリオの混在」「シナリオが不明確」です。
シーケンス図は分岐を加えることによって、1つの図に対して複数の利用シーンを想定することができます。しかし、シーケンス図にシナリオが複数あると可読性を下げてしまいます。シーケンス図は「この処理をする場合は内部でこう処理される」というように1シナリオのみ書きましょう。
複数シナリオを入れる弊害は他にもあります。それが「書き込みすぎ」です。シーケンス図はやろうと思えばとても具体的に書き込むことが可能です。ただし、詳細な図はかえって分かりやすさを犠牲にする面もあります。どこまで詳しく書き込むかは、シーケンス図を作成する前にあらかじめ責任者と協議しておきましょう。
最後の「シナリオの不明確」については、そもそもシステムベンダー側がクライアントの業務フローを理解していないことが原因です。業務フローをヒアリングし、フローチャートなどを使って開発側と利用シーンについてのイメージを共有しておきましょう。
6. シーケンス図を無料で作るならboardmix
シーケンス図はエクセルのオートシェイプを使って独自に作成することが可能です。ただし、馴染みのあるエクセルは使い勝手が良いですが効率性を考えるのであれば専用のツールを導入した方が良いです。
エクセルを使用する場合の導入コストはかかりませんが、リアルタイムでの情報共有という点に弱いです。また、シーケンス図の作成者によって、オートシェイプの表記が統一されないなどのリスクもあり、クオリティにばらつきがあります。
本格的にUML図のツールを導入を検討しているのであればboardmixがおすすめです。
boardmixはクラウドを利用したツールなので、リアルタイムでの情報共有・共同作業に強いです。多くのテンプレートがあるため、エクセルにありがちな品質のばらつきも抑えることができます。個別権限の設定も可能なので、誤ってメンバーが図を改変するリスクも少ないのです。シーケンス図に使える矢印などの素材も無料で使うことが出来ます。
まとめ
頭の中でイメージしやすいように解説してきましたが、シーケンス図についてなんとなくでも理解できたでしょうか。
はじめはルールや表記方法に戸惑うかもしれませんが、いろいろなシーケンス図を読み、自分で作っていくうちに上手くシーケンス図を使えるようになります。boardmixのようなテンプレートが備わっているツールを使って徐々にシーケンス図を使いこなせるようになっていきましょう。