これはなに?
アジャイル開発における品質予測の知見が自分の中になかったので一通り調べてみて、その結果をまとめてみました。
結論
定量的な品質予測方法は大きく分けて以下の2つがあります。
①ユーザーストーリーに対して受け入れ基準を作成し結果を分析する(難易度低)
②品質と連動している代用特性を見つけて測定する(難易度高)
内容
定量的な品質予測方法は大きく分けて以下の2つがあります。
①ユーザーストーリーに対して受け入れ基準を作成し結果を分析する
これはアジャイルでは基本的にやっているプロダクトの品質を測定するもので、
受け入れ基準を満たしていること = 要件を満たしていると言う意味になります。
受け入れ基準の作成に関してはJSTQBのシラバスが参考になりました。
以下JSTQBのシラバスからの抜粋
ユーザストーリーは、重要なテストベースとして機能する。次のアイテムもテストベースとなる可能性がある。
- 以前のプロジェクトでの経験
- システムの既存の機能、フィーチャおよび品質特性
- コード、アーキテクチャおよび設計
- ユーザプロファイル(コンテキスト、システム構成およびユーザの振る舞い)
- 既存および以前のプロジェクトの欠陥に関する情報
- 欠陥分類法での欠陥の分類
- 適用可能な標準(航空関連ソフトウェアでは[DO-178B]など)
- 品質リスク(3.2.1 項を参照)
②品質と連動している代用特性を見つけて測定する
①で担保できるのは新規実装部分の品質だけでプロジェクト全体(新規実装外等)の品質までは担保されていません。
そこで、フローやリソースなどの代用特性を用いて測定するという方法があります。
例はNTT DATAさんのアジャイル開発での品質保証から参照します。
たとえば、「正しいプロセスで開発すれば、正しいプロダクトができる」という仮説に基づいて、「プロセス品質」を測ることは、従来からよく行われています。それに加えて、アジャイル開発では、開発者のスキルやチームの成熟度といった「リソース品質」がプロダクトの品質に影響するという考えから、リソース品質も代用特性として使われます。リソース品質には、バーンダウンチャートやベロシティなど、進捗や生産性に関するメトリクスが含まれます。つまり、開発者やチームが計画通りに作業ができて、高い能力を発揮できていれば、開発されるプロダクトの品質も高いという仮説です。
この例であるように、開発者のスキルやチームの熟練度等のリソース品質がプロダクトの品質に影響することを踏まえて測定する
ただし、この手法は開発者のスキルや成熟度という定性的なものを定量化出来ているという前提があって初めて成り立つので難易度は高いです。
所感
今回参考になったJSTQB アジャイルテストのシラバス
や定量的品質予測のススメ 1
はまだ自分の中にきちんと落とし込めていない部分があるのでそこも含め引き続きアウトプットしていこうと思います。