オブジェクト制約言語 (OCL)

「オブジェクト制約言語」というキーワードで Google 日本語検索をかけると、2006-06-20 14:30 の時点で 465 件だった。
オブジェクト制約言語 - Google 検索
OCL の日本での普及率を考えると、この程度なのかも知れない。その中で、参考になりそうなエントリを選んでみた。

さて、OCL について議論するためのキーワードは「厳密さ」である。モデルを記述する上で、厳密さに拘るとどうなるのか。

  1. 情報の伝達が正確になる (メリット)
    1. モデル作成者の意図が正確に表現できる
    2. 自動でコード生成が行える
  2. 言語の習得に余計な時間がかかる (デメリット)
    1. 概要を理解するのが容易ではない
    2. 開発/保守工数が増大する

理想論として OCL というアプローチが正しいのは分かる。しかし、日本でのソフトウェア開発の現場という「現実」に即しているかどうかは、また別の話になる。

1.1. について。曖昧さが残る自然言語を捨てて、厳密な人造言語で情報伝達を行うのは、仕様の伝達に関わるコミュニケーション・コストの削減として、有効なアプローチである。外国語よりも習得が容易であるのも、日本人にとって魅力である。
1.2. について。OCL4Java というツールが、既にある。実際にトライアル以上の価値があるかどうかは不明だが、トライすることだけでも価値がある。

2.1. について。厳密性に拘るということは、どうしても短く書けないということである。仕様に関する厳密な定義ではなく、概要情報が欲しいだけの場合、OCL を読み解くのに自然言語以上のコストがかかるとするなら、時間の無駄だと考えられる。OCL には、そのためにコメントという別解が用意されているが、そうするとコメントの保守のコストも考慮する必要が生じる。
2.2. について。開発と保守のありとあらゆる状況で、色々な立場の人に読まれることを想定すると、OCL はそのような用途には向いていない。習得のコストは自然言語より遥かに小さいが、開発現場において、無視できるほど小さくは無い。OCL の構文は、プログラムに近い形なので、現場の技術者ほど読み書きにかかるコストが低いと想定される。

結局、他のどんな技術とも同じで、以下のどれかを満たさないと、OCL の普及速度は上がらないだろう。

  • メリットがコストを (大きく) 上回る
  • 初期コストが、無視できるほど小さい
  • クールな技術だという評判が広まる

現時点では、どの条件も満たしていないように思えた。今後しばらくは、この状況が続くだろう。