品質とは何か

 プログラム(testingとかバグ根絶系)の話をしていると「品質」と「コスト」って言葉がよく出てくるけど、これって微妙な言い回しですよね。
 なんていうか、絶対に認識が一致してないように思うのです。「品質」って言葉に凝縮されている要素はそれほどまでに有象無象だから。

 で、実際に焦点とすべきは(「オブジェクト指向入門」によって品質を体系化した)メイヤー(Mayer)の言う、

  • 外的品質要因
    • 正確さ(Correctness)
    • 頑丈さ(Robustness)
    • 拡張性(Extendibility)
    • 再利用性(Reusability)
    • 互換性(Compatibility)

 が主なものであって、これらは顧客が触れることで実感できる要素となる。
 中でも重用なのが拡張性と再利用性と言われている。
 
 ただし、
 正確さ……結果が間違っていない、操作に対する間違いなどを極力補正する
 頑丈さ……様々な操作に対して意味不明なエラーを出さない
 互換性……旧システムを引き継げる、新システムに引き継げる
 に比べて、
 拡張性、再利用性は顧客が認識しづらい点と呼べるだろう。
 なので、このあたりについて考えていきたいな、とか今は考えています。
 testingがもたらすのは、これら各要素の向上なはずなので。
 
 対して、

  • 内的品質要因

 はソフトウェアの専門家にしかわからない品質です。
 例えば、オブジェクトの構造だとか、変数名だとか、ループの記述法だとか。

 もちろん、内的品質要因を上げることで、外的品質要因に影響するので改善は必須です。