ソフトウェアの品質を学びまくる

ソフトウェアの品質、ソフトウェアテストなどについて学んだことを記録するブログです。

今度はCFD法に手を出してみる - その1

 第4回「ソフトウェアテスト技法ドリル」勉強会のテーマは、CFD(Cause Flow Diagram)法。以前の記事で触れた原因結果グラフと同じく、デシジョンテーブルを導くための方法です。

www.kzsuzuki.com こういう、絵を描く分析が苦手なわたしですが、CEGTestを開発したNiftyの加瀬(@softest)さんが、CFDを描くためのWebアプリケーションも開発中であらせられる!(しかも見た目がカッコヨイ)ので、絶賛期待中です。

 ともあれ、勉強してみます。

フローチャートとCFD

 秋山(@akiyama924)さんの『ソフトウェアテスト技法ドリル』によると、CFD法の提唱者である松尾谷氏は、フローで論理を表すことができるようにとこの方法を発想したそうです(参考資料=PDF)。実際CFDは、本質的にはフローチャートと同じもののように思えます。違うのは、OR条件の表現。
 これまであまり意識したことがありませんでしたが、フローチャートって、菱形で表される条件文をひたすらANDで結んでいくものなんですね。たとえば閏年の判定だと、対象の年Yが、
「【4で割り切れる】が真」かつ「【100で割り切れる】が真」かつ「【400で割り切れる】が偽」
なら平年。
 このように、フローチャートはANDをベースにする表現方法なので、ORは直感的に表現しづらい。
 この点で、CFDのいいところは、ORで結ばれた命題を直感的に表現することができ、かつそれを「ズームアウト」してブラックボックス化することができることでしょうか。

宿題を解いてみる

 では、宿題を取り組んでみることにします。
政党とは、政治団体のうち、所属する国会議員(衆議院議員又は参議院議員)を5人以上有するものであるか、近い国政選挙で全国を通して2%以上の得票(選挙区・比例代表区いずれか)を得たもの [Wikipedia一部抜粋]
 原因結果グラフで考えたときと同様、ここでも命題を抽出することにします。
  • Effect:政党である
  • A:政治団体である
  • B:所属する国会議員を5人以上有する
  • C:近い国政選挙で全国を通して2%以上の得票を得ている
で、Effect⇔A∧(B∨C) となります。CFDもメインの流れはAND条件なので、ORを消すために
  • D:議員・選挙の要件を満たしている ⇔ B∨C
と置き換えましょう。それで書いたCFDは以下です*1。Excelでお絵かきすると、たくさんの方々からバカにされそうですが・・・。

1-1_5f16daf7

 このCFDから、ルートを洗いだしていくと、次のようなデシジョンテーブルになりました。

1-2_178b0b2c

 CFDではORで結ばれる命題が対等な関係のように表現されますが、実際には「B:所属する国会議員5人以上」が偽と判定されて初めて、「C:国政選挙で2%以上の得票」が評価されているというところは注意点でしょう。
 以前の記事に書いたように、原因結果グラフから作るカバレッジ表では、A∨BについてAとBの両方が真になるような真偽パターンは省略されますが、CFDでもAが真になった時点でBは評価されないので、同じことになるのですね。

行き詰まり、CEGに走る

 さて、ここで行き詰まります(よく行き詰まるブログだ)。
 Cの「国政選挙で2%以上」をさらに、
  • E:選挙区で2%以上
  • F:比例代表区で2%以上
のOR条件として表現したい。とすると、
Effect⇔A∧(B∨(E∨F))
という入れ子の論理式になります。それはそのまま、CFDのノードが入れ子になるということ・・・。
 これはちょっと、描く気がしません。
 この点では、CEGが優れていると思います。入れ子構造は、単純にツリーが左側に広がっていくだけだからです。CEGTestで描くと、こんな感じでしょうか。ノード名は適当です。

1-3_994d648e

 CFDで直感的に表現される処理の流れは、CEGにおけるREQ制約に相当するということで、「政治団体である」ことが真になった後で評価されるノードにはすべてREQ制約を付けることになります。その煩雑さが、今度はCEG側の弱点のように思います。『ドリル』の図3.3「Myersの三角形問題」も、かなり入り組んでいます。
 うーむ、どうすればいいんだ・・・。
 ということで結論は、「出題された宿題は、入れ子をどう表現していいかわからず、答えられませんでした」。劣等生すぎ。
 
 「その2」はコチラです。

www.kzsuzuki.com

*1:申し訳ありません、この解答は間違っているようなので、「その2」もご覧ください。(2011/4/4追記)