覚えておくべき制約の種類 (type of constraint)
原因結果グラフ法の覚えておくべき制約を以下に示します。
文献によっては他のものも示されていますが、以下のものだけを憶えておけば困らないです。(これだけで同じことを表現できます。)
表記方法及び図の一部はニフティの加瀬氏が作成されたCEGTestによるものを用いています。
3ノードの場合のONE制約, EXCL制約, INCL制約とデシジョンテーブル(真偽値表)
3ノードの場合のREQ制約とデシジョンテーブル(真偽値表)の例
REQ制約とMASK制約の場合は方向性が意味を持つので、二つの場合の例示になります。
3ノードの場合のMASK制約とデシジョンテーブル(真偽値表)の例
REQ制約と同じく、MASK制約の場合も方向性が意味を持つので、二つの場合の例示になります。
原因結果グラフ法における「制約 (Constraint)関係」の定義について
原因結果グラフ法が、その中で「制約」について特別に定義を与えるようなことはしていないようです。
この技法の外側で一般に「制約」と呼ばれるような関係が既にあり、それを分類したり扱うための方法を示すというスタンスであると解釈できます。
技法における「制約」の効果
- 「制約」により、あり得ない組み合わせがデシジョンテーブルに出現することを防ぐことができます。
- 「制約」を描き込むことで、デシジョンテーブルに出てくるテスト数が減ることになります。
- しかしそれは結果であって、減らすために「制約」を描き込むと考えるべきではありません。
「制約をかける」という表現
「原因ノードや中間ノードがとり得る組み合わせに制限をかけること」を「制約をかける」とも表現します。
「制約をかける」際に注意するべきこと
- この技法においては、結果ノードに対して制約はかけられないことに注意してください。
- 結果に制約をかけたくなるかもしれませんが、その場合は、代わりにそれと同じ効果が得られるような別の制約を原因や中間ノードに対してかけるようにします。
- 論理関係で表されていることについて、制約関係を改めて描き込む必要はないです。
- というか、同じことをどちらでも表現できる場合、論理関係で表すべきか、制約関係で表すべきかは、どのように実装するつもりなのかという設計によって決まることであるべきです。詳しくは長くなるので別稿に示します。
おわりに
ONE制約, EXCL制約, INCL制約については、これ以上にあまり説明を要しないように思われます。
EXCL制約の全てが偽(F)の場合を一つの選択肢として含めることで、ONE制約に置き換える手も使えます。
一方、REQ制約とMASK制約については、もう少し丁寧に説明しておくべきことがあると思っています。それぞれにそれなりの分量が必要であり、また双方の関係性についても説明する必要があるので、それについては別稿にしたいと思います。
一通り理解した人にしかわからない内容になってしまっていると思いますが、だからタイトルがチートシートになっていると了解していただけると幸いです。