ロジックツリーでの上下の関係性の分類

少し前にTOCの勉強会が有りそこでロジックツリーを扱う機会があった。そこでも感じたことだけれど、ロジックツリーは汎用的な記法であるため、自由に書くと階層が何を表現するかこんがりがちになる。今回はその整理として、ロジックツリーで表現する上下の関係性についてまとめたいと思う。

ロジックツリーでの上下の関係性の分類

ロジックツリーの上下の関係性としては、例えば次のHas-a、Is-a、観点がある。

Has-a

上位(幹)の要素を細かく分割したものを、下位(枝)の要素として関連付ける。
例えば自転車でいうと、自動車に対し、サドル・タイヤ・フレーム・ブレーキのように構成要素で分割して下位に関連付けたツリーが、Has-aに該当する。

Is-a

上位の要素を具体化したものを、下位の要素として関連付ける。
例えば自転車で言うと、自転車に対し、マウンテンバイク・ロードレーサークロスバイクなどより具体化した構成要素を関連付けたツリーが、Is-aに該当する。

観点

上位の要素に対して、着目する特性や次元、具体化のための切り口・見地をピックアップし関連付ける。
例えば自転車で言うと、自転車に対し、重さ・メーカー・ユーザ層・耐久性・バリエーション等、着眼したい特性を関連付けたツリーが、観点の関係に該当する。

その他

それ以外の関連性もある。
例えば上位の項目を結果とし、下位の項目としてその原因を関連付ける、原因・結果の関係性でツリーを構成する使い方がある。これはWhyツリー等が該当する。また、GQMのように、上位に問題や課題、質問を置き、その下位要素として回答や対策を関連付けるような用法もある(ただWhyツリーやGQMといったものもは、観点のツリーの一種とも言えるかもしれない。GQMなら、QがMにとっての観点、というように解釈もできる)。

なお、こうした分類は1つだけ選んでツリーを作ることもできれば、複数を組み合わせて一つのツリーにまとめることもできる。

Has-a、Is-a、観点の区別が必要な理由

なおロジックツリーでは、Has-a、Is-a、観点といったものは階層ごとに明確に区別する必要がある。次のような理由があるためだ。

  • それぞれ全く別物なので、同じ階層で異なるものを混同させると、ツリーのMECE性が確保できなくなる。
  • それぞれで十分性の基準やダブリに対する許容度も変わってくる。

後者については、例えばHas-a、Is-a、観点の3つでも、十分性やダブリの扱い方について、以下のような差異が出てくる。

Has-a

Has-aの関係では漏れやダブリがわかりやすい事が多い。十分性は、構成要素をすべて洗い出せているかという観点で評価できる。
Has-aのツリーの作り方としても、構成要素をとにかく洗い出して、それをツリーで整理するボトムアップのアプローチを取れる場合が多い。

Is-a

Is-aの関係では、具体化のバリエーションが無数にあることから、十分性や漏れの評価が難しいことが多い。
Is-aのツリーを作る際は、元々の要求や目的を分析してどのような具体化・派生が必要か考えるトップダウンのアプローチと、より下位の構成要素を洗い出してからどのような抽象化や具象クラスが必要か考えるボトムアップのアプローチの両方を使ってツリーを作る必要性があることが多い。

観点

観点のツリーについては、十分性やダブリの評価が一番難しい。観点というものは無数にあるし、Is-aとの区別が難しかったり、抽象度・粒度も曖昧であることが多いためだ。また観点が直行しているかどうかの判断は普通難しいので、ある程度のダブリが許容されることもある。
なお観点のツリーを作る際は、要求や目的をブレークダウンしたり、下位の構成要素からボトムアップで観点を出したりするだけでは不十分なことがある。例えばそこでは外部から観点のモデルや標準を持ってくる、継続的にツリーを作りこんで観点を洗練させていく、プロや熟練者の知見を観点としてリストアップする、といったアプローチがしばしば有効になる。

世の中のツリーはどう区別しているか

なお、Has-a、Is-a、観点といったものは、ルールや表記で区別される場合がある。例えば以下の様な区別の方法がある。

ツリーの階層ごとに観点かHas-aかIs-aかを固定する。

区別の方法として、第二階層にはHas-aの構成要素を、第三階層には観点を、第四回層には観点をブレークダウンしたIs-aの要素を、というように、ツリーの階層ごとに何を書くかを固定して区別するものがある。
例えば典型としてはトップにゴール、次の階層に質問、その次の階層にメトリクスを置くGQMのツリーなどがある。

表記で区別する

ツリーの表記を変えて、Has-aとIs-a・観点を区別するものもある。
例えばクラシフィケーション・ツリーは、構成要素の括弧の形状で、Has-aか、観点かを区別している。
またテスト観点のモデリング手法であるNGTでは、クラス図のステレオタイプや関連の記法を用いて、Has-aか、Is-a・観点かを区別している。
またカスタマイズ性が強いものとして、マインドマップだとアイコンや線の色でツリーの階層が何を示しているか表現することもある。
このような記法による区別は、例えば観点のIs-a関係をツリーで柔軟に表現するといったことを可能にする。