2025年5月31日土曜日

Cozyモデル駆動開発/コンテキスト・モデル

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

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

前回はビジョン宣言を作成しました。ビジョン宣言によってシステム開発の目的やスコープがざっくりと定められたことになります。

続いて、今回はコンテキスト・モデルを作成します。

コンテキスト・モデル

コンテキスト・モデルは、開発対象の大枠についてシステムの外部とシステムとの関係を中心にモデル化したものです。コンテキスト図という形でビジュアル表現にして、全体を俯瞰することを可能にします。

ビジネス分析でビジネス・システム向けのコンテキスト・モデルであるビジネス・コンテキストを作成しました。まず、このビジネス・コンテキストを確認した後に、システム開発向けのコンテキスト・モデルを作成します。

ビジネス・コンテキスト

「Cozyモデル駆動開発/ビジネス・コンテキスト(2)」の回で、ビジネス・モデルのビジネス・コンテキストをCozy形式で作成しました。Cozyのアプローチでは、Cozyオブジェクト・モデルからコンテキスト・モデルを抽出しコンテキスト図を生成します。

ビジネス・モデルではBusiness.mdとして以下のモデルを記述しました。このモデルから必要に応じてコンテキスト・モデルを記述するコンテキスト図を生成しました。

# Business
## System
### Pieris Books
Pieris Booksビジネス。
- composition :: 店舗, ECサイト
- use :: 店舗販売プロセス
- use :: EC販売プロセス
- use :: 在庫管理プロセス
店舗とECサイトで商品販売を行う。
店舗には売れ筋商品のみ実商品を在庫として保管し、その場で販売を行う。
通常の商品は見本品のみ展示し、注文があった場合はEC販売プロセスで決済と配送を行う。
EC販売プロセスでは外部ECサービスを用い、決済や在庫管理、配送処理を外部ECサービスが
提供するものを利用する。
ただし、店舗顧客には通常の店舗での購入と同様にレジによるオペレーションで販売処理を行う。
### 店舗
Pieris Booksの実店舗。
### ECサイト
Pieris BooksのECサイト。
## Process
### 店舗販売プロセス
店舗で商品販売を行う。
- actor :: 店舗顧客
- actor :: 店舗販売者
- use :: 在庫管理プロセス
- use :: 店舗
- use :: EC販売プロセス
- use :: 決済サービス
### EC販売プロセス
ECサイトで商品販売を行う。
- use :: 在庫管理プロセス
- use :: 外部ECサービス
### 在庫管理プロセス
実店舗での在庫管理を行う。
- actor :: 販売管理者
- use :: 配送サービス
在庫管理の延長で配送サービスへの受け渡しも行う。
## Actor
### 店舗顧客
店舗の利用者。
店舗に在庫がある場合は直接購入することができる。
店舗に在庫がない場合は、見本品を参考に購入し配送で商品を受け取ることができる。
### EC顧客
ECサイトの利用者。
### 外部ECサービス
見本品を購入する際に使用する外部のECサービス。
### 決済サービス
ECまたは店舗での商品販売に使用する決済サービス。
### 配送サービス
ECでの商品販売を依頼する配送サービス。
### 店舗販売者
店舗で商品の販売を行う。
店舗顧客に対して接客を行い、購入時はレジから購入登録を行う。
### 店舗運営者
ビジネス上の店舗運営を行う。
ダッシュボードから各種のメトリクスを確認し、必要に応じてビジネス上の施策を行う。
### 販売管理者
店舗での商品管理などを行う。
### システム管理者
Pieris BooksのITシステムの管理を行う。

オブジェクト・モデル

ビジネス・コンテキスでは、コンテキスト・モデルとしてコンテキスト図を作成するのではなく、オブジェクト・モデルを作成し、このオブジェクト・モデルからコンテキスト・モデルを記述するコンテキスト図を生成するアプローチをとっています。

システム開発向けのコンテキスト・モデルでも同様のアプローチを取ります。

このアプローチの元、作成したオブジェクト・モデルが以下のものです。

Pieris Book Store System
========================
# System
## Pieris Book Store System
Pieris Books StoreのECシステム。開発対象のシステム。
# SubSystem
## EC
ECサイトからの販売を管理するサブシステム。
販売管理処理はCommerceに移譲する。
- use :: Commerce
## Store
店舗からの販売を管理するサブシステム。
販売管理処理はCommerceに移譲する。
- use :: Commerce
## Commerce
販売管理を行うサブシステム。
外部ECサービスと決済サービスを使用する。
- use :: 外部ECサービス
- use :: 決済サービス
## StockManagement
在庫管理を行うサブシステム。
- use :: 配送サービス
# Actor
## 店舗顧客
店舗の利用者。
店舗に在庫がある場合は直接購入することができる。
店舗に在庫がない場合は、見本品を参考に購入し配送で商品を受け取ることができる。
- use :: 店舗販売者
## EC顧客
ECサイトの利用者。
- use :: EC
## 店舗販売者
店舗で商品の販売を行う。
店舗顧客に対して接客を行い、購入時はレジから購入登録を行う。
- use :: Store
## 店舗運営者
ビジネス上の店舗運営を行う。
ダッシュボードから各種のメトリクスを確認し、必要に応じてビジネス上の施策を行う。
- use :: Commerce
## 販売管理者
店舗での商品管理などを行う。
- use :: Commerce
## システム管理者
Pieris BooksのITシステムの管理を行う。
- use :: Pieris Book Store System
# External Service
## 外部ECサービス
見本品を購入する際に使用する外部のECサービス。
## 決済サービス
ECまたは店舗での商品販売に使用する決済サービス。
## 配送サービス
ECでの商品販売を依頼する配送サービス。

大きく以下の4つのセクションから構成されています。

  • System
  • SubSystem
  • Actor
  • External System

System

Systemセクションには、サブセクションのタイトルにシステム名とシステムの説明を記述します。

SubSystem

SubSystemセクションでは、サブセクション毎に1つのサブシステムを表します。サブセクション名がサブシステム名、サブセクション内にサブシステムの説明を記述します。

上記のモデルでは以下のサブシステムを定義しています。

EC
EC運営システム
Store
店舗運営システム
Commerce
販売システム
StockManagement
在庫管理システム

それぞれの説明文の中に以下のような形で、他オブジェクトへの参照を記述しています。

- use :: Commerce

この参照の記述がモデルとして解釈されます。

Actor

Actorセクションでは、サブセクション毎に1つのアクターを表します。オブジェクト・モデル的には外部サービスもアクターの一種ですが、CozyモデルではExternal Serviceとして別セクションで定義するようになっています。

上記のモデルでは以下のサブシステムを定義しています。

  • 店舗顧客
  • 店舗販売者
  • EC顧客
  • 販売管理者
  • 店舗運営者
  • システム管理者

それぞれの説明文の中に以下のような形で、他オブジェクトへの参照を記述しています。

- use :: EC

External Service

External Serviceセクションでは、サブセクション毎に1つの外部サービスを表します。

上記のモデルでは以下のサブシステムを定義しています。

  • 外部ECサービス
  • 決済サービス
  • 配送サービス

コンテキスト図

今回作成したオブジェクト・モデルからCozy以下のコンテキスト図が生成される想定です。

まとめ

今回はコンテキスト・モデルの作成を行いました。

実際に作成したのはオブジェクト・モデルで、このオブジェクト・モデルからコンテキスト・モデルの記述に必要な要素だけ取得して、コンテキスト図を生成しました。

このコンテキスト図により開発対象のシステムの全体像を俯瞰することができるようになります。

次回も引き続き要求分析を進めます。

0 件のコメント:

コメントを投稿