バグ
バグ(英語:bug)とは、プログラムの実装時の人為的ミスにより設計どおりに動かないことである。
概要
バグはいかなるプログラムにおいても必ず発生するものである。
某社ではバグの発生件数が予定より上回るとやプログラマーを激怒し、下回るとデバッガーを激怒するという非常に偉い人が存在している。なお、そのどちらの場合でも日本のシステム開発業界における中間管理職であるシステムエンジニアは怒られる。
関連用語
バグのうち、原因や責任の所在などが不明なものを特定性の低い表現の「不具合」と呼ぶことがある。一般的に不具合という場合は、プログラム自身のみならず、ハードウェアやOS、またプログラムで使用しているサードパーティ製のライブラリなどにバグがあり修正が困難な場合なども含まれる。
ソフトウェアやハードウェアの開発における契約文書などの法的な文書ではバグのことを「瑕疵」と記述する。
バグの原因を探す作業をデバッグといい、修正する作業をバグフィックスという。また、それを支援するツールまたは人材をデバッガーという。デバッガーという場合はツールなのか人材なのか不明瞭なことが多いので文脈から読み取ることが必要である。
バグの発生状況や修正状況などの情報を管理するツールをバグトラッカーなどという。バグの再発を抑制するための再現プログラムおよび管理・自動実行ツールをユニットテストという。これら統合したシステムの総称を継続的インテグレーションツール(通称:CIツール)といい、Team Foundation Server(通称:TFS)やJenkins(旧:Hudson)などが有名である。
CIツールを使わない状況化で容易なバグフィックスを行うと、右を直すと左が壊れるという永久ループが発生し、最終的にデスマーチに発展するといわれている。ただしCIツールを使うことによる、バグ発生状況をキーボードで延々と打ち込む作業や、ユニットテストを書く作業、ナイトリビルドやインパクトテストの結果をまとめる作業などを、面倒であり工数の増大とみなす者が多いのも事実である。