「MDA モデル駆動アーキテクチャ(ISBN:4434038133)」

第3章「」MDAにおけるUMLの役割」〜第4章「単なるクラスモデリングを超えて」を読んで
UML仕様書(ISBN:4756139620)」の「セマンティクス」の理解を放り出していたことを思い出しました(苦笑)。
実はこれまで、コードを生成できるような"詳細"なモデル(UML)には懐疑的でした。そのようなモデルは要するに実装レベルのものであり、実装を表現するのならプログラミング言語のほうがいいんじゃないか、と思っていたのです。ですから、近頃よく見かける2wayツールにも関心はありませんでした。でも、間違っていたかもしれません。

プログラミング言語と同じように厳密に
中略
厳密なことと詳細なことは同じではない。

MDAとUML2.0(OCLを含む)が目指す世界では、モデルはより抽象度が高く、より多くの意味(セマンティクス)を含むことができます。それは、コードが生成できるくらいに"厳密"でなければなりません。しかし、プログラミング言語での記述のように"詳細"である必要は無い、というのです。うーん、少しカルチャーショックです。
B.Meyerの「オブジェクト指向入門(ISBN:4756100503)」で紹介された「契約による設計(DbC)」が一段と重要性を高めつつあることも感じられました。これまでは、Eiffelのようなサポートがない言語では実装レベルでフル活用というわけにはいきませんでした(JavaDocコメントの表明からコード生成するツールとかありましたね)。「デザインパターンオブジェクト指向分析/設計技法(ISBN:4883731197)」で紹介されているような、ユースケースの一部として高レベルな(抽象度の高い)ところで軽く使ったことがある程度です。でも、これからはJavaなんかよりもOCLでの記述が増える時代が来るのかもしれませんね。
ということは、プログラミング言語よりもより宣言的(形式的)な記述が必要になるわけです。これは少し不安です。これまで、「ソフトウェア仕様記述の先進技法-Z言語(ISBN:481018563x)」などで幾度か形式仕様記述に挑戦してきたものの、途中で挫折してばかりだからです。今度こそ、本気で取り組まなければいけないのかな。
やばい、MDAの本を読み終える前に違う本に手を出しかねません。(^^;