ソフトウェア品質とは
ソフトウェア品質の最も有名な定義
ソフトウェア品質の最も有名な定義は、ISO/IEC25000(通称SQuaRE(スクェアと読む))による、以下のものでしょう。
品質とは(ISO-IEC25000:2014)
「明示された状況下で使用するとき、明示的ニーズまたは暗黙のニーズを満たすためのソフトウェア製品の能力」
品質の定義
産業全般での定義を見てみると、品質マネジメントシステムで有名なISO9000では、品質を以下のように定義しています。意味としては、SQuaREとほぼ同じです。
品質とは(ISO 9000:2015)
「本来備わっている特性の集まりが、要求事項(※)を満たす程度」
※要求事項 … 明示されている、通常、暗黙のうちに了解されている若しくは義務として要求されている、ニーズまたは期待
ソフトウェア品質とは何か
ソフトウェア品質をわかりやすく説明すれば、ある条件下において、ニーズを満たしているかどうか、ということです。しかも、そのニーズには、明示的なニーズだけでなく暗黙のニーズも含まれなければなりません。つまり、顧客から「○○の機能を持つシステムを開発してほしい」と依頼された時、言われなくても、使いやすさや性能、セキュリティなどの暗黙のニーズを、当たり前に満たしている必要があるということです。ISO 9000:の定義にあるように、現在の世の中で、「暗黙のうちに了解されていたり、義務として要求されている」ニーズは、満足するのが当然というのが、品質の定義の示していることです。したがって、品質は、明示的なニーズから暗黙のニーズまでさまざまな特性を備えているものといえます。
ソフトウェア品質特性とは
ソフトウェア品質を考えていく上で、手掛かりになるのがソフトウェア品質特性です。ソフトウェア品質特性は、上述したSquaREで定義されています。
製品品質モデル
製品品質モデルは、ソフトウェア開発時に利用するためのもので、8つの品質特性(機能適合性、性能効率性、互換性、使用性、信頼性、セキュリティ、保守性、移植性)から構成されています。各品質特性の配下には、副特性がいくつか定義されています。
利用時の品質モデル
利用時の品質モデルは、ソフトウェアを利用する際の特性を示したもので、5つの品質特性(有効性、効率性、満足性、リスク回避性、利用状況網羅性)から構成されています。こちらは顧客視点の特性であり、こちらも副特性まで定義されています。
ソフトウェア品質特性の使い方
品質特性は、多面的な「品質」を解析的にとらえたときに、ソフトウェアが持つべき特性を網羅的に整理したものです。ソフトウェア開発時には、SQuaREが示す品質特性をみながら、各特性に対して、どのような内容を備えるべきかを検討する、という使い方をします。必ずしもすべての品質特性を同じ程度に備えなければならないということではなく、ソフトウェアによって備えるべき特性には強弱があるという点も理解しておいてください。
ソフトウェア品質保証とは
ソフトウェア品質を確保するために不可欠な活動が、ソフトウェア品質保証です。「品質保証」について、ISO9000では、以下のように定義しています。
品質保証の定義
品質保証(Quality assurance)とは(ISO 9000:2015)
「品質要求事項が満たされるという確信を与えることに焦点を合わせた品質マネジメントの一部」
ソフトウェア品質保証の目的
注目すべきは、品質が保証できていることではなく、顧客が「品質要求事項が満たされるという確信を得る」ことに焦点を絞っている点です。顧客が、品質が確保されていると納得する必要があるのです。納得するには、証拠が求められます。最近、「品質の説明責任」という表現で、そのソフトウェアの品質をどのようにして確保したかを説明できることが重要と言われています。これは、まさに品質保証の目的そのものです。顧客が、品質が確保されていると納得するよう、証拠をもって示すことが、品質保証の目指すところなのです。
ソフトウェア品質、ソフトウェア品質特性、ソフトウェア品質保証について説明してきました。理解していただけたでしょうか。