原因結果グラフ デシジョンテーブル作成
#2007/03/12 コメントにあるとおり一部デシジョンテーブルに誤りがありますのであとで修正しますー。
#2007/03/16 【改】原因結果グラフ デシジョンテーブル作成で再度チャレンジしてみました!
==
さて、自分で問題を作ってデシジョンテーブルまで作成する、という勉強も架橋に。
(1) 原因と結果の洗い出し
(2) 原因結果グラフ作成
(3) 原因結果グラフ修正
今回はこのグラフからデシジョンテーブルを作成してみる。ただし、2点だけカンニングポイント。
では、まずは前回作成したグラフは以下のとおり。
煩雑さをなくすために原因にあたる6つの条件を①~⑥とする。
1つ目の結果「正常に受信される」について。
これを成立させるためには、
①、かつ、not④、かつ、not⑤、かつ、not⑥
となるので、ここの局所的なデシジョンテーブルは、
という5つのテストケースになる。ただし、条件の割り付け方はこちらを参照させてもらいましたが、なぜそうなるのかはいまいち理解不足。もう少し勉強を進めないと。
2つ目の結果は「メールが一時拒否される」について。
これは単純である。
3つ目の結果は「メールが拒否される」についてだが、これは中間ノードaがあるので、まずはそちらに注目する。
ここでの局所的なデシジョンテーブルは
②、または、③、または、④、または、⑤
という満足条件なので、
となる。ここでいくつか考慮する点がある。まずは、制約Oが①と②と③の間に存在すること。②と③が確定しているのなら①も確定する。
また、残り2つのテストケースについては制約上ありえないケース(禁則)になる。したがってデシジョンテーブルは前半3つだけが残る。
では今度は、中間ノードaと⑥について考えてみる。
ここでは、
中間ノードa、かつ、not⑥
なので局所的なデシジョンテーブルはこんな感じ。
このテーブルに先の中間ノードを結果に持つデシジョンテーブルを埋め込むとこうなる。
こうなると、あとは不要なテストケースを削除していけばいい。下記の灰色のテストケースが不要。
すっきりさせれば出来上がり。
==
僕はこれであってると思っているんだが。。。検算の仕方ってあるのかな。
| 固定リンク
この記事へのコメントは終了しました。

コメント
最初のデシジョンテーブルの2列目が違うと思います。
投稿: ゆもつよ | 2007年3月12日 (月) 02:32
すいません。最初のデシジョンテーブルの2列目「以降」が違うと思います。
投稿: ゆもつよ | 2007年3月12日 (月) 02:34
Don't careの数からいくつのテストケースがひとつのテストケースになっているかを計算し(空欄が1つだったら2、2つだったら4、四つだったら8、、、)、その合計から検算する方法はあります。
たとえば、#6は、⑥がTという条件だけで結果が決まると書いてありますので、#2, #3, #4のケースを含んでいます(デシジョンテーブルの結果も同じですね)。
投稿: あきやま | 2007年3月12日 (月) 06:53
それから、中間ノードは、記号「a」ではなくて、何か適切な名前をつけることをお勧めします。
プログラムの変数と同じで得られる結果は同じでも、適切な名前をつけることでグラフの可読性が良くなります。
また、レビューもしやすくなります。
一般に、適切な名前が付かない場合は、変な中間ノードであることが多いです。
投稿: あきやま | 2007年3月12日 (月) 07:03
>ゆもつよさん
コメントありがとうございます。
ご指摘の通り真偽が裏返ってますね。。。満足する条件に否定が入っているのをうっかり見落としていました。修正してみます。
原因の表現を逆にして、
・④=差出人がBlack-Listに含まれない
・⑤=メールボックス容量に余裕がある
・⑥=メールサーバが稼動している
という形にすると否定記号がなくなってわかりやすくなってミスが少なくなるのかな、とも思いましたが、、、
投稿: softest | 2007年3月12日 (月) 10:28
>あきやまさん
Don't careなマス目(ここではハイフンのマス目か)を展開して、全組み合せ数と比較する検算方法であってますかね。
また、中間ノードにきちんとした題名?をつけるという点も気をつけてみます。その上で表記しやすく記号を割り振ったりする、というイメージで。
(今回で言うと「メールデータが拒否条件に該当する」といった題名になる、と思っています)
投稿: softest | 2007年3月12日 (月) 10:33
はい。
それぞれの列に対して、
2^b
(bはブランク=ハイフンの升目の数)を計算して、
その合計が、
2^n
(nは条件の数)になればOKです。
今回のデシジョンテーブルでは、
2^0 + 2^0 + 2^2 + 2^2 + 2^2 + 2^5
= 1 + 1 + 4 + 4 + 4 + 32
= 46
と、
2^6 = 64
が違う値なのでどこかが間違っているというように検算します。
> 中間ノードにきちんとした題名?
「中間ノード名」(そのまま(^_^;))ですね。
投稿: あきやま | 2007年3月12日 (月) 11:55
>あきやまさん
なかなか正しいデシジョンテーブルまで行き着かないです。。中間ノードを結果に取るDTと中間ノードを原因に取るTDの結びつけ(結合?)が難しいです。
うーむ。
投稿: softest | 2007年3月13日 (火) 09:27