バグ(ばぐ)情報システム用語事典

bug

» 2011年11月07日 00時00分 公開
[@IT情報マネジメント編集部,@IT]

 ソフトウェアプログラムに作り込まれた欠陥、およびその欠陥によって発生するソフトウェアの誤作動をいう。

 コンピュータプログラムは人間(開発者)が作成するものである。しかしながら過ちは人の常なので、プログラムコードには必ず誤りが混入する。この誤りを含んだまま、ソフトウェアを実行すると正しく機能しないことがある。そのような「ソフトウェアコードに内在する欠陥や誤り」と「ソフトウェア製品の誤作動や機能喪失」の総体がバグである。ソフトウェア信頼性工学などでは「ソフトウェアエラー」「ソフトウェアフォールト」「ソフトウェア故障」に分解される。

 バグはソフトウェア品質に強く影響する要因であるため、ソフトウェアの作成ではバグの削減が大きなテーマとなる。ソフトウェアに潜むバグを検出するプロセスないし作業を「テスト」といい、検出されたバグを取り除く作業を「デバッグ」という。

 コード内のバグ(フォールト)を完全に除去するのは(極端に単純なプログラムを別にして)事実上不可能とみなされている。実用レベルのソフトウェア製品は十分に複雑でテスト項目が膨大となるため、有限の時間内に完全テスト(あらゆるテスト項目を網羅したテスト)を行うことができないからだ。また、バグが完全に除去されたことを証明する手段も存在しない。そのため、ソフトウェアテストの作業終了は“バグを取り終えたから”ではなく、バグが十分に少なくなったいう統計的な判定に基づいて決定される。

 このようにバグはテストによってすべて検出されるわけではないが、検出されたバグもすべてが修正されるとは限らない。テストで指摘されたバグを検出した端から修正していると、致命的なバグを修正する時間がなくなってしまう恐れがある。そこでバグ修正作業では、直すべきバグを選別し、優先順位を決めるステップを踏む。これをバグのトリアージという。

 コード内にバグ(フォールト)が残っていたとしても、システムが誤作動や機能喪失を起こすバグ(故障)が発現するとは限らない。実際のところ、多くのソフトウェア製品は既知のものを含めてバグを残したまま、リリースされている。多くのバグは、そのソフトウェアが寿命を迎えるまでに表れないともいわれているが、使用環境が多様な汎用パッケージ製品などではリリース後に修正版や修正パッチが配布されることがあるのも周知の事実である。

 デバッグや修正パッチ適用で問題となるのは、不具合を直すはずの作業が別の不具合現象を誘発するリグレッションである。リグレッションが起きていないことを検証する回帰テストは非常に工数が掛かるため、影響度が大きくないと思われるバグについては目をつむることも多い。

 ソフトウェア開発の中でバグが多く紛れ込むのは、要求や設計の段階だとされる。最終的に修正されるバグを抱えたまま開発作業を進めると、そのバグを含んだ部分への作業は無駄になるので、バグは発生した段階で即座に検出・修正することが望ましい。初期段階で混入したバグを後工程で対応する場合、修正コストは数倍から数十倍になるといわれている。そこでバグの低減には一般的なテスト(動的テスト)とデバッグだけではなく、ソフトウェアライフサイクルの早期から静的テストレビューなど)に取り組んだり、テストファーストなどの方法でバグの発生を抑えたりすることが効果的とされる。

 ソフトウェア開発の世界には、「バグを出さない最良の方法はコードを書かないことである」という金言がある。必要性の少ない機能やコードを増やすのは、そのソフトウェアの品質とコストを悪化させるリスクにつながることをよく考えるべきだろう。

 ソフトウェア開発組織は一般に、バグという言葉の使用に慎重である。バグという表現には「開発者の誤り」という意味が色濃く含まれているが、ソフトウェアの誤作動(故障/エラー)の原因はコーディングミスばかりではないので、正規のバグ認定がされないものをバグとは呼ばない傾向にある。開発者と利用者がコミュニケートする際には気を付けたい。

参考文献

▼『ソフトウェア・テストの技法〈第2版〉』 グレンフォード・J・マイヤーズ、トム・バジェット、テッド・M・トーマス、コーリー・サンドラー=著/長尾真=監訳/松尾正信=訳/近代科学社/2006年7月(『The Art of Software Testing: 2nd ed』の邦訳)

▼『The BUG』 ジョン・ロビンズ=著/すずきひろのぶ、かとうみつあき=訳/オーム社/1995年9月

▼『プロジェクトを成功に導くための実践バグ管理』 クジラ飛行机、あかさた=著/ソシム/2009年3月


Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ