PIMとJavaの違い

かなり追い込まれているにもかかわらず,いろんな理由で,やる気レス.


PIMシミュレータという概念がある. MDAでいうところのPIM(Platform Independen model)によって,モデル化されたシステムに対し,定義されたPIMと同じ言語で記述されたテストケースを,そのまま実行することを可能とする実行エンジンを指すようだ.

PIMは,実装のための言語や,その実装を実行するシステムに依存しない言語であるから,実装依存言語に変換するまでもなく,実行でき,結果,返還するまでも無くテストケースにより確認可能な妥当性を検証できるという特徴がある.

ただ,これをみて思ったのは「これってJava?」ってことだ.つまりJavaもシステムに非依存の言語であり,システムに非依存のテストケースで,Javaで記述されたシステム実装の妥当性を検証できる.

私が思うに,PIMは「実装非依存性」をメインに主張しても,すでに広く利用されているJavaには太刀打ちできない気がする.では,PIMがJavaと比べてよい可能性とはなんであろうか.

Javaで作られたシステムを考えると,決してJavaのクラスの集合だけで,システム全体を表現せず,最近はクラス+ 既存部品(一般にはフレームワーク,これはEJBとかSpringとか)+ 既存部品のカスタマイズ(DD,DIを定義するXML)のための定義ファイル,となる場合が多い.

その場合,検証を行う場合の手続きの表現のモデルはJavaの言語仕様だけで可能であろうか? もちろんムリだ. じゃあ,どうするか,Java,既存部品,既存部品のカスタマイズ言語のすべての構造を表現可能なメタモデルがあれば,少なくとも「その構造を基にできる検証」は可能であろうという,考えが成立する.

また,Javaは,オブジェクト指向言語であり,かつそのメソッドの表現には手続き的な記述を行うという特徴を持つ.この特徴が,何らかの処理(ここでは検証という手続きをあげる)に対して不利な特徴であるかもしれないという考えも成立する.

結局,PIMの特徴として主張すべき点は,これらの考えを基盤にしてえられる.

つまり,「Javaおよびそれ以外の任意の言語をも構成できるメタモデルから成り立っていること」,「『オブジェクト指向かつ,そのメソッド表記が手続き型である』という制約に縛られない」,この2点である.
決して実装非依存であることではない.


いまいち,まとまりがない文章だが,今日はここで.

今日言いたいことは,「一時の勢いに任した挑戦的な文章の列は,必ず列を記述した人間に後悔を与える」ということだ(意味は無いが,直訳風に表現したみた).鍵括弧の内容が,わかる人には一部はわかると思う...けど,その列を見るほうも別に見たくもないのに見ざるえないだろうなあ,と思うとなあ......