品質とは何か
プログラム(testingとかバグ根絶系)の話をしていると「品質」と「コスト」って言葉がよく出てくるけど、これって微妙な言い回しですよね。
なんていうか、絶対に認識が一致してないように思うのです。「品質」って言葉に凝縮されている要素はそれほどまでに有象無象だから。
で、実際に焦点とすべきは(「オブジェクト指向入門」によって品質を体系化した)メイヤー(Mayer)の言う、
- 外的品質要因
- 正確さ(Correctness)
- 頑丈さ(Robustness)
- 拡張性(Extendibility)
- 再利用性(Reusability)
- 互換性(Compatibility)
が主なものであって、これらは顧客が触れることで実感できる要素となる。
中でも重用なのが拡張性と再利用性と言われている。
ただし、
正確さ……結果が間違っていない、操作に対する間違いなどを極力補正する
頑丈さ……様々な操作に対して意味不明なエラーを出さない
互換性……旧システムを引き継げる、新システムに引き継げる
に比べて、
拡張性、再利用性は顧客が認識しづらい点と呼べるだろう。
なので、このあたりについて考えていきたいな、とか今は考えています。
testingがもたらすのは、これら各要素の向上なはずなので。
対して、
- 内的品質要因
はソフトウェアの専門家にしかわからない品質です。
例えば、オブジェクトの構造だとか、変数名だとか、ループの記述法だとか。
もちろん、内的品質要因を上げることで、外的品質要因に影響するので改善は必須です。