バグ修正フェーズ
前の節でも書いたとおり、大変なのは原因を究明することです。修正はそれほど難しくはなりません。
しかし、油断は禁物です。他の簡単な作業がそうであるように、この作業もまた誤りを発生しやすい作業です。つまり「デバッグでバグる」ってやつです。
それを少なくするためガイドラインとしては、以下のものがあります。
- 修正する前に、問題を理解する
- 問題だけでなく、プログラムを理解する
- リラックスする
- 直す前に元のソースを保存する
- 問題を修正する。兆候を修正しない
- 正しい理由でコードを変更する
- 一度にいくつもの変更をしない
- 修正の結果を確認する
- 同じ様なエラーを探す
理解する、というのがいくつかありますね。「プログラムを理解する」なんていやな言葉でしょう。しかし、何万行もあるプログラムをすべてを理解し直す必要はありません。問題が発生する状況を理解したら、そこだけでなく近くで何をしているか調べるということです。ここで近く、というのは数百行程度ということです。
原因特定終了、あとは修正だけ、よっし楽勝!ささっと直すぞ!─いやそれもOKです。でも、直し間違えたらばかばかしいですよね。落ち着いていきましょう。
そのバグの修正がある程度高くつく(直し個所が多いとか、時間がかかるとか)場合、プロジェクトマネージャは、「そのエラーは致命的じゃない。とりあえずいいから、そのままいく」と言うかもしれません。だから、修正前のソースを保存する事は重要です。
修正するときは、問題の本質を捉え、その問題そのものを直すようにしましょう。その問題が引き起こす表面的な兆候にとらわれて、その兆候だけを直してはいけません。問題の本質を修正しない限り、そのバグは息を潜めて、再発の時を待ちつづけます。
ある程度のベテランになれば、いくつものバグを一度に修正することもできますし、そのほうが効果的であることもあります。
でも、たとえば、いくつも変更して、それがすべてデバッグOKならいいのですが、いくつも変更したが、いくつかのバグが直らなかった場合…原因の特定が困難になります。まずは、一つずつ修正し、再テストし確認、という手順でいきましょう。
修正したら必ずテスト。思い通りに修正されているか必ず確認しましょう。特に時間に追われて余裕がないときは、デバッグでバグってることも多くあります。
そしてバグはまとまって発生する傾向があります。同じようなバグがないかどうか、探しましょう。
探し方がわからないときは、プログラムを理解していないことが多いです。