品質報告書とは何か?PMBOKに出てくる品質を監視するプロジェクト文書を解説
品質報告書の概要
品質報告書とは、開発中や提供中のシステムや商品が、どの程度の品質を確保できているかを定量的、定性的に分析して伝えるために作成するものです。
システムの操作性や不具合の頻度など、システム自体の品質だけではなく、システムの開発状況や工程などの作業プロセスも品質とみなし、品質報告書に記載する必要があります。
PMBOKに沿ったプロジェクトマネジメントにおいて品質報告書はプロジェクトの作業や調達などの監視プロセスで用いられ、当初の計画通りの品質が実現できているのかを判断する指標となります。
品質報告書の重要性
品質報告書は、ユーザーの視点と開発者の視点の2つの視点において重要なものになります。
ユーザー視点
商品やシステムの不具合によって、ユーザーに大きな損害を与えてしまう可能性があります。たった一つの不具合でも、ユーザーに大きな損害を出してしまうことで、クライアントとエンドユーザーの信頼関係が失われる恐れもあります。
そのため、ユーザー視点では、システムや商品自体の品質を担保するために以下のような項目について品質報告を行います。
- ユーザーに対して、提供しているシステムや商品の不具合の発生状況やバグの発生報告など、商品自体の品質を担保するために報告書を作成する
- 不具合やバグを修正するための、テストの実施状況や、修正後の数値などを明確に報告するために報告書を作成する
- 商品の種類によっては、社会環境や地球環境への影響に対しての報告や改善方法などの報告を求められるケースも増加している
開発者視点
作業工程の品質を軽視して、作業を行っている場合、影響度が高い不具合品を作成したり、不良が多発してしまったりする可能性があります。
通常の作業工程内で対応できない不具合の場合は、正常な作業がストップしてしまい、ユーザーへの納期が遅れてしまったり、対策のため人員を増やすなどの処理を行うことで、開発の費用がオーバーしてしまう恐れがあります。
そのため、プロジェクトマネジャーの視点から、「商品の開発や製作の作業工程、作業手順や、作業基準や規則が厳守されているか?」「商品やシステムに問題が発生した時の処理の対応は適切に取られているか?」など、作業工程の全てのプロセスにおいての品質報告が必要とされています。
品質報告書を作成するための指標
ここからは、ソフトウェア開発のプロジェクトに焦点を絞り、品質報告書に記載する指標について解説していきます。
外部品質と内部品質
システムの評価には「外部品質」と「内部品質」の2つの観点からの品質評価が必要です。
外部品質とはユーザーが実際にシステムを利用した時の使用感やプログラムの振舞いなどが対象となり、ユーザーの利用時の品質に直接影響を与えるものになります。
これに対して、内部品質はシステム内部の特徴を指し、ソースコードや、仕様書、設計書などが測定対象となります。
ソフトウェアの品質特性
国際規格ISO/IEC 9126(JIS X 0129)ではソフトウェアに対して以下の6つの品質特性を定めており、この特性から内部品質、外部品質を評価していきます[1]JISX0129-1:2003 ソフトウェア製品の品質-第1部:品質モデル。
- 機能性
- 信頼性
- 使用性
- 効率性
- 保守性
- 移植性
ここからは、これらの6つの品質特性の概要を見ていきましょう。
機能性(Functionality)
機能性とは、目的から求められる必要な機能の実装の度合いのことです。
指定された条件のもとで実行されたときに、ユーザーの要求を満たす機能が実装されているかなどで判断されます。
信頼性(Reliability)
信頼性とは、指定された条件の下で実行されたときに、達成の水準を維持し続ける能力があるかどうかを示すものです。
例えば、システム障害の発生率などで判断されます。
使用性(Usability)
使用性とは、ユーザーにとって操作方法や手順は理解しやすいものであるかどうかを示すものです。
スムーズに実行し利用することができれば、使用性が高いと言えます。
効率性(Efficiency)
効率性とは、CPUやメモリなどの資源をどの程度効率的に使用できているのかを表します。
例えば、ソフトウェアの処理を実行して目的を達成するために、時間や資源などのリソースがどのくらい必要か、あるいは決められた時間の中でいかに早く、数多い処理をこなすことが可能かを測定していきます。
保守性(Maintainability)
保守性とは、システムの保守やメンテナンスに必要な労力の程度を示しています。
例えば、エラーが発生した時の修正が容易に行えるソフトウェアは保守性が高いと言えます。
移植性(Portability)
移植性とは、別の環境への移植のしやすさを表します。
例えばiPhone6で動いていたアプリがiPhoneXでも動けば、そのアプリは移植性が高いと言えます。