プログラムが仕様通りに動作しない場合は、まず、仕様に対応するソースコードを探しましょう。次に、仕様とソースコードの対応付けを確認し、実装抜けが発生していないか確認しましょう。実装抜けは、「自動車のエンジンが掛からなかったのは、ガソリンが入っていなかったから」のように超基本的であるが故に、案外、盲点となります。機能とソースコードの対応付けを確認したら、実装抜けの心配はなく、他のバグを調べましょう。
実装抜けを防ぐには、開発エンジニアが一通りコードを書き終えた段階で、仕様をきちんと実装したか確認しましょう。再確認していると、後回しにしていたり、実装したつもりだったりの仕様が見つかることが意外に多く、驚きます(そしてがっかりします)。同僚に記述したコードの説明をする「コードインスペクション」で見つかることもあります。
当たり前の話ですが、仕様ベースのテストを確実に実施しましょう。実装抜けの検出には、複雑な異常ケースを確認する必要はなく、仕様に書いてある通りの正常ケースのテストで十分です。なお、ケーススタディーのバグも、学生が仕様ベースのテストをしていれば、バグに気づいたはずです。
以下に、実装抜けのバグをまとめます。
学生とプロのソフト開発の方式は異なりますが、学生もプロも同じ問題で悩むことが少なくありません。その中で、初歩的なバグの一つが実装抜けでしょう。初歩的であるが故に、一度見逃すとなかなか分かりません。今回は、実際に学生の卒業研究の指導時に発生したバグを紹介しました。このバグは、その他のバグと比べて検出しやすいのですが、実際に発生すると非常に焦ります。
プログラムを一通り作成し終えたら、もう一度仕様を確認し、仕様通りの実装ができているか確認しましょう。もしかすると、実装したつもりで未実装のモジュールが見つかるかもしれません。
2019年11月27日に、山浦恒央先生が執筆した書籍「ソフトウェア技術者のためのバグ検出ドリル」が日科技連出版から発売されました。本連載「山浦恒央の“くみこみ”な話」とTechFactoryの連載「組み込みエンジニアの現場力養成演習ドリル」をベースに、大幅加筆、改訂した内容になっています。
内容は、「デバッグの詰将棋」で、要求仕様定義、設計、コーディング、テスト、保守の5フェーズでの「バグを埋め込んだ仕様記述やソースコード」を読んで、バグをピンポイントで見つける問題集になっています。全部で31問あり、難易度は初級から上級まで、いろいろです。興味のある方は、Amazon.comや書店でチェックしてください!
東海大学 大学院 組込み技術研究科 非常勤講師(工学博士)
Copyright © ITmedia, Inc. All Rights Reserved.