品質ストーリー
- パターン:品質ストーリー(原題Quality Stories 原著 Joseph Yoder, Rebecca Wirfs-Brock, Ademar Aguilar)[1]
「品質を気にしなければ、他のいかなる要件も満足できる」――Gerald M. Weinberg(ソフトウェア開発の心理学・人類学者)
機能要件のユーザーストーリーを作成および実装する際には、複数のユーザーストーリーまたは多数のフィーチャーにまたがって広く適用される、性能、使いやすさ、国際化、信頼性、またはその他の非機能品質特性を特定します。場合によっては、着陸ゾーンの目標を達成するために、改善する必要がある特定のシステム品質(たとえば、ETLの精度を1%上げる)があるかもしれません。
これらの品質要件をチームに見えるようにして、優先順位を付けるにはどうすればよいでしょうか?
***
バックログの機能的なユーザーストーリーで概説された、必要な作業を計画し、追跡し、および管理できるようしたいと考えています。これらの機能要件に取り組んでいる間に、特定の品質特性が、実装を完了するため必要になったり、明確に要求として認識されたり、あるいは複数のユーザーストーリーに関連することがあります。
スプリント中は主に、機能要件に焦点を当てることとなり、多くの場合、システムの品質特性の推定に多くの時間は与えられません。また、特定の機能要件が実装されるまで、一部の品質特性やシステムのさまざまな部分への影響は明らかになりません。
品質シナリオは、システムの重要な品質特性の重要性を理解、および詳細化することに役立ちますが、大まかすぎたり、「完成」したかどうかをチームが判断するための優先順位付けが十分でなかったりする場合があります。
***
そこで、個別の品質ストーリーを作成し、それらをバックログに追加します。
ユーザーストーリーは、目的とするフィーチャーの短く簡潔な説明であり、その仕組みや特性を望む人の観点から語られます。通常、プロダクトオーナーが優先する重要なユーザー機能に焦点を当てています。システムのさまざまな部分に取り組んでいる場合や重要な品質特性を優先してバックログに含める必要がある場合、システムの品質特性を表す品質ストーリーを作成します。通常のユーザーストーリーとは対照的に、品質ストーリーは、達成することが重要なシステム品質のいくつかの側面を短く簡潔に説明したものです。バックログには、品質特有のユーザーストーリーと機能的なユーザーストーリーの両方を含められます。品質特有のストーリーをバックログに追加すると、それらの品質要件が明らかになります。また、プロダクトオーナーは、システム機能とともに品質関連の関心事にも優先順位を付けられます。
たとえば、クレジットカード、銀行、およびPayPalのトランザクションを使用した支払い処理をサポートするシステムを考えます。最初に、さまざまな支払い方法に関連するいくつかのユーザーストーリーを定義し(「ユーザーとして自分の銀行口座を用いて注文の支払いをする」「ユーザーとしてクレジットカードを用いて注文の支払いをする」「ユーザーとして自分のPayPalアカウントを用いて注文の支払いをする」など)、これらをサポートする機能を実装したとします。これらのユーザーストーリーにはそれぞれ、独自の受け入れ基準とテストがあります。ここで、すべてのタイプの支払い処理トランザクションに対応する性能要件を定義したいとします。
元のユーザーストーリーに戻って、それぞれに対して特定の性能目標の受け入れ基準を付けることができます。しかし、必要とする全体的な性能の構図を提供することにはなりません。また、集約した結果としての総合的な性能目標が達成される限り、さまざまな支払い方法間で性能の違いを受け入れられるものとします。この場合、品質の折り込みを特定のストーリーに付ける代わりに、全体的な性能目標を表す別の品質ストーリーを作成します。
「システムは、ピーク時の操作で1時間あたりx件の支払い処理トランザクションを処理できなければならない。」
特定の機能的ユーザーストーリーに適用される品質特性を記述する必要がある場合は、いつでもそれらのユーザーストーリーに品質の受け入れ基準を付けることができます(品質の折り込みを参照)。それにより、さまざまな支払い方法に適用されるより広範な性能要件に加えて、必要に応じて、特定の支払い方法の特定の性能受け入れ基準をいつでも定義できます。
おわりに
連載の5回目では、アジャイル開発において効率的かつ効果的に品質保証を進めるために有用な実証済みのパターン集QA2AQから、アジャイルで重要な品質を特定するためのパターンをまとめた、分類「品質特性の特定」から3つのパターン「重要な品質の発見(Find Essential Qualities)」「品質シナリオ( Agile Quality Scenarios)」「品質ストーリー(Quality Stories)」の和訳を提供しました。次回の連載では引き続き、分類「品質の特定」から3つのパターンの和訳を提供する予定です。
参考文献
- [1] Joseph Yoder, Rebecca Wirfs-Brock, Ademar Aguilar, “QA to AQ: Patterns about transitioning from Quality Assurance to Agile Quality,” 3rd Asian onference on Patterns of Programming Languages (AsianPLoP 2014), Tokyo, Japan, 2014.
- [2] Joseph W. Yoder and Rebecca Wirfs-Brock, “QA to AQ Part Two: Shifting from Quality Assurance to Agile Quality,” 21st Conference on Pattern Languages of Programs (PLoP 2014), Monticello, Illinois, USA, 2014.
- [3] Joseph W. Yoder, Rebecca Wirfs-Brock, Hironori Washizaki, “QA to AQ Part Three – Shifting from Quality Assurance to Agile Quality – Tearing Down the Walls,” 10th Latin American Conference on Pattern Languages of Programs (SugarLoafPLoP 2014), Pousada Armação dos Ventos, Brazil, 2014.
- [4] Joseph W. Yoder, Rebecca Wirfs-Brock, Hironori Washizaki, “QA to AQ Part Four - Shifting from Quality Assurance to Agile Quality - Prioritizing Qualities and Making them Visible,”22nd Conference on Pattern Languages of Programs (PLoP 2015), Pittsbirgh, USA, 2015.
- [5] Joseph W. Yoder, Rebecca Wirfs-Brock, Hironori Washizaki, “QA to AQ Part Five,” 5th Asian Conference on Pattern Languages of Programs (AsianPLoP 2016), February 24-26, 2016, Taipei, Taiwan.
- [6] Joseph W. Yoder, Rebecca WirfsBrock, Hironori Washizaki, “QA to AQ – Part Six – Being Agile at Quality,” 23rd Conference on Pattern Languages of Programs (PLoP 2016), Monticello, Illinois, USA, OCTOBER 24-26, 2016.
- [BCK] Bass, Len, Clements, Paul and Kazman, Rick, Software Architecture in Practice (2nd Edition), Addison-Wesley, 2003.
- [BBC] Bransford T., Brown A., and Cocking, R., How People Learn: Brain, Mind, Experience and School. National Academy Press, 2000.
- [Brown] Brown T., The hunt is on for the Renaissance Man of computing, in The Independent, September 17, 1991.
- [CH] Coplien J. and Harrison, N., Organizational patterns of agile software development. Wiley, 2004.
- [Duv] Duval, Paul. Continuous Integration: Patterns and Anti-Patterns. DZone, 2010. http://refcardz.dzone.com/refcardz/continuous-integration.
- [Knuth] Knuth, D., “Structured Programming With Go To Statements,” Computing Surveys, Vol 6, No 4, December 1974, pp. 261-301.
- [MR] Manns, M. L., and Rising, L. Fearless Change: Patterns for Introducing New Ideas. Addison-Wesley Professional, 2004.
- [MYGA] Merson P., Yoder J., Guerra E., and Aguilar A., “Continuous Inspection: A Pattern for Keeping your Code Healthy and Aligned to the Architecture,” 3rd Asian Conference on Patterns of Programming Languages (AsianPLoP), Tokyo, Japan, 2014.