ソフトウェア技術者のためのバグ百科事典(5)意外に多い「実装抜け」のバグ:山浦恒央の“くみこみ”な話(126)(3/3 ページ)
ソフトウェア技術者に向けて、バグに関する基礎知識をまとめていく新シリーズ「バグ百科事典」。第5回は、学生のプログラミング作成を事例に「実装抜け」のバグを取り上げます。学生の事例ですが、プロも意外とやりがちなので気を付けておきましょう。
5.「実装抜け」バグの兆候
プログラムが仕様通りに動作しない場合は、まず、仕様に対応するソースコードを探しましょう。次に、仕様とソースコードの対応付けを確認し、実装抜けが発生していないか確認しましょう。実装抜けは、「自動車のエンジンが掛からなかったのは、ガソリンが入っていなかったから」のように超基本的であるが故に、案外、盲点となります。機能とソースコードの対応付けを確認したら、実装抜けの心配はなく、他のバグを調べましょう。
6.「実装抜け」バグの対策
6.1 開発エンジニアの再確認
実装抜けを防ぐには、開発エンジニアが一通りコードを書き終えた段階で、仕様をきちんと実装したか確認しましょう。再確認していると、後回しにしていたり、実装したつもりだったりの仕様が見つかることが意外に多く、驚きます(そしてがっかりします)。同僚に記述したコードの説明をする「コードインスペクション」で見つかることもあります。
6.2 仕様に基づいたテストをしよう
当たり前の話ですが、仕様ベースのテストを確実に実施しましょう。実装抜けの検出には、複雑な異常ケースを確認する必要はなく、仕様に書いてある通りの正常ケースのテストで十分です。なお、ケーススタディーのバグも、学生が仕様ベースのテストをしていれば、バグに気づいたはずです。
7.まとめ
以下に、実装抜けのバグをまとめます。
- 実装抜けのバグとは、仕様に書いてある内容が実装していないバグである
- 実装抜けの原因は「やったつもりだった」「作業を後回しにしていた」の可能性がある
- 実装抜けが発生する場合は、期待結果通りにならない場合に発生する
- 実装抜けを防ぐには、開発エンジニアが仕様記述の内容をコードに反映しているか確認する。その後、仕様ベースのテストを実施し、仕様通りにプログラムが動作するか確認すること
8.終わりに
学生とプロのソフト開発の方式は異なりますが、学生もプロも同じ問題で悩むことが少なくありません。その中で、初歩的なバグの一つが実装抜けでしょう。初歩的であるが故に、一度見逃すとなかなか分かりません。今回は、実際に学生の卒業研究の指導時に発生したバグを紹介しました。このバグは、その他のバグと比べて検出しやすいのですが、実際に発生すると非常に焦ります。
プログラムを一通り作成し終えたら、もう一度仕様を確認し、仕様通りの実装ができているか確認しましょう。もしかすると、実装したつもりで未実装のモジュールが見つかるかもしれません。
山浦先生執筆の書籍「ソフトウェア技術者のためのバグ検出ドリル」が発売!
2019年11月27日に、山浦恒央先生が執筆した書籍「ソフトウェア技術者のためのバグ検出ドリル」が日科技連出版から発売されました。本連載「山浦恒央の“くみこみ”な話」とTechFactoryの連載「組み込みエンジニアの現場力養成演習ドリル」をベースに、大幅加筆、改訂した内容になっています。
内容は、「デバッグの詰将棋」で、要求仕様定義、設計、コーディング、テスト、保守の5フェーズでの「バグを埋め込んだ仕様記述やソースコード」を読んで、バグをピンポイントで見つける問題集になっています。全部で31問あり、難易度は初級から上級まで、いろいろです。興味のある方は、Amazon.comや書店でチェックしてください!
東海大学 大学院 組込み技術研究科 非常勤講師(工学博士)
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- ≫連載「山浦恒央の“くみこみ”な話」バックナンバー
- ソフトウェア技術者のためのバグ百科事典(4)Excelがバグの原因に!?
ソフトウェア技術者に向けて、バグに関する基礎知識をまとめていく新シリーズ「バグ百科事典」。第4回は、前回に続き「データ入力ミスのバグ」について解説します。Excelのように日頃使う開発ツールもバグの原因になり得るのです。 - ソフトウェア技術者のためのバグ百科事典(3)意外に厄介なデータ入力ミスのバグ
ソフトウェア技術者に向けて、バグに関する基礎知識をまとめていく新シリーズ「バグ百科事典」。第3回は、ある意味プログラマーにとって理不尽で、意外に厄介でもある「データ入力ミスのバグ」について解説します。 - ソフトウェア技術者のためのバグ百科事典(2)まだあるぞ、うるう年バグ
ソフトウェア技術者に向けて、バグに関する基礎知識をまとめていく新シリーズ「バグ百科事典」が始まります。第2回は、前回に続き「うるう年バグ」について解説します。 - ソフトウェア技術者のためのバグ百科事典(1)うるう年
ソフトウェア技術者に向けて、バグに関する基礎知識をまとめていく新シリーズ「バグ百科事典」が始まります。記念すべき第1回は、超常連バグである「うるう年バグ」を取り上げます。 - バグ検出ドリル(21)「三角形判定」のテスト項目を設計できますか【解答編】
バグは至るところに、しかも堂々と潜んでおり、自信満々なプログラマーほど、目の前のバグに気付かないものです。「バグ検出ドリル」の第20回と第21回は、「三角形を判定」するプログラムのテスト項目設計がテーマです。前回の出題編から、今回は解答編になります。