凪瀬 Blog
Programming SHOT BAR

目次

Blog 利用状況
  • 投稿数 - 260
  • 記事 - 0
  • コメント - 46507
  • トラックバック - 192
ニュース
広告
  • Java開発者募集中
  • 経歴不問
  • 腕に自信のある方
  • 富山市内
  • (株)凪瀬アーキテクツ
アクセサリ
  • あわせて読みたい
凪瀬悠輝(なぎせ ゆうき)
  • Java技術者
  • お茶好き。カクテル好き。
  • 所属は(株)凪瀬アーキテクツ
  • Twitter:@nagise

書庫

日記カテゴリ

 

こちらは先の稿 プログラムは圧縮だ の実務面への分岐です。

悪魔の証明

悪魔の証明という言葉を知っていますか?
何かが「ある」ことを証明するのには、実物を持ってくればいい。 では「ない」ことを証明するにはどうしたらよいでしょうか?

すべての網羅して初めて「ない」ということが言えるのです。 「ある」ことを証明するのに比べ、「ない」ことを証明するのは非常に難しい。 例えば、「ネッシー」が存在しないことを証明しようとしたらどうすればよいでしょうか? 「写真は捏造だったし、これまで信憑性のある物証はみつかっていないんだから」 ということでは証明できません。「まだ」見つかっていないだけじゃないの?という指摘に 反論する術がないのです。

それこそネス湖を干上がらせて全てを網羅して調査して見るぐらいのことをしないと 「ない」ことの証明をすることができないのです。

さて、プログラムの話に戻ります。intの引数を2個とる場合、その組み合わせは1600京ほどに なるということを先の稿で述べました。 そして、バグが「ある」ことを証明する場合、バグの例をひとつ探し出せばよいのに対し、 バグが「ない」ことを証明するにはこの1600京のパターンすべてを網羅して検査し、 全て正常に動いたということを提示しなければなりません

そう、たったintをふたつ引数にとるだけで、バグのないことを完全に証明することが とてつもなく大変であるということがわかると思います。 1600京という数は、コンピュータで結果を比較するにしても結構な時間を必要とします。 そもそも、結果を比較するプログラムは信用できるの?比較対象となるプログラムにはバグはないの? そう言い出すと、たったこれだけのプログラムに バグがないことさえ現実的な工数では証明ができないのです!

「システムにバグがひとつも存在しないようにテストをしてくれ」 そうお客さんに言われたら、 テストの工数見積に無量大数人月を記載しても足りないことでしょう。

このような事情から、現実的な手間で、できる限りバグをなくすという方向でIT業界は工夫してきました。 未知のバグについては、いままでの検出数からの推測値を用い、概算をだすような工夫をしたりします。 しかし、これらは0に向かって徐々に近づくことはあっても、決して0にはなりません。 0に近づくに連れ、品質向上にかかる工数は逆数となって爆発的に増えるのです。

また、バグを検出したからといって全てを完全に取り除くまで修正がされるかというと そうとも限りません。 費用対効果といいますか、そのバグが深刻であればともかく、影響が軽微でかつ修正コストが 高いのであれば修正を見送ることもあります。 オープンソースのプロダクトなどでは、bugzillaなどのトラッキングシステムでバグを管理しています。 リリースがあるたびにこの一覧がクリアになる(その時点で検出されているバグが全て修正される)わけではありません。

もし、検知したバグを全て修正しないと出荷してはいけないという法律を作ったとしたら、 ドッグイヤーとも言われるIT業界の時計は勢いを失い、何十年も同一プロダクトをのんびりと使う そんな日々が訪れることでしょう。

投稿日時 : 2007年10月22日 14:13
コメント
  • # re: 完全なテストは不可能だ
    melt
    Posted @ 2007/10/22 14:54
    バグを検知しなければいいんだ!とか言ってバグ管理システムを使わずに手作業でデバッグして出荷する、とかw

    # あまり大きくないゲーム会社とかはそんな感じですが……。
  • # re: 完全なテストは不可能だ
    さかもと
    Posted @ 2007/10/22 14:57
    考えさせられるエントリです・・・。

    どこまでが可能でどこからが不可能なのか。
    どこまでが開発者の責任でどこからが・・・、とか。

    うむー、となります。
  • # re: 完全なテストは不可能だ
    凪瀬
    Posted @ 2007/10/22 15:38
    お気づきの方も多いとは思いますが、@ITの「ユーザが気づかないバグだったら出荷してもOKか?」が元ネタです。
    http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=41791&forum=12

    情報を隠匿せよ!というつもりはさらさらないですが、
    軽々しくバグを全部潰せという人はこういった情報業界の事情を知らない、もしくは理解していないと思えたので。
    理屈では分かっているつもりでも、そのスケール感に実感がないのかもしれませんね。

    むしろ、1件でもバグの存在を知ったからには出荷しないという会社は存在しないと言っても過言ではない。
    でもそれは、低品質で出荷しても構わないと考えているというわけではない、ということです。
  • # re: 完全なテストは不可能だ
    ゆーち
    Posted @ 2007/10/23 10:44
    φ(..)メモメモ...いいお話ですなぁ。

  • # 現実的なテスト
    凪瀬 Blog
    Posted @ 2007/10/24 22:21
    現実的なテスト
  • # 数学的帰納法で完全なテストを行えるか?
    凪瀬 Blog
    Posted @ 2007/11/29 15:00
    数学的帰納法で完全なテストを行えるか?
  • # thanks for the postmishertAtroro
    radiology technician
    Posted @ 2010/11/08 23:46
    I think one of your advertisements caused my internet browser to resize, you might want to put that on your blacklist.
  • # radio
    bogemi
    Posted @ 2011/09/18 5:33

    http://www.buysale.ro/anunturi/auto/alba.html - alba
  • # ロレックス 偽物 本物
    qdgrpwbkidu@live.jp
    Posted @ 2022/07/30 1:17
    ヴィトンのバッグを購入。
    新品ランクAの商品でしたが、実物を見てびっくり
    これで新品?と驚いてしまいました。
    とても綺麗で未使用品と言われても分からないくらいのバックです。
    想像を遥かに上回る美品で、妻も大喜びしてくれました。
    ネットで新品品を購入するのははじめてのことでしたが、信頼できるお店に出会えて嬉しかったです。
    次回もこちらのお店を利用したいと思います。
  • # ブランド偽物
    ipqazrmjom@ezwen.ne.jp
    Posted @ 2022/10/15 17:00
    この度は大変気持のよいお取引をさせていただき、とても嬉しく感謝します。またよろしくお願いします。ありがとうございました。(*^‐^*)
    ☆送料無料☆新品SAランク【送料無料】★ブルガリ ブルガリ★B-zero1/ビー・ゼロワンリング★Ref.AN191025★4バンド/M★750(K18YG)イエローゴールド★サイズ49★131003020★【質屋出店】【新品】
    とてもよい買い物
    この度は大変気持のよいお取引をさせていただき、とても嬉しく感謝します。またよろしくお願いします。ありがとうございました。(*^‐^*)
    ブランド偽物 https://www.b2kopi.com/product/detail.aspx-id=8489.htm
  • # ロレックス 時計 ヨットマスター
    bgbtxetjz@nifty.com
    Posted @ 2022/11/21 20:37
    初めての利用(しかも質屋さん)でしたが、とても信頼のできるショップさんだと思います。
    梱包がとても丁寧(他の方もおっしゃっていましたが、緩衝材を留めてあるテープの端を折り返して開封しやすくしてある点)、一筆箋の手書きメッセージの同封など、細やかな心配りが感じられます。本物証明書も同封され、安心しました。
    また利用したいと思います。ありがとうございました。
タイトル  
名前  
Url
コメント