MDSとDSL
2008年7月14日
モデル駆動型ソフトウェア開発(MDSD)とドメイン特化言語(DSL)の関連性とは?
MDSDの文脈で「DSL」という用語が出てくるのは非常に一般的です。実際、MDSDに携わる人の中には、DSLはMDSDの世界にしか存在しないと考える人もいます。私は最近、自分の著書のためにDSLについて多く書いていますが、これまでMDSDの側面にはあまり触れてきませんでした。代わりに、より従来のプログラミングにおけるDSLの役割に焦点を当ててきました。DSLは、テキスト言語の世界とMDSDの世界の両方で存在し、どちらの場合でもほぼ同じ役割を果たします。
MDSDの文脈では、DSLは再び、UMLなどの汎用言語とは対照的に、特定の種類の問題を対象とした言語です。その結果、それらは同じような関係を持つことができます。汎用モデリング言語でシステムを構築し、様々な特定の側面にDSLを使用します。しかし、MDSDはそれほど普及していないため、従来の言語環境でモデリングDSLを使用する別の方法も見られます。ここでは、Javaプロジェクトで組み合わせるためのJavaコードを生成する複数のモデリングDSLを使用する場合があります。この場合、汎用的なMDSDモデルはありません - 各DSLに対して比較的独立してMDSDを使用します。
モデル指向のDSLを使用するには、異なるプロジェクショナル編集アプローチによるツールが必要です。これは、そのようなツールの一般的なサポート環境がそれほど確立されていないため、多くの実際的な問題を引き起こします。独自のDSLを定義するには、より専門的なツールが必要です。私はそれを言語ワークベンチと呼んでいます。
DSLは、メインストリームのプログラミング世界よりもMDSDの世界で比例的に高い重要性を持ちます。皮肉屋は、これがMDSDコミュニティが関連性を維持する方法を必死に探している結果だと考えていますが、MDSDのファンは、それをMDSDの優れた洗練さの証とみなします。これは主に、MDSDコミュニティがより小さく、確立された実践の形態が少ないためだと思います。
MDSDの特に目立つサブコミュニティは、モデル駆動型アーキテクチャ(MDA)を中心としています。私は特にMDAのファンではありませんが、MDA DSLには特に懐疑的です。
モデル指向のDSLとテキストベースのDSLには多くの共通点があります。私はテキストベースのDSLで、セマンティックモデルを中心とした作業に重点を置いています。MDSDは、その名前が示すように、そのようなモデルからシステムを駆動することに大きく関係しています。違いは、ほとんどのMDSD関係者は、モデルを直接実行するのではなく、そのモデルからコードを生成したいと考えていることです。
これを書いている時点で、自分の本で言語ワークベンチをどの程度取り上げるかはまだわかりません。確かに、それらの背後にある全体的な概念については少なくとも議論しますが、その範囲はそれほど深くないかもしれません。これは、テキストベースのDSLで生成している大量の資料と、言語ワークベンチがはるかに新しく、したがってより不安定で未熟であるという事実によるものです。