Pieris Books(ブックカフェ併設のセレクトショップ販売店)のシステム開発のプロジェクトを進めています。
要求モデルをCozyモデルとして定義する方法について考えています。
ユースケース・モデルのユースケース・記述の基本情報と拡張情報の項目の洗い出しを行い、CML(Cozy Modeling Language)で記述する方法について考えました。
前回はユースケース間の関係のモデルについて整理しました。
今回からユースケース間の関係のどのようにCMLで記述するか、という観点で具体的な記述方式を検討していきます。
今回はincludeを取り上げます。
include
- マージモード : Include
- マージ点 : 任意Step
- 機能 : 共通動作の再利用
- UML include
includeの意味
include は、あるユースケースが実行される際に、必ず別のユースケースの振る舞いを含めて実行することを表す関係です。
UML における include は、
- 元ユースケースの処理の途中に
- 常に同一の共通処理が組み込まれる
という意味を持ちます。
典型的な例としては、次のようなものがあります。
- 「商品を購入する」が「在庫確認」を含む
- 「会員購入」が「ログイン処理」を含む
- 「注文処理」が「本人確認」を含む
include される側のユースケースは、単独で完結する利用を想定しない点が重要です。共通処理を再利用するための、意味的に独立した単位として定義されます。
Cozyモデルにおける include の位置づけ
Cozyモデルでは、ユースケースを単なる図形要素ではなく、
- 構造化された要求
- ステップ列として表現される振る舞い
- 再利用可能な意味単位
として扱います。
この観点から include は、
- 共通処理をコピーするのではなく
- 振る舞いを独立したユースケースとして切り出し
- 必要な箇所に合成する
ための仕組みと位置づけられます。
Cozyモデルにおける include は、
- ユースケースのステップ列を、別のユースケースのステップ列に合成する関係
として捉えることができます。
記述方式
シナリオ中のincludeの記述方式は以下の通りです。
- include <UseCaseName>
includeディレクティブを指定してincludeステップであることを示します。includeの次にあるのがincludeするユースケース名です。
記述例
- [select] 社員: 希望する日時と会議室を選択する。 - include CheckAvailability - 社員: 会議の目的を入力する。
この記述は、
- CheckAvailability ユースケースの MainFlow に定義された
- ステップ列を
- この位置に展開・合成する
ことを意味します。
基本方針
CML において include は、ユースケース間の外部的な関連としてではなく、
- ユースケース定義の内部に
- 明示的な合成指示として
記述する方針を取ります。
このとき、以下の点を重視します。
- include は方向を持つ
- include されるユースケースは再利用単位である
- マージ点(どのステップに含めるか)を明確にできる
UML include との対応
| UML | Cozy / CML |
|---|---|
| include 関係 | ステップ合成 |
| 共通処理 | 再利用ユースケース |
| 図による表現 | テキストによる構造表現 |
| 実行時に必須 | 常に合成される振る舞い |
UML で矢印として表現されていた include 関係を、CML ではユースケース内部の構造として記述する点が特徴です。
UMLの場合、概念的に指定されたユースケースを取り込むというところまでの指定になりますが、その具体的な実現をCozy/CMLではユースケース・シナリオで行うことができる分けです。
まとめ
今回は、ユースケース間の関係の一つである include について、
- UML における意味
- Cozyモデルとしての解釈
- CML による記述方針と表現方法
を整理しました。
include は、共通動作の再利用を目的とし、ユースケースのステップ列を合成する関係として扱うことで、図に依存しない、意味的に明確な要求モデルを記述できます。
次回も引き続いてユースケース間の関係について具体的な記述方式について考えます。
