組み込みソフトウェア・テスト・クライシスの「傾向と対策」 ――「品質」をつねに念頭に置きながらソフトウェアを開発する
●「ソフトウェアの品質」とは何か
ソフトウェアに求められることは,要求されたとおりの動作を行うことにつきます.昨今の複雑な制御システムを実現するためには,要求分析を行って要求の抜けや漏れなどの欠陥を予防しなければなりません.さらに,異常が発生した場合でも安全に対処できるようにしておく必要があります.
こうした要求にこたえるため,効率的な開発を行うことはもちろん,開発担当者自身が自分の開発するソフトウェアの品質をつねに意識し,自分なりの品質基準を持つ必要があります.ソフトウェアの品質の測定は,開発対象となるシステムの品質基準に照らし合わせて,開発者自身がくふうを凝らすべきところです.
例えば,キー入力されたデータを2倍して,結果をレジスタに格納するプログラムを作ったとします.そのプログラムは,起動条件(キー入力)とデータ(入力されたキーのコード)から結果を算出し,その結果をレジスタに格納します.ここで,「すべてのキー入力」に対して要求どおりの計算結果がレジスタに格納できていれば,そのソフトウェアの品質が確保されているということになります.すべてのキー入力と計算結果が定義されていることが「要求仕様の品質」であり,要求仕様どおりに計算結果がレジスタに格納されることが「ソフトウェアの品質」です.
ソフトウェアの品質を測定するということは,開発したプログラムについて,要求仕様と合っているかどうかを一つ一つ確認するということです.管理の面では,仕様内容を確認(レビュー)し,仕様の数(テスト項目数)を用いて確認結果(品質状況)を測定します.
次に,ソフトウェア開発のプロセスに着目すると,ソフトウェアの品質に大きく影響する工程は,ソフトウェア開発の中心となる「要求を実現する作業」,つまり設計工程です.設計工程においてソフトウェアの品質が低下する要因としては,以下のことが挙げられます.
- 分析した結果をもとに設計していない(分析工程で明確になっていない内容について,安易に再分析して,実装してしまう)
- 発生する制約や問題についての設計方針がないまま,場当たり的に設計してしまう
- 要求にない状況が起こったときの動作について,十分に検討しないまま実装工程に移行してしまう
- 関係者の間で十分なレビューを行わないまま,設計を終了してしまう