Mendix(サイト・英語)のCTOであるJohan den Haan氏は最近自身のブログで、モデルドリブンに関する方法(アーキテクチャ、開発、エンジニアリングなど)について記事(source) を書いた。
モデルドリブンエンジニアリング(MDE)(source)の基本原理は「全てはモデルである」ということです。モデルおよびモデルの要素は最も重要なものとして扱われます。そして最も重要な変化は、モデルが単にプログラマに対するドキュメントとして用いられるだけでなく、今はソフトウェア開発を直接動かすものとして用いられるようになったことです。
(中略)上記のようなコンセプトに基づいたMDEの手法についての言語を定義する時、ある種の要素について、ドメイン特化言語(DSL)で定めるべきなのか、それとも汎用言語で定めるべきなのか、という問題が持ち上がります。
彼はこう述べる。
ほとんどの手法で取られる一つの手は、汎用言語とドメイン特化言語の中間に置かれる方法です。私が思うに、両方の言語から一番いいとこを取ることで両方を結合することができます。
この記事は教育向けでもある。まずモデルやメタモデルの定義を明確にし、OMGで定義されるM0、M1、M2、M3のモデルドリブンアーキテクチャのレベルも分かりやすく示している。彼は言語的なメタモデルとオントロジ的なメタモデルの違いをはっきりさせている。
言語的メタモデルはモデルの言語(抽象構文、型意味論、静的意味論、動的意味論)を定義するもので、オントロジ的メタモデルはモデルの内在意味論を定義するものです。内在意味論はモデル化されたリソースの内面的な意味や隠れた意味を表現し、概念を推論する基礎となります。
そしてこう述べている。
オントロジ的なメタモデルは宣言型言語を定義する上で必須のものです。宣言型言語とは例えば、”how”ではなく”what”を定義する言語で・・・(中略)・・・言語的なメタモデルもオントロジ的なメタモデルも、モデルを使った手法を行うのには欠かせません。
また彼はオントロジ的なメタモデルの階層の重要性を説明している。彼が述べるには、その階層構造はテクノロジレイヤを基底とすべきで、それはドメインオントロジが依拠し、モデルが依拠するものとなる。その後、彼は言語的メタモデルと実際のソフトウェアを関連付けている。
オブジェクト指向については、次のようにしていることが分かるという。
- 言語定義は小さくシンプルにする ,
- 重要な概念の再構築が行われている時でさえもバーチャルマシンは安定して動くようにする
- ユーザがなるべく自由なことができるための基礎を提供する(ユーザはライブラリを変更したり拡張したりできるが核となる言語概念は変更できない)
そして彼はビジネスプロセスモデリングの例を示している。
ビジネスプロセスモデリングの汎用言語としてBPMN(OMGで2006年標準化)やBPEL4WS(OASISで2007年標準化)を用いることについて多くの議論が続いています。BPMNが(一般的な)分析とドキュメンテーションのためにビジネスプロセスを定義するのに使われるのに対して、 BPEL4WSは実行可能なビジネスプロセス定義を行うのに使われます。
彼はメタモデルの明確な階層を示している。モデルレイヤ、ドメインレイヤ、サービスレイヤ、そしてBPELが該当する抽象レイヤはプラットフォームに依存しない概念で、BPMNは言語レイヤに当てはめられている。彼はこう述べている。
(BPMNとBPEL間の)変換を定義するのは、このメタモデル階層を用いれば非常に簡単にできます。.
結論ではこう述べている。
このように設計を決定するのはドメイン特化言語を定義するのに大変強い力となります。第一に、そうやって定義されたドメイン特化言語は実際に動くソフトウェアへ変換するのが容易です。第二に、ご紹介した手法によって汎用言語の概念とドメイン特化言語の概念を組み合わせることが可能になります。
原文はこちらです:http://www.infoq.com/news/2008/04/mde-combining-gpl-and-dsl