検索
連載

ソフトウェア技術者のためのバグ百科事典(5)意外に多い「実装抜け」のバグ山浦恒央の“くみこみ”な話(126)(3/3 ページ)

ソフトウェア技術者に向けて、バグに関する基礎知識をまとめていく新シリーズ「バグ百科事典」。第5回は、学生のプログラミング作成を事例に「実装抜け」のバグを取り上げます。学生の事例ですが、プロも意外とやりがちなので気を付けておきましょう。

Share
Tweet
LINE
Hatena
前のページへ |       
※本記事はアフィリエイトプログラムによる収益を得ています

5.「実装抜け」バグの兆候

 プログラムが仕様通りに動作しない場合は、まず、仕様に対応するソースコードを探しましょう。次に、仕様とソースコードの対応付けを確認し、実装抜けが発生していないか確認しましょう。実装抜けは、「自動車のエンジンが掛からなかったのは、ガソリンが入っていなかったから」のように超基本的であるが故に、案外、盲点となります。機能とソースコードの対応付けを確認したら、実装抜けの心配はなく、他のバグを調べましょう。

6.「実装抜け」バグの対策

6.1 開発エンジニアの再確認

 実装抜けを防ぐには、開発エンジニアが一通りコードを書き終えた段階で、仕様をきちんと実装したか確認しましょう。再確認していると、後回しにしていたり、実装したつもりだったりの仕様が見つかることが意外に多く、驚きます(そしてがっかりします)。同僚に記述したコードの説明をする「コードインスペクション」で見つかることもあります。

6.2 仕様に基づいたテストをしよう

 当たり前の話ですが、仕様ベースのテストを確実に実施しましょう。実装抜けの検出には、複雑な異常ケースを確認する必要はなく、仕様に書いてある通りの正常ケースのテストで十分です。なお、ケーススタディーのバグも、学生が仕様ベースのテストをしていれば、バグに気づいたはずです。

7.まとめ

 以下に、実装抜けのバグをまとめます。

  • 実装抜けのバグとは、仕様に書いてある内容が実装していないバグである
  • 実装抜けの原因は「やったつもりだった」「作業を後回しにしていた」の可能性がある
  • 実装抜けが発生する場合は、期待結果通りにならない場合に発生する
  • 実装抜けを防ぐには、開発エンジニアが仕様記述の内容をコードに反映しているか確認する。その後、仕様ベースのテストを実施し、仕様通りにプログラムが動作するか確認すること

8.終わりに

 学生とプロのソフト開発の方式は異なりますが、学生もプロも同じ問題で悩むことが少なくありません。その中で、初歩的なバグの一つが実装抜けでしょう。初歩的であるが故に、一度見逃すとなかなか分かりません。今回は、実際に学生の卒業研究の指導時に発生したバグを紹介しました。このバグは、その他のバグと比べて検出しやすいのですが、実際に発生すると非常に焦ります。

 プログラムを一通り作成し終えたら、もう一度仕様を確認し、仕様通りの実装ができているか確認しましょう。もしかすると、実装したつもりで未実装のモジュールが見つかるかもしれません。

山浦先生執筆の書籍「ソフトウェア技術者のためのバグ検出ドリル」が発売!

 2019年11月27日に、山浦恒央先生が執筆した書籍「ソフトウェア技術者のためのバグ検出ドリル」が日科技連出版から発売されました。本連載「山浦恒央の“くみこみ”な話」とTechFactoryの連載「組み込みエンジニアの現場力養成演習ドリル」をベースに、大幅加筆、改訂した内容になっています。

 内容は、「デバッグの詰将棋」で、要求仕様定義、設計、コーディング、テスト、保守の5フェーズでの「バグを埋め込んだ仕様記述やソースコード」を読んで、バグをピンポイントで見つける問題集になっています。全部で31問あり、難易度は初級から上級まで、いろいろです。興味のある方は、Amazon.comや書店でチェックしてください!

【 筆者紹介 】
山浦 恒央(やまうら つねお)

東海大学 大学院 組込み技術研究科 非常勤講師(工学博士)


1977年、日立ソフトウェアエンジニアリングに入社、2006年より、東海大学情報理工学部ソフトウェア開発工学科助教授、2007年より、同大学大学院組込み技術研究科准教授、2016年より非常勤講師。

主な著書・訳書は、「Advances in Computers」 (Academic Press社、共著)、「ピープルウエア 第2版」「ソフトウェアテスト技法」「実践的プログラムテスト入門」「デスマーチ 第2版」「ソフトウエア開発プロフェッショナル」(以上、日経BP社、共訳)、「ソフトウエア開発 55の真実と10のウソ」「初めて学ぶソフトウエアメトリクス」(以上、日経BP社、翻訳)。


Copyright © ITmedia, Inc. All Rights Reserved.

前のページへ |       
ページトップに戻る