連載
» 2020年04月14日 10時00分 公開

ソフトウェア技術者のためのバグ百科事典(7)要求仕様書がバグってる山浦恒央の“くみこみ”な話(128)(3/3 ページ)

[山浦恒央 東海大学 大学院 組込み技術研究科 非常勤講師(工学博士),MONOist]
前のページへ 1|2|3       

4.バグの兆候と対策

 下記に、4つのバグの兆候と対策を示します。

4.1 達成困難な要求仕様

 要求仕様と結果が合致しない場合に発生します。ただし、設計やコーディングのバグの可能性もあるため注意が必要です。

 バグが発生した場合、まずは達成可能な要求仕様という前提で、データの設定値、制御フローなどの設計・コーディングのバグを調査し、それでも原因が分からない場合、要求仕様自体のバグを疑いましょう。

 対策案は、要求仕様フェーズで不安な部分がある場合は、プロトタイプやシミュレーターを作り、実現可能性を確認することです。特に、制御、通信速度、ノウハウがない新機能の場合は効果的です※2)

※2)ただし、シミュレーターはあくまでもシミュレーターです。実機では、その通りに行かない場合が「非常に」多く、注意が必要です。

4.2 要求仕様の矛盾

 自己矛盾を起こしている仕様は、プログラムやテスト項目を作成しているうちによく見つかります。要求仕様書をしっかり読みながら作成しましょう。

 対策案は、要求仕様書作成時にページ数を減らせないか検討することです。他の作業にも関連しますが、量が多いと、急激に全体を把握できなくなります。

 実装フェーズで見つけてもよいでしょうが、より早い段階で見つけたい場合は、要求仕様を開発メンバーとしっかり読み合わせましょう。矛盾点が見つかる可能性が少なくありません。また、時間があれば少し大ざっぱなテスト項目を作成しましょう。テスト項目は、「具体的な数値による仕様書」です。矛盾点がポロポロ見つかります。

4.3 要求仕様の抜け

 要求仕様の抜けは、顧客が気付かないと、兆候を見つけることは非常に困難です。タチが悪い上、仕様書のバグで最も多いのがこれといわれています。

 対策案として、要求仕様の作成後に運用フローを作成して、顧客に確認を取りましょう。顧客側も巻き込んで運用フローを説明すると、「この機能も必要ですね」といわれることが少なくありません。

4.4 曖昧な要求仕様

 仕様をよく読むと、いろいろな解釈があると気付くでしょう。その際は、担当者にしっかり確認を取りましょう。曖昧な要求仕様をベースにしたため、自分の考えが間違っている可能性があります。

 対策案としては、チームメンバーでの仕様の読み合わせや、要求仕様のテスト項目の作成が効果的です。

5.まとめ

 下記に、今回のまとめを示します。

  • 今回は、「達成困難な要求仕様」「要求仕様の矛盾」「要求仕様の抜け」「曖昧な要求仕様」を取り上げた
  • 達成困難な要求仕様のバグは、要求仕様書に記述した項目を達成できないこと。テスト工程で要求を達成できず、設計やプログラムでのバグを見つけられない場合、そもそも、要求仕様自体が実現不可能であることを疑う。対策案として、プロトタイプを作成する
  • 要求仕様の矛盾のバグは、要求仕様書に矛盾する内容が書いてあること。矛盾は、プログラムやテスト項目を作成している間に見つかることが多いため、大きな問題とならないだろうが、作成中に見つかれば、その都度、修正する
  • 要求仕様の抜けのバグは、あるべき要求仕様がないこと。非常に多いバグだが、このバグの兆候を探すことは非常に、困難。対策案として、要求フェーズから運用フローを作成し、要求が抜けていないか顧客と確認する
  • 曖昧な要求仕様のバグは、読み手にさまざまな解釈を与える。要求をしっかり読み、分かない部分は随時、確認を取る。また、プロジェクトのメンバーで仕様を読み合わせ、テスト項目を作成することで、曖昧な箇所を洗い出す

6.終わりに

 要求仕様は、ソフトウェア開発フェーズで最も大切な工程です。今回は、要求仕様のバグを取り上げました。なんとなく作成し、次の設計フェーズへ進みがちですが、実際の開発では、要求仕様書のバグによって想定通りにいかず、苦労することも少なくありません。今回取り上げたバグを頭に入れ、いざとなった時のお役に立てればと思います。

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

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

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

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

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


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

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


前のページへ 1|2|3       

Copyright © ITmedia, Inc. All Rights Reserved.