バグ
出典: フリー百科事典『ウィキペディア(Wikipedia)』
バグ(bug)とは、プログラムの製造(コーディング)上のミス・欠陥である。
プログラム開発の過程では発生したバグを探して取り除く作業が必要となり、この作業をデバッグ(debug)と呼ぶ。
ソフトウエア・ハードウエア開発における契約文書など、法的な文書ではバグのことを「瑕疵」と記述する。
プログラミング上の主なバグには、論理的な構造のバグとコーディングミスによる誤記のバグがある。
なお、ゲームなどではバグを逆に裏技として利用できることがある。
論理的なバグはプログラムの設計過程に於いて生じる物で例えば無限ループ、基本的な計算間違いなどを引き起こす。時にはシステムを暴走、ストールなどと呼ばれる症状を引き起こす事もある。
誤記によるものは、有りもしないプログラムの参照、数値計算のミスなどにを起こす。論理的なバグ同様、システムを暴走、ストールなどと呼ばれる症状を引き起こす事もある。
目次 |
[編集] 語源
語源は文字通りのbug(虫)である。コンピュータの部品として真空管とリレーが主に使われていた時代には虫が原因でコンピュータがうまく動かなくなることがしばしばあった。真空管が発する光と熱に誘われて内部に入り込んだ小さな虫がリレーに挟まれて焼死し、その炭化した死骸が原因で電流の異常な伝導が発生し装置の誤動作を招いた。
ここから転じて、プログラムの間違いを指すようになったという説が有名である。
[編集] 他説
すでに20世紀初頭の時点で、電気通信関係で不具合のことをバグと呼んでいたという説もあり、さらには、シェイクスピアの『ヘンリー四世』の中において、忌まわしきものという意味で「バグ」という単語が使われているのでそれとの関連もあるのではないかという説もある。
また、虫が直接「バグ」という語に繋がったのではなく、真空管の虫取り作業を指していた「デバッグ」がコンピュータの不具合を直す作業全般に広がって使われるようになり、コードの不具合を取る作業をデバッグと呼ぶようになったのが先であり、そこから「バグ」という語が再派生したとする説もある。すなわち、 バグ(真空管の虫) → デバッグ(虫取り) → デバッグ(不具合の修正) → バグ(コードの不備) の順である。
[編集] 外観形状
正体はプログラムの欠陥であるため「虫」としての外観は持たないが、もし「虫」として姿を現すとすればテントウムシのような甲虫ではないかと考えられており(英語のbugから)、甲虫のアイコンやボタンを備えたデバッガが存在したこともあった。
[編集] バグ管理
プログラマの格言では『バグは出ない事しか分からない』という。プログラムにバグがあるかどうかを判定する一般的な方法は存在しないので、ある程度の複雑さを持つプログラムではバグの数を0に向かって漸近する以上の事はできないのである。
実際に、近年のOSなど膨大なプログラミングを必要とするものには「バグのない物は無い」と言われている。もしバグを完全除去したものを作成しようとした場合、膨大な時間とコストがかかり、製品の開発から出荷まで膨大な時間を要してしまう。この為、多くのメーカーではある程度、バグが残っていても必要な動作が正常に行える時点で出荷している。結果、バグの発見は想像外の操作などを行った際に発見されることが多い。
『正常である』というラインは、扱う問題の重要性によって決定される。例えば銀行のオンラインシステムなどは都市基盤を支える極めて重要度の高いプログラムであるが、大体年に数度ダウンする程度が目安となる。これほどの規模のプログラムになると、一つのバグを修正するのに数億円の予算がかかるため、これ以上は時々の現場で対処した方が誰にとっても有益だろう、と考えられるからである。この場合修正したプログラムのテストも難しい事を考慮する必要がある。これまで正常に動作していた部分が、実はバグに依存していたという可能性もあり得るため、簡単に更新してしまうわけにもいかないのである。
コンシューマOSなどの場合、メーカーではこれらを定期的に修正した修正プログラムを提供している。一般的にはバージョン管理システムと呼ばれる数値で行うことが多い。近年ではバグ管理システムなどに移行している。
[編集] バグ管理システム
バグトラッキングシステムとも呼ぶ。近年、ソフトウェアの開発においてはバグの修正が重要な作業と考えられている。バグを漏らさず修正し、再発を防ぐには、バグの発見日時や発見者、再現方法、修正担当者、修正履歴、修正方法、重要度、テスト状況などの多くの情報を残し管理する必要がある。開発によっては数千という数のバグが発生し、また多数のテスト担当者や修正担当者が関わっていることを考慮すると、従来のファイルレベルの管理では追いつかなくなっている。このような背景から、バグを管理するソフトウェアである「バグ管理システム」が生まれた。
バグ管理システムは、Webサーバ上で動作し、Webブラウザ経由でアクセスできるようになっている。また電子メールとも連動し、修正時にテスト担当者やバグ報告者にメールが送信されるものもある。 主なバグ管理システムには、Bugzilla、影舞などがある。バグ管理システムは、バージョン管理システムと同様、ソフトウェアを開発する上での必須アイテムになりつつある。
[編集] 関連項目
カテゴリ: バグ | コンピュータセキュリティ