人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

バグや障害のないシステムが作れない理由を証明/説明しているサイトを教えてください。

●質問者: devbankh
●カテゴリ:ビジネス・経営 コンピュータ
✍キーワード:サイト システム バグ 証明
○ 状態 :終了
└ 回答数 : 8/8件

▽最新の回答へ

1 ● jyouseki
●5ポイント

http://msugai.fc2web.com/pgm/robast.html

障害と可用性

http://www.dir.co.jp/publicity/column/050530.html

大和総研/コラム:ソフトウェア開発における課題と対策(1)〜小さなバグと大きな障害

http://versapro.blog15.fc2.com/blog-entry-509.html

NEC VersaProと自作PC 東証システム障害の真相

システムに人の手が入る部分が存在する限り、絶対にバグや障害はなくならないといえます。

◎質問者からの返答

ありがとうございます。上の2つは「障害はあるものなのよ」というのが前提になっている気が。

一番下の方向で、人為的なのを機械的にカバーする方法までつっこんで議論しているものがあればいいのですが。


2 ● quintia
●30ポイント

http://www.hatena.ne.jp/1120372952

人力検索はてな - 「ソフトウェアが正しく動作することを数学的に証明することは不可能であることが、数学的に証明されている」という話をたまに耳にしますが この証明が記述されている文章..

過去のはてなから。

こういう話題を求めているのかな? と思いましたので。

◎質問者からの返答

ありがとうございます。

数学的に証明、まではいいです。ただ説得力のある話が聞きたいな、と。数学的に言われても腑に落ちないので。


3 ● qandace
●20ポイント

http://ja.wikipedia.org/wiki/%E3%82%A2%E3%83%A9%E3%83%B3%E3%83%B...

アラン・チューリング - Wikipedia

アラン・チューリング

彼の論文で

「同様にプログラムにバグがあるかどうかを完璧に判定するプログラムも作れない。」

とされています。

◎質問者からの返答

ありがとうございます。

駄々をこねるようですが、バグ判定をするプログラムを作ってほしいのではないのです。ほしいのはバグのないプログラムなので。(私自身は動けばいい派ですが・・・)


4 ● shampoohat
●20ポイント

http://www.atmarkit.co.jp/farc/rensai/bto01/bto01.html

@IT:特集:ソフトウェアのテスト技術の現状と今後

http://itpro.nikkeibp.co.jp/free/ITPro/OPINION/20020731/1/

システム障害を引き起こす「テスト不足」の正体:ITpro

1番目の回答の人は、以前、「自分はパソコンのプロである」と自称していた人でしたね。


この人は、「システムに人の手が入る部分が存在する限り、絶対にバグや障害はなくならないといえます。」と、無根拠に適当なことを言っていますが、これは原発事故などの際に言われた「人間系を含むシステムでは、ヒューマンエラーがシステムの要因となるため、事故をなくすことはできない」あたりを適当に聞きかじって似たようなことを喋ってみたくなったということではないかと推測しています。

(ご質問の件は、システムの動作で「人手の介在しない部分」においてすら、「バグ」を完全に無くすことができない問題についてですから、あまりに関係の無い話なのですが、私は「また適当なことを書きやがって」と少し腹を立てています。尚、リンク先に罪は無いです)


さて、「バグや障害のないシステムが作れない」という一言は、次の大雑把な流れ:


1. ソフトウェアの動作の正当性を完全に保証することは数学的に無理

→ 2番目の方の回答が示すURL


2. このため、ソフトウェアのテスト技法によるテストが行われる

(ゼロにすることを保証するのではないが、ゼロに近くすることを行う)


3. 一方、ソフトウェアの複雑度に対して、検証必要なテストケースは、指数的に増大する


4. ソフトウェアテストの不足

(→ 現実の事例と結びついたWebでの説明が比較的良く見受けられる)


になる訳ですが、1.は正しいものの、だからといって品質について諦めても仕方が無いわけで、あまりまとまったWebがない感じです。

4.の部分に関するURLをつけておきます(URL1, URL2)。

「バグや障害のないシステムが作れない理由」のうち、「現実的な事柄」について説明しています。


2番目の回答の方がつけているはてな質問が、本質的に質問の興味を満たすもの(ゼロであることを保証することが困難であることの説明)であるものの、数学的な記述が多く、ピンと来づらい印象をうけるかもしれませんね。

http://oshiete1.goo.ne.jp/kotaeru.php3?q=181115

[教えて!goo] パソコンのバグはなぜ無くすことができないのか?

あと、はてなと類似したサイトでの似た質問があり、面白いなと思いましたのでつけておきます。

◎質問者からの返答

ありがとうございます。

またごねるようですが、「ソフトウェアの複雑度」がそれほどでないシステムはどうでしょう?さすがにgooのOSまでは無理っぽい感はありますが、「100ユーザー接続までなら絶対障害ないっす」と保証しきれるアプリとかないんですかね。ハードやOSでの問題以前に「バグが作れないアプリなんて作れないよ」感があるように思うのですが。


5 ● quintia
●5ポイント

http://www.hatena.ne.jp/1120372952#

人力検索はてな - 「ソフトウェアが正しく動作することを数学的に証明することは不可能であることが、数学的に証明されている」という話をたまに耳にしますが この証明が記述されている文章..

2.の回答をした者です。また同じ過去質問のURLなんですが、解説無しにURLだけ挙げてしまったのが悪かったかと思い再回答(ポイント不要です)。

この質問と回答が指している内容は(ちょっと強引に意訳して言いますが)、ある「プログラム」が正しく動くことを証明するためのテストの系(つまりテストケース表,テストシナリオ,テストプログラム)は「そのプログラム」が真に記述可能な全ての状態空間と「同じかそれよりも大きい」系でなければならない、ということです。


そしてその「テスト系」が正しくプログラムをテストできるかどうかを証明するためには「テスト系」と「同じかそれよりも大きい」系でテストしなければならない、そしてその,,,,。

という様に無限に続くはしごになってしまいます。

もちろん「テストをしても無駄」という意味ではなく、プログラムテストはそもそも「実用にあたって十分に正しいらしいが完全であるとは証明できない」宿命を背負わされていると読んでいただければ。


ということから、「人為的なのを機械的にカバーする方法までつっこんで」しまうと、その「機械的にカバーする方法」が正しいかどうかのテストは、「元のシステム」のテストよりも(おそらくは遙かに)大きなものになる、という問題が浮かび上がります。

「機械的にカバーする方法」が正しいかどうかはある程度の運用実績から判断するしかなくて、保証可能なものではないのですね。

◎質問者からの返答

ご解説ありがとうございます。

テストをテストする、よくありますよね。でもその追いかけっこを今度は人がカバー、というかこっから先は現実的に問題起きませんという保証はできないものでしょうか。

世の中全てのシステムに完璧さを求めることはないでしょう。でも、これくらいのシステムなら問題起きないんじゃねぇの?とかこんなバグぐらいちゃんとやれば分かるでしょ、みたいなので起きる問題が多そうなので。


1-5件表示/8件
4.前の5件|次5件6.
関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ