2026年1月31日土曜日

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

Pieris Books(ブックカフェ併設のセレクトショップ販売店)のシステム開発のプロジェクトを進めています。

要求モデルをCozyモデルとして定義する方法について考えています。

ユースケース・モデルのユースケース・記述の基本情報と拡張情報の項目の洗い出しを行い、CML(Cozy Modeling Language)で記述する方法について考えました。

現在はユースケース間の関係のモデルについて、ユースケース間の関係のどのようにCMLで記述するか、という観点で具体的な記述方式を検討しています。前回はincludeの検討を行いました。

今回はextendを取り上げます。

extend

  • マージモード : Extend
  • マージ点 : 条件付きStep
  • 機能 : 例外的・追加的振る舞いの付与
  • UML extend

extendの意味

extendは、あるユースケースの実行中に、

  • 特定の条件が成立した場合にのみ
  • 追加の振る舞いが挿入される

ことを表す関係です。

UMLにおけるextendは、

  • 基本ユースケースの振る舞いを前提とし
  • 条件付きで拡張ユースケースが実行される

という意味を持ちます。

典型的な例としては、次のようなものがあります。

  • 「商品を購入する」を拡張する「クーポン適用」
  • 「会員登録」を拡張する「年齢確認」
  • 「注文処理」を拡張する「高額購入時の本人確認」

extendされる側のユースケースは、

  • 常に実行されるわけではなく
  • 基本ユースケースの一部を補足する

という性質を持ちます。

includeとの違い

includeとextendの違いを整理すると次のようになります。

観点includeextend
実行条件常に実行条件付き
主目的共通処理の再利用例外・オプションの追加
基本フロー前提独立して完結
位置づけ合成拡張

includeは「分解と再利用」、extendは「基本フローを壊さない条件付き拡張」と整理できます。

Cozyモデルにおけるextendの位置づけ

Cozyモデルでは、extendを

  • 図上の関係指定

ではなく、

  • ユースケース・シナリオ内における
  • 条件付きステップ合成

として扱います。

この観点からextendは、

  • 基本ユースケースを中心に据え
  • 例外や追加要件を独立したユースケースとして定義し
  • 条件に応じて合成する

ための仕組みと位置づけられます。

Cozyモデルにおけるextendは、

  • 条件付きでステップ列を合成する関係

として捉えることができます。

記述方式

シナリオ中のextendの記述方式は以下の通りです。

- extend <UseCaseName> when <Condition>
  • extendディレクティブで拡張であることを示します
  • when句で拡張が発生する条件を明示します

条件は、業務ルールや状態など、要求レベルで意味を持つ表現を用います。

記述例

- 顧客: 商品を選択する。
- 顧客: 支払い方法を指定する。
- extend ApplyCoupon when クーポンが指定されている
- 顧客: 注文を確定する。

この記述は、

  • ApplyCouponユースケースのMainFlowに定義された
  • ステップ列を
  • 「クーポンが指定されている」場合にのみ
  • この位置に合成する

ことを意味します。

基本フロー自体はクーポンを前提とせず、拡張として自然に切り出されています。

基本方針

CMLにおけるextendは、

  • 基本ユースケースの理解を妨げない
  • 例外やオプションを明示的に分離する

ことを重視します。

そのため、以下の方針を取ります。

  • extendは必ず条件を伴う
  • 基本ユースケースは単体で完結できる
  • 拡張ユースケースは意味的に独立した要求単位とする
  • マージ点をステップとして明示する

これにより、

  • 読めば分かる基本フロー
  • 必要に応じて追える拡張

という二層構造の要求モデルを実現します。

UML extendとの対応

UMLCozy / CML
extend関係条件付きステップ合成
拡張ポイントシナリオ内の明示的マージ点
条件when句
図表現テキストによる構造表現

UMLでは拡張ポイントという概念が図中に現れますが、Cozy/CMLではそれをステップ位置と条件として直接記述できます。

これにより、

  • 抽象的な関係指定に留まらず
  • 実行順・条件・意味を同時に表現できる

点が特徴です。

まとめ

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

  • UMLにおける意味
  • includeとの違い
  • Cozyモデルとしての解釈
  • CMLによる記述方針と具体例

を整理しました。

extendは、

  • 基本ユースケースを安定させたまま
  • 例外やオプション要求を切り出し
  • 条件付きで合成する

ための仕組みです。

includeとextendを使い分けることで、ユースケースの振る舞いを過不足なく・構造的に記述でき、図に依存しない、意味的に明確な要求モデルを構築できます。

0 件のコメント:

コメントを投稿