品質特性は要求定義やテスト分析、品質評価など、様々な場面で使われる考え方です。この品質特性についてですが、同じ対象に適用する場合でも「全体に適用する場合」と「全体を構成する個々の要素に適用する場合」で様変わりすることがある点、注意が必要です。
ISO/IEC/IEEE 29148 での要求が備えるべき特性
例えば、要求エンジニアリングの標準規格であるISO/IEC/IEEE 29148:2018では、要求の記述が備えるべき特性をリストアップしているのですが、そこでは個々の要求事項が備えるべき特性と、それら総体の要求の群・集合が備えるべき特性を明確に区別しています。
- 個々の要求事項が備えるべき特性
- 必要である(Necessary)。コンセプトやニーズ、要求源を満たすために必須である。欠落すると、埋め合わせ不可能な欠陥を生じさせる。
- 適切である(Appropriate)。要求の方向性や詳細度が適切である。
- 単独である(Singular)。単一の機能や特性、制約についてのみ記載している。
- 正当である(Correct)。要求源が求めるものを正確に記載している。
- 曖昧性がない(Unambiguous)。要求は一意に解釈されるように記載されている。単純かつ理解しやすいように記載されている。
- 完全である(Complete)。要求を理解するために他の情報を必要としない。要求源を満たすために必要な情報を十分に説明している。
- 実現可能である(Feasible)。制約(コスト、スケジュール、技術、法律、倫理)内で、許容可能なリスクで要求を実現できる。
- 検証可能である(Verifiable)。システムが要求を満たすことを検証できる記述になっている。
- 適合している(Comforming)。標準やスタイルガイドといった規範に準拠している。
- 要求総体の群(集合)が備えるべき特性
- 完全である(Complete)。適切な抽象度で、対象の機能、非機能、特性、制約などの情報を十分に説明できる。
- 一貫性がある(Consistent)。個々の要求に競合や重複がない。用語や言語が一貫している。
- 実現可能である(Feasible)。制約内で、許容可能なリスクで総体を実現できる。
- 包括的である(Comprehensible)。対象に期待される内容やシステムでの関係性が明確に記載されている。
- 妥当性確認可能である(Able to be validated)。制約(コスト、スケジュール、技術、法律、倫理)内で、許容可能なリスクで、要求が対象の目的、ステークホルダの期待、リスク、コンセプトを達成できていることを確認できる。
上記の通り、同じ要求の品質特性が対象でも、構成要素と総体で特性が変化しています。例えば総体では、構成要素間で競合や重複がないこと、総体として妥当であることを確認できることといった特性が出現します。
また同じ名前の特性でも、構成要素と総体で意味づけが変化します。例えば「完全である」は、個々の要素では他の情報を必要としないといったレベルの特性である一方、全体の集合では、総体として十分であるといった特性になります。
テストが備えるべき特性
最近はソフトウェアテストの品質特性もちらほら議論されるようになっているのですが、そこでも個と群(集合)で、備えるべき特性が変わる点、注意が必要です。
例えば「追跡可能である」という特性は、個のテストケース、総体のテストそれぞれで求められる特性ですが、個の場合は「テスト設計の根拠が追跡可能である」という特性になる一方で、総体の場合は「テストベースとテストが相互に漏れなく追跡可能である」といった特性になります。また例えば「一貫性がある」は、ISO/IEC/IEEE 29148 と同じく、総体としてのテストには適用できる特性ですが、個々のテストケースには適用されません。
テストの品質特性、品質モデルを考える際は、こうした構成要素と総体の違いを考慮する必要があります。