トレーサビリティ(追跡性)とは、ISO9001:2000の解釈から言うと、出荷した製品に品質問題が発覚したときに、その原因を追究できることを保証する仕組みです。
ちなみにISO9001:2000とは2000年にISO9001品質マネジメントシステム要求事項(国際規格)が改定されたものを指します。2000年版とも言われているようです。
ソフトウェア品質の世界でトレーサビリティを実現するには、どうすれば効果的で簡便かを考えたいと思います。
まず、納めたシステムがお客様サイドで運用中にバグが発覚したと仮定し、その原因を追究する流れを考えたいと思います。
- 問題発生時の状況をお客様からお聞きします。(エラーコード、画面キャプチャ、操作した内容、実行環境、ログ内容、など具体的な情報をもらいます)
- 情報源から問題の箇所(ソースのファイル名、行番号)を特定します。
- ここでソースコードから原因がすぐに分かれば、対処して完です。原因が分からない場合は、問題の箇所から次の観点で原因を調査します。
- 再現性を確認し、処理・データ・環境・操作など問題の切り分け。
- 問題のコード周辺のアルゴリズムや処理に不具合はないか。
- 入出力データに問題はないか。
- リソース(通信環境やDB環境、ファイルシステム)に問題はないか。
- 関連システム(他システムやハードウェア)に問題ないか。
- 設計上の仕様に問題はないか。検討不足はないか。
- テスト仕様と結果はどうだったか。テスト漏れはないか。
- デグレード(前のバージョンでは問題がなく、改版後の問題)ではないか。
これぐらいが頭に浮かびますが、重要なのは問題発生から原因特定までの過程で、経験と勘で警察犬が鼻を利かせて犯人を追うような行動に、どうやって客観性を持たせるかだと思います。
(つづく)