メタ開発システム・フレームワーク
SimpleModelingは、文芸モデル駆動・知識駆動・AI支援による循環型の開発環境を整備するため、開発そのものを定義するメタレベルのプロセスを提唱しています。 メタ開発システム・フレームワークは、その中心に位置する上位モデルであり、プロジェクトで運用される開発プロセス (Development Process)を設計・改善するための理論的基盤となります。 この枠組みは、開発の対象(モデル・アーキテクチャ・プラットフォーム)と進め方(プロセス・スタイル・アプローチ)を統合的に定義します。
メタ開発システム・フレームワーク
SimpleModelingは、文芸モデル駆動・知識駆動・AI支援の循環環境を整備する開発システムを開発の中心に据えています。
この枠組みは、開発の対象(モデル・アーキテクチャ・プラットフォーム)と進め方(プロセス・スタイル・アプローチ)を統合的に定義するものです。
SimpleModelingでは、開発システムを体系的に構築・再利用するための上位概念として、メタ開発システム・フレームワークの定義を進めています。
このフレームワークは、開発活動そのものを設計・定義するためのメタレベルのプロセスであり、「どのように開発システムを設計し、運用し、改善するか」を定めるものです。
開発システム・フレームワーク
SimpleModelingのメタ開発プロセス・フレームワークは以下の構成になっています。
メタ開発システム・フレームワークから開発システム・フレームワークを生成するには、開発メソッド (Development Method)に以下の三つのプロセスを接続します。
開発プロセスと知識モデリングを接続することで、知識開発プロセス (Knowledge Development Process)が定義されます。
また、開発メソッドに実行アーキテクチャを接続することで、開発アーキテクチャ (Development Architecture)が定義されます。
開発プロセス、知識開発プロセス、開発アーキテクチャを統合したものが開発システム・フレームワークです。
開発システム・リファレンス・プロファイル
メタ開発システム・フレームワークから目的に応じた開発システム・フレームワークを作成し、ここからプロジェクト毎の個別事情を適応したプロジェクト開発システム (Project Development System)を定義する運用になるわけですが、プロジェクト毎にこのカスタマイズ作業を行うのは現実的ではありません。
このため、開発システムの典型的な構成パターンに対してリファレンス・プロファイルを定義して提供します。
プロジェクト開発システム
通常は開発システム・リファレンス・プロファイル (Development System Reference Profile)を微調整してプロジェクト開発システム化する運用を想定しています。
開発システム・フレームワークでは汎用的な機能を提供するため多くの機能が提供されることになりますが、必要に応じて不要な機能を無効化することが重要なカスタマイズ候補です。
その上で、プロジェクト固有の要件を取り込んで調整します。
メタ開発システム・フレームワークの運用
メタ開発システム・フレームワークは、上位から下位へと段階的に具体化される4層構造として運用します。
これらは次の手順で展開されます。
-
メタ開発システム・フレームワークを具体化し、開発システム・フレームワークを定義する。
-
代表的な構成をリファレンス・プロファイルとして定義する。
-
プロジェクトごとにリファレンス・プロファイルを調整し、プロジェクト開発システムを形成する。
メタ開発システム・フレームワークに知識モデリングやプロセス・スタイル、実行アーキテクチャを組み込んだものが開発システム・フレームワークです。 それは、開発の流れ・役割・成果物・ルールなどを体系化したものであり、RUPやScrumのような具体的なプロセスモデルがその代表例です。
さらに開発システム・フレームワークを、開発プロジェクトの状況に合わせてカスタマイズしたものがプロジェクト開発システムです。
この時、利便性から開発システム・リファレンス・プロファイルを使用することを想定しています。
このプロジェクト開発システムを用いて開発現場での開発を進めることになります。
メタ開発プロセス・フレームワークの構成
開発システムは開発メソッドを核にして以下の3つの枠組みを定義しています。
開発プロセス
開発プロセスは「どのように開発を進めるか」を定義する枠組みです。ここでは、開発活動の作業分野、活動 (Activity)、成果物、役割およびそれらの関係をモデル化します。
後述するように開発システムの記述にはOMG Essenceを使用する予定ですが、この場合には開発プロセスは、プロジェクトの進行を導くアルファ (Alpha)、アクティビティスペース (Activity Space)、ワークプロダクト (Work Product)の関係によって記述されます。
開発アーキテクチャ
SimpleModelingの開発アーキテクチャは、モデル・プラットフォーム分離の原則に基づき、ドメインモデルを中心にした抽象層と、Scala・TypeScript・CDK・ECSなどの実行層を明確に区別します。
これにより、AIが両者の間を橋渡しする際のコンテキストを正確に解釈でき、AIコード生成・補完の精度を高めます。
知識開発プロセス
知識モデリングはビジネス・モデリングを知識駆動開発向けに拡張したもので、ビジネス・モデリングの成果物を知識という形で蓄積します。
📄 AI協調のためのBoK生成アーキテクチャで導入した生成AIリファレンス・アーキテクチャ (Generative AI Reference Architecture)では生成AIの処理の中で以下の2つの仕組みで知識の蓄積が行われます。
知識昇格は生成AI側の仕組みですが、知識循環は生成AIの成果物をBoK (Body of Knowledge)に環流して取り込むプロセスであり、知識開発プロセスでコントロールできる活動です。
境界モデル
開発メソッドは境界モデル (Boundary Model)を使って外部のプロセスと接続します。
開発システムの記述方法
開発システムの定義の記述にはOMG Essenceを使う予定です。開発システムのリファレンス・プロファイルをエッセンスで記述することで、プロジェクト開発システムへのチューニングが容易に行えるようになると考えています。
📄 クラウドアプリケーションのためのオブジェクト指向分析設計講座の第40回から第47回で解説したケーススタディでエッセンスを使用しています。リファレンス・プロファイルの開発システムはこの講義のものを拡張したものになる想定です。
展望
メタ開発システム・フレームワークの最終的な目標は、自己改善する開発メソッドの実現です。AIがプロジェクトの成果・履歴・モデル変化を解析し、次の開発に向けて改善提案を行うことで、開発プロセスそのものが学習・進化するメカニズムを確立します。
これは先の長い話になりますが、直近では文芸モデル駆動開発 (LMDD, Literate Model-Driven Development)(さらに知識駆動開発 (Knowledge-Driven Development))の議論を具体化するための基盤、実運用に展開するための基盤として開発プロセスが必要です。この開発プロセスの理論的な土台としてメタ開発システム・フレームワークを考えています。
まず最初にSimpleModeling.orgでの技術解説を具体的にするための開発システム・リファレンス・プロファイルであるSimpleModelingリファレンス・プロファイル (SMRP, SimpleModeling Reference Profile)を定め、これをベースに解説を進めていく予定です。
その上で必要に応じてその上位層である開発システム・フレームワーク、メタ開発システム・フレームワークの議論を行っていくことになるでしょう。
参照
用語集
- メタ開発システム・フレームワーク (Meta Development System Framework)
-
開発活動そのものを設計・定義するためのメタレベルの枠組み。開発メソッド・プロセス・アーキテクチャを統合し、循環型・AI支援型の開発環境を構築する上位モデル。
- 開発プロセス (Development Process)
-
開発プロセスとは、ソフトウェアの構築・運用・保守に関わる活動全体を指します。 計画、設計、実装、テスト、リリースなどを含み、ソフトウェア開発の一連の流れを体系的に表現する概念です。
- 開発システム・フレームワーク (Development System Framework)
-
メタ開発システム・フレームワークを具体化した開発システムの標準構造。開発メソッドに知識モデリング・プロセス・スタイル・実行アーキテクチャを接続して形成される。
- 開発メソッド (Development Method)
-
開発メソッドとは、ソフトウェアの構造と意味を定義するためのモデルとモデル変換から構成される概念的な枠組みです。 オブジェクト指向設計、ドメイン駆動設計(DDD)、モデル駆動開発(MDD)などが代表的な例です。 開発メソッドは、ソフトウェア開発の「何を」「どのように構造化して」作るかを定義する設計的基盤を提供します。
- 知識モデリング (Knowledge Modeling)
-
知識駆動開発に対応するようビジネス・モデリングを拡張した知識表現のプロセス。ビジネス構造や判断を知識として形式化し、AI支援開発に活用する。
- プロセス・スタイル (Process Style)
-
プロセス・スタイルとは、開発メソッドを時間軸上でどのように適用するかを定める進め方の様式を指します。 反復型、漸進型、ウォーターフォール型、アジャイル型、ハイブリッド型などが代表的なスタイルです。 具体的な開発活動の順序や繰り返し方、リズム、成果物の生成タイミングなどを特徴づけます。
- 実行アーキテクチャ (Execution Architecture)
-
モデル層と実行層を分離した技術的・実行的基盤。Scala・TypeScript・CDK・ECSなどを含む。
- 知識開発プロセス (Knowledge Development Process)
-
ソフトウェア開発に知識モデリングを接続し、生成AIによる知識昇格と知識循環を統合するプロセス。
- 開発アーキテクチャ (Development Architecture)
-
技術基盤・プラットフォーム・コンポーネント構成を統合して開発を支える構造的基盤。
- プロジェクト開発システム (Project Development System)
-
各プロジェクトに合わせてカスタマイズされた開発システムの実装形態。リファレンス・プロファイルを基に調整される。
- 開発システム・リファレンス・プロファイル (Development System Reference Profile)
-
典型的な開発システム構成をテンプレート化した参照プロファイル。プロジェクト固有の開発システムを定義する際の基盤として利用される。
- 活動 (Activity)
-
アクティビティスペース内で実行される具体的な行為またはタスク。アルファをより進んだ状態へ移行させるために行われ、通常はワークプロダクトの生成や改良を伴う。
- アルファ (Alpha)
-
ソフトウェア開発の主要側面(例:機会、ステークホルダー、要求、ソフトウェアシステム、チーム、作業、作業のやり方)を表す進行の軸。各アルファは明確に定義された状態を通じて進化していく。
- OMG Essence
-
ソフトウェア工学の実践の本質を抽出するOMG標準のメタモデル。開発メソッドやプロセスを記述・改善するために用いられる主要概念(アルファ、アクティビティスペース、ワークプロダクト)を定義する。
- ワークプロダクト (Work Product)
-
アルファの状態を示す証拠として活動によって生成される具体的な成果物。文書・モデル・コードなど、検証可能な出力を含む。
- アクティビティスペース (Activity Space)
-
一つ以上のアルファを前進させるために関連する活動が行われる作業領域。アクティビティスペースは共通の目的をもつ複数の活動をまとめる概念である。
- 生成AIリファレンス・アーキテクチャ (Generative AI Reference Architecture)
-
生成AIが内部で実行する知識活性化・内化・表現・昇格・循環の構造を整理したアーキテクチャ。
- 知識昇格 (Knowledge Promotion)
-
BoKの構造化知識を再学習・ファインチューニングによりAIモデルのパラメトリック知識(PPK)へ恒久的に統合するプロセス。
- 知識循環 (knowledge circulation)
-
Knowledge Circulation(知識循環)は、AIと人間のあいだで知識が生成・内化・表現・昇格を繰り返し、再び活性化される循環的プロセスを指します。 この循環は、AIが出力した知識を人間が整理・体系化し、SmartDoxサイトやBoK(Body of Knowledge)に再統合することで形成されます。 結果として、BoK全体が進化し、AIの知識理解と生成能力が継続的に向上します。
- BoK (Body of Knowledge)
-
SimpleModelingでは文脈共有の核となる知識体系をBoK (Body of Knowledge)と呼んでいます。 BoKの構築は、知識の共有、教育、AIによる支援、自動化、意思決定支援を可能にするための基盤です。
- 境界モデル (Boundary Model)
-
境界モデルとは、異なるプロセスやレイヤ(知識モデリング・プロセス・スタイル・実行アーキテクチャなど)の間で情報や成果物を受け渡す論理的接続構造を定義するモデルです。開発メソッドの内外を橋渡しし、入力・出力・依存関係を明示化します。
- 知識駆動開発 (Knowledge-Driven Development)
-
知識を中心に据え、AI支援とモデリングを統合して進化する開発パラダイム。
- 文芸モデル駆動開発 (LMDD, Literate Model-Driven Development)
-
文芸モデル駆動開発(Literate Model–Driven Development, LMDD) は、自然言語による語りと形式的なモデル構造を統一されたテキスト基盤上で統合するソフトウェア開発手法です。従来のモデル駆動開発(MDD)を拡張し、ドキュメントとモデルを単一の整合的ソースとして扱います。 LMDDでは、開発成果物の記述要素と構造要素をSmartDox言語を用いて同時に表現します。この統合的な表現から、ModelDoxが構造データを抽出し、CML(Cozy Modeling Language)がドメイン固有モデルを定義し、Cozyが実行可能なコード、ドキュメント、構成情報などの成果物を生成します。 人工知能(AI)は、語りの文脈を解析し、構造の整合性を検証し、モデルおよび生成成果物の改良を支援することでLMDDプロセスに関与します。すべての成果物はテキスト形式で表現されるため、トレーサビリティ、バージョン管理、標準的な開発環境との相互運用性が確保されます。 ドキュメント、設計、実装の間に形式的かつ機械可読な関係を定義することにより、LMDDは人間による記述と機械による推論が同一の表現層で機能する、AI支援型モデル駆動開発の基盤を提供します。
- SimpleModelingリファレンス・プロファイル (SMRP, SimpleModeling Reference Profile)
-
SimpleModelingのリファレンス・プロファイルです。 SimpleModelingによる文芸モデル駆動開発の説明を具体的にするために、リファレンス・プロファイルを定義しています。