皆さん、おはようございます
ソフトブレインのシニアAです。
いつもSE道場をお読み頂きありがとうございます
本日は『バグ対応の極意』です
お役に立てれば幸いです...
プログラムをデバッグしていて問題が発生した際、第1にしなければならないのは、
①仕様通りなのか、バグなのか
を切り分けることである
バグっぽい動きでも特別ルール(あるユーザ用のルートや、ケース別の特殊ルートなど)が存在するため注意する
特別ルールの対応バージョンと、問題が発生しているソフトのバージョンの相違にも注意を払う。
仕様を証明するための資料がなければ、バグとして定義する。
次に行うべきことは、
②以前にバグとして認定されていたか
ということだ。 バグ一覧表などを見て判断する
以前にバグとして認定されていた場合、発生頻度によっては対応不要のケースがあり得る。
以前に同様のバグ対応が行われていた場合、その対応バージョンと問題が発生しているソフトのバージョンの相違に注意を払う
ここでバグと向き合うことになるが、
③まずは何がバグで、どう動くべきだったのか
ということを把握する
この作業を省略してしまうことが往々にして多いが、きちんと整理して進むことが大事である
バグを見極めたら、
④バグの原因を見つける
何故その現象が起きたのか
どの変数の値に誤りがあったのかロジック、アルゴリズムに誤りはないか
などを調べ、プログラムの動きを解明する。
いよいよバグ対応だ。バグ対応には2種類ある。そのうちの1つは、
⑤根本治療
である
バグの原因となっているロジックを全て正規に変更する。
綺麗に作り変えるイメージである
バグが発生している関数だけでなく、呼び出し側まで影響が及ぶこともあり、バグ対応として規模が大きくなることを避け、あまり使われない。
そしてバグ対応のもう1つは、
⑥対処療法
である
根本治療と異なり、バグになる原因を取り除くことは避け、発生している現象を抑えるだけの対応を行う。
修正範囲は小規模に留めることが多い。
【今回の極意は次のとおり】
・根本治療は、主に仕様変更の時に使うと良い
これはデバッグの時間が改めて得られるタイミングがベストだからだ。
対処療法ばかり行っていると、スパゲッティプログラムになるから、その気が見えたら根本治療を選ぶと良い。
・対処療法はその手軽さから、皆が一般的に行う対応方法だ
しかし先人が行なった対応がメンテナンスし難いプログラムになっていたら早いうちに根本治療を行なう。
ユーザに時間をもらって根本治療を行なう勇気を持つことが、私たち技術者の役目だと私は思う
次回のSE道場をお楽しみに・・・
SE道場では、プログラミングの極意や開発の苦労話等、様々な記事を投稿しています 是非ご覧ください
1つ前の開発秘話は...