ディシジョンテーブル/ツリー

機能構造化の1つの技法としてディシジョンテーブル/ディシジョンツリーがある。なんらかの「決定」というものは、条件とその組み合わせで決まる動作で構成される。これら条件と動作を対応付けた表やツリー構造で表現したモデルがディシジョンテーブルとディシジョンツリーだ。分析段階、設計段階、テスト設計など広く利用されている。動作を決定するための条件に漏れや矛盾がないかを発見しやすいモデルである。

ディシジョンテーブルとディシジョンツリーは、単に表現形式がExcelのような表であるか、図式化されたツリー構造であるかの違いだけなのだろうか。ネット上で検索しても、その用途や目的を明確に説明したものが余りないように思われる。

ディシジョンテーブルは、条件に対して異なる事象の複数の動作をマッピングできる。しかし、ディシジョンテーブルは、条件の判定順序は明確ではない。一般には記述された上から下への順で判定されると捉えてもいいが、特に規定されているものではない。複雑な条件を整理し、漏れがないかをチェックする目的でディシジョンテーブルは選択される。

一方、ディシジョンツリーは、ディシジョンテーブルと異なり、どの順番で条件を判定していくかが明確だ。条件判定と動作の順序を明確にしたい場合は、ディシジョンテーブルではなく、ツリーを選択することになる。ディシジョンテーブルをツリーで補うという場合もあるだろう。また、ディシジョンツリーは条件によって絞り込まれる事象は原則1つしか表現できない/表現すべきでない。異なる事象の動作を並べるとツリーの目的が曖昧になってしまうのだ。ディシジョンテーブルが異なる事象の複数の動作を並べても問題ないのとは対照的だ。

たとえば、顧客には一般会員、シルバー会員、ゴールド会員、非会員があるとし、会員種別によってサービスの質が異なるとしよう。また非会員は会員登録しないとサービスは利用できない。ディシジョンテーブルでは、会員種別を条件に非会員への会員登録、会員へのサービス提供という事象の異なる動作を並べても問題はない。しかし、ディシジョンツリーでは、会員登録と、会員種別によって質の異なるサービスを提供することを1つのツリーで表現しようとすると、ツリーの目的が曖昧なものになってしまう。何を決定しようとしているかが不鮮明になるのだ。

ディシジョンテーブル、ディシジョンツリーのどちらで記述してもよいのではなく、用途と目的に合わせてどちらを選択するかを決めなければならない。