プラットフォームに依存しないの間違い
2003年9月12日
モデル駆動アーキテクチャ(MDA)に関する主な説明の1つは、プラットフォームに依存しないモデル(PIM)でシステムを開発して、.NETやJavaなどのテクノロジー用のプラットフォーム固有モデル(PSM)に変換できるというものだ。注意深い読者はこう言うはずだ。「ちょっと待って、Javaのメリットはプラットフォームに依存しないことではなかったのか?プラットフォームに依存しないテクノロジーを使用して、別のプラットフォームに依存しないテクノロジーを生成するのはなぜ?」
プラットフォームに依存しないことを考えるには、最初に「プラットフォーム」という用語の意味を決めなければならない。Javaなどのテクノロジーに関わる人にとって、プラットフォームとはハードウェアとオペレーティングシステムを意味します。私は自分のWindowsボックスで記述されたJavaプログラムを取得して、UNIXボックスでほとんどまたはまったく問題なく実行できます。つまり、私が慣れているのは、その形態のプラットフォーム非依存性です。
MDAがプラットフォーム非依存性について示すとき、プログラミング環境自体をプラットフォームとして扱っています。これは完全なナンセンスです。MDAは多数のOMG標準(UML、MOF、XMI、CWMなど)を使用しており、これらの標準はすべて、Javaスタック(あるいはそれとは関連しない.NETスタック)と同じくらい重要なプラットフォームです。行っていることは、単に1つの(ハードウェア/OS)プラットフォーム非依存プログラミング環境を別のものと交換しているだけです。独立性が増すことはありません。
実際、さらに悪い状態になる可能性すらあります。プログラマーが書く最も単純なプログラムであるHello Worldを見てみましょう。OMG PIM標準プラットフォームでは、それを行うにはどうすればよいでしょうか?できません。OMG PIM標準には定義されたI/Oライブラリがないからです。プラットフォーム固有の何かを呼び出すか、自前のライブラリをロールする必要があります。当然、それは標準ではありません。
これだけではMDAが時間の無駄であるということにはなりません。MDAメッセージには、他にも潜在的な利点があります。しかし、プラットフォーム非依存性の主張には根拠がありません。