2025年8月31日日曜日

Cozyモデル駆動開発/ユースケース・モデルをCMLで記述

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

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

前回はユースケース・モデルのユースケース・記述の基本情報と拡張情報の項目の洗い出しを行いました。

今回はCML(Cozy Modeling Language)での記述方法について考えます。

ユースケース基本情報

前回定義したユースケースの基本情報の構造です。

nametypemultdescription
ididentifier1ユースケースID
namename1ユースケース名
titlei18ntitle?タイトル
goali18ntext1プライマリ・アクターの目的
summaryi18ntext?
primary actorname1プライマリ・アクター
triggertext?トリガー

このユースケース基本情報をCMLで記述したものを以下に示します。

ユースケース
==========
# UseCase
## 顧客の商品の予約を申請する
| Name          | 顧客の商品の予約を申請する |
| Id            | UC0056                |
| Primary Actor | 販売担当者              |
| Goal          |                       |
| Triger        | 顧客の予約依頼           |
| Summary       |                       |

タイトル

タイトルの「ユースケース」はモデル的には特別な意味はありません。必要に応じて管理上適切なタイトルをつけることができます。

UseCase

セクション「UseCase」はユースケースの集まりを定義するセクションであることを示しています。

セクション内の各サブセクションは、それぞれユースケースの定義となっています。

上記の場合はサブセクション「顧客の商品の予約を申請する」がユースケース名となり、サブセクション内でユースケース「顧客の商品の予約を申請する」の定義を行います。

ユースケース情報

ユースケース基本情報を表で記述しました。

ユースケース基本情報は単純なプロパティの集まりなので、表形式で記述することが可能です。

プロパティをセクションで記述

CMLのメタ文法では、表の代わりにセクションの階層構造を使ってプロパティを記述することができます。

セクションを使ってプロパティを記述した場合の例を以下に示します。

ユースケース
==========
# UseCase
## 顧客の商品の予約を申請する
### Name
顧客の商品の予約を申請する
### Id
UC0056
### Primary Actor
販売担当者
### Goal
### Triger
対面販売
### Summary

サブサブセクションの名前の「Name」や「Id」がプロパティ名を示し、そのコンテンツがプロパティに対する値を記述します。

前述の表形式と記述する内容そのものは等価であることが確認できます。

ただ、表のフィールドで記述しきれない複雑な情報でもセクション形式では記述することができるので、そのような場合はセクション形式を選択するとよいでしょう。

表形式とセクション形式は混在することができるので、単純な値のプロパティを表形式で、複雑な構造を持つプロパティをセクション形式で記述することも可能です。

まとめ

今回はユースケース記述の基本情報をCMLで記述する方式について考えてみました。

次回から順次、拡張情報、シナリオ記述、ユースケース間の関係などについてCMLでの定義について考えていく予定です。