モデリングはなぜ失敗するのか―― 悪いモデル、汚いモデル、意味がないモデルプロジェクトを成功させるモデリングの極意(4)(3/10 ページ)

» 2015年12月04日 07時00分 公開
[五味弘MONOist]

矛盾があるモデル図

 前の追跡できないモデル図は、単独のモデル図では問題のない、つまり矛盾を見つけられない図でした。これに対して、ここで紹介する失敗例は単独のモデル図の中に矛盾があるものです。複数のモデル図で矛盾を探さなくてもいいので、まだ見つけられやすい矛盾です。でも安心しないでください。このモデル図単独の矛盾は結構あり、そして気ずきにくいものでもあります。図6のように矛盾にもいろいろとありますので、ここでは以下に羅列していきます。

図6. 矛盾があるモデルの例 図6. 矛盾があるモデルの例

(1)ノート(コメント)と実際のモデルに矛盾がある図

 UML図ではノートにモデルの説明や意味論を日本語で記述できます。それと図に描かれてるモデルと矛盾がある失敗例です。例えばノートには重要な引数として書かれていたものが実際のモデル図には全くどこにも描かれていないか、実は別の引数になっているなどです。

 最初からノートまたはモデルにウソを書く人はいないでしょうから、このノートとモデルとの矛盾はモデルは修正してもノートを修正しなかった場合に生じます。同じことがプログラムとコメントの関係にもあります。プログラムを修正したときにコメントを修正しないとコメントがウソつきになることと同じです。

 そしてモデル図を読む人は、モデル図そのものよりも、最初にノートを信じます。ノートを信じてモデル図を理解するように努めます。同様にコメントを信じてプログラムを読みます。ここの矛盾はこれらの読者の信頼を裏切る最大の背信行為です。ささいなミスでも重大なミスですので、これからは「モデル図を修正する前にノートを修正する(プログラムを修正する前にコメントを修正する)」という習慣を身に付けてください。

(2)矢印の向きが逆、矢印のラベルがおかしい、矢印の両端の役割がおかしい図

 矢印に関する矛盾です。モデル図のオブジェクト(対象)には神経を使って間違わないように描きますが、矢印は比較的いい加減に描いてしまう傾向があります。これからこのような矛盾が生じます。矢印は登場人物(オブジェクト)の関係を記述するもので、モデル図において重要な意味を持ちます。時によってはオブジェクトよりも重要な意味を持ちます。この関係に矛盾があるとモデル図が読めなくなります。

 ここでの教訓はモデリングでは登場人物の人間関係に気を配って、物語(モデル図)を作っていってくださいということです。

(3)関係があるのに無関係としている図

 (2)ではモデル図ではオブジェクトの関係が重要であり、そのためには矢印に少しでもおかしいところがあるとも図が読めなくなると言いました。ここでもこの関係ですが、矢印の有無が実際のモデルと違う失敗例です。特に関係が有るのに矢印(または矢印なしの線)がないので無関係と思って読み進め、そのようにプログラムを実装するが、実は関係があったという場合です。関係があったにも関わらずそのような実装がされていませんから、これはもう関係があったオブジェクトの心をテレパシーで読むしかありません。もちろん無理です。

 あまりにも当たり前の関係は矢印を描かなくても関係があるのが一般常識だと思い、矢印を描かなかったということが直接の原因です(うっかり描くのを忘れてしまったという凡ミスも多いですが)。もちろんどんな当たり前の関係でも、それは外部の人にとっては一般常識でありませんし、(もし一般常識であってさえも)明示的に矢印は描く必要があります。一方、関係がないのに、関係があるかのように矢印を引いてしまう矛盾はそれほど生じないでしょう。

 モデル図において無関係という関係も重要です。無関係であれば、相互に依存しませんので、独立して実装でき、独立して動作させることもできるので、独立してテストも運用も評価もできます。実装者も別にできます。その重要な無関係性を信用できないモデル図はもう読むことはできません。

Copyright © ITmedia, Inc. All Rights Reserved.