バグ

提供: MonoBook
移動: 案内検索

バグ英語:bug)とは、プログラム実装時の人為的ミスにより設計どおりに動かないことである。

概要[編集]

バグはいかなるプログラムにおいても必ず発生するものであり、修正には時間労働力が必要である。なんらかのシステム開発委託する際に「バグがない」という前提の見積書を書いてくる業者は売り逃げ上等、いわゆる「write once, run away」な詐欺まがいのクソ企業なので注意しよう。この問題の解決には、見積書にはデバッグにかかる工数を明記させ、また契約書でも損害賠償についてを明記しておくことが重要である。なお、下請け孫請け曾孫請けへと丸投げされまくると、中抜きによりデバッグに必要な工数が確保できなくなる。エンドユーザーに提出している見積書ITドカタ見積書が大きく相違していることも多いので、エンドユーザーは酷い丸投げがないかの開発現場の視察も重要である。

某社ではバグの発生件数が予定より上回るとやプログラマーを激怒し、下回るとデバッガーを激怒するという非常に偉い人が存在している。なお、そのどちらの場合でも日本システム開発業界における中間管理職であるシステムエンジニアは怒られる。

関連用語[編集]

バグのうち、原因や責任の所在などが不明なものを特定性の低い表現の「不具合」と呼ぶことがある。一般的に不具合という場合は、プログラム自身のみならず、ハードウェアOS、またプログラムで使用しているサードパーティ製のライブラリなどにバグがあり修正が困難な場合なども含まれる。

ソフトウェアハードウェア開発における契約文書などの法的な文書ではバグのことを「瑕疵」と記述する。

バグの原因を探す作業をデバッグといい、修正する作業をバグフィックスという。また、それを支援するツールまたは人材デバッガーという。デバッガーという場合はツールなのか人材なのか不明瞭なことが多いので文脈から読み取ることが必要である。

バグの発生状況や修正状況などの情報を管理するツールをバグトラッカーなどという。バグの再発を抑制するための再現プログラムおよび管理・自動実行ツールをユニットテストという。これら統合したシステムの総称を継続的インテグレーションツール(通称:CIツール)といい、Team Foundation Server(通称:TFS)やJenkins(旧:Hudson)などが有名である。

CIツールを使わない状況化で容易なバグフィックスを行うと、右を直すと左が壊れるという永久ループが発生し、最終的にデスマーチに発展するといわれている。ただしCIツールを使うことによる、バグ発生状況をキーボードで延々と打ち込む作業や、ユニットテストを書く作業、ナイトリビルドインパクトテストの結果をまとめる作業などを、面倒であり工数の増大とみなす者が多いのも事実である。

関連項目[編集]

参考文献[編集]