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

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

相反する目的を持つモデル図

 連載の第1回でも書きましたが、モデリングは目的を絞って描くべきです。例えば、概念モデルとコード生成までを考慮した実装モデルを一緒に描くのは問題です。失敗例の代表的なものになるでしょう。

 今までに幾つかの失敗例を紹介しましたが、相反する目的を持つモデル図の失敗例が一番多くなっています。蜘蛛の巣のモデル図は1回描いてしまえば、まわりから怒られて、二度と描かなくなるでしょう。しかし相反する目的を持つモデル図は何度でも描いてしまう失敗例です。

 どうしてこうなってしまうかも簡単で、モデル図を説明するときに、どんなところからの質問(敵の攻撃)にも耐えられるように、何でもかんでも入れてしまうからです。そしてそれが「成功」してしまうからです。そしてこの成功がさらに複数の目的をモデル図に入れて最終的には蜘蛛の巣にしてしまうかも知れません(ここは極端に言ってしまいました)。この様子を図9に示します。まるでヨロイを何重にも身に着けている戦士のようです。重いモデルです。軽量ではありません。

図9. モデルを守るヨロイ 図9. モデルを守るヨロイ

 このようにならないためには、レビューではどのような観点で何を見て、「何を見ないか」を明確にすることです。概念モデルのレビューのときは実装レベルの質問はもちろん、分析レベルの質問をしてはいけません。ここは一重にレビュアの責任です。

 モデラーは「目的が違えばモデル図は違う」ということを胸に秘めてモデル図を作成してください。軽量級のモデルを目指してください。

モデル化と抽象化を勘違いしているモデル図

 連載の第1回で、モデルとは興味あるところ以外を捨象して抽象化することであると言いました。モデル図には抽象化は重要です。議論の対象にしないところは捨てて描くべきです。しかしモデリング(モデル化)するときに必要なところの情報を捨てて曖昧にすることではありません。モデル化と抽象化(一般化)は違います。モデル図の失敗例として、議論で必要なところの情報を捨ててしまって、曖昧にしているものがあります。モデリングのときに抽象化(一般化)したつもりなのですが駄目です。

図10. モデル化と抽象化 図10. モデル化と抽象化

 極端に言えば、概念モデルのときでさえ、議論で必要な箇所はどしどし具体的に描くべきです。他のモデルと詳細度や粒度が大きく違っていても議論に必要であれば、詳細を書き込むべきです。

 この失敗例の原因はモデル化と抽象化を履き違えたということが本質ですが、もっと卑近な原因としては、「モデル図に描くのが面倒だから」というものがあります。モデル化で抽象化するのだから、面倒なところはうっちゃってしまおうという考えです。しかし実は面倒な部分こそが重要なことが多いです。簡単な繰り返しが多数あるときは、確かに重要ではないかもしれません。このように理由があれば別ですが、面倒な場所はモデリングするように考えてください。抽象化という言葉の裏で、物事を曖昧にしないようにしてください。

 そしてこの失敗をしないためのコツは「最初の1回は、抽象化せずにそのままモデリングする」、そして「それが意味がない、情報量がないものであれば、次に捨象して抽象化する」ことです。

Copyright © ITmedia, Inc. All Rights Reserved.