品質とは何か、どのように保つか
品質保証セミナーを受けたときのメモ。品質とは何か、どのように保つかということの考え方の土台を作ることができた。よかった。
2018 年頃にVALTESさんによる品質保証セミナーを受けたときのもの。
私の動機
- 私は、品質の高さというものがプロダクトの魅力のために欠かせない要素であろうと考えている
- 一方で私は、「品質とは何か」ということを自身では説明できなかった
- 私は、自身で説明できるようにならない限り、「品質」というものを高く保つということはできないと思った
品質とは何か
様々な媒体で、様々に定義されている。セミナーでは以下のものを採用していた。
「品質とは誰かにとっての価値」
-- 「ワインバーグのシステム思考法」G.M.Weinberg
(私もこの定義はよいと思うので、今後これを採用することにした)
品質を要素分解する
狩野モデル
品質保証界で広く支持されている「狩野モデル」によると、品質は達成度と満足感の二軸で表すと以下の 3 種類に大別される
画像は一般社団法人日本科学技術連盟より
1.当たり前品質
あってあたりまえだと考えられるもの。例えば電話なら通話できること
あってあたりまえなので、達成できていなければ満足感が非常に低くなる
2.一元的品質
あればあるだけうれしいもの。性能などの数値で表わされるものの多くは一元的品質に属する
あればあるだけうれしくなるので、達成度合いと満足感は比例する
3.魅力的品質
思いつきもしなかったもの
なければふつうで、あればうれしいので、達成度合いが 0 でもかまわなくて、達成されているものがあれば満足感は急激に上昇する
ISO9126 ソフトウェア品質特性
ソフトウェアの品質を表す特性を定めた国際規格ISO9126では、品質を表す特性を以下の 6 つに分類している。
- 機能性(Functionality) :: 必要な機能が実装されている
- 信頼性(Reliability) :: 機能が正しく動作し続けられる
- 使用性(Usability) :: 利用者に使いやすく魅力的である
- 効率性(Efficiency) :: 資源の量に対比して適切な性能である
- 保守性(Maintainability) :: 維持、変更がしやすい
- 移植性(Portability) :: 別環境に移しやすい
上 3 つ、機能性、信頼性、使用性は、使う人向けの品質で外部特性と評されることもある。下 3 つ、効率性、保守性、移植性は、作る人向けの品質で内部特性と評されることもある。
テスト
欠陥を発見し品質を担保するためによく行われるのがテストである。ただし「テストで品質を良くすることができる」というのは誤り。
テストは 品質が低いことを発見できる ので、テストで発見した低品質に対応する プロダクトの部分を修正すれば、品質を高められる 。
テストをするときの視点は 2 つある。
- 正しく製品を作っているか。製品が開発仕様書を実現できているかを確認する、検証(Verification)と呼ばれるもの
- 正しい製品を作っているか。製品がユーザーの要求を満たしているかを確認する、妥当性評価(Validation)と呼ばれるもの
両方を満たしていなければ、品質を満たしているとは言えない。満たしていない状態のことを欠陥のある状態と呼ぶ。
欠陥はなぜおきるのか。Verification では仕様書の記載誤りやプログラムの誤りなどでおきる。Validation ではユーザーニーズとの不一致や使用条件の想定ミスなどでおきる。どちらの場合も突き詰めれば「欠陥は人間のエラーによっておきる」と言える。
テストの心掛け
Verification:仕様書に書いてあることを実現できていることを確認するに比べ、Validation:ユーザーの期待していることを満たすをテストするのは難しい。テストを設計するとき、またテストを実施するときに以下の 3 つを分けて意識しておくと欠陥に気づきやすい。
- テスト対象で「あってはならないこと」は何か
- テスト対象で「できなければならないこと」は何か
- テスト対象で「あったらいいな」は何か
また、品質というのは「誰か」にとっての価値なので、想定している「誰か」の立場になったつもりでテストすること。
例えば、ユーザーはそれほど潤沢ではないマシンリソースとネットワークをもち、やや暗いところで利用すると想定されるなら、ある程度の速度や環境が担保されている開発マシンと安定した回線でテストするのではなく、別のマシンを用意して暗いところに行き試すと新しい発見があるかもしれない。
Discussion