検証および妥当性確認
検証および妥当性確認は、それぞれ異なる課題に対処し、異なる活動が必要であり、異なる証拠を生み出します。規制対象の業界においては、ISO 26262、DO-178C、およびIEC 61508の下で、これらにはそれぞれ異なる必須の文書化要件が定められています。これらを同義語として扱っている開発チームは、通常、最悪のタイミング、すなわち監査の最中に、その違いに気づくことになります。
根本的な違い
これらを区別する最も簡単な方法は:
検証
このソフトウェアは正しく構築できたでしょうか?
検証
私たちは適切なソフトウェアを開発できたのでしょうか?
検証とは、ソフトウェアが仕様を正しく実装しているかどうかを確認することです。妥当性確認とは、仕様がエンドユーザーやシステムのニーズを正しく反映しているかどうかを確認することです。
実務における検証
検証活動は、ソフトウェアの内部的な正しさに焦点を当てています。これには、以下のものが含まれます:
- 静的コード解析:ソースコードを実行せずに、欠陥や標準違反の有無を検査すること
- 単体テスト:個々のコンポーネントを、その仕様に照らして独立してテストすること
- コードカバレッジ測定:テストによってコードが適切に実行されていることを確認すること
- 要件ベースのテスト:すべてのテストケースを特定の要件に紐づけること
- ピアレビューおよびインスペクション:コードやドキュメントを体系的に検証すること
検証の結果として得られるのは、文書化された証拠です。具体的には、テスト結果、カバレッジレポート、およびどの要件がどのように検証されたかを示すトレーサビリティマトリックスなどです。
実務における検証
検証活動は、システムが仕様書に書かれていることだけでなく、実際に求められる動作を確実に実行していることを確認するものです。これらは通常、開発ライフサイクルの後半に行われ、以下の内容が含まれます:
- エンドユーザーの要件や運用シナリオに基づくシステムテスト
- 組み込みシステム向けのHardware-in-the-Loop(HIL)テスト
- お客様または規制当局が関与する受入テスト
バリデーションにより、正しく構築されたシステムが、かつ適切なシステムであることも確認されます。
規制産業において、なぜその両方が要件となるのでしょうか
ISO 26262、DO-178C、IEC 61508、およびIEC 62304などの標準では、検証および妥当性確認の両方の活動を明示的に要件としており、それぞれについて文書化された証拠が求められています。検証の証拠には、通常、単体テストレポート、静的解析結果、およびカバレッジデータが含まれます。妥当性確認の証拠には、システムレベルのテスト結果や受入検査レコードが含まれます。
VectorCASTおよびPC-lint Plusは、このプロセスにおける検証側をサポートするように設計されており、これらの標準で要求される監査可能な証拠を生成します。