連載第5-2回
UMLの基礎と応用

(株)NTTデータ 技術開発本部 副本部長
山本修一郎

シーケンス図の記述

 直感的にいえばシーケンス図ではメッセージの記述は次のようになる。まずシナリオで最初にメッセージを発出するオブジェクトを一番左に置く。このオブジェクトの一番上に最初のメッセージの始点を置き、左から右にメッセージの流れを記述していく。メッセージが一番内側のオブジェクトに到達すると今度は右から左へメッセージの結果を返していき、最初の起点となるメッセージを発出したオブジェクトに到達する。原理的には右から左に描いてもよさそうなものだが、左上から右下、その後左下にメッセージが流れるように通常は記述されているということである。筆者らも3層クライアントサーバのシステム設計法を提案したとき、シーケンス図に良く似たシナリオフロー図を考案したことがある[6]。そのときもやはり左側に表示(ユーザーインタフェース)層、次いで機能層、一番右にデータ層を置き、メッセージが左から右に流れるように記述するようにした。余談になるかもしれないが、境界オブジェクト、制御オブジェクト、エンティティオブジェクトは、表示層、機能層、データ層に自然に対応付けることができる。

 また、シーケンス図では可能な限り条件分岐のないシナリオを記述したほうが複雑にならない。たとえば正常系と異常系を同じシーケンス図で記述しようとするとメッセージの流れが複雑で理解しにくくなる。しかしシナリオのインスタンスごとにシーケンス図を用意するとシナリオの全体像の把握が困難になるかもしれない。シーケンス図を記述する目的を明確にしておく必要があるだろう。

シーケンス図の適用工程

 シーケンス図は要件定義、要求分析と設計などの複数の工程で用いることができる。シーケンス図の用途や記述対象もどの工程で利用するかによって異なる。まず要件定義では、アクタとシステムとの相互作用を記述するために、アクタとシステムに関するユースケースを記述する。要求分析では、ユースケースを詳細化し、システムを構成する複数のオブジェクトを抽出することによりシーケンス図を記述する。要求分析では、システムを境界オブジェクト、制御オブジェクト、エンティティオブジェクトなどの複数のオブジェクトに分解する。したがって、シーケンス図でもこれらのオブジェクトとアクタとの相互関係を明らかにする必要がある。次いでシステム設計ではサブシステム間のインタフェースを詳細化するためにシーケンス図を用いる。この段階になると具体的な設計レベルのオブジェクトによってシーケンス図がさらに詳細に記述される。この段階になるとシーケンス図のメッセージもオブジェクトの手続き名が用いられる。このようにシーケンス図の記述内容は要求定義から要求分析、設計へと段階的に詳細化されていくことになる。

 ただし、すでに指摘したように詳細なシーケンス図の作成では条件分岐の扱いが問題になるかもしれない。すべての条件を1枚のシーケンス図で網羅しようとすると複雑になるからだ。

ユースケースとシーケンス図の関係

 ユースケース図に基づいてシーケンス図を作成する手順は次のようになる。

①ユースケース図のアクタおよびアクタとユースケースの関係を分析して境界オブジェクトを抽出する。境界オブジェクトの抽出ではシナリオの最初の処理を表す文に着目して、アクタがこの処理を利用するための入力画面などのユーザーインタフェースを実現するオブジェクトを見つける。

②ユースケースに基づいて制御オブジェクトを抽出する。ユースケース名に基づいて制御オブジェクトを命名する。

③ユースケースシナリオをシーケンス図の左のテキスト領域に転記する。

④ユースケースシナリオで操作される情報に基づいて実体オブジェクトを抽出する。

⑤ユースケースシナリオに基づいてオブジェクト間のメッセージフローを抽出する。このとき、テキスト領域に転記したシナリオの順番に従って、オブジェクト間のメッセージを記述していくと、理解しやすくなるだけでなく、シナリオを実現するメッセージフローの抜けがないことを確認できる。

 ユースケースに基づくシーケンス図の作成手順を図2に示す。

図2 ユースケースシナリオに基づくシーケンス図の作成
図2 ユースケースシナリオに基づくシーケンス図の作成

 Song[7]はより詳細な10ステップからなるシーケンス図の記述法を提案している。境界オブジェクト、制御オブジェクト、実体オブジェクトに着目している点では、ここで紹介した方法と同じである。ユースケース間の拡張関係や依存関係に基づいて1 枚のシーケンス図に複数の制御オブジェクトを記述する場合についても述べているので、参考になるだろう。

シーケンス図の具体例

 それでは、前述したユースケースに基づくシーケンス図を酒類販売における在庫管理の例題[8]に対して実際に記述してみよう。

[例]酒類販売の在庫管理における受付係の仕事に関するシナリオ
1.注文主が出庫を依頼する
2.在庫を確認する
3.在庫不足なら不足品を発注係に発注する
4.在庫があれば倉庫係に出庫を指示する
5.倉庫係が出荷を確認する
6.在庫を更新する
7.注文主に納品書を提示する

 このシナリオに対するシーケンス図の作成例を図3に示す。

図3 ユースケースによるシーケンス図の作成
図3 ユースケースによるシーケンス図の作成

ROSE によるシーケンス図の作成

 ラショナル社のROSE [9]では、ユースケース図に対して、メニュバーで相互作用図を選択すると、コラボレーション図とシーケンス図のいずれかを選択して作成できる。図4にROSEによるシーケンス図の編集例を示す。

図4 ROSEによるシーケンス図の例
図4 ROSEによるシーケンス図の例

 ユースケース図のアクタをシーケンス図で用いることができる。この場合、ステレオタイプでアクタを選びクラス名を指定しておく必要がある。境界オブジェクトや制御オブジェクトなどのステレオタイプのアイコンも使うことができる。この場合はまずアイコンパレットからオブジェクトに対応する矩形を選びシーケンス図の中に置く。次いでこのオブジェクトを選択してマウスの右ボタンをクリックしてポップアップメニュで「仕様を開く」を選択すると、クラスインスタンス仕様ウィンドウが提示される。このウィンドウのクラスフィールドで<新規作成>を選ぶとクラス仕様ウィンドウがポップアップ表示されるので、ステレオタイプフィールドで、メニュからboundary、control、entityなどを選択し、クラス名フィールドに名前を登録する。

 シーケンス図の編集中にF5キーを選択するとシーケンス図からコラボレーション図が自動的に生成されコラボレーションウィンドウがポップアップ表示される。このときは、あたりまえだが、シーケンス図では空間的な位置情報を指定していないのでコラボレーション図のレイアウトがぐちゃぐちゃになっているので、オブジェクトに対するアイコンを配置しなおす必要がある。欲を言えばオブジェクトや結線が交差しないように配置規則を用いて最適配置してくれるとさらに便利になるだろう。レイアウトしなおしたコラボレーション図を図5に示す。

図5 シーケンス図から生成したコラボレーション図
図5 シーケンス図から生成したコラボレーション図

 ROSEでは、これらの図から分かるように、本稿で紹介したシーケンス図の記法がそのまま利用できないことを指摘しておく。ROSEが早くUML1.4に対応してくれることを期待しよう。

まとめ

 本稿では相互作用図のうち、前回紹介したコラボレーション図に続いてシーケンス図について紹介した。また、ユースケース図とシーケンス図の関係やシーケンス図の作成手順についても述べた。次回は、いよいよオブジェクト指向でもっとも重要な図の一つであるクラス間の関係を記述するクラス図について述べよう。

参考文献
[1]ファウラ-,スコット著羽生田監訳, UMLモデリングのエッセンス 第2版,翔泳社,2000.
[2] エリクソン,ペンカー著,杉本他訳,UMLガイドブック,トッパン(原著名UML Toolkit),1998.
[3] 日本語版UML(Unified Modeling Language)ドキュメントver1.1,http://www.rational.co.jp/uml/
[4] Unified Modeling Language (UML), version1.4,http://www.omg.org/technology/documents/formal/uml.htm
[5] Jacobson,I.,Christerson,M.,Jonsson, P.and Overgaard, G.,Object-Oriented Software Engineering-A Use Case Driven Approach,Addison-Wesley,1992.
[6] 高田信一,畑恵介,山本修一郎,3層クライアントサーバアーキテクチャに適応したシステム設計手法の提案,情報処理学会,情報システム研究会,56-3,pp.19-28,1995.
[7] Il-Yeol Song, Developing Sequence Diagrams in UML,
http://www.cis. drexel.edu/faculty/ song/Papers/ER 2001-SQD.pdf
[8] 山崎利治,共通問題によるプログラム設計技法解説(その2),情報処理,Vol.25,no.11,pp.1219,1984.
[9] 日本ラショナルソフトウェア, http://www.rational.co.jp/

●執筆者にメールを出す
yamamotosui@nttdata.co.jp
連載第6回へ >>
・連載第1回

・連載第2回

・連載第3回

・連載第4回

・連載第5回

・連載第6回

・連載第7回

・連載第8回

・連載第9回

・連載第10回

・連載第11回

・連載第12回

・連載第13回

・連載第14回

・連載第15回

・連載第16回

・連載第17回