免責事項: 私はビジネス アプリケーションの開発者です。次の見解は、エンタープライズ IT の塹壕での私の経験によって確かに形作られています。私は、ソフトウェア開発の他の領域があることを認識しています。特に、産業用および/または組み込みシステムの開発では、世界が異なって見える場合があります。
MDSD はまだコード生成に結びつきすぎていると思います。
コード生成は、コードに多くのノイズが含まれている場合や非常に反復的な場合にのみ役立ちます。言い換えれば、コードが本質的な複雑さに主に集中できず、偶発的な複雑さで汚染されている場合です。
私の意見では、現在のプラットフォームとフレームワークの傾向は、偶発的な複雑さを取り除き、アプリケーション コードを本質的な複雑さに集中させることです。
したがって、これらの新しいプラットフォーム/フレームワークは、MDSD 運動の帆から多くの風を吹き飛ばします。
DSL (テキスト DSL) は、本質的な複雑さにのみ焦点を合わせることを可能にしようとするもう 1 つの傾向です。DSL はコード生成のソースとして使用できますが、主にコード生成に関連付けられているわけではありません。DSL (特に内部 DSL) は基本的に、実行時に解釈/実行できるようにします。[実行時コード生成はその中間にある].
そのため、DSL が MDSD と一緒に言及されることがよくありますが、実際には DSL は MDSD に代わるものだと思います。また、現在の誇大宣伝を考えると、彼らは MDSD 運動から勢いを奪っています。
コードから偶発的な複雑さを最終的に取り除くという目標に到達した場合 (これは架空のものであることは承知しています)、ビジネス上の問題のテキスト モデルに到達したことになります。これ以上単純化することはできません!
素敵なボックスやダイアグラムは、抽象化レベルの別の単純化や昇格を提供しません! それらは視覚化には適しているかもしれませんが、それでも疑問です. 複雑さを把握するのに、絵は常に最良の表現であるとは限りません!
さらに、MDSD に関連するツールの現在の状態は、別のレベルの偶発的な複雑さ (同期、差分/マージ、リファクタリングなどを考えてください) を追加し、単純化の最終目標を基本的に無効にします!
私の理論の実例として、次の ActiveRecord モデルを見てください。
class Firm < ActiveRecord::Base
has_many :clients
has_one :account
belongs_to :conglomorate
end
これ以上単純化できないと思います。また、ボックスと線によるグラフィカルな表現は単純化されず、これ以上の利便性は提供されません (レイアウト、リファクタリング、検索、差分などについて考えてみてください)。