うまくいけば、この質問はあまり一般的ではありません:
従来、MDSDは、モデル仕様をコンパイル可能なプログラムのソースに変換することとして定義されていました。
これに加えて、モデルを解釈することができます。
通常、解釈は遅くなる傾向がありますが、更新されたモデルの展開はより簡単になる可能性があります。
一般的に:なぜMDSDを使用してモデルをコンパイルするのでしょうか?いつモデルを解釈する必要がありますか?
うまくいけば、この質問はあまり一般的ではありません:
従来、MDSDは、モデル仕様をコンパイル可能なプログラムのソースに変換することとして定義されていました。
これに加えて、モデルを解釈することができます。
通常、解釈は遅くなる傾向がありますが、更新されたモデルの展開はより簡単になる可能性があります。
一般的に:なぜMDSDを使用してモデルをコンパイルするのでしょうか?いつモデルを解釈する必要がありますか?
あなたが話しているのは「実行可能な仕様」です。これは、仕様が完全な場合に機能します(たとえば、すべてのケースをカバーします。現在の多くの「モデル」は完全ではないか、途中に追加のJavaソースコードテキストがあるためにのみ完全であり、簡単に解釈できません)。 、そしてあなたのインタプリタは十分に速いので、ユーザーベースは気にしません。
しかし、それは摩擦です。コンパイラが存在する理由は、仕様の解釈が通常、コンパイルされた同等のものより100倍遅いためです。(実際にCインタープリターを見たり使用したりしたことがありますか?)
「モデル」を実行する人はあまりいません。彼らは皆、インタプリタが遅すぎると信じているか、モデルの不完全性/低レベルのソースコードインピーダンスの不一致に悩まされていると思います。
どちらの戦略も、特定の状況下で有効で価値があります。
可能であれば、モデルの解釈戦略は、コンパイルされたものよりもおそらく優れています。再コンパイルやデプロイを行わずに、永続化されたモデルを変更して、デプロイされたアプリケーションの動作を変更するだけだからです。
ただし、次の場合は、おそらくコンパイル戦略を使用する必要があります。
私は最近、GUIモデルエディターを開発し、そのモデルをその場で解釈して、完全に機能するフォームエディターをレンダリングしました。パフォーマンスは問題ではありませんでしたが、それでもこれらのGUIのコードは生成されました。これは、数千のパラメーター(宇宙飛行の動的アプリケーション用)を備えた巨大なGUIと、追加のソースコードを完全に実装する必要のある多くのカスタムUI動作があったためです。