CFDに関するtweet拾い読み。

第4回「ソフトウェア技法ドリル」勉強会、およびその後にかわされたCFDに関するtweetを、自分の復習のためにピックアップしました。
2
イベント実況用アカウント @rin2_live

有効結果と無効結果の意味:有効結果の意味は、次の処理に対する入力になるもの。無効結果は、次の処理につながらないもの。

2011-04-02 15:06:01
Qooh0 @Qooh0

次の処理に繋がるものを有効系、次の処理につながらないものを無効系。分からなくなったら、有効系に倒す。有効系にすることで、重要な項目となり、テスト対象になるっぽい。 #drill4 間違ってたら、誰か訂正よろ。

2011-04-02 15:08:39
Kenichiro Ota @oota_ken

有効系は前の有効系の全組み合わせが必要。無効系は直接の有効無効のみの判断でよい。 #drill4

2011-04-02 15:11:56
あきやま🍠 @akiyama924

CFD法の一番凄いところは、無効系の割り切り方だと思っています。同値図が連鎖して深くなった時に、手前までの有効系の組合せと、その同値図の無効系の組合せでたとえバグがあったとしても、そもそも無効系の結果につながる原因だからいいじゃないかという発見、すごいなぁと思う。

2011-04-02 16:23:59
あきやま🍠 @akiyama924

勉強会では「何でこれで良いと言えるんだろう?(もしくは何故この優先順位で良いと松尾谷さんは考えたのか)」という点について納得いくまで議論する必要があるような気がしました。それが無いと技法に振り回されてしまいますし技法の改良が出来ないと思うから。時間が限られているから難しいけど。

2011-04-02 16:30:58
Yuko Sakai @Yuko_Ski

@akiyama924 今日の勉強会で同値クラスをどう抽出するかが気になりました。その抽出の仕方によっては、捨ててはならない無効系が途中で落ちてしまわないかと思ったので。(具体的なケースまでは浮かんでないのですが…)

2011-04-02 16:44:21
Yuko Sakai @Yuko_Ski

今日聞いたCFDの話は、先日別の方に聞いた「グレイボックスでは、テスト設計で設計書見るよ」との話しと合致する。なるほど、処理順を知らずしてテストしてしまうと、冗長なテストケースが量産される恐れもあるのね

2011-04-02 16:52:02
あきやま🍠 @akiyama924

@Yuko_Ski それは、「どうしたらシンプルで美しいプログラムが描けるようになりますか?」という質問と同じで、みんなが知っている原則はあるけど優秀なレビューアを入れたレビューをして指摘してもらうしかないです。

2011-04-02 17:30:51
あきやま🍠 @akiyama924

@Yuko_Ski というのは、例えば「同値分割」という言葉があって「分割(=排他)」だと言っているのに、自分で書くと今日のように重なっている部分と認識してしまったりするからです。だから、ドリル(演習とその勉強会などによるレビュー)が重要だと思ったのです。本を書いた動機のひとつ。

2011-04-02 17:34:20
Yuko Sakai @Yuko_Ski

@akiyama924 @mkoszk 同値クラスの抽出は、設計における分離問題と同じですね。”知ってる”と”できる”は違って、どれがよいかは場合による。 この辺の議論(繰り返しのトライ)は、テスト・設計のコラボネタでも良いテーマになりそうです。

2011-04-02 22:16:12
さすらいのレビュー屋 @mori_ryuji

CFD法の認識は何年か前の松尾谷さんの講義と変わっていなかった。無効系に落ちる無限の組み合わせをばっさり切り落とすための技法。何が有効系・無効系か、処理順序、ベン図の書き方などによってばらつく、など。

2011-04-02 22:31:29
鈴木三紀夫 @mkoszk

@Yuko_Ski @akiyama924 エンプラ系における同値分割は、お客様が業務をどのように認知しているかという問題に繋がります。ドメインをどのように見ているかによって、同値が変わります。一見すると論理的ではない分け方もあるのですが、歴史的な理由があったりいろいろなのです。

2011-04-03 01:07:11
Masaki Kase @softest

@oota_ken さんが例題にしていた映画館の割引問題を、性別判定を先にした場合。なんか、デシジョンテーブルが大きくなった。 #drill4 http://twitpic.com/4g4wcv

2011-04-03 01:07:16
拡大
鈴木三紀夫 @mkoszk

CFDの同値図は、昔、「島」って言っていました。大島、小島という言い方に慣れているので、同値図って直ぐには出てこないんです。

2011-04-03 01:13:23
Masaki Kase @softest

@mkoszk @oota_ken 「年齢条件が結果に近いとデシジョンテーブルが大きくなる」というのは「原因結果グラフの結果ノードにつながる原因数が多いとデシジョンテーブルが大きくなる」ことと似てますね。

2011-04-03 01:15:56
あきやま🍠 @akiyama924

@Yuko_Ski @mkoszk はい。そうです。違うのは、テストでは情報が無い状態で同値分割しなくてはならない場合があることです。その時には、過去バグやエラー(にしさん・河野さん提案の不具合モード)の知識が役に立ちます。

2011-04-03 07:19:03
あきやま🍠 @akiyama924

私は昔、松尾谷さんが三賢者セッションで流れの出ないCFDを書いた時にびっくりしました。閏年判定のCFDも流れが出ませんね。 http://bit.ly/dFdifG RT @Unity1004: 今回の勉強会もためになり… (cont) http://deck.ly/~pfjCz

2011-04-03 07:36:37
いこま みきお @m_ku

@akiyama924 @dsuke_yamada CFDは(実装に対応した)流れ図があるからこそテスト項目が削減できると理解していましたが違うってことなのでしょうか。そうなのであれば驚きます。)http://bit.ly/dFdifG のP43は暗黙的に流れを仮定している気も。

2011-04-03 09:24:16
山田大介 @dsuke_yamada

@m_ku @akiyama924 設計のDFD(データフロー分析)でも、流れや制御を考えると、上手に分析できません。「フロー図」という名称なのに。因果律で考えると、静的な良い構造が得られます。ここあたりが似ているのかと。流れや制御は、動的な構造図で別に書く、ことにしてます。

2011-04-03 09:44:02
いこま みきお @m_ku

設計の良否という意味では @dsuke_yamada の言われる通りですけど静的な設計にある意味ドロを加えることによってテストを抜本的に楽にする手法がCFDじゃないのかしら。論理だけだとCEGと同じ課題に突き当たりそうな。 @akiyama924

2011-04-03 09:53:47
いこま みきお @m_ku

@dsuke_yamada @akiyama924 そうか。設計のDFD/CFDとテストのCEG/CFDを対比させフローを加える事による得失をまとめると面白そう。脳内熟成の結果期待しています!

2011-04-03 11:13:38
Yuko Sakai @Yuko_Ski

設計もテストも、何をどう分割するか、その柔軟な思考が大切なのですね。昨日はすご~く勉強になりました。RT @Unity1004: CFDの同値分割、奥が深い。。流れにばかり目がいってましたが、流れがなくても無駄な分岐やテストケースが減らせるなんて。衝撃でした。

2011-04-03 12:32:58
あきやま🍠 @akiyama924

@snsk @Unity1004 @Yuko_Ski 境目は単機能かどうかです。単機能であれば一つの同値図の中に入れられるはずです。じゃあ、単機能って何よという話にはなるのですが。(^^;)

2011-04-03 13:04:50
ゆにまる @Unity1004

@snsk @Yuko_Ski 私が迷ったのはCFDの同値分割図を複数にするかどうかではなく、ベン図の交わる部分をどっちのグループとして扱うか、です。複数にするかどうかは、テストのときに書くCFDなら実装に合わせる、になるのではないでしょうか?

2011-04-03 13:05:35
しんすく(け) さん。 @snsk

@Unity1004 @Yuko_Ski &(論理積)の部分ですよね。確かに。複数にするかどうか、はさっき教えていただいた感じだと実装に合わせるというよりはどの粒度でテストしたいか?っていうテスト設計側の判断に依るのかなと私は思いました。

2011-04-03 13:08:57