品質シナリオ
- パターン:品質シナリオ(原題Agile Quality Scenarios , 原著 Joseph Yoder, Rebecca Wirfs-Brock, Ademar Aguilar)[1]
「品質は内側から始まる。その後は外側へと進んでいく」――Bob Moawad(教育コンサルタント)

スプリント中に、プロダクトバックログ項目が取り出され、見積もられます。多くの場合、バックログ項目は機能要件に限られています。これらのバックログ項目をより詳細化する形でシナリオとユーザーストーリーが記述され、具体的なタスクを特定し、作業量を見積もれるようになります。これは、プロジェクトにおいて機能の開発を増分的に進める上で役立ちます。ただし、システムが進化するにつれて、セキュリティ、性能、信頼性、注意が必要なその他の品質特性など、システムの多くの他の重要な品質特性が出てくる可能性があります。通常、プロダクトバックログに機能要件のみが含まれる場合、これらの要件は特定されていません。
システムの開発中に対処する必要がある重要な品質特性について、どのようにすればよりよい理解と大まかな見解を得ることができるでしょうか?
***
システムの中核的な品質特性の検討と実装が遅れると、システムが激変し、アーキテクチャがぼろぼろになり、多くのリファクタリングが必要になったり、汚いコードになったりする可能性があります。
早期に考慮すべき品質特性を特定することが重要であり、そうすることにより優先順位を付けることが可能になり、さらには「完成の定義」(Definition of Done:DoD)にも役立たせることができます。
品質特性がシステムのさまざまな部分へどのように影響するのかを理解するのは困難かもしれません。アジャイルチームにとって、高いレベルの視点から重要な品質特性を示す方法を持つことは非常に有用です。
アジャイルチームは多大で詳細な文書化作業を好まず、システムの品質特性を含む重要な要件を記述するために手軽(ライトウェイト)な方法を好みます。
***
そこで、プロセスの早い段階で、手軽な方法を利用して、性能、負荷、信頼性、セキュリティなどの重要な非機能要件を扱う大まかな品質シナリオを作成し、記述します。特定の品質特性が重要な関心事であることがわかっている場合は、製品ロードマップの一部として優先順位を付け、関連するスプリント時に組み入れることができます。より多くの品質特性が明らかになると、必要に応じてそれらのシナリオを作成できます。品質シナリオは、2つの方法で利用できます。品質上の関心事に基づいてシステムの中核的な側面の設計を推進すること、および、システムのアーキテクチャがその特定の品質を満たしているかどうかを評価するための具体的なシナリオを捉えることです。
最終的には品質シナリオを利用して、品質ストーリーを作成し、品質特性のテストと検証に役立てることができます。下図は、大まかな品質シナリオのテンプレートの例です(出典: SEI [BCK])。
品質シナリオでは、特定の条件に対してソフトウェアがどのように応答するかを簡単に説明し、1つ以上のシステムの品質特性を表します。システム品質(またはシステム品質属性)という用語は、システムの非機能特性を意味します。これらの用語は、英語表記における接尾辞のため「イリティ(ilities)」と呼ばれることもあります。
以下に、品質シナリオを作成する対象としての一般的な品質特性を示します。
- 性能:ソフトウェアの応答性。
- 可用性:システムが正常に稼働している時間、障害間の間隔の長さ、または、障害後に操作を再開するのに必要な時間の長さ。
- 変更可能性:変更を迅速かつコスト効率よく行う能力。
- 移植性:システムを異なるコンピューティング環境で実行できる能力。
- 使いやすさ:ユーザーがシステムを操作してタスクを達成するための使いやすさ、または、トレーニングのしやすさ。
- セキュリティ:システムの使用または変更の不正な試みに対抗する能力。
品質シナリオを書き、以下の部分を持つ一般的なフォーマットに従って目的とする品質特性を記述できます: 刺激の発生源(または品質が表出されることの理由となるもの)、刺激(またはアクションや事象の簡単な要約)、成果物および環境(どのような動作条件下でのシステムのどの部分か)、応答(システムが反応したときに何が起こるか)、および応答測定(期待される具体的かつ感知できる結果)。
さらに、各シナリオに意味のあるわかりやすい名前を付けます。
例として、森林管理ソフトウェアシステムにおける期待される信頼性を示す2つの品質シナリオを以下に示します。ソフトウェアは、センサーによって報告される履歴データと現在の天候を使用して、火災の危険性を予測します。ここで、同じ品質に関する異なるシナリオを書き出して、わずかに異なる条件下でシステムがどのように動作するかを示すことができます。
信頼性品質シナリオ
80%未満のセンサー報告が得られている場合の火災危険性の予測。
森林警備員は、センサー報告の履歴の量を指定して、森全体の火災危険性予測を要求します。システムは、センサーの80%未満が定期的に報告しているため、低い信頼度をもって火災危険性を「低い」「中程度」「高い」または「極端に高い」と予測します。
信頼性品質シナリオ
80%以上のセンサー報告が得られている場合の火災危険性の予測。
森林警備員は、センサー報告の履歴の量を指定して、森全体の火災危険性予測を要求します。システムは、センサーの80%以上が定期的に報告しているため、高い信頼度をもって火災危険性を「低い」「中程度」「高い」または「極端に高い」と予測します。
品質シナリオの例
80%未満のセンサー報告により予測する

品質シナリオの例
80%以上のセンサー報告により予測する

