デシジョンテーブルとは
デシジョンテーブルとは、決定表(JIS X 0125)[1]として規格が定義されています。論理関係を表形式で整理するためのツールで、行方向に条件と動作、列方向にルールの組合せます。プログラムの処理条件やポリシーなどをわかりやすく表現するために利用したり、ソフトウェアのテスト条件を整理するためにも利用されます。
図1. デシジョンテーブルの例(駐車場料金の割引計算)
デシジョンテーブルを作成する手順は一般的に以下の通りです。
- 分析対象・テスト対象の持つ条件・原因を洗い出し、それぞれを行として追加します
- 処理・動作・結果を洗い出し、それぞれ行として追加します
- 起こりうる条件・原因の組合せを作成し、それぞれ列として追加します
- 作成した列のうち、集約可能な列の組を圧縮します
- 組合せの作成と圧縮についての検算をします
デシジョンテーブルを使うことで以下のようなメリットが挙げられます。(作成中)
しかし、以下のような分析対象・テスト対象を扱う場合は注意が必要です。(作成中)
デシジョンテーブルの構成
デシジョンテーブルは以下のような要素で構成されています。
- 条件記述部(condition stub)
考慮すべき条件・原因を列挙する部分で、図2では「3000円以上10000円未満」「シネマ利用」などが該当します。制限指定の場合は、記述した語句が真であるか偽であるかが明確になるように命題形式で記述するとわかりやすいです。拡張指定の場合は、記述した語句が数値や複数選択肢を持つことが明確になるように変数形式で記述するとわかりやすいです。原因結果グラフ技法で使われるデシジョンテーブルは、制約指定のように命題形式で記述します。
図2. 条件指定部
- 動作記述部(action stub)
考慮すべき動作・結果を列挙する部分で、図3では「30分無料」「3時間30分無料」などが該当します。制限指定の場合は、記述した語句が実施されるかされないか(真であるか偽であるか)が明確になるように命題形式で記述するとわかりやすいです。拡張指定の場合は、記述した語句が実施される動作そのものや結果そのものを記述するとわかりやすいです。原因結果グラフ技法で使われるデシジョンテーブルは、制約指定のように命題形式で記述します。
図3. 動作指定部
- 条件指定部(condition entry)
それぞれの条件・原因を特定の値・意味で指定し、ひとつのルールと関連付けをします。条件指定部には表1のような書き方をします。すべての条件・原因の値・意味が指定されるとひとつのルールが定められ、自動的に動作・結果が決定されます。また、ひとつのルールは他のルールと一致しないように値・意味の組合せをとります。
JIS X 0125 では規定していませんが、列挙される条件・原因の順序が判定順序などの意味を持つ場合もあります。ただし、原因結果グラフ技法で使われるデシジョンテーブルの場合は、順序に関するREQ制約などを用いて判定順序を表現し、特にCEGTestでは列挙される順序を論理点の検証順序として利用しています。
表1. 条件指定について
表記 | ルールで関連付ける意味 | CEGTest 表記 |
---|---|---|
Y (Yes) |
この行に対応する条件・原因が真であることを意味します。 | T、t |
N (No) |
この行に対応する条件・原因が偽であることを意味します。 | F、f |
値、語句など | この行に対応する条件・原因が記述された値であったり、語句を満たすことを意味します。 | |
– # |
この行に対応する条件・原因が無関係であることを意味します。また、特に他の条件・原因の組合せによってこの行に対応する条件が起こり得ないことを「#」で表記する場合もあります。 |
図4. . 条件指定部
- 動作指定部(action entry)
それぞれの動作・結果を特定の値・意味で指定し、ひとつのルールと関連付けをします。
列挙される動作・結果の順序は、実行される動作(生じる結果)の順序を表現しています。動作指定部には表2のような書き方をします。もし、順序の異なる動作・結果がある場合には、必要な順序組合せの個数分だけ動作指定部を記述する必要があります。
表2. 動作指定について
表記 | ルールで関連付ける意味 | CEGTest 表記 |
---|---|---|
X (eXecute) |
この列に指定された条件・原因の真偽値にすべて適合する場合、この行に対応する動作・結果が生じることを意味します。 | T、t |
– | この列に指定された条件・原因の真偽値にすべて適合する場合、この行に対応する動作・結果が生じないことを意味します。 | F、f |
値、語句など | この列に指定された条件・原因の真偽値にすべて適合する場合、この行に対応する動作・結果が記述された値であったり、語句を満たすことを意味します。 |
図5. 動作指定部
デシジョンテーブルの具体例
(作成中)
参考文献・引用文献
[1] JIS X 0125 決定表, 日本規格協会