
REQ制約のベン図が分からない
この記事は「書きたかった一人アドベントカレンダー、リキッドルームに」14日目の記事です。
原因結果グラフと呼ばれるものを書いたことはありますか?
私は先日初めて書きました。
(すみませんが原因結果グラフが何かの説明は全部省略します)
詳細は下記の「ソフトウェアテスト技法ドリル」の45~77ページを読んでみてください。
https://www.amazon.co.jp/dp/4817193603
写経でCEGTestでちょっと書いてみるだけでも「なるほどー」となります。
この原因結果グラフ、条件の関係(例えば少なくとも1個だけは真じゃないとダメとか)を表せる制約というものがあって
それをベン図で書いたり条件一覧で書いたりすると分かりやすいのです。

私も御多分に漏れずそれを読んで理解していました。
下記3つの制約はベン図で書かれていると分かりやすいです。
(日本語適当なので参考程度で)
①ONE制約:A、 B、Cどれか1つが真(2つ真やすべて偽は無い)

②EXCEL:ONE制約+すべて偽もある(全部偽かどれか1つだけ真か)

③INCL:全部偽ということは無い(最低1個以上真)

REQ制約をベン図で書くと本当に分からない
ここから本題です。
REQ制約とは「ある条件が真になるのに前提として真になる条件がある」みたいな、前提条件のこと(というかREQが英単語の「前提」の省略形)です。
文だとわかりやすいですが、これのベン図が下記です。

(;^ω^)どういうこと??
ちなみに表で書くと以下だそうです。
(「ソフトウェアテスト技法ドリル」P69の図3.19 REQ制約より引用)

(;;^ω^)AがFalseがAでAがTrueがN/A???逆なのでは・・
この本のREQ制約の説明(P57~58)に載っている原因結果グラフが微妙にこのREQ制約の図とあっていないので原因結果グラフを書いてみたりもしました。(注、間違っているような気がします)

(;;;^ω^)ますますわからなくなった。
制約について先人の知識を借りて調べてもみました。・・
(内容は滅茶苦茶わかりやすそうなのに私の理解力がついていけない)
表のわからなさを分解してみます。
ノード名:わかる
それぞれのノードのT/F:わかる
制約結果が成立:??(AがTなら前提が真で成立ではないの?)
どうも私は、結果の見方について戸惑っているみたいです。
ついでにいうと上記のサイトのREQ制約の表の「中間」もいまいち理解できていないです。。
さらに先人の知識を学びに・・
原因結果グラフとCEGTestに関する考察 - その3 - ソフトウェアの品質を学びまくる2.0
https://www.kzsuzuki.com/entry/52163251
このサイトのベン図の説明は多分わかりやすそう・・・そう。。(読み込み中)
、、、分からないことを言語化します。以下より引用文はこのブログより抜粋させていただきます)
こちらのブログでもAを前提条件として扱っているようにみえるのですが
A⇒B
A真B真なら真
A真B偽なら偽
A偽B真でも真
A偽B偽でも真
この真偽だと『前提条件Aが真でないと次の条件Bの判定がされない』というようにならないようにみえます。。
(Aが前提条件という理解が間違いなのかもです。でもBが真でないと…でも成り立たないですよね、、)

あとはREQのベン図の解説(同じく上記のブログより抜粋)
(A→B)∧(A→C) を表しています。白い部分は、「BかCの少なくとも一方が偽なのに、Aが真になっちゃっている」という部分です。逆にいうと、BとCがともに真になる部分と、Aが真になっていない部分は対象です。
この説明とその下に書いてあるREQ制約の原因結果グラフ、ものすごく分かりやすいように見えました(30%くらい腹落ちしかけました。雰囲気で。雰囲気で腹落ち、、、?)
REQの図はソフトウェアテスト技法ドリルに示されているものと同様です。
AからREQを経由してBへ、矢印が伸びています。これは、AがBに先立つという意味ではありません。「Aが真になるためには、Bがあらかじめ真でなくてはならない」という意味です。
この文を読むと「AがBの真になるための前提条件」というより「BがAの真になるための前提条件」のようにみえます。
つまり、ソフトウェアテスト技法ドリルの下記のベン図、これは「Aが前提条件」のベン図ではなく、「Aが真になる前提条件にBとCが真でなくてはならないベン図」だったのでしょうか?

前提条件とはいったいなんなのでしょうか。。。
私は本当にこのカオス化してしまったnoteを公開するつもりなのか・・・何も分からないまま終わります。
分からなかったことをまとめておく
・「ソフトウェアテスト技法ドリル」P69のベン図は「Aが前提条件でAが真でないとB、Cが判定されない」だったのか。その理解がそもそも間違えているのか。
・P69のベン図を原因結果グラフで書くとどうなるかが知りたい(『ソフトウェアの品質を学びまくる2.0 』に記載されている原因結果グラフ通り?)
・REQ制約が成立するとは「前提条件が真で次の条件が判定されること」?それとも「前提条件が偽で次の条件の判定がされないこと?」
・中間結果とは前提条件の判定結果のことでいいのか。
未来の自分がこれを理解していることを祈りつつ…