ソフトウェア品質モデル
定義
ソフトウェアの「品質」を多面的に捉えるための体系的な枠組み。ISO/IEC 25010 では品質を2つの視点で定義する。
製品品質(Product Quality)— ソフトウェア自体が持つ特性:
- 機能適合性、性能効率性、互換性、使用性、信頼性、セキュリティ、保守性、移植性
利用時品質(Quality in Use)— 実際の使用状況での成果:
- 有効性、効率性、満足性、リスク回避性、利用状況網羅性
なぜ重要か
品質が「バグがない」という一次元的な理解に留まると、重要な品質特性(保守性・セキュリティ・使いやすさ)が設計フェーズで考慮されない。製品品質と利用時品質を区別することで、「技術的に正しく動くが使えないシステム」や「機能は揃っているが保守不能なコード」を予防できる。
品質は後付けできない。設計・実装の段階でどの品質特性を重視するかを意識しないと、後工程での修正コストが指数的に増大する(→シフトレフト)。
適用場面
- 品質目標の設定時:「品質を上げる」という曖昧な目標でなく、「保守性のうち変更容易性を向上させる」と特性レベルで定義する
- 要件定義時:機能要件だけでなく品質特性(非機能要件)を明示的に洗い出す
- 設計レビュー時:設計判断が品質特性のトレードオフ(性能 vs 保守性 等)に与える影響を評価する
- テスト計画時:どの品質特性を検証するかをテストタイプ(性能テスト・セキュリティテスト等)と対応付ける
製品品質と利用時品質の関係
製品品質(設計・実装で制御可能)
↓ 実際の使用環境・ユーザーとの相互作用
利用時品質(エンドユーザーが体験する成果)
製品品質が高くても利用時品質が低いケースが存在する(高性能だが操作が複雑なシステム等)。顧客価値は最終的に利用時品質で測られる。
出典
ソフトウェア品質保証の極意 — 第1章「ソフトウェア品質の基本概念」(SQuBOK Guide 準拠)