レビューの計画と方法

# レビューとは何か
- 静的テストの一種。コードに対する静的解析や動的テストを保管する手段となる。また、ドキュメントに対しては、そこに含まれる欠陥を発見する手段。	
- プロジェクト内の節目やマイルストンで行う。	
- レビューを適切に実施すれば、品質の保証に向けた費用対効果が高い手段になる。	
- レビュー技法ごとにメリットは異なる。	
    - 要件レビューのメリット：
要件レベルでの問題を除去し、それがコードへの実装されることを防げる。
    - 静的解析のメリット：
コーディング標準に準拠できる。
    - インスペクションのメリット：
欠陥の検出ができることに加え、成果物に欠陥を作りこまないよう開発者が学ぶ機会となる。

- レビュー参加者にはレビュープロセスに関する適切な知識が必要。	
				
### レビューリーダの役割
- レビューが成功する環境を整える必要がある。レビューの成功要因は本記事の末尾にまとめた。
- レビューが効果的な価値をもたらすように、レビューの諸要素を定量的に測定するための計画を作成する	
- レビューリーダがレビューのメリットをプロジェクトに示し、プロジェクト内でレビューを推進する。

# マネジメントレビューと監査	

- マネジメントレビューと監査の共通点は、開発したソフトウェアではなくソフトウェアプロセスに重点を置く	

## マネジメントレビューとは何か
- プロジェクトのマネジメントの現状のレビュー。具体的には、次の通り。
    - 予実の間の差をチェックする。
    - マネジメントの手順の妥当性をチェックする。
    - プロジェクトリスクをチェックする。
    - 何かのアクションをとることによる影響とこれらの影響を測定する方法をチェックする。
    - 管理すべき課題のリストを作成する。	
- 目的は、プロセス改善活動のためである。
- タイミングに関しては、主要なプロジェクトマイルストンで行う。例えば、テスト実行とその他重大なプロジェクトフェーズの前・最中・後に行う。	
     

 ## 監査とは何か	
 - 目的は、**一定の基準に対する準拠を立証**すること。基準とは、適用される標準、規制、契約義務など。		
- 方法
監査の担当者は監査リーダと呼ばれる。監査リーダが管理、モデレートする。さらに、準拠のエビデンスを収集する。監査の成果物には、観察結果、勧告、是正措置、合否アセスメントがある。

# レビューのマネジメント	
- まず、適切な**レビューの種類の選択**をする必要がある。レビューの種類には次のものがある。
    - 契約レビュー
プロジェクトの開始時と主要なマイルストンで行う
	- 要件レビュー	
	- 基本設計レビュー	
全体的なアーキテクチャ設計の完成後に行う
    - 詳細設計レビュー	
    - コードレビュー	各モジュールの完成後
    - テスト成果物レビュー
	成果物とは、テスト計画、テスト条件、品質リスクの分析結果、テスト結果など
    - 各テストレベルのテスト開始レビューとテスト終了レビュー	
開始基準と終了基準のチェック。
    - 受け入れレビュー	
システムをステークホルダが承認するためのレビュー
## レビュー実施計画を立てる
- レビュー戦略は、テストポリシーと全体的なテスト戦略とに適合させなければならない。テストポリシーとテスト戦略は、簡単にいうと、テストの目的の定義したもの。詳細な違いは次のサイトで扱っている。		

### 計画の手順	
- プロジェクトレベルでの全体的なレビュー計画を作成する前に、明確にする点は3つある。
    1. レビュー対象は何か　
    2. 各レビューに関与する人物は誰か　
    3. 対処すべき関連リスク要因は何か

- レビュー対象が決まったら、それぞれへのレビュー方法を定める。方法は、非公式レビュー、ウォークスルー、テクニカルレビュー、インスペクション、あるいはそれらの組み合わせがある。
- 対象と方法が決まったら、レビュープロセスに割り当てる時間とリソースを決定する。この時、リスク評価と投資効果の計算をする。	
- レビューの実施タイミングの決定方法。最適なタイミングは、次のファクターをもとに決定される
    1. レビュー対象がどこまで完成しているか 
    1.  レビュー担当者の都合が合うか 
    3. レビューの所要時間	
- レビューの目的はテスト計画時に定義する。この際には、効果的なレビューの実施、レビューのフィードバックに関する合意を含む。	

### レビュー参加者	
- 技術とレビュー方法の両方に関して、適切な知識を持っている必要がある。
- さらに、細部に対しても端から端までチェックすること、注意力も求められる。	
- 良いレビューコメントとは、明確かつ優先順位が妥当である。		
- レビュー担当者が自分の責任を確実に自覚できるよう、レビューアに対して教育が必要な場合もある。		

### リスク対応
- レビュー成功のためには、十分な技術的知識のあるレビュアーの参加が重要。
- さらに、レビューアがスケジュールの適切な時点でレビューの準備を行い、それらに参加するための時間を、十分に割り当てていることを保証しなければならない。
- 必要なプロセスや技術に関する教育をレビューアが受ける時間も計画に追加する。
- 人間の調達計画、ビジネス計画の変更により主要なレビューアが参加できなくなった場合に備えて、バックアップのレビュー担当者を決めておく。		

### レビュー方法	
- 適切な測定指標をレビュー参加者が提供する。それにより、成果物の評価を効率よく行う。	
- 将来のレビューのためにチェックリストを作成し、メンテナンスする。	
- レビュー時に発見した欠陥の重要度、優先順位のつけ方を定義する。	

### レビューの事後対応
- 発見された課題が目的に沿って解決されていることをレビューメトリクスをもとに確認する。	
- レビューの費用対効果を判断するためにレビューメトリクスを使う。レビューの効果の評定方法の1つは、後続のテストで発見した欠陥の数をレビューレポートの結果と比較することだ。ここで、レビューをすり抜けた欠陥があった場合、レビュープロセスの方法を改善する必要がある。
- レビューで欠陥を掬い取れなかった原因としてありうるのは、次のとおりである。レビュープロセスの問題(不適切な開始・終了基準)、レビューチームの人選ミス、レビューツールが不十分、レビュー担当者のスキルが不十分、レビューの時間が不足していた。
- レビューで出てきたフィードバックを関係するステークホルダに提供する。	
- フィードバックをレビュー参加者に提供する	

# レビューのためのメトリクス	
- メトリクスを使う目的は3つある。
1.レビュー対象の成果物の品質を定量的に評価する。
2.レビューに費やすコストを定量的に表す。
3.レビューを実施したことによる下流工程への効果を評価する。			
- これら3つのメトリクスから、レビューにおける費用対効果とレビューの効率を算出できる。これは、レポーティングやプロセス改善活動にも使用できる。			

## プロセスメトリクス	
- 欠陥検出効率(レビューの後続のプロセスで発見される欠陥をもとに算出)		
- レビュープロセスの活動とタイミングの改善　
- 計画した成果物を網羅している割合		
- 発見した欠陥の種類とそれらの重要度		
- レビュープロセスの効果と効率性に関する参加者調査	
- レビューで発見した欠陥と、テスト、リリース後の運用時に発見した欠陥の比		
- レビュー効率(レビュータイプごとの欠陥検出効率)		
- レビュー担当者数		
- 作業時間あたりの欠陥検出数		
- レビューによってプロジェクトで節約される推定時間		
- 平均欠陥工数(レビュー、テストなどの欠陥の検出にかけた時間とトータルの修正時間を、そう欠陥数で割った値)		

## プロダクトメトリクス
- 成果物のボリューム(ページ数、コード行数)		- 準備時間(レビュー前に費やした時間)		
- レビュー実施に費やした時間		
- 欠陥の修正のための作業時間		
- レビュープロセスの日数		
- 発見した欠陥の数とそれぞれの重要度		
- 成果物内の欠陥の偏在の特定(どの領域に欠陥が集中しているか)		
- レビューのタイプ(非公式レビューorウォークスルーor...)		
- 平均欠陥密度(1ページあたり、コード1000行あたりの欠陥数など)	(	
- 推定残存欠陥数		

# 補足：レビューが成功するための要因

## プロセス的な要因
- レビュー計画時に、目的を定義する。目的は、計測可能&定量的で、終了基準として使えるものにすべき。
- 目的、開発物、レビュアーのレベルに応じてレビュータイプを選択する。
- レビュー対象の成果物で欠陥を効果的に発見するために適切なレビュー技法を使う。(例：チェックリストベース技法、ロールベース技法)
- 成果物に関するフィードバックを迅速&高頻度で作成者に伝えるために、大きなドキュメントは分割して小さくし、記述とレビューを行う。
- レビュー担当者に十分な準備時間を確保する
- マネージャがレビュープロセスを最適化する
- レビューは所属する組織のポリシーと整合する

## 人的な要因
 - レビューの目的に照らして、適任者をレビュー担当者に割り当てる。(例：多様性のあるスキルセットや視点を持ち、ドキュメントを使う人々を集める)
 - テスト担当者は、レビュー対象の成果物の内容を知ることで、それを効果的なテストにつなげる
 - レビュー担当者に細心の注意を払って詳細にレビューしてもらう
 - レビューアが個人でのレビュー時やレビューミーティング時に集中力を維持できるよう、レビュー対象をブレークダウンしておく
 - レビュー参加者は発見された欠陥は客観的な態度で確認し、対処する ~~(プロジェクト内で不仲な人は成果物に対し、針小棒大にガツガツ批判された経験があると重要性が分かります)~~
 - レビューミーティングは参加者にとって有意義な時間になるよう進行する
 - レビュー時の心理的安全性を担保する。レビュー結果を参加者の評価に使用しない
 - 参加者は、問題の指摘が言語による攻撃だと受け止められないように言い方に気を付ける
 - インスペクションなどの進行の型が決まっているレビュータイプは、参加者に教育が必要。
 - 学習とプロセス改善の文化を醸成する

# 参考資料

テスト技術者資格制度
Advanced Level シラバス日本語版
テストマネージャ
Version 2012.J04
https://jstqb.jp/dl/JSTQB-Syllabus.Advanced_TM_Version2012.J04.pdf

テスト技術者資格制度
Foundation Level シラバス
Version 2023V4.0.J01
https://jstqb.jp/dl/JSTQB-SyllabusFoundation_VersionV40.J01.pdf