2024年4月30日火曜日

Cozyモデル駆動開発/ビジネス・ビジョン

ビジネスで必要とされるソフトウェア・システムの開発を開始するにあたって、ソフトウェア・システムを利用するビジネス側の文脈を明確にしておく必要があります。

ビジネス側の文脈のモデルとしてビジネス・モデルを作成しますが、今回はその最初としてビジネス・ビジョンを作成します。

インセプション・フェーズ

UP(Unified Process)にならってソフトウェア開発のフェーズを以下の4つと考えることにします。

  • インセプション・フェーズ (Inception phase)
  • エラボレーション・フェーズ (Elaboration phase)
  • コンストラクション・フェーズ (Construction phase)
  • トランジッション・フェーズ (Transition phase)

インセプション・フェーズは、システム開発の方向性を確定するためのフェーズで、仮設に基づく実装を行いその結果を評価します。

エラボレーション・フェーズでは、複数のイテレーションで開発を勧めながらシステムの最終型に向けて必要な技術要素を決めていきます。

これらの作業の結果を受けて、コンストラクション・フェーズでは具体的な肉付けを行っていきます。

一通り開発が終了した後、トランジッション・フェーズではプロジェクトのクロージングや保守体制への以降を行います。

今回からプロジェクトの立ち上げとなるインセプション・フェーズの活動を進めていきます。

開発システムの概要

今回の開発ターゲットはブック・カフェの販売システムです。

このブック・カフェでは、新刊・古本などの書籍に加えてアクセサリーや日用品などのセレクト商品の販売をしています。

もともと新刊・古本の販売も行うブックカフェでしたが、新しくアクセサリーや日用品のセレクト商品販売を併設することにしました。

このセレクト商品は見本品の展示を基本と考えており、見本品に対してECでオーダをする方式を主に考えています。また見本品はECサイトでの販売も行います。

とはいえ、見本品中心ではありますが小型の品は少量の在庫を持って即時販売も可能にしたいと考えています。

開発体制

以下の開発体制を想定しています。

  • フロントエンド開発者 1人
  • バックエンド開発者 1人
  • ブックカフェオーナー 1人 (発注者)

ブックカフェオーナーのX氏から個人でシステム開発を受注したA君がバックエンド開発を行い、フロントエンドエンジニアのB君にUI開発を依頼するという体制です。

ブックカフェオーナーはITには疎いので、A君がヒヤリングを行いながら自前でビジネス・モデルと要求モデルを作成していく想定です。

フォーマット

ビジョンの記述には以下のフォーマットを使用することにします。

FOR ターゲット顧客
WHO 利用者
THE 製品名 is a 製品カテゴリ
THAT キーとなるメリット、製品を買う理由
UNLIKE 競合商品
OUR PRODUCT 競合商品との違い

このフォーマットを使ってビジネス・モデルのビジョンとシステムの要求モデルのビジョンの2種類を作成していきます。

ビジネス・ビジョン

ビジネス・システムのモデルでは、ビジネスそのもののビジョンをビジネス・ビジョンとして定めます。

X氏と話し合って以下のビジネス・ビジョンを定義しました。X氏はこういったドキュメントの作成に乗り気ではありませんので、ソフトウェア開発側で意識するビジョンとしてメモ的に作成したものです。今後の開発で随時調整していくことを想定しています。

FOR セレクトショップ販売店
WHO 本を読みながらカフェでのんびりしたい人
THE BCwSG is a ブックカフェ併設のセレクトショップ
THAT カフェの利用者にセレクト商品の紹介と販売を行うことができる
UNLIKE 通常のセレクト・ショップ
OUR PRODUCT ブック・カフェを併設することで商品の販売機会を増やすことができる

まずブックカフェ併設のセレクトショップの名前を仮にBCwSG(Book Cafe With Select Goods)と決めました。

ターゲットとなる利用者を「本を読みながらカフェでのんびりしたい人」とし、セレクトショップ販売店に「カフェの利用者にセレクト商品の紹介と販売を行うことができる」ことをビジネス上の価値としました。

これが通常のセレクト・ショップに対するアドバンテージと考えています。

保存

ビジネス・ビジョンは src/main/cozy/business 配下に vision.txt として格納します。

まとめ

今回からブックカフェ併設のセレクトショップBCwSGを題材に具体的なモデリングを進めていきます。

インセプション・フェーズの最初のモデルとしてビジネス・ビジョンを作成しました。

モデリングを行いながら各作業分野で定義していくモデルを明らかにしていきたいと思います。