モデリング言語とMDDについて(2)

何となく今こう考えているということですが ・・・

1 メタモデルまたは概念モデル

どんな手法でモデリングをするにしても、やはりメタモデルまたは概念モデルといったものが最初にきます。 表現方法はいろいろあって、MOFを使うものや、EBNFのようなプログラム言語設計記法を使うもの、更に多分もっと純粋数学的なものなどです。

2 モデル

モデルはモデリング言語で書かれた対象の記述になります。 世の中でもっとも使われているモデリング言語がUMLだとすると、純粋なUMLモデルやUML Profileを含んだ拡張UMLモデルがここで言うモデルにあたります。  EBNFのようなものを使って文法を規定した場合は、その文法に従って書かれたテキストがモデルにあたります。

3 プログラム

プログラムとモデルの違いは何でしょうか? 言語定義の厳密さレベルの違いもありますが、プログラムはコンパイラやインタープリタを使い実行できます。 OMGでもExecutable UML的な検討が長年行われていますがまだ時間がかかるようです。 もしこれが出来ればUMLもプログラミング言語に昇格し、UMLモデルはUMLプログラムと呼ばれるのでしょうか? そうかもしれませんが、現時点ではモデルはモデルであり、どうしてもそれをプログラムに対応付ける作業が必要で、人が頭の中で補完しながら変換して行くのが従来型の開発作業で、ある程度は(本当は出来るだけ多く)自動化したいというのがモデル駆動の基本的な考え方だと思います。 文法規則を決めて書かれたテキストモデルの場合も同様で、そのテキストは文法規則に従って解釈できる訳ですから、その文法とテキストを入力として対象プログラミング言語・対象インフラ環境をターゲットとしたマッピングを行えば良いだけです。 言うのは簡単ですが、実際にはモデリング言語やマッピング対象の多様性を考えると、なかなか標準的なものになりそうもないという印象を受けます。

4 DSL: 現実解の一つ(Xtext)

UMLを使ってもうまくMDDの流れに乗せられないとすれば、別の方式にも目が向きます。 UMLを使うMDAがまだ普及に至っていないのは、UMLの仕様自体の複雑さに起因しているのではないかという気がします。 仮にそうだとするともっとシンプルな方式の方が現実的かもしれません。 DSL、それもグラフィカルDSLではなくTextual DSL(何故なら、グラフィカルDSLの作成がそれ程容易でないため)、そしてInternal DSLではなくExternal DSLが良さそうです(こちらについてはご意見がありそうですが)。 この方向のツールにはXtext、MPS、Oslo M言語などがありますが、関連情報の入手のし易さとプラットフォーム非依存という観点からXtextが有力候補になります。 Xtextは今回書いているDSL設計、DSLに基づくエディタ、コード変換などがパッケージになっています。 Xtextが究極の解かと問われると独自仕様部分が多くまた競合製品・プロジェクトもありそこまでは言えませんが、現時点ではオープンな世界でかなり実用的に使えるものです。

モデリング技術は世の中に多くあるため、人により何を信じるのか異なる宗教のようなところがあります。 実際は効率よく良い結果が得られるなら何を使っても構わないとも思っています。 このポストに書いたことは「こんな見方もある」という程度でご理解下さい。

補足) 日本Grails/Groovyユーザーグループの山田さんから「Grailsプログラミングはモデリングと同じ」という見解を聞かせて頂いたことがあります。

モデリング言語とMDDについて(2)

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中