1

うまくいけば、この質問はあまり一般的ではありません:

従来、MDSDは、モデル仕様をコンパイル可能なプログラムのソースに変換することとして定義されていました。

これに加えて、モデルを解釈することができます。

通常、解釈は遅くなる傾向がありますが、更新されたモデルの展開はより簡単になる可能性があります。

一般的に:なぜMDSDを使用してモデルをコンパイルするのでしょうか?いつモデルを解釈する必要がありますか?

4

2 に答える 2

1

あなたが話しているのは「実行可能な仕様」です。これは、仕様が完全な場合に機能します(たとえば、すべてのケースをカバーします。現在の多くの「モデル」は完全ではないか、途中に追加のJavaソースコードテキストがあるためにのみ完全であり、簡単に解釈できません)。 、そしてあなたのインタプリタは十分に速いので、ユーザーベースは気にしません。

しかし、それは摩擦です。コンパイラが存在する理由は、仕様の解釈が通常、コンパイルされた同等のものより100倍遅いためです。(実際にCインタープリターを見たり使用したりしたことがありますか?)

「モデル」を実行する人はあまりいません。彼らは皆、インタプリタが遅すぎると信じているか、モデルの不完全性/低レベルのソースコードインピーダンスの不一致に悩まされていると思います。

于 2011-04-26T23:44:59.033 に答える
0

どちらの戦略も、特定の状況下で有効で価値があります。

可能であれば、モデルの解釈戦略は、コンパイルされたものよりもおそらく優れています。再コンパイルやデプロイを行わずに、永続化されたモデルを変更して、デプロイされたアプリケーションの動作を変更するだけだからです。

ただし、次の場合は、おそらくコンパイル戦略を使用する必要があります。

  • モデルで必要な現実を100%表現することはできません(または望まない)。この場合、生成されたコード内に手動コードを記述したいと思うでしょう。
  • パフォーマンスはアプリケーションの重要な問題です

私は最近、GUIモデルエディターを開発し、そのモデルをその場で解釈して、完全に機能するフォームエディターをレンダリングしました。パフォーマンスは問題ではありませんでしたが、それでもこれらのGUIのコードは生成されました。これは、数千のパラメーター(宇宙飛行の動的アプリケーション用)を備えた巨大なGUIと、追加のソースコードを完全に実装する必要のある多くのカスタムUI動作があったためです。

于 2018-04-20T15:14:00.327 に答える