モデル駆動工学

**モデル駆動工学**（モデルくどうこうがく、Model-Driven Engineering、**MDE**）とは、アルゴリズム的な概念よりも、ドメインモデルの作成と利用を中心とするソフトウェア開発方法論の一種である。ドメインモデルとは、特定の適応領域についての知識や活動を抽象化して表現したものである。

モデル駆動工学(以下、MDE)は、工学的ライフサイクルを通して、モデルをシステム的に利用する工学手法を意味する。また、MDEの適用範囲は、ソフトウェア、システム、データ工学などである。MDEでは、モデルを第一に考える。

## 概要
MDEは、以下の3つを目指している。

#標準化されたモデルを再利用することで、システム間の互換性を最大化して生産性を向上させること。
#適応領域で頻出するデザインパターンのモデルを使用することで、設計工程を単純化すること。
#適応領域における用語や「ベストプラクティス」を標準化することで、システムに関わる個人やチーム間での意思疎通を促進すること。

また、その領域に精通しているユーザーから見ても、そのモデルが意味をなしており、かつシステムを実装するときの基盤として利用できるなら、MDEのモデリング方法論は効果的であるといえる。モデルの開発には、管理者、設計者、ユーザーの十分な話し合いが必要である。モデルが完成すれば、ソフトウェアやシステムの開発が可能となる。

MDEを推進している有名な組織・団体として以下がある。
* Object Management Group(OMG)は、モデル駆動型アーキテクチャ(MDA)を推進している。なお、**MDA**はOMGの登録商標である。
* Eclipse（Eclipse Foundation）

## 歴史
MDEをサポートした最初のツールとしては、1980年代に開発されたComputer Aided Software Engineering(CASE)ツールがある。CASEツールを開発した初期の企業として Integrated Development Environments(IDE)、Higher Order Software(後のHamilton Technologies)、Cadre Technologies、Bachman Information Systems、Logic Worksなどがある。HTIの製品を除いて、CASEツールは、MDA/MDEと同じ問題を抱えていた。すなわち、モデルとアプリケーションが同期できなくなる問題である。

アメリカ政府は、モデリングを定義するため、IDEF規格の策定に関与した。モデリング定義にはさまざまなもの(Booch法、OMT、OOSE、ハレルの状態遷移図、など)があったが、最終的にそれらを統合した統一モデリング言語(UML)が生まれた。ラショナルは、UMLを実装した「Rational Rose」という製品を開発し、高い抽象レベルでのソフトウェア開発自動化への道を拓いた。抽象化によってモデルが単純化されたため、問題領域に集中して設計することが可能となった。また、実行可能な意味論と組み合わせることで、自動化レベルを高めることにも繋がった。Object Management Group(OMG)は、モデル駆動型アーキテクチャ(MDA)と呼ばれる標準規格群を開発し、この手法の基礎を築いた。

Douglas Schdmidtによると、モデル駆動工学技術は、プラットフォームの複雑性に対応しつつ、適用領域の概念を効率的に表現する能力が欠けている第三世代言語の問題への対処法として有望である。

## ツール

* AADL (SAE International)
* Acceleo 
* Actifsource（有償）
* AndroMDA（オープンソース）
* AtomWeaver（有償）
* CoCoViLa（オープンソース）
* CodeFluent Entities（有償）
* DB-MAIN（個人利用は無償）
* ECO (Domain Driven Design)（有償）
* Eclipse Modeling Framework (EMF, Eclipse Foundation)
* Enterprise Architect（有償）
* ER/Studio（有償）
* Epsilon（オープンソース）
* GenerateXY（無償）
* Generic Eclipse Modeling System (GEMS, Eclipse Foundation)
* GeneXus（有償）
* Graphical Modeling Framework (GMF, Eclipse Foundation)

* MagicDraw（有償）
* ManyDesigns Portofino（オープンソース）
* MetaEdit+（有償）
* objectiF（有償）
* Rhapsody (IBM)
* RISE Editor（無償）
* Sculpture Toolkit（無償）
* Simulink（MathWorks、有償）
* Together Architect（ボーランド、有償）
* Uniface（有償）
* XComponent（有償）
* YAKINDU Statechart Tools（オープンソース）

## 脚注

## 参考文献
* David S. Frankel, *Model Driven Architecture: Applying MDA to Enterprise Computing*, John Wiley & Sons, ISBN 0-471-31920-1
* Marco Brambilla, Jordi Cabot, Manuel Wimmer, *Model Driven Software Engineering in Practice*, foreword by Richard Soley (OMG Chairman), Morgan & Claypool, USA, 2012, Synthesis Lectures on Software Engineering #1. 182 pages. ISBN 9781608458820 (paperback),  ISBN 9781608458837 (ebook). https://www.mdse-book.com

## 関連項目
* モデル変換 - QVT
* ドメイン固有モデリング (DSM)
* ドメイン固有言語 (DSL)
* モデルベーステスト (MBT)
* ソフトウェアファクトリー (SF)
* アプリケーション・ライフサイクル・マネジメント (ALM)
* Business Process Modeling Notation (BPMN)

## 外部リンク
* ''Model-Driven Architecture: Vision, Standards And Emerging Technologies'' at omg.org
* ''On the Unification Power of Models''.
* ''Pioneering model driven development''.
* Model-Driven Software Development Course, B. Tekinerdogan, Bilkent University
* Making model-based code generation work
* ''International School on Model-Driven Design for Distributed, Realtime, Embedded Systems (MDD4DRES)''
* VisSim: A Visual Language for Model-Based Design and Embedded Development
* DPF: Diagram Predicate Framework, a formal framework for MDE
* Very Rapid Application Development with a VRAD framework
* ACM/IEEE International Conference on Model Driven Engineering Languages and Systems (Proceedings)
* European Conference on Modelling Foundations and Applications (ECMFA) (Proceedings)