品質バックログ
- パターン:品質バックログ(原題Qualify the Backlog 原著 Joseph W. Yoder, Rebecca Wirfs-Brock, Hironori Washizaki)[4]
「人には燃えることが重要だ。燃えるためには薪が必要である。薪は悩みである。悩みが人を成長させる」――松下幸之助(日本の実業家)

アジャイル開発のバックログには、プロジェクトやリリースを完成させるために必要な機能と技術的なタスクの順序付けされたリストが含まれています。このバックログの順序は作業の優先順位にしたがっています。各バックログ項目の完成の定義は、重要なシステムの品質要件を含む必要があるかもしれません。とはいえ、システムが持つべき品質特性の一部は、一つ以上のユーザーストーリーにまたがっているので注意が必要です。
アジャイル開発者がシステムが持つべき品質特性を理解し、実装し、そしてテストしようとするとき、その作業範囲をより明確にするにはどうすればよいでしょうか?
***
重要な品質特性に十分に早く焦点を合わせないと、重大な問題、遅延、手直しを引き起こす可能性があります。パフォーマンスやスケーラビリティの欠陥を改善するには、システムのアーキテクチャに大幅な変更と修正が必要になることがあるでしょう。一方、開発サイクルの早い段階でシステムの品質特性に焦点を合わせすぎると、過剰設計と早期最適化につながる可能性があります[Knuth]。
プロダクトオーナーの関心はシステムの機能にあり、どの機能が最も価値をもたらすかを基準としてバックログに優先順位をつけます。多くのプロダクトオーナーは、技術的な項目でバックログが乱雑になっているところを見たくないものです。あるいは、それらがシステム全体の設計に及ぼす影響を理解していないために、バックログにある技術的な項目の優先度を低くしてしまうことだってあるでしょう。
システムの品質要件がユーザーストーリーの受け入れ基準の中に埋もれていると、開発者はその重要性を見落としたり、対応に要する労力を過小評価したりすることがあります。望ましいシステムの品質特性は、魔法のように実現するものでも、実装を進めるにつれて少しずつ明らかになるものでもありません。継続的な作業の一環として、腰を据えて品質に取り組む必要があります。
システムの品質特性の中には、検証する前に一定のインフラストラクチャ構築が必要になるものもあるでしょう。システムが受け入れられるには、望ましいシステムの品質特性と共に機能が提供される必要があります。一定の品質特性を提供するためにどれだけのインフラストラクチャが必要なのかを知るのは難しいことかもしれません。
***
品質項目を作成してバックログに追加しましょう。品質項目には、品質シナリオ、品質ストーリー、および一部のユーザーストーリーの品質の折り込みが含まれます。
品質ワークショップで品質シナリオを特定した場合、それらは作業項目としてバックログに追加することができます。特定の品質が複数のユーザーストーリーに跨っている場合、例えば、複数のビジネストランザクションにまたがったパフォーマンスなどの場合は、個別の品質ストーリーを作成してバックログに追加し、その品質要件を表すようにすると、全体的な品質がより目に見える形になるでしょう。特定の品質特性が一部の機能のユーザーストーリーに関連している場合もあります。そのような場合は品質の折り込みを使うことができます。品質の折り込みを使うことで、必要な品質特性が提供されるまで、ストーリーが完成したと宣言されないようにすることができるでしょう。
これらの品質特性を製品バックログ上で管理することが面倒になった場合は、技術バックログを別に作ってそちらで管理しても良いでしょう。プロダクトオーナーは、製品のエンドユーザー機能の提供に集中したいので、これらの項目をメインの製品バックログに入れたくないかもしれないからです。バックログは一つだけにすべきだと考える人もいますが、経験上、技術バックログを別で作ることにもメリットがあることがわかっています。チームに価値を与えることなら何でもやってみることが重要ではないでしょうか。
システム品質やアーキテクチャの問題を専門に扱うチームが、この技術バックログに取り組んでもよいでしょう。別々のバックログを持つ場合に解決しなければならない問題の一つは、作業を調整し、ユーザーストーリーに基づいてシステムの品質特性と機能間の依存関係を管理する方法です。例えば、あるユーザーストーリーを優先すると、そのストーリーのサポートに必要なシステムの品質特性を優先することになるかもしれません。バックログの整合性がとれてないと、機能をサポートする品質特性を提供することはできません。
CMU/SEI(カーネギーメロン大学ソフトウェア工学研究所:Carnegie Mellon University / Software Engineering Institute)[Bass]は、品質ワークショップを実施し、品質シナリオを定義するための、実績のある方法論をいくつか提案しています。QAW(品質特性ワークショップ:Quality Attribute Workshop)[Bar]、SAAM(ソフトウェアアーキテクチャ分析法:Software Architecture Analysis Method)、ATAM(アーキテクチャトレードオフ分析法:Architectural Tradeoff Analysis Method)などです。アジャイル品質の考え方では、品質ワークショップとレビューは、システムが開発されるにつれて段階的に実施されます。これらの会議は、より短く、即時のアーキテクチャ上の懸念に焦点を当てている傾向があります。重要な品質について意見を交わすために、これらのワークショップで品質シナリオと品質ストーリー[YWA]を書くことがあります。
バックログに品質関連の項目があることの価値の一つは、それらが眼に見えるようになることです。しかし、それらに十分に高い優先度を割り当てていなければ、それらは実行されません。チームとプロダクトオーナーは、品質を無視するとどうなるか理解する必要があるでしょう。Phillippe Kruchtenは、ユーザーからは見えないバックログ項目に色をつけて目立たせることを提案しています。例えば、品質関連項目を含むアーキテクチャ機能は黄色に、技術的負債削減項目は黒に、というようにです[Kru]。
おわりに
筆者らは、本連載やセミナーなどを通じてQA to AQの内容をお届けしつつ、各パターンの認知や実践状況の調査を通じて、アジャイル開発における品質の取り組みの一端を明らかとし、広く多くの皆さんとご一緒にQA to AQのさらなる発展や関連する活動を進められればと考えています。
例えば2020年8月にQA to AQを紹介するスマートエスイーセミナー [SmartSE] を開催して参加者にアンケート調査したところ、「できるだけ自動化」「アジャイル品質プロセス」「障壁の解体」の3つのパターンはよく使われていることがわかりました。これらは実際に他のパターンを用いるうえで基礎となるパターン群であり、まずはこれらの実践から入る形は自然で的確といえます [UAS]。
逆に利用率の低いパターンとしては「アジャイル品質スペシャリスト」や「プロダクト品質チャンピオン」といった特定の役割にまつわるものが多くありました。その理由としては、アジャイル開発のチームへと品質の組み入れや保証を扱う専門家を組み入れられていないか、もしくは、これらのパターンにおける役割が十分に伝わっていない可能性があります。今後、最初からQA担当者をチームに含める「QAを含むOneチーム」をまずは実現し、その進展の中でこれらの役割に関する活動を進める形が考えられます [UAS]。
パターンの良さは、日ごろの何気ない活動へと名前をつけることで、皆でその良さや制限を意識的にとらえ、明確に伝え、広げやすくすることにあります。ご紹介してきたQA to AQの中には「前から実践してるよ」というものがあおりではないでしょうか。あるいは、「うちではもっとこうしてるよ」というバリエーションや周辺の活動もきっとあることと思います。本連載をきっかけとして、皆さんとご一緒に良い事例や活動を広く共有し、アジャイル開発における品質の取り組みを一層深めていければと思います。
参考文献
- [1] Joseph Yoder, Rebecca Wirfs-Brock, Ademar Aguilar, “QA to AQ: Patterns about transitioning from Quality Assurance to Agile Quality,” 3rd Asian Conference 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.
- [Bar] Barbacci M., Ellison R., Lattanze A., Stafford J., Weinstock C., Wood W., “Quality Attribute Workshops (QAWs), Third Edition,” Technical Report, CMU/SEI-2003-TR-016, 2003.
- [Bass] Bass L., Clements P., Kazman R., Software Architecture in Practice (3rd Edition), Addison-Wesley, 2012.
- [Coc] Cockburn, A., Crystal Clear: A Human-Powered Methodology for Small Teams: A Human-Powered Methodology for Small Teams, AddisonWesley, 2004.
- [IEEE730] IEEE Standard 730-2014 - IEEE Standard for Software Quality Assurance Processes, 2014.
- [IEEE1012] IEEE Standard 1012-2012 - IEEE Standard for System and Software Verification and Validation, 2012.
- [ISO] ISO/IEC 25010: 2011 Systems and software engineering - Systems and software Quality Requirements and Evaluation (SQuaRE) - System and software quality models, 2011.
- [Knuth] Knuth, D., “Structured Programming With Go To Statements,” Computing Surveys, Vol 6, No 4, December 1974, pp. 261-301.
- [Kru] Kruchten, P., Blog post - “The Missing Value of Software Architecture,”2013.
- [YWA] Yoder J., Wirfs-Brock R., and Aguilar A., “QA to AQ: Patterns about transitioning from Quality Assurance to Agile Quality,” 3rd Asian Conference on Patterns of Programming Languages (AsianPLoP 2014), Tokyo, Japan, 2014.
- [SmartSE] セミナー: アジャイル開発と品質
- [UAS] 鷲崎弘宜, ”アジャイル品質はどのように取り組まれているのか? ― パターンQA to AQの実践状況より ―”、Ultimate Agile Stories 10th Anniversary, 2021.(掲載予定)
