モデル駆動型アーキテクチャ(MDA)とは
モデル駆動型アーキテクチャ(Model-Driven Architecture, MDA)は、
Object Management Group(OMG)が
2001年に提唱したソフトウェア開発手法です。この手法は、ソフトウェアシステムの開発において、モデルを中心としたアプローチを採用することで、システムの可搬性、相互運用性、および開発効率の向上を目指しています。
MDAの概要
MDAは、システムの構造や機能をモデルとして表現し、これらのモデルを基にソフトウェアを開発する手法です。具体的には、以下のステップで開発が進められます。
1.
プラットフォーム独立モデル(PIM)の作成: まず、システムの機能を特定のプラットフォームに依存しない形でモデル化します。このモデルは、ビジネスロジックやデータ構造といった、システムのコアとなる部分を表現します。
2.
プラットフォーム定義モデル(PDM)の適用: 次に、ターゲットとなるプラットフォーム(例えば、CORBAや
.NETなど)に対応したプラットフォーム定義モデルを適用します。
3.
プラットフォーム特化モデル(PSM)への変換: PIMを、特定のプラットフォームに特化したモデル(PSM)に変換します。この変換は、通常、自動化ツールを用いて行われます。
4.
コード生成: PSMを基に、実際の実行コード(Java、C#、Pythonなど)を生成します。
MDAの重要な要素
- - モデル: MDAの中心となるのは、システムの抽象的な表現であるモデルです。モデルは、統一モデリング言語(UML)などの標準規格を用いて記述されます。
- - モデル変換: PIMからPSMへの変換は、MDAにおいて重要なプロセスです。OMGは、QVT(Query/View/Transformation)というモデル変換のための標準言語を定義しています。
- - ツール: MDAのプロセスを支援するために、さまざまなツールが利用されます。これらのツールは、モデルの作成、解析、変換、合成、評価、シミュレーション、メタデータ管理など、多様な機能を備えています。
MDAツールの種類
MDAツールは、その機能によって以下のように分類されます。
- - 作成ツール: モデルの作成や編集を支援します。
- - 解析ツール: モデルの整合性やエラーを検証します。
- - 変換ツール: モデルを別のモデルやコードに変換します。
- - 合成ツール: 複数のモデルを統合します。
- - 評価ツール: モデルの品質を評価します。
- - シミュレーションツール: モデルの動作をシミュレートします。
- - メタデータ管理ツール: モデルのメタデータを管理します。
- - リバースエンジニアリングツール: 既存のシステムをモデルに変換します。
これらのツールは、単独で利用されることもあれば、複数の機能を組み合わせて利用されることもあります。
MDAの目的
MDAの主な目的は、設計とアーキテクチャを分離し、それぞれを独立して変更できるようにすることです。これにより、実装技術やアーキテクチャが変化しても、機能的要求仕様の概念設計を表現したPIMは依然として利用可能となります。また、モデル変換を自動化することで、開発効率の向上が期待できます。
MDAの課題
MDAは多くの利点を持つ一方で、いくつかの課題も抱えています。
- - 不完全な標準: MDAは多くの標準規格に基づいていますが、一部の規格は未だに仕様が確定していないか、標準的な手法で実装されていません。
- - 理想主義: MDAはモデルから自動的にコードを生成することを理想としていますが、生成されたコードを修正する際の柔軟性に課題が残ります。
- - 特別なスキル: MDAに基づいた開発には、特別なスキルを持った技術者が必要ですが、そのような人材は限られています。
- - OMGの過去の事例: MDAを推進しているOMGは、過去にCORBA標準の普及に成功したとは言い難く、その影響を懸念する声もあります。
MDAの関連技術
- - モデル駆動工学(MDE): MDAの基盤となる考え方で、モデルをソフトウェア開発の中心に置くアプローチです。
- - メタモデル: モデルを記述するためのモデルです。
- - UML: モデルを記述するための標準的な言語です。
- - MOF: メタモデルを定義するための標準規格です。
- - QVT: モデル変換のための標準言語です。
- - モデル変換言語(MTLs): モデル変換を記述するための言語です。
まとめ
モデル駆動型アーキテクチャ(MDA)は、モデルを中心としたソフトウェア開発手法であり、技術変化に柔軟に対応し、開発効率の向上を目指すことができます。MDAは、
プラットフォーム独立モデルから
プラットフォーム特化モデルへの変換を特徴とし、様々なツールによって支援されます。MDAにはいくつかの課題もありますが、今後のソフトウェア開発において重要な役割を果たすと期待されています。
参考文献
- - MDA Distilled, Principles of Model Driven Architecture
- - MDA Explained, The Model Driven Architecture: Practice and Promise
- - The MDA Journal: Model Driven Architecture Straight From The Masters
- - Model Driven Architecture, Springer-Verlag
- - Model Driven Architecture: Applying MDA to Enterprise Computing
- - Model Driven Architecture With Executable UML
- - 『UML/MDAのためのオブジェクト制約言語OCL 第2版』