モデル駆動型アーキテクチャ (モデルくどうがたアーキテクチャ、Model-Driven Architecture 、MDA )とは、Object Management Group (OMG) が2001年 に公式に発表したソフトウェア設計 手法である[ 1] 。MDA はソフトウェアシステムにおけるモデル駆動工学 サポートを意図したものである。
概要
モデル駆動型アーキテクチャ (MDA) は、モデルとして表現される構造的仕様のガイドラインを提供するソフトウェア開発 手法である。MDAでは、システムの機能はまず適切なドメイン固有言語 を使ってプラットフォーム独立モデル (PIM) として定義する。CORBA や .NET といったプラットフォーム定義モデル (PDM) が与えられると、PIM は別のドメイン固有言語や汎用のプログラミング言語 (Java、C#、Python など)に対応したプラットフォーム特化モデル (PSM)へと変換される[ 2] 。PIMとPSMとの変換は通常、モデル変換 ツールなどの自動化されたツールを使って行われる(例えば OMG が標準化したQVT )。工程全体は文書化され、OMG が MDAガイド(MDA Guide)として保守している。
MDAモデルは、統一モデリング言語 (UML)、Meta-Object Facility (MOF)、XML Metadata Interchange (XMI)、Enterprise Distributed Object Computing (EDOC)、Software Process Engineering Metamodel (SPEM)、Common Warehouse Metamodel (CWM) といった複数の標準規格と関連している。モデル駆動型アーキテクチャの「アーキテクチャ」とはモデル化対象のシステムのアーキテクチャのことではなく、MDA を構成する各種標準やモデル形式のアーキテクチャを意味する。
Object Management Group (OMG) は、「MDA」や「Model Driven Architecture」を商標として登録しており、他にも関連する用語を商標として登録している[1] 。OMG が現状で商標登録していない略語としては MDE(モデル駆動工学 の略語)がある。
手法
MDAの主たる目的として、アーキテクチャから設計を分離し、設計とアーキテクチャがそれぞれ独立して変更できるような技術を確立するということが上げられる。設計とは機能的な要求仕様(ユースケース )の実装に対応するもので、アーキテクチャは機能とは無関係なスケーラビリティ・信頼性・性能などの要求仕様の実現に対応する。MDA は、実装技術やソフトウェアアーキテクチャ が変化しても、機能的要求仕様の概念設計を表現したプラットフォーム独立モデル (PIM) が依然として利用可能となることを意図している。
モデル駆動型アーキテクチャでも特に重要となるのはモデル変換 に関する部分である。OMG はQVT と呼ばれるモデル変換のための標準言語を定義した。
ツール
MDAツールは、モデルやメタモデルの開発・翻訳・比較・調整・計測・検証・変換などに使われる[ 3] 。以下では、モデルもメタモデルも総称して「モデル」と表記する。MDAには基本的に2種類のモデルがある。「初期モデル; initial model」は主に人間が手動で作成するものであり、「導出モデル; derived model」はプログラムによって自動的に生成されるものである。例えば、アナリストがビジネスの現状を観察してUML の初期モデルを作成し、そのUMLモデルにモデル変換 を施して自動的に Java モデルを生成する。
MDAツールは以下の種類に分類される。
作成ツール: 初期モデルの作成や導出モデルの編集のためのツール。
解析ツール: モデルの完全性・無矛盾性・エラー/警告条件などを検証するツール。モデルの統計情報の計算にも使われる。
変換ツール: モデルを別のモデルやコードや文書に変換するツール。
合成ツール: 通常同じメタモデルに従った複数のモデルを合成するツール。
評価ツール: モデルベーステスト のようにモデルを評価するツール。
シミュレーションツール: あるモデルで表されるシステムに実行をシミュレートするツール。
メタデータ管理ツール: 各モデル内のメタデータ(作者名、作成日、更新日、使用したツールなど)やモデル間の相互関係(モデル変換の変換元と変換結果の関係やメタモデルのバージョンの関係など)を扱うツール。
リバースエンジニアリングツール: 古い情報システムをMDAで扱えるようモデルに変換するツール。
ツールによってはこれらの機能を複数備えている。例えば作成ツールによっては変換や評価の機能も持っている。もちろん、作成のみのツール、グラフィカルな表現のためだけのツール、変換だけを行うツールなどもある。
MDAツールの特徴は、モデル(MOF モデルやメタモデル )を入力とし、別のモデルを出力する点である[ 4] 。ただし、文書とモデルとの変換ツールなどではMDAの範囲外のパラメータの入力が必要となることもある。
MDAツールは、いくつかのベンダーやオープンソースプロジェクトで開発されている。Rational Rose はベンダー作成のツールである。マイクロソフト はMDAに準拠しない類似のツールを提案している。Eclipse では各種オープンソース ツールを開発中である。
MDAツールはUMLツールよりも範囲が広い点に注意されたい。これは、ベースとしているメタモデルが可変か固定かの違いである。UMLツールのメタモデルは一般に固定であり、特定のUMLメタモデル(例えば UML 2.1)上でのみ動作する。一方 MDAツールは任意のメタモデルに対応できる仕組みを用意しているか、複数のメタモデルをサポートしている。
MDAツールは基本的なアーキテクチャ仕様を扱うことが多いが、アーキテクチャ(およびプラットフォーム)に依存しないツールもある。ここでいうアーキテクチャ仕様とは次のようなものを意味する:
参照アーキテクチャ: Java EE や.NET
階層ごとのアーキテクチャ(プレゼンテーション層やビジネスロジック 層)や階層間の一貫性技術(オブジェクトデータベースと関係データベースのマッピングなど)
懸案事項
2001年に始まったMDAの基盤となる概念は、1980年代後半にShlaer-Mellor法 として初めて明確化された。その後、標準化がなされないまま Shlaer-Mellor Action Language を利用したMDA的手法がいくつかのベンダーで試みられた。しかし、この間のMDA的手法は業界に広く受け入れられることはなかった。ガートナー は2006年現在もMDAを "on the rise"(成長中)の技術であるとしている[ 5] 。フォレスターリサーチ は2006年に MDA は死に体(D.O.A.)であるとした[ 6] 。OMGのMDAに関する懸案事項としては次のようなものがある:
不完全な標準
MDAは各種技術標準に基づいているが、その一部は未だに仕様が定まっていないか(xtUML のための言語など)、標準的手法で実装されていない(QVT 変換エンジンや仮想実行環境でのPIM )[ 7] [ 8] 。
理想主義
MDAは、自動化された生成ステップによってモデルを実装物(実行コードやデータベーススキーマ)に変換する工学手法である。このため、OMGの展望としては MDA によって変換前のUMLで問題(対象システム)を完全にモデリングできなければならない[ 9] 。しかし、この手法では生成された実装物を変更することは考慮されていない(例えばデータベーススキーマの調整など)。このため、生成後の実装物を調整する際の問題が生じる。完全なMDA手法はあまりにも理想主義的であり、実際の開発にあたってはより実用的なMDAが必要になるとも考えられている[ 10] 。実用的なMDAでは、本来のMDAに加えて、従来からのモデル駆動的機構をサポートすることで実装物の修正を可能とする必要がある。
特別なスキルの必要性
MDAに基づいた開発では、技術者に特別なスキルが要求される。そのようなスキルを持った技術者はごく少数である[ 11] 。
OMGの過去の実績
MDAを推進しているOMGは、かつて分散オブジェクト技術CORBA 標準の普及に尽力したが成功したとは言いがたい[ 12] 。
関連項目
脚注
^ "OMG pursues new strategic direction to build on success of past efforts"
^ ヨシュ・ヴァルメル、アーネク・クレッペ、竹村司、2004年、pp.4-7
^ Bézivin, J, Gérard, S, Muller, P-A, and Rioux, L (2003年). MDA components: Challenges and Opportunities . In: Metamodelling for MDA. http://www.sciences.univ-nantes.fr/lina/atl/www/papers/MDAComponents-ChallengesOpportunities.V1.3.PDF .
^ ヨシュ・ヴァルメル、アーネク・クレッペ、竹村司、2004年、pp.4-5
^ "Hype Cycle for Emerging Technologies, 2006"
^ "MDA Is DOA, Partly Thanks To SOA"
^ "UML - Unified or Universal Modeling Language? UML2, OCL, MOF, EDOC - The Emperor Has Too Many Clothes"
^ "MDA: Nice Idea. Shame about the..."
^ "Bringing MDA to Eclipse, using a pragmatic approach"
^ "A Response to Forrester"
^ "Are You Ready For the MDA?"
^ "The Rise and Fall of CORBA"
参考文献
MDA Distilled, Principles of Model Driven Architecture , Stephen Mellor, Kendall Scott, Axel Uhl, Dirk Weise, Addison-Wesley Professional, 2004, ISBN 0-201-78891-8
MDA Explained, The Model Driven Architecture: Practice and Promise , Anneke Kleppe, Jos Warmer, Wim Bast, Addison-Wesley, 2003, ISBN 0-321-19442-X
The MDA Journal: Model Driven Architecture Straight From The Masters , Meghan Kiffer, ISBN 0-929652-25-8
Model Driven Architecture , Springer-Verlag, ISBN 3-540-28240-8
Model Driven Architecture: Applying MDA to Enterprise Computing , David S. Frankel, John Wiley & Sons, ISBN 0-471-31920-1
Model Driven Architecture With Executable UML , Chris Raistrick, Paul Francis, John Wright, Colin Carter, Ian Wilkie, Cambridge University Press, ISBN 0-521-53771-1
『UML/MDAのためのオブジェクト制約言語OCL 第2版』、ヨシュ・ヴァルメル、アーネク・クレッペ、竹村司(訳)、エスアイビー・アクセス、星雲社、2004年、ISBN 978-4434055423
外部リンク
団体人物 概念
OOP 構造性 操作性 関連性
ジェネラライゼーション
スペシャライゼーション
リアライゼーション
インプリメンテーション
多重度
コンポジション
アグリゲーション
アソシエーション (英語版 )
ディペンデンシー
拡張性
図式
派生言語 その他
カテゴリ