「バグ」の版間の差分
imported>Fallout New Tokyo |
|||
(他の1人の利用者による、間の1版が非表示) | |||
1行目: | 1行目: | ||
− | '''バグ''' | + | '''バグ'''([[英語]]:bug)とは、[[プログラム]]の[[実装]]時の[[人為的ミス]]により[[設計]]どおりに動かないことである。 |
== 概要 == | == 概要 == | ||
− | バグはいかなる[[プログラム]] | + | バグはいかなる[[プログラム]]においても必ず発生するものであり、修正には[[時間]]と[[労働力]]が必要である。なんらかの[[システム]]の[[開発]]を[[委託]]する際に「バグがない」という前提の[[見積書]]を書いてくる[[業者]]は売り逃げ上等、いわゆる「[[write once, run away]]」な詐欺まがいのクソ企業なので注意しよう。この問題の解決には、[[見積書]]には[[デバッグ]]にかかる[[工数]]を明記させ、また[[契約書]]でも[[損害賠償]]についてを明記しておくことが重要である。なお、[[下請け]]、[[孫請け]]、[[曾孫請け]]へと[[丸投げ]]されまくると、[[中抜き]]により[[デバッグ]]に必要な[[工数]]が確保できなくなる。[[エンドユーザー]]に提出している[[見積書]]と[[ITドカタ]]の[[見積書]]が大きく相違していることも多いので、エンドユーザーは酷い丸投げがないかの開発現場の視察も重要である。 |
某社ではバグの発生件数が予定より上回るとや[[プログラマー]]を激怒し、下回ると[[デバッガー]]を激怒するという非常に偉い人が存在している。なお、そのどちらの場合でも[[日本]]の[[システム開発業界]]における[[中間管理職]]である[[システムエンジニア]]は怒られる。 | 某社ではバグの発生件数が予定より上回るとや[[プログラマー]]を激怒し、下回ると[[デバッガー]]を激怒するという非常に偉い人が存在している。なお、そのどちらの場合でも[[日本]]の[[システム開発業界]]における[[中間管理職]]である[[システムエンジニア]]は怒られる。 |
2014年2月26日 (水) 01:06時点における最新版
概要編集
バグはいかなるプログラムにおいても必ず発生するものであり、修正には時間と労働力が必要である。なんらかのシステムの開発を委託する際に「バグがない」という前提の見積書を書いてくる業者は売り逃げ上等、いわゆる「write once, run away」な詐欺まがいのクソ企業なので注意しよう。この問題の解決には、見積書にはデバッグにかかる工数を明記させ、また契約書でも損害賠償についてを明記しておくことが重要である。なお、下請け、孫請け、曾孫請けへと丸投げされまくると、中抜きによりデバッグに必要な工数が確保できなくなる。エンドユーザーに提出している見積書とITドカタの見積書が大きく相違していることも多いので、エンドユーザーは酷い丸投げがないかの開発現場の視察も重要である。
某社ではバグの発生件数が予定より上回るとやプログラマーを激怒し、下回るとデバッガーを激怒するという非常に偉い人が存在している。なお、そのどちらの場合でも日本のシステム開発業界における中間管理職であるシステムエンジニアは怒られる。
関連用語編集
バグのうち、原因や責任の所在などが不明なものを特定性の低い表現の「不具合」と呼ぶことがある。一般的に不具合という場合は、プログラム自身のみならず、ハードウェアやOS、またプログラムで使用しているサードパーティ製のライブラリなどにバグがあり修正が困難な場合なども含まれる。
ソフトウェアやハードウェアの開発における契約文書などの法的な文書ではバグのことを「瑕疵」と記述する。
バグの原因を探す作業をデバッグといい、修正する作業をバグフィックスという。また、それを支援するツールまたは人材をデバッガーという。デバッガーという場合はツールなのか人材なのか不明瞭なことが多いので文脈から読み取ることが必要である。
バグの発生状況や修正状況などの情報を管理するツールをバグトラッカーなどという。バグの再発を抑制するための再現プログラムおよび管理・自動実行ツールをユニットテストという。これら統合したシステムの総称を継続的インテグレーションツール(通称:CIツール)といい、Team Foundation Server(通称:TFS)やJenkins(旧:Hudson)などが有名である。
CIツールを使わない状況化で容易なバグフィックスを行うと、右を直すと左が壊れるという永久ループが発生し、最終的にデスマーチに発展するといわれている。ただしCIツールを使うことによる、バグ発生状況をキーボードで延々と打ち込む作業や、ユニットテストを書く作業、ナイトリビルドやインパクトテストの結果をまとめる作業などを、面倒であり工数の増大とみなす者が多いのも事実である。