CFD法の流れ図の見つけ方
CFD法の補習会を企画中。
==
drawCFDではデシジョンテーブルを自動生成するわけではなく、作成者が「流れ」を描くことでデシジョンテーブルの1列(1ルール)が追加されていく。秋山浩一さんに教わった流れ図の描き方を下記の例題で試してみる。
1.横浜ベイクォーター
1店舗3,000円(税込)以上のお買上げで1時間無料 ※駐車券を売場でご提示ください。 2店舗目以降も各店舗3,000円(税込)以上のお買上げで 1時間の駐車サービス券をお渡しします。2.そごう横浜店
2,000円(税込)以上のお買上げで1時間30分無料
※駐車券を売場でご提示ください。
# 前回の記事とはちょっとだけデシジョンテーブルの順番が違ったり、有効・無効が違いますが、描き方の例としては問題ないかと。
- 結果は何か
- 有効結果と無効結果を決める
- 横浜ベイクォーターでの買い物に関する同値図を描く
- 横浜そごうでの買い物に関する同値図を描く
- 有効系同値クラス、無効系同値クラスを決める
- 流れを描く
今回は駐車料金、特に「駐車料金がどれだけ無料になるか」を確認することが目的。1時間無料、1時間半無料、2時間無料、・・・、無料でないといった結果が考えられる。2時間無料以降は、N時間無料とした(Nは2以上の正数、以後も同じとする)。ということで、「N時間無料」「1時間半無料」「1時間無料」「無料でない」の4つの結果をお得な順序で上から配置した。
4つ結果すべて有効結果ともみなせる(無料でない場合は、次にいくらになるかの処理に進むため)が、今回は「無料でない」は無効結果とした。drawCFDでは右クリックで有効結果・無効結果を切り替えられる。
仕様ではまず、「横浜ベイクォーター」での買い物金額について言及しているので、この条件を(完全)同値分割する。
この入力条件が引き起こす結果としては、「1時間無料券がN枚」「1時間無料券が1枚」「無料でない」の3つ。ということは同値分割も3つになりそうだ。ということで「N店舗で3000円以上買い物」「1店舗で3000円以上買い物」「どの店舗でも3000円未満の買い物」となる。文言は少し変えました。
次に判定するのは、「横浜そごう」での買い物金額について。ここでの買い物が影響を及ぼす結果としては、「1時間半無料」「無料でない」の2種類。ということで、「2000円以上の買い物」「2000円未満の買い物」の(完全)同値分割を考えた。同じく、文言は少し変えました。
どれも有効系同値クラスとした。
流れ図は、結果から探していく。上に配置された結果からそこにつながる流れを以下の手順で見つけていった。
「N時間無料」の結果になるのは?
仕様から、横浜ベイクォーターでN店舗で3000円以上の買い物をした場合、とわかる。横浜そごうでの買い物は関係しないので、
IF ベイクォーター is N店舗3000円以上
THEN N時間無料
「N時間無料」の結果になるのは?
他の条件はない。ということで「N時間無料」に結ばれる流れはこれでおしまい。
「1時間半無料」の結果になるのは?
仕様から、横浜そごうで2000円以上の買い物をした場合、とわかる。では、そのひとつ前の「ベイクォーター」同値図のどこから結ばれるか?
「N店舗3000円以上」だと、結果が「N時間無料」となるので、ありえない。
「1店舗3000円以上」だと、ありえる。ということで、
IF ベイクォーター is 1店舗3000円以上 AND 横浜そごう is 2000円以上
THEN 1時間半無料
「1時間半無料」の結果になるのは?
仕様から、横浜そごうで2000円以上の買い物をした場合、とわかる。では、そのひとつ前の「ベイクォーター」同値図のどこから結ばれるか?
「N店舗3000円以上」だと、結果が「N時間無料」となるので、ありえない。
「1店舗3000円以上」だと、ありえる。でもさっき通った。
「3000円を超えない」だと、ありえる。ということで、
IF ベイクォーター is 3000円を超えない AND 横浜そごう is 2000円以上
THEN 1時間半無料
「1時間半無料」の結果になるのは?
他の条件はない。ということで「1時間半無料」に結ばれる流れはこれでおしまい。
「1時間無料」の結果になるのは?
横浜そごうで2000円以上の買い物をした場合、1時間無料ではなくなるので、「2000円を超えない」を通ることがわかる。では、そのひとつ前の「横浜ベイクォーター」同値図のどこから結ばれるのか?
「N店舗3000円以上」だと、結果がN時間無料」となるので、ありえない。
「1店舗3000円以上」だと、ありえる。ということで、
IF ベイクォーター is 1店舗3000円以上 AND 横浜そごう is 2000円を超えない
THEN 1時間無料
「1時間無料」の結果になるのは?
横浜そごうで2000円以上の買い物をした場合、1時間無料ではなくなるので、「2000円を超えない」を通ることがわかる。では、そのひとつ前の「横浜ベイクォーター」同値図のどこから結ばれるのか?
「N店舗3000円以上」だと、結果がN時間無料」となるので、ありえない。
「1店舗3000円以上」だと、ありえる。でもさっき通った。
「3000円を超えない」だと、ありえない。ということで、他の条件はない。
「無料でない」の結果になるのは?
横浜そごうで2000円以上の買い物をした場合、ありえないので、「2000円を超えない」を通ることがわかる。では、そのひとつ前の「横浜ベイクォーター」同値図のどこから結ばれるのか?
「N店舗3000円以上」だと、結果がN時間無料」となるので、ありえない。
「1店舗3000円以上」だと、結果が1時間無料」となるので、ありえない
「3000円を超えない」だと、ありえる。ということで、
IF ベイクォーター is 3000円を超えない AND 横浜そごう is 2000円を超えない
THEN 無料でない
「無料でない」の結果になるのは?
他に条件はない。ということで終了。
以上のような考え方で作成しました。最後に確かめ作業があるのだろうが、いまいちわからなかった。。。
| 固定リンク
この記事へのコメントは終了しました。
コメント
> 最後に確かめ作業があるのだろうが、いまいちわからなかった。。。
CFD法では特に調べる方法を指定していないように思います。
ちょっと考えてみたのですが次の方法はどうでしょうか?
1. 単機能の網羅性を確認する
CFD法では結果(有効系・無効系問わず)につながらない原因はテスト漏れとしています。
DTでは行方向に見て一度も出現しない原因が無いことを確かめることができます。
折角、DT内のTrueを1と表現しているのですから行方向の和を書いて0については赤字(太字)にするというのはどうでしょうか。
2. 2機能間の組合せ網羅性を確認する
同値図を因子、その同値図に含まれる有効系の原因ノード(同値クラス)を水準とみてHAYST法の総当り表を描いてみてはどうでしょうか。
2機能間の組合せ漏れを検出できます。
3. N機能間の組合せ網羅性を確認する
N機能間になると結果の表示が多数になり、あまりよい表現方法がありません。
チェックしたい因子を指定してもらって、4機能間までは、全組合せを表で書く方法でもよいと思います。
5機能間以上については抜けている組合せだけをリストするとよいかもしれません。
投稿: あきやま | 2011年4月 8日 (金) 15:15
>あきやまさん
コメントありがとうございます。
1つ目が一番簡単な確認方法ですね。
総当たり表はTABLEを作るだけで煙が出そう!^^
投稿: softest | 2011年4月 8日 (金) 21:41
松尾谷さんは、総当たり表をawkで一晩で作っていました(と、煽ってみたりww)。
投稿: あきやま | 2011年4月 9日 (土) 07:02
とりあえず2機能間の総当たり表を作ってみました^^
有効系・無効系の区別は別途色分けしようと思います。
同値図が途中で無効結果に向かうときに空欄になるので、
もう少し工夫が必要かもしれません。
投稿: softest | 2011年4月 9日 (土) 17:30
おぉ。ツイートされていたやつですね。
ありがとうございます。<仕事速いっ!
無効系について、総当たり表から外すかどうかは慎重に考えた方が良いと思います。両方のニーズがあるように思うからです。
有効系・無効系の区別を色分けするのは良いアイデアと思います。
ついでに、補集合(今回の例で言えば「2000円を超えない」)については、色を変えるよりも枠を取るようにすると、松尾谷さんの同値図のイメージに近づくのではないでしょうか。
投稿: あきやま | 2011年4月10日 (日) 06:10
まだ、総当たり表を作成するだけなのでツールとしては示唆まで
してあげたいですね。
> ついでに、補集合(今回の例で言えば「2000円を超えない」)については、
> 色を変えるよりも枠を取るようにすると、松尾谷さんの同値図のイメージ
> に近づくのではないでしょうか。
これは総当たり表ではなく、流れ図のほうですよね?
http://twitpic.com/4imiun
「3000円を超えない」も枠がなくなってますが、これは誤り。
「2000円を超えない」は枠をなくして補集合のようにしました。
投稿: softest | 2011年4月10日 (日) 22:22
はい。補集合は流れ図の方の話です。
(話の流れをぶった切ってましたね(^^;))
> 「2000円を超えない」は枠をなくして補集合のようにしました。
とてもいい感じです。
投稿: あきやま | 2011年4月11日 (月) 05:10
アドバイスありがとうございます。
drawCFDの正式版までは今しばらくお待ちくださいませ~。
投稿: softest | 2011年4月11日 (月) 22:37