デバッグの科学的手法 [プログラマー現役続行]
「ソフトウェアエンジニアの心得」教育や講演では、論理的思考ということで、デバッグのやり方について話をします。しかし、その方法についてはスライドを準備せずに口頭で話をしてきました。本書の28章では、その点に関して、上手くまとめてありましたので、紹介します。
1. プログラムの失敗を観察するそして、次のように述べられています。
2. 観察と矛盾しない失敗の原因についての仮説を立てる
3. 仮説を使って予想する
4. 予想を実験でテストして、さらに観察する
a. 実験と観察が予想を満たすなら、仮説をさらに精緻なものにする
b. 満たさないなら、別の仮説を立てる
5. 仮説がこれ以上精緻にできなくなるまで、手順3と4を繰り返す。
あいにく、現状の対話的デバッガは科学的手法をサポートしていません。確かに、デバッガはコードをつついたり調べたりして自由に結果を得られる偉大なツールです。これはとても良いことですが、ただしそれはデバッガを系統的に使う方法をよく分かっている熟練プログラマに対してだけです。プログラマにとってはいろいろな機能に富んだデバッグツールを習うよりも、系統立ったデバッグ手法の訓練をする方が重要だと私には思えます。(ですから私は、自分がいろいろな機能を付加したデバッグツールを作ったことに罪の意識を感じています。)上記の科学的手法の手順2と3に関しては、とにかく熟考することが求められます。
キーボードを操作したい衝動に抵抗しなさい。“熟考”することは、価値ある選択肢です。そして、これらの活動を支えるものは、仮説を立てるために必要な知識です。
Brian Kernighan, Rob Pike, 『プログラミング作法』
深呼吸をして、バグの原因について“熟考”しなさい。
Andrew Hunt, David Thomas, 『達人プログラマー』
2009-07-21 06:06
nice!(0)
コメント(0)
トラックバック(0)
コメント 0