モデル駆動型アーキテクチャ(MDA)は、ソフトウェアシステムの開発のためのソフトウェア設計アプローチです。これは、モデルとして表現される仕様の構造化に関する一連のガイドラインを提供します。モデル駆動型アーキテクチャはドメインエンジニアリングの一種であり、ソフトウェアシステムのモデル駆動型エンジニアリングをサポートします。これは、2001年にオブジェクト管理グループ(OMG)によって発表されました。[ 1 ]
モデル駆動型アーキテクチャ®(MDA®)は、「物理システム、組織システム、ITシステムのライフサイクル全体をサポートするモデルとアーキテクチャから価値を引き出すためのアプローチを提供する」ものです。モデルは、システムの抽象化(表現)です。MDA®は、概念的な視点から最小の実装の詳細まで、さまざまな抽象化レベルでモデルを作成することで価値を提供します。OMGの文献では、このような抽象化レベル、つまりアーキテクチャの視点として、計算非依存モデル(CIM)、プラットフォーム非依存モデル(PIM)、プラットフォーム固有モデル(PSM)の3つが挙げられています。CIMはシステムを概念的に記述し、PIMはシステムの実装に使用される可能性のあるテクノロジーを参照せずにシステムの計算面を記述し、PSMはシステムを実装するために必要な技術的な詳細を提供します。ただし、OMGガイドでは、これら3つのアーキテクチャの視点は有用ですが、可能な多くの視点のうちの3つにすぎないと指摘しています。[ 2 ]
OMG組織は、実装ではなく仕様書を提供しており、多くの場合、提案依頼書(RFP)への回答として提供される。実装は、民間企業またはオープンソースグループによって行われる。
MDAモデルは、統一モデリング言語(UML)、メタオブジェクトファシリティ(MOF)、XMLメタデータ交換(XMI)、エンタープライズ分散オブジェクトコンピューティング(EDOC)、ソフトウェアプロセスエンジニアリングメタモデル(SPEM)、共通ウェアハウスメタモデル(CWM)など、複数の標準規格に関連しています。モデル駆動型アーキテクチャにおける「アーキテクチャ」という用語は、モデリング対象システムのアーキテクチャではなく、MDAの技術基盤となる様々な標準規格やモデル形式のアーキテクチャを指すことに注意してください。
実行可能なUMLは、MDAが誕生した当時に使用されていたUMLプロファイルでした。現在、OMGは代わりにfUMLを推進しています。(fUMLのアクション言語はALFです。)
オブジェクト管理グループは、モデル駆動型アーキテクチャとその頭字語MDAの登録商標、およびモデルベースアプリケーション開発、モデル駆動型アプリケーション開発、モデルベースプログラミング、モデル駆動型システムなどの用語の商標を保有しています。[ 3 ]
OMG はモデル駆動型アーキテクチャ® をフォワード エンジニアリング、つまり抽象的で人間が精緻化したモデリング図 (クラス図など) からコードを生成することに集中させています。OMG の ADTF (分析および設計タスク フォース) グループがこの取り組みを主導しています。このグループはユーモアを交えて、リバース エンジニアリングの研究に ADM (MDA を逆にしたもの) という名前を付けました。ADM は Architecture-Driven Modernization と解読されます。ADM の目的は、レガシー システムのモデル ベースのリバース エンジニアリングの標準を作成することです。[ 4 ]知識発見メタモデル(KDM) はこれらの取り組みの中で最も進んでおり、さまざまな資産 (プログラム、仕様、データ、テスト ファイル、データベース スキーマなど) の観点から情報システムを記述します。
設計を実現するために使用される概念と技術、およびアーキテクチャを実現するために使用される概念と技術はそれぞれ独自のペースで変化してきたため、これらを分離することで、システム開発者は両方の領域で最適かつ最も適切なものを選択できるようになります。設計は機能(ユースケース)要件に対応し、アーキテクチャはスケーラビリティ、信頼性、パフォーマンスなどの非機能要件を実現するためのインフラストラクチャを提供します。MDAは、機能要件を実現する概念設計を表すプラットフォーム非依存モデル(PIM)が、実現技術やソフトウェアアーキテクチャの変化にも耐えうると考えています。
モデル駆動型アーキテクチャにおいて特に重要なのは、モデル変換の概念です。モデル変換のための特定の標準言語は、OMGによってQVTと呼ばれて定義されています。
OMG組織は、実装方法ではなく、大まかな仕様を提示することが多く、多くの場合、提案依頼書(RFP)への回答として提供されます。OMGは、MDAガイドと呼ばれる文書に全体のプロセスを文書化しています。
基本的に、MDAツールとは、モデルやメタモデルを開発、解釈、比較、整合、測定、検証、変換するために使用されるツールです。[ 5 ]次のセクションでは、「モデル」は、あらゆる種類のモデル(UMLモデルなど)またはメタモデル(CWMメタモデルなど)を意味するものとして解釈されます。MDAアプローチでは、基本的に2種類のモデルがあります。初期モデルは人間が手動で作成し、派生モデルはプログラムによって自動的に作成されます。たとえば、アナリストは、漠然としたビジネス状況の観察からUML初期モデルを作成することができ、Javaモデルは、モデル変換操作によってこのUMLモデルから自動的に派生することができます。
MDAツールとは、モデルの完全性、矛盾点、エラー、警告状態などをチェックするために使用されるツールである。
上記に挙げた機能のうち、複数の機能を備えたツールもあります。例えば、作成ツールの中には、変換機能やテスト機能も備えているものがあります。また、作成専用のツール、グラフィック表示専用のツール、変換専用のツールなど、用途に応じて使い分けられるツールも存在します。
OMG仕様の実装は、民間企業またはオープンソースグループによって提供されています。OMG仕様の実装の重要な情報源の1つは、Eclipse Foundation (EF)です。OMGモデリング標準の多くの実装は、Eclipse Modeling Framework(EMF)またはGraphical Modeling Framework (GMF)で見つけることができます。Eclipse Foundationは、GMTなどのさまざまなプロファイルの他のツールも開発しています。EclipseのOMG仕様への準拠は、多くの場合厳密ではありません。たとえば、EMFがEcore実装で近似しているOMGのEMOF標準がこれに該当します。その他の例は、QVT標準を実装しているM2Mプロジェクトや、MOF2Text標準を実装しているM2Tプロジェクトで見つけることができます。
MDAツール一覧とUMLツール一覧を混同しないように注意する必要がある。前者は後者よりもはるかに広範なツールを網羅している。この区別は、「可変メタモデルツール」と「固定メタモデルツール」に分けることで、より一般的にすることができる。UML CASEツールは、特定のバージョンのUMLメタモデル(例えばUML 2.1)でのみ動作するように設計されているため、通常は「固定メタモデルツール」である。一方、他のツールは、任意のメタモデルや特定の種類のメタモデルに対応できる汎用的な機能を内部に備えている。
通常、MDAツールは基本的なアーキテクチャ仕様の策定に重点を置いているが、場合によってはアーキテクチャに依存しない(あるいはプラットフォームに依存しない)ツールもある。
アーキテクチャ仕様の簡単な例としては、以下のようなものがあります。
MDAアプローチ(2001年に開始)を支えるいくつかの重要な概念は、1980年代後半にShlaer–Mellorメソッドによって初めて明らかにされました。実際、MDAアプローチの重要な技術標準(実行可能なUMLのアクション言語構文)の欠如は、一部のベンダーがオリジナルのShlaer–Mellorアクション言語(UML用に修正)を採用することで埋められています。しかし、この期間中、MDAアプローチは業界の主流の受け入れを得られませんでした。Gartner Groupは2006年の「ハイプサイクル」でMDAを「台頭している」技術として依然として認識しており[ 6 ]、Forrester Researchは2006年にMDAを「DOA(開始時死)」と宣言しました[ 7 ]。OMG MDAアプローチに関して提起された潜在的な懸念事項には、次のものがあります。