2025年12月31日水曜日

Cozyモデル駆動開発/ユースケース/include

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 との対応

UMLCozy / CML
include 関係ステップ合成
共通処理再利用ユースケース
図による表現テキストによる構造表現
実行時に必須常に合成される振る舞い

UML で矢印として表現されていた include 関係を、CML ではユースケース内部の構造として記述する点が特徴です。

UMLの場合、概念的に指定されたユースケースを取り込むというところまでの指定になりますが、その具体的な実現をCozy/CMLではユースケース・シナリオで行うことができる分けです。

まとめ

今回は、ユースケース間の関係の一つである include について、

  • UML における意味
  • Cozyモデルとしての解釈
  • CML による記述方針と表現方法

を整理しました。

include は、共通動作の再利用を目的とし、ユースケースのステップ列を合成する関係として扱うことで、図に依存しない、意味的に明確な要求モデルを記述できます。

次回も引き続いてユースケース間の関係について具体的な記述方式について考えます。