前著『ソフトウェア技術者のためのバグ検出ドリル』(2019年11月刊行)では、実際にバグを含む要求仕様書、設計書、コーディング、デバッグ、保守を具体的に取り上げ、練習問題として31問を出題した。これは、囲碁や将棋における「次の一手」問題であり、ピンポイントの場面を取り上げ、実践力を鍛えることを目的とした。
この『ソフトウェア技術者のためのバグ検出テキスト』では、「要求仕様のバグ」「テスト業務のバグ」など、バグの種類別に網羅的に取り上げ、バグ全体を俯瞰して解説する。
本書では、代表的なバグを網羅的に36個取り上げた。いずれも、プログラマなら経験し得るバグである。それぞれのバグで、どのような不具合が外部現象として起きるか、どこに注目すれば当該バグが原因であるとわかるか、そのバグを未然に防ぐ方法は何か、などについて解説した。
第1章 バグ検出テキストの使い方
本書の目的/本書の使用方法/本書の読者ターゲット/バグの本質:事象は複雑だが、
原因は単純
第2章 さまざまなバグとその対策
【バグ1】プログラムは正しいのに:データ設定のバグ/【バグ2】そもそも存在しま
せん:実装抜けのバグ/【バグ3】明日は2月29日ですよ:うるう年のバグ/
【バグ4】20歳以下と20歳未満:境界条件のバグ/【バグ5】ホウレンソウは正確に:
ログファイル作成のバグ/【バグ6】コンピュータが足し算を間違える:数値演算の
バグ/【バグ7】不眠不休で頑張っても:実行速度のバグ/【バグ8】古典的な誤
字脱字:コーディングのバグ/【バグ9】そもそもコンパイルが通らない:
コンパイルのエラー/【バグ10】なぜか動かない:作業手順ミスによるバグ/
【バグ11】バグを再現できない:再現条件がわかればバグの90%は解決/
【バグ12】試験問題にも誤りはある:テスト業務のバグ/【バグ13】「開かずの
間」的ソースコード:デッドコードのバグ/【バグ14】別のマシンで動かない:
互換性のバグ/【バグ15】「外国語」が入ってる:文字列処理のバグ/【バグ16】
両者はわかり合えない?:業務知識の欠如によるバグ/【バグ17】書いてあることが
違っている:設計書のバグ/【バグ18】再利用:再利用時に発生するバグ/
【バグ19】模擬試験は模擬試験シミュレータと実機の相違/【バグ20】私の環境では
動いています:動作環境のバグ/【バグ21】最後は異常処理へ向かってしまった:
異常処理のバグ/【バグ22】「カワイイ」は本当に「カワイイ」か:画面のバグ/
【バグ23】真面目に設計していますか:文書作成のバグ/【バグ24】新しいモノが大
好き:自作の自動化ソフトの罠/【バグ25】品行方正なバグ:バグの規則性/
【バグ26】重箱の隅をつつく:異常系を見落とすバグ/【バグ27】人間が空中を歩い
てもOK:ゲームのバグ/【バグ28】標準は標準ではない:標準関数の限界/
【バグ29】タイプライターの名残:改行コードのバグ/【バグ30】ゴミ屋敷にならな
いように:作業ファイルに気をつけろ/【バグ31】伝説のバグ「西暦2000年問題」の
原因:カウンタに気をつけろ/【バグ32】60度は60℃ではない:単位の誤解/
【バグ33】プロジェクトで開発することの難しさ:昔のバグが復活する/【バグ34】
90度回せと言われたら?:言語の誤解/【バグ35】原因がわかっても解決できない最
難関のバグ?:要求仕様のバグ/【バグ36】たかが1円されど1円:消費税計算のバ
グ
第3章 バグ概論
バグの特定手順/バグの未然防止/デバッグの具体的な方法/バグの再現性/
バグを見つける心構え