オブジェクト制約言語 (OCL)
「オブジェクト制約言語」というキーワードで Google 日本語検索をかけると、2006-06-20 14:30 の時点で 465 件だった。
オブジェクト制約言語 - Google 検索
OCL の日本での普及率を考えると、この程度なのかも知れない。その中で、参考になりそうなエントリを選んでみた。
- オブジェクト制約言語(OCL)の基本 - ITmedia エンタープライズ
- オブジェクト制約言語について 応用編 - ITmedia エンタープライズ
- OCL/UML: ひよ子のきもち
- UML/MDAのためのオブジェクト制約言語OCL 第2版ってば。 - 設計と実装の狭間で。
さて、OCL について議論するためのキーワードは「厳密さ」である。モデルを記述する上で、厳密さに拘るとどうなるのか。
- 情報の伝達が正確になる (メリット)
- モデル作成者の意図が正確に表現できる
- 自動でコード生成が行える
- 言語の習得に余計な時間がかかる (デメリット)
- 概要を理解するのが容易ではない
- 開発/保守工数が増大する
理想論として OCL というアプローチが正しいのは分かる。しかし、日本でのソフトウェア開発の現場という「現実」に即しているかどうかは、また別の話になる。
1.1. について。曖昧さが残る自然言語を捨てて、厳密な人造言語で情報伝達を行うのは、仕様の伝達に関わるコミュニケーション・コストの削減として、有効なアプローチである。外国語よりも習得が容易であるのも、日本人にとって魅力である。
1.2. について。OCL4Java というツールが、既にある。実際にトライアル以上の価値があるかどうかは不明だが、トライすることだけでも価値がある。
2.1. について。厳密性に拘るということは、どうしても短く書けないということである。仕様に関する厳密な定義ではなく、概要情報が欲しいだけの場合、OCL を読み解くのに自然言語以上のコストがかかるとするなら、時間の無駄だと考えられる。OCL には、そのためにコメントという別解が用意されているが、そうするとコメントの保守のコストも考慮する必要が生じる。
2.2. について。開発と保守のありとあらゆる状況で、色々な立場の人に読まれることを想定すると、OCL はそのような用途には向いていない。習得のコストは自然言語より遥かに小さいが、開発現場において、無視できるほど小さくは無い。OCL の構文は、プログラムに近い形なので、現場の技術者ほど読み書きにかかるコストが低いと想定される。
結局、他のどんな技術とも同じで、以下のどれかを満たさないと、OCL の普及速度は上がらないだろう。
- メリットがコストを (大きく) 上回る
- 初期コストが、無視できるほど小さい
- クールな技術だという評判が広まる
現時点では、どの条件も満たしていないように思えた。今後しばらくは、この状況が続くだろう。