選択関係

JIS規格を読んで、1つデシジョンテーブルを書いて見た。


お題は、「携帯電話の基本料金割引」!

動作部から、複数のテーブルへ分岐する「選択関係」のデシジョンテーブルだ。


これを1つのテーブルで表現するとかなり苦しい。
テーブルの表現をわかりやすくするために、
特定の条件にしか関連が無い条件は、外出しのテーブルにするとよいと思う。


『携帯の基本料金割引きテーブル』は2値の条件が5つあるので、
完全なテーブルだと「2×2×2×2×2=32規則」となる。


上記の図は、10の規則しか無いが
「誰でも割」「年割」「スマイルハート割引」「ガク割」は、
排他関係にある条件なので、有効な規則だけを書いている。


だから以下の図のように書き直すことも出来る。

どちらの使い方が良いかは、状況によるだろうか?

「優先割引」という括りは、テーブルを小さくするために使ってみたが
実際にはそういう括りは存在しない。

以下のような事を踏まえつつ、判断するのがよいのかもしれない。

  • 各々の条件の独立性
  • 条件の種類が増えた時のテーブルの修正し易さ
  • テーブルが使われる場面
  • 印刷して1ページに収まるか

デシジョンテーブルのJIS規格

 デシジョンテーブルは、1986年に
「JIS X 0125 決定表」という名前でJIS規格に登録されている。

ということをJaSST'09の講演資料を読んで知った。

http://www.jasst.jp/archives/jasst09e.html
からクロージングパネルにある「秋山 浩一 (富士ゼロックス)」の
資料を参照。

資料をたどっていくと日本工業標準調査会(JISC)のHPから、
デシジョンテーブルのJIS規格が閲覧できる。
#印刷はできない。


 ちなみに書店に行って1260円出せば、閲覧資料には載っていない
解説が数ページついたJIS規格の個票が購入できる。
読んで見た感想は、他の書籍で解説されている
デシジョンテーブルの内容とはテイストがかなり違うと感じた。

JIS規格の発行当時は、デシジョンテーブルから
COBOLプログラムを自動生成したり、フローチャートの代わりに
使っていてプログラミング部分でも活躍していたようだ。

そういった使い方はしなくても、書いてある表現や手法は
デシジョンテーブルを勉強する上で役に立つと思われる。

デシジョンテーブルの勉強を始める

 ソフトウェアテストには、色々なテスト技法がある。
その中でも何故か、『デシジョンテーブル』が気に入っている。

というわけで、不定期に勉強した内容を書いていこう。
#でもサボり癖があるので、更新が滞るかも。^^;


一番気に入っている『デシジョンテーブル』の定義は、以下のもの。

問題とそれに対して、取るべき行動の相互関係を明らかにした表。


 自己の意思決定を助けるため(または他者によって決定された意思を紐解く)に、
様々な条件をルールとして定義し、どう振舞えばよいか(どう振舞ったか)を
表に纏めたものと言えるだろう。

ひらたく言えば、"入力"と"出力" の組み合わせを表にしたもの。


「decision」という単語を訳すと「意思決定」になる。
ただどうも最近は、以下の住み分けになっている気がする。

  • デシジョンツリー  =「意思決定の過程を整理」
  • デシジョンテーブル =「入出力の関係を整理」


厳密な違いをきちんと理解しているわけではないが、
なんとなくそう感じているところだ。

まぁ定義については、おいおい整理し直すとしよう。