モデル駆動開発ワークベンチCozyを使用したモデル駆動開発を具体的に考えて、Cozyへの機能要件を洗い出しています。
Cozyを使用したモデル駆動開発をCozyモデル駆動開発 (Cozy Model-Driven Development)、略してCMDDと呼ぶことにします。
ビジネス・モデリングの位置付け
まず最初の作業分野はビジネス・モデリングです。
ビジネス・モデリングの関心分野の候補としては、カスタマー(Customer)とソルーション(Solution)が考えられます。
Essenceカーネルではカスタマーには以下のアルファが定義されています。
- ステークホルダー(Stakeholders)
- 機会(Opportunity)
またソルーションには以下のアルファが定義されています。
- 要求(Requirements)
- ソフトウェア・システム(Software System)
ビジネス・モデリングをどの関心分野のどのアルファにどのような形で組み込むかは、開発プロセス内でのビジネス・モデリングの目的によって変わってくるところでしょう。
CMDDでは小規模チームで、中小規模アプリケーションまたは大規模アプリケーションのサブシステムの開発をターゲットにします。
ビジネス・モデリングは要求アルファの入力の情報になるものなので、ソルーションの補助的な活動と考えると要求アルファにアクティビティと成果物を追加するアプローチも考えられます。
また、ビジネス・モデリングはソルーションの外側、カスタマー側の情報と考えるとカスタマー側に配置することも考えられます。その場合はステークホルダー、機会といったアルファに入れるよりも、新しくビジネス・モデリングを行うアルファを追加するのがよさそうです。
今回は関心分野カスタマーに新規のアルファとしてビジネス・システム・アルファを追加して検討を進めることにします。
ビジネス・システム・アルファ
ビジネス・モデリングではビジネス・システムをモデリングします。
このビジネス・システムをモデリングするアルファをビジネス・システム・アルファとします。ビジネス・システム・アルファの成果物(Work Product)として以下のモデルを考えます。具体的なモデルを作ってみて調整していく予定です。
- ビジョン
- ビジネス・コンテキスト
- ビジネス・ユースケース
- ドメイン・モデル
ビジョン
ビジョン(Vision)はプロジェクトのビジネス・システム上のビジョンです。
プロジェクトの全体の方向性を定めます。
このビジョンをベースに、要求アルファでソフトウェア開発上のビジョンを定める想定です。
ビジネス・コンテキスト
ビジネス・システムのおかれている環境をビジネス・コンテキストとしてモデル化します。
ビジネス・システムと関係する外部組織の存在とインタラクションを明確にします。
ビジネス・ユースケース
ビジネス・ユースケース(Business UseCase)はビジネス・システムにおけるユースケースです。
ビジネス・コンテキストの舞台の上で、ビジネス・システムの各種利用者が体験する物語を記述します。
開発対象のソフトウェア・システムはこの物語の中に登場し、物語の遂行を助けます。
要求アルファで作成する(システム)ユースケースは、ビジネス・ユースケースの物語の中での利用方法を切り口に・ソフトウェア・システムと利用者の対話の物語を記述することになります。
ドメイン・モデル
ドメイン・モデル(Domain Model)はソフトウェア・システムの操作対象となる問題領域(problem domain)のモデルです。
ドメイン・モデルはビジネス・システムとソフトウェア・システムで一本化したいので、その方向で検討を進めます。
ただ、ビジネス・システムとソフトウェア・システムのモデルの規模が違いすぎる場合は別立てで管理した方がよいかもしれません。そのあたりの考察も進めていきたいと思います。
まとめ
今回は要求アルファの入力となるビジネス・モデリングの扱いについて考えてみました。
ここでは、関心分野カスタマー側にビジネス・システム・アルファとして入れることにしましたが、その是非は今後の考察で検討していきたいと思います。
次回は、ビジネス・システム・アルファの具体的な検討に入る前に、モデルなどの成果物の管理方法について検討します。