QA to AQ: Quality Assurance から Agile Quality へ

# 伝統的な品質保証(QA)からアジャイル品質(AQ)へと変わっていこう

 ![image](https://qiita-image-store.s3.amazonaws.com/0/51055/5e4a9a5d-465d-70b5-fae8-37e60bbf1b2c.png)

2016/9/30、Hillside Group(後述)の代表[Joseph Yoder](http://joeyoder.com/)さんが来日され、鷲崎先生と[特別セミナー](http://www.washi.cs.waseda.ac.jp/?p=3147)が開催されたとのこと。

![image](https://qiita-image-store.s3.amazonaws.com/0/51055/72e11d34-0e3b-b9b4-cafd-70c20d7324cc.png)

そこで紹介された、**「QA to AQ: 品質保証(Quality Assurance)からアジャイル品質(Agile Quality)へ」**というパターンが秀逸で、かつ、日本のアジャイルオーディエンスに興味がある方が多いであろう、と思い、紹介します。

アジャイル開発は徐々に日本の開発現場にも浸透しています。特に、Webサービスを事業としている会社、スタートアップ企業、などでは普通になる一方で、ITを利用する側と開発を請け負う会社が分かれている場合、また、組み込みの製品開発などでも、まだまだアジャイルは浸透が足りないようです。開発部隊と別に、品質保証部がある組織も、組み込みでは珍しくありません。ここではそのようなテーマを扱います。

また、パターンは知識の表現形態の一つ。ソフトウェアではデザインパターンで有名ですが、過去に経験された知見を、名前、文脈、問題、解決、などの項目で知識化する手法です。ここでは、パターン言語（パターンを集めて一つの大きなテーマに対する知識を表現する）の形で、品質保証の立場の人がどのようにアジャイル開発に関わるのがよいか、というテーマを扱っています。

#全体像

スライドより引用します。(鷲崎さんとRebeccaの写真ががあるのは共著者だからです：後述）

![image](https://qiita-image-store.s3.amazonaws.com/0/51055/7d264747-08f1-8293-e8e8-dfdd4206bb0a.png)

全体は、核心となるパターンとして「障壁の解体(Breaking Down Barriers)」、「プロセスへの品質の組み入れ(Integrate Quality)」をおき、その下に、

1. Becoming Agile at Quality(品質面でアジャイルになる)
1. Idintifying Qualities(品質の特定)
1. Making Qualities Visible(品質の可視化)

とカテゴリー分けされています。核心は「組織の壁を壊すこと」と、品質をプロセスの最後に「分離」せずに全体の中に「組入れる」こと。そして、そのために、品質面での習慣化(1)を支援するパターン、品質を特定し(2)、そして、それを可視化する(3)パターンという構成です。とてもわかりやすいですね。

>Quality is not an act,it is a habit…
>—Aristotle

を引いて、品質を習慣化する、ということの重要さを書いています。

鷲崎先生がUltimate Agile Stories 5 に寄稿されているリストから、パターン名と要約をリストにしたものです。

パターン名、パトレット名 | 要約
-------------------+------------------------------------
障壁の解体 Breaking Down Barriers | 開発チームにおいて品質保証メンバと残りのメンバ間の障壁をなくし、皆が品質プロセスに関わる
アジャイルプロセスへの品質の組み入れ Integrating Quality into your Agile Process |品質記述および理解する軽量な方法などを通じて品質保証をプロセスに組み入れる
本質的な品質の発見 Finding Essential Qualities|考慮すべき重要な品質についてブレーンストーミングする
アジャイル品質シナリオ Agile Quality Scenario|ハイレベルの（抽象度の幾らか高い）品質シナリオを作成して重要な品質を検討する
品質ストーリー Quality Stories | 測定可能な品質に焦点を当てたストーリーを作成する
測定可能な値やシステム品質の特定 Specify Meassureable Values or System Qualities | 品質の値を特定する
折り込み品質 Fold-out Qualities | ユーザーストーリーへ品質基準を添付する
アジャイルな着地点 Agile Landing Zone | 品質の発展可能な受入れ基準値を定義する
着地点の再調整 Recalibrate the Landing Zone | 測定結果やベンチマークに基づき受入れ基準値を再調整する
品質目標の合意 Agree on Quality Targets | 最低許容値～目標値～優良値の形で幅を持たせて受入れ基準値を定義する
システム品質ダッシュボード System Quality Dashboard | 品質の状況全体を総合的に可視化するダッシュボードを用意する
システム品質ラジエータ System Quality Radiator | 品質に関する情報を可視化する仕組みを用意する
ロードマップ上の品質検討 Qualify the Roadmap | 品質の組み入れ・出荷時期を計画するようにロードマップを検討する
バックログ上の品質検討 Quality the Backlog | バックログ上で優先順位づけできるように品質シナリオを作成する
品質チャート Quality Chart | 重要な品質を図やリストとして表示しチームに見えるようにする
チーム全体 Whole Team | 品質保証活動を早期からチームに組み入れる
品質に焦点をあてたスプリント Quality Focused Springs | 品質の測定や改善に焦点をあてたスプリントを設ける
品質保証プロダクトチャンピオン QA Product Champion |品質保証メンバがプロダクトオーナーと協働するなどして品質保証活動において開始時から顧客要求の理解に努める
アジャイル品質の専門家 Agile Quality Specialist | テスト戦略の説明と作成を通じて品質保証活動によりチームに経験を提供する
品質のモニタリング Monitoring Qualities | 品質のモニタリングと妥当性確認の方法を特定する
アジャイル品質保証テスター Agile QA Tester | 品質保証メンバが開発者と密接に活動し受入れ基準やテストを定義する
品質に関する作業負荷の展開 Spread the Quality Workload | 品質に関する作業負荷を品質保証メンバ以外にも振り分ける、あるいは、品質に関するタスクを終盤のみではなくプロジェクト全体にわたり展開する
品質熟練者への寄添い Shadow the Quality Expert | 品質熟練者と協働する役を設けることで熟練者の経験を広める
品質主導者とのペア Pair with a Quality Advocate | 開発者を品質保証メンバとペアを組ませることで、プログラミングが必要な品質関連のタスクを完了する

([Ultimate Agile Stories Iteration 5](http://ultimateagilestories.web.fc2.com/bookcontents5.html) への寄稿からの抜粋、パターン原文[1]-[4]参照）鷲崎 弘宜)

品質に関する視点を持っている人、組織と、開発者との関わりを中心に、指標やマインドセットも含めて書かれていますね。好きなパターンをいくつか抜き出します。（Yoder の解説スライドと、Rebecca のサイトにあるパターン文書から)

## 障壁の解体 Breaking Down Barriers

まずは、組織の壁を打ち破れですね。コアパターンの1つです。

![Ctt-f34UsAA2Xds.jpg](https://qiita-image-store.s3.amazonaws.com/0/51055/a91ba6f8-6373-7e38-c929-47603fcc2636.jpeg)

物理的な場所、環境、専門知識、気持ちとしての「あいつら」と「ぼくら」、、、ベルリンの壁が印象的ですが、あの時に起こったこと、が組織でも起きている、と考えると、わくわくしますね。


## 品質主導者とのペア(Pair with a Quality Advocate)

![image](https://qiita-image-store.s3.amazonaws.com/0/51055/f3852fcd-caa1-140d-00b5-26ce8e4db1b0.png)

品質にうるさいやつ(Quality Advocate)、をチームに入れて、ペアを組んでしまえ、という話。品質保証部から来た人を組み込んでしまうパターン。

## 気になるパターン

その他、

### 「品質に焦点をあてたスプリント(Quality Focused Springs)」

はおそらく、機能をリリースせず、品質を目的にすえたスプリントを回すプラクティスだと思われます。かなり日本では行われていると思います。

### 「品質チャート(Quality Chart)」

は、品質の重要な指標を特定したら、それをチャート化するのだと思います。そして、それらを「システム品質ラジエーター(System Quality Radiator)」で見える化すると。

今後、すこし調査しながら解説を増やして行こうと思います（たぶん...)。


## 具体的なプロセスへの組み込み

では、アジャイルの流れの中のどのポイントで活動するのだ？という絵です。

![image](https://qiita-image-store.s3.amazonaws.com/0/51055/bd5a5b0b-988a-7464-1855-2b3032391206.png)

これを解説してみます。品質観点からアジャイルの活動にできることとして、製品のロードマップやビジョンから製品バックログを作り出す時に、

* アーキテクチャリスク
* キーとなる品質シナリオ
* 受け入れ基準値

を特定することができる。そして、それらは、「品質バックログ項目」として製品バックログに入れ込むことができる。また、それらを成し遂げる「品質タスク」としてブレークダウンできる。

また、受入テストの後に、「品質テスト」を入れる。そしてそのフィードバックを「品質バックログ項目」として製品バックログに入れることができる。

#このパターンの意義

よくアジャイル開発についての質問で、「品質保証はどうするのですか？」と聞かれることがあります。日本の大企業の中には「品質保証部」という組織があり、そこが出荷判定をしたり、最終的な製品のQA(Quality Assurance)についての責任を持つことがあります。その部署が、現場のアジャイル開発にどのように関わるのがよいのか、という質問です。ひいては、メトリクスの取り方（既存の品質のメトリクスや、バグ収束曲線が当てはまらない）にはじまり、「どのタイミングで」、「どういった体制で」関わるのか、という質問です。日本でアジャイル開発の導入が進まない、もしくは懐疑的に考える人が多いのは、この部分にあると思います。

小さな組織やスタートアップではそもそも、「売れるものを作る」ことが先であり、売れないものの品質を追い求めることに意味は小さいでしょう。しかし、その場合でも使えるパターンも中に含まれています。

# おわりに

ここまでが**「QA2AQ」**パターンの（不完全な）解説です。

日本でもQAとアジャイルの関係について、言及されている資料には、こんなのがあります。

* [プロダクト部門での品質保証担当の振る舞いアジャイル開発の場合 〜 QAオジサンのアジャイル奮闘記](http://jasst.jp/symposium/jasst16tokyo/pdf/C5-1.pdf) ソニーで品質保証部として活躍されていた、永田さん
*  [あじゃいる時代の品質保障〜DevSQAの提案](http://www.slideshare.net/hiroakimats/devsqa) 株式会社豆蔵、松永さん
* (その他ここに入れるべき参照を探している...)

以下、少し文脈を補強する付録です。パターンはGoFの「デザインパターン」だけでなく、エマージェントな知識を捕捉していく_形式_としてだけでなく_活動_として、ソフトウェアの中で長い歴史を持っていて、有効に機能する場面が多い、ということを加えさせてください。

#著者について

オリジナルのパターンの著者は、Yoder と Rebecca, Ademar Aguilarで、鷲崎先生がシェパードだったとのこと。パートによっては鷲崎先生も著者に入っています。ぼくの尊敬する[Rebecca Wirth-Brook](http://www.wirfs-brock.com/) 女史は『[オブジェクトデザイン](https://www.amazon.co.jp/dp/4798109037)』の著者としても有名。オブジェクト指向、アジャイル、ソフトウェアアーキテクデャ分野の先人です。各パターンのドキュメントは、Rebecca のサイトより PDF で参照可能。

http://www.wirfs-brock.com/ にあるリンク集。

* "AQ to AQ Patterns about transitioning from Quality Assurance to Agile Quality", AsianPLoP 2014 [pattern paper](http://www.wirfs-brock.com/PDFs/QA2AQ.pdf)
* QA to AQ **Part Two**: Shifting from Quality Assurance to Agile Quality "Measuring and Monitoring Quality", PLoP 2014 [pattern paper](http://www.wirfs-brock.com/PDFs/QA2AQTwo.pdf)
* QA to AQ **Part Three**: Shifting from Quality Assurance to Agile Quality "Tearing Down The Walls," SugarLoafPLoP 2014 [pattern paper](http://www.wirfs-brock.com/PDFs/QA2AQThree.pdf)
* QA to AQ **Part Four**: Shifting From Quality Assurance to Agile Quality "Prioritizing Qualities and Making them Visible," PLoP 2015 [pattern paper](http://www.wirfs-brock.com/PDFs/QA2AQPartFour.pdf)
* QA to AQ **Part Five**: Becoming Agile at Quality "Growing Quality Expertise," AsianPLoP 2016 [pattern paper](http://www.wirfs-brock.com/PDFs/QA2AQPartFive.pdf)



# パターンとHillside Group

[Hillside Group](http://hillside.net/) は1993年に設立されたパターン発祥の地。XPの Kent Beck, オブジェクト指向方法論開祖の Grady Booch が始め、Ward Cunningham, 後に Design Patterns を書く Ralph Johnson, "Fearless Change"の Linda Rising, 現在Scrumトレーナーの Cope こと Jim Coplien 等も属していた。 Erich Gamma らの著書『デザインパターン』(Design Patterns)が一つの結実だが、現在でも、パターンライティングワークショップを全世界で開いている。日本では MensorePLoP が2001年に開かれ、その後も鷲崎先生が[AsianPLoP](http://patterns-wg.fuka.info.waseda.ac.jp/asianplop/)として引き継いでいる。

## 参考リンク
*鷲崎研究室: http://www.washi.cs.waseda.ac.jp/?page_id=3056
* Hillside Group: http://hillside.net/
* AsianPLoP: http://patterns-wg.fuka.info.waseda.ac.jp/asianplop/
* Joseph Joder:  http://joeyoder.com/
* Rebecca Wirth-Brook:http://www.wirfs-brock.com/
* 「QA to AQ: アジャイル品質保証のパターン集」をUltimate Agile Stories 5に寄稿: http://www.washi.cs.waseda.ac.jp/?p=2012