ソフトウェアの品質については、既に多くの定義が試みられています。例えばSQuaREや狩野モデルです。本記事では、その中でGerald M.Weinburgの定義に着目します。Weinburgは、ソフトウェアの品質を以下のように定義します。
品質は誰かにとっての価値である。(Weinburg, (1994))
この定義を聞いたことがある方は多いかもしれません。わかりやすい定義ではありますが、もう少し詳しく考えてみます。Weinburg (1994)を読むと、Crosby (1980)に対する反論として上記の定義がなされていることがわかります。Crosby (1980)は以下のように品質を定義しています。ただし、ここでの品質は、ソフトウェアの品質よりも広い意味での品質を指しています。
品質は"要求に対する適合"である。(Crosby, (1980))
Weinburgはここで、要求は誰かから、明示的あるいは暗黙的に示されるものであると指摘します。誰かとは、ユーザーや、開発者や、セールスなど、様々な主体です。
ソフトウェアにバグがないことは、ユーザーにとって価値があり、品質が高いと言えるかもしれません。美しいソースコードは、開発者にとって価値があり、品質が高いと言えるかもしれません。多機能であることは、セールスにとって価値があり、品質が高いと言えるかもしれません。このように、品質は主体によって変わるものです。Weinburgはこれを「品質の相対性」と呼びます。つまり、品質について話す時は、その背後にいる主体が誰なのかを考えなければならないということです。
ここで再びCrosby (1980)を考えます。この定義は、「誰の要求が重要なのか」ということについては何も言っていない、とWeinburgは指摘します。誰の要求が重要なのかがわからない以上、品質の相対性から、ソフトウェアの品質を定義することができないというわけです。そこで、品質を定義する上で要求という概念を考えるのを止め、以下のように定義します。
品質は誰かにとっての価値である。(Weinburg, (1994))
Weinburgは、品質を定義するためには誰の意見が重要かを決定しなければならず、品質の定義は常に政治的・感情的なものになるとも指摘します。