モデル駆動開発とドメイン特化言語の説明をしたことだし、 ドメイン特化型モデル駆動開発の話を。
Microsoft の提唱するソフトウェアファクトリーと、 DSL Tools の紹介。
・MDD 的視点からみた DSL
- よいモデル
- システム要件を必要十分に・過不足なく表現
- 汎用言語だと、十分だけど、過剰
↓
- ドメイン特化モデル
- ドメインごとに必要十分なモデルを作る = DSL ベース開発
- ただし、DSL だけ使っての開発ってのは非現実
- 細かいチューニングは、抽象度の低い言語でやりたいときがある
- 細かい部分はやっぱり使い慣れた・使い古された言語がやりやすい
↓
- GPL・DSL 混在開発
- 開発途中で、細かいレベルではなくて、モデルレベルの修正が必要な場面も
↓
- DSL → GPL コードを自動生成するなら、
GPL → DSL のリバースエンジニアリングもできるのが望ましい
- あるいは、DSL・PGL 混在開発で、
DSL(モデル言語)記述側を修正したときの GPL(細かいレベル)側への
影響が少なくなる(直行的になる)ような作り方が望まれる
- 時には、DSL の言語仕様そのものの拡張も必要
例えば、サウンドのベルの例でいうと、
新作には新機能を搭載したい!となると、DSL に新しい構文が必要になったり
・ソフトウェアファクトリ
ソフトウェア開発の工業化
- シェフ(レシピを作る)とコック(レシピに沿って料理)
- プロダクト製造ラインとマスプロダクト
↓
DSL 開発と DSL を使ったモデル駆動製品開発
注:
ただ、この DSL ベースのモデル駆動開発は
MS の提唱する Software Factories という思想の一部分。
Software Factories には、
問題をどういう視点で見て分析するか・モデル化の手順
というようなソフトウェア工学的な指針も含まれている。
- MS DSL ツールの紹介
http://msdn.microsoft.com/vstudio/DSLTools/
http://www.microsoft.com/japan/msdn/architecture/dsl/
実質的に、DSL = ビジュアル言語
→ ビジュアルツールも含めて1つの言語
言語の記法だけでなく、ツール開発も一緒に
その開発インフラが DSL Tools