2024年1月31日水曜日

Cozyによるモデル駆動開発

モデル駆動開発のエコシステムを支えるキーパーツとして、Webアプリケーション・フレームワークのCozy Webを開発してきました。

今回からCozyを使用したモデル駆動開発について具体的に考えていきたいと思います。

Cozyは現在開発途中ですが、モデル駆動開発に必要な機能を拡張していく上でどのような機能が必要かの洗い出しが目的です。要求モデルにおけるユースケース分析的なアプローチですね。

EssenceというOMGが標準化している開発方法論フレームワークの枠組み、用語を使用して考えていくことにします。

実際の検討に入る前に、今回は開発方法論を記述する言語として使用するEssenceについてみていきます。

Essence

EssenceはSoftware Engineering Methods and TheoryObject Management Group®によって作成された開発方法論のフレームワークです。

  • https://www.omg.org/spec/Essence/

Essenceでは開発方法論を記述する言語(Language)と基本的な枠組み(Kernel)を定めており、この骨組みにプラクティスで肉付けすることで開発方法論を定義します。

Essenceの言語では、従来のモデリングの用語に加えて、新しい用語が導入されています。その点も含めて用語の整理をします。

基本概念

アルファ

アルファ(alpha)は開発作業を進める上で必要な各種概念を表現したものです。アルファの具体例として要求(requirement)やソフトウェア・システム(software system)があります。

アルファに対応する日本語用語はないと思うので、本Blogではアルファの用語を使います。

ワーク・プロダクト

ワーク・プロダクト(work product)はソフトウェア開発の各種成果物です。

ワーク・プロダクトの例としては要求仕様(要求アルファ)やコード(ソフトウェア・システム・アルファ)があります。

アクティビティ

アクティビティ(activity)はソフトウェア開発の活動を表現します。

アクティビティの例としては「ミーティングを開く(Holding a meeting)や「コードを書く(Writing Code)」があります。

アクティビティ・スペース

アクティビティ・スペース(activity space)はソフトウェア開発の活動分野を表現したものです。

アクティビティ・スペース内でアクティビティが実行されます。

アクティビティ・スペースの例としては「ステークホルダー・ニーズを理解する」や「システムを実装する」などがあります。

コンピテンシィ

コンピテンシィ(competency)は作業を進めるのに必要な各種能力です。

コンピテンシィの具体例としてはステークホルダー代表(カスタマー関心分野)や開発(ソルーション関心分野)などがあります。

関心分野

Essenceではソフトウェア開発の関心分野(area of concern)として以下の3つを定義しています。

  • カスタマー
  • ソルーション
  • エンデバー

Essenceのアクティビティはこの関心分野のどれかに所属することになります。

カスタマー

カスタマー(customer)はソフトぅエア・システムの利用方法についての関心分野です。

Essenceカーネルではカスタマーの関心分野で以下のアルファを定義しています。

  • ステークホルダー (stakeholder)
  • 機会 (opportunity)

また以下のアクティビティ・スペースを定義しています。

  • 可能性を探る (Explore Possibilities)
  • ステークホルダー・ニーズを理解する (Understand Stakeholder Needs)
  • ステークホルダーの満足を確保する (Ensure Stakeholder Satisfaction)
  • システムを利用する (Use the System)

ソリューション

ソルーション(solution)はソフトウェアの実現に関しての関心分野です。

Essenceカーネルではソルーションの関心分野で以下のアルファを定義しています。

  • 要求 (requirement)
  • ソフトウェア・システム (software system)

また以下のアクティビティ・スペースを定義しています。

  • 要求を理解する (Understand the Requirements)
  • システムを形作る (Shape the System)
  • システムを実装する (Implement the System)
  • システムをテストする (Test the System)
  • システムを配備する (Deploy the System)
  • システムを運用する (Operate the System)

エンデバー

エンデバー(endevor)は直訳すると「努力」ですが、ここではチームが努力して進める活動というような意味合いから選ばれた用語ではないかと思います。

エンデバーに対応する日本語用語はないと思うので、本Blogではエンデバーの用語を使います。

Essenceカーネルではソルーションの関心分野で以下のアルファを定義しています。

  • チーム (team)
  • ワーク (work)
  • 仕事の進め方 (way of working)

また以下のアクティビティ・スペースを定義しています。

  • ワークの準備をする (Prepare to do the Work)
  • アクティビティを協調させる (Coordinate Activity)
  • チームをサポートする (Support the Team)
  • 進捗を追尾する (Track Progress)
  • ワークを止める (Stop the Work)

まとめ

本ブログでCozyを使用したモデル駆動開発に対する分析を始めることにしました。

開発プロセスを記述するためのフレームワークとしてOMGのEssenceを使用します。今回はその準備としてEssenceの用語の整理をしました。

次回はビジネス・モデリングんいついて考えます。