バグとは何か

バグとは何かという質問に答えられないプログラマはおそらく居ないだろう。だが、その答えは誰もが同じではない。

或る人は

「バグとは不具合である。」

と云い、或る人は

「バグとは欠陥である。」

と云い、或る人は

「バグとはエラーである。」

と云い、或る人は

「バグとは誤りである。」

と云う。

どういうことか。バグという概念が開発者の間で統一されていないのだ。

Google先生に聞いてみよう。先生の答えはこうだ。

「バグとはコンピュータプログラムに含まれる誤りや不具合のことである。」

では誤りとは何か。不具合とは何か。これもGoogle先生に聞いてみる。

「誤りとは、正しくないこと。まちがい。やり損ない。失敗。失策。不具合とは動作・調子がよくないこと。またはそのさまである」

どうも曖昧だ。ではオブジェクト指向の大家はバグをどう捉えているのか。

ダイクストラはバグは開発者達が自分らの責任を回避するために使う用語だと非難している。

「バグという用語は開発者がよそを向いている隙にどういうものか誤りが外からソフトウェアの中に入り込むモゾモゾ這い回っているというイメージを持たせて誰か他のものを責めるために(まるではじめに誤りをしたのが開発者ではなかったように思わせるために)ソフトウェア畑の人が使ったもので、説得力を欠く企てである。」

ダイクストラに同調するように、メイヤーもまたバグという用語の不明確さを指摘し他の用語で補足する必要があると云っている。

「厳密な区別を要する場合は(多少の重苦しさを増しても)もっと明確な用語で補足した方がよい。ソフトウェアの災害を表す用語としては、エラー(ソフトウェアシステム開発中になされた誤った決定)、欠陥(意図した振る舞いからシステムが逸してしまう原因となるソフトウェアシステムの不適合特性)、フォルト何らかの実行中に意図した振る舞いからシステムが逸してしまうソフトウェアシステムの有害な実行イベント)がある。因果関係は明確である。則ちエラーから欠陥が生じ欠陥からフォルトが起きる。バグは欠陥の意味を持つ事が多い(「このルーチンに他にバグが残っていないのは確かですか?」)が、非公式な議論ではフォルト(「我々はこの3週間でバグの出ない処理を実現した」)やエラー(「リストをソートせずに使ったことがバグであった」)としても使われることがある。」