CFD法の流れ図の見つけ方

CFD法の補習会を企画中。

==

drawCFDではデシジョンテーブルを自動生成するわけではなく、作成者が「流れ」を描くことでデシジョンテーブルの1列(1ルール)が追加されていく。秋山浩一さんに教わった流れ図の描き方を下記の例題で試してみる。

1.横浜ベイクォーター
1店舗3,000円(税込)以上のお買上げで1時間無料 ※駐車券を売場でご提示ください。 2店舗目以降も各店舗3,000円(税込)以上のお買上げで 1時間の駐車サービス券をお渡しします。

2.そごう横浜店

2,000円(税込)以上のお買上げで1時間30分無料
※駐車券を売場でご提示ください。

Cfd3

# 前回の記事とはちょっとだけデシジョンテーブルの順番が違ったり、有効・無効が違いますが、描き方の例としては問題ないかと。



  1. 結果は何か

  2. 今回は駐車料金、特に「駐車料金がどれだけ無料になるか」を確認することが目的。1時間無料、1時間半無料、2時間無料、・・・、無料でないといった結果が考えられる。2時間無料以降は、N時間無料とした(Nは2以上の正数、以後も同じとする)。ということで、「N時間無料」「1時間半無料」「1時間無料」「無料でない」の4つの結果をお得な順序で上から配置した。


  3. 有効結果と無効結果を決める

  4. 4つ結果すべて有効結果ともみなせる(無料でない場合は、次にいくらになるかの処理に進むため)が、今回は「無料でない」は無効結果とした。drawCFDでは右クリックで有効結果・無効結果を切り替えられる。


  5. 横浜ベイクォーターでの買い物に関する同値図を描く

  6. 仕様ではまず、「横浜ベイクォーター」での買い物金額について言及しているので、この条件を(完全)同値分割する。

    この入力条件が引き起こす結果としては、「1時間無料券がN枚」「1時間無料券が1枚」「無料でない」の3つ。ということは同値分割も3つになりそうだ。ということで「N店舗で3000円以上買い物」「1店舗で3000円以上買い物」「どの店舗でも3000円未満の買い物」となる。文言は少し変えました。


  7. 横浜そごうでの買い物に関する同値図を描く

  8. 次に判定するのは、「横浜そごう」での買い物金額について。ここでの買い物が影響を及ぼす結果としては、「1時間半無料」「無料でない」の2種類。ということで、「2000円以上の買い物」「2000円未満の買い物」の(完全)同値分割を考えた。同じく、文言は少し変えました。


  9. 有効系同値クラス、無効系同値クラスを決める

  10. どれも有効系同値クラスとした。


  11. 流れを描く

  12. 流れ図は、結果から探していく。上に配置された結果からそこにつながる流れを以下の手順で見つけていった。


    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 無料でない



    無料でない」の結果になるのは?


    他に条件はない。ということで終了。




以上のような考え方で作成しました。最後に確かめ作業があるのだろうが、いまいちわからなかった。。。

| | コメント (8) | トラックバック (0)

CFD法で同値図の順序を変えてみた

頭痛い。

==

1.横浜ベイクォーター 1店舗3,000円(税込)以上のお買上げで1時間無料 ※駐車券を売場でご提示ください。 2店舗目以降も各店舗3,000円(税込)以上のお買上げで 1時間の駐車サービス券をお渡しします。

2.そごう横浜店
2,000円(税込)以上のお買上げで1時間30分無料
※駐車券を売場でご提示ください。

この駐車場の無料特典をCFD法で表現してみた。「横浜ベイクォーターの買い物金額」と「横浜そごうの買い物金額」の二つの同値図があるので、順番を入れ替えて2個作ってみた。


Cfd1

Cfd2

1個目のほうがデシジョンテーブルが小さい。

| | コメント (0) | トラックバック (0)

CFD法の同値図の順序を考える

CFD法は、処理順序を AND とみなして、同値図を横に並べる。テストエンジニアではなく、設計も担うエンジニアの場合は、CFDを描きながらよりよいプログラム設計を作れる可能性がある。具体的な例を使って、処理順序がデシジョンテーブルにどんな形で影響を及ぼすかを考えてみたいと思う。

横浜ベイクォーターの駐車場料金の無料サービス
横浜ベイクォーターと隣接する横浜そごうで買い物をする無料になるシステム。

1.横浜ベイクォーター 1店舗3,000円(税込)以上のお買上げで1時間無料 ※駐車券を売場でご提示ください。 2店舗目以降も各店舗3,000円(税込)以上のお買上げで 1時間の駐車サービス券をお渡しします。

2.そごう横浜店
2,000円(税込)以上のお買上げで1時間30分無料
※駐車券を売場でご提示ください。

続きはまた今度。

| | コメント (0) | トラックバック (0)