商品や成果物の品質を保つことは、どの業界でも大切なことです。もっとも身近な例として、わたしたちが口にする食品では、商品ごとに賞味期限など、その品質を保証する基準や表示を設け、品質管理を行っています。
では、ソフトウェアの品質管理は、どのような手法によって行われるのでしょうか?ここでは、ソフトウェア品質管理がどのような手法で実践されているのか解説していきます。また、品質管理の注意点もあわせて解説していますので、品質管理をご担当される際はぜひお役立てください。
ソフトウェア品質管理に必要なもの
ソフトウェアの品質管理には、3つの事前準備と「品質管理の7つ技術」と呼ばれる7つの技術が必要とされます。品質管理を行うためには、まずこれらをしっかり理解することが大切です。
ソフトウェア品質管理をする前に決める3つの項目
まず、品質管理の前に、以下の3つの項目を順番に行う必要があります。
・品質目標の設定
品質目標とはいっても、ソフトウェアは工業製品のように品質を直接計測することはできません。そのため、この項目は品質目標そのものではなく、問題の早期発見の手段を構築するものとなります。
ソフトウェア品質管理は「QCD(Quality=品質、Cost=コスト、Delivery=納期)」の観点から行い、それぞれの要素がバランスよく保たれている状態を目指すことによって、品質向上を図ります。「QCD」は相互関係にあるため、どれかひとつでも欠けてしまわないようにすることが大切です。
・異常の発見と是正
品質目標に基づき、バグの発見と修正を行います。各工程で発見されたバグは、その工程内で修正することを原則とすることが推奨されています。何故ならば、上流工程で発生したバグを下流工程まで発見せずに進めてしまうと、開発の進行とともに影響範囲が拡大し、除去が困難となるため、早期発見が重要になります。
・目標達成予測
プロジェクトの進捗に応じ、設定した品質目標を達成できるか予測することも重要となります。プロジェクト全体の状況を統計的に分析し、目標達成の可能性を調べることで達成までの課題を確認し、対策を練ることができるようになります。
ソフトウェア品質管理に必要な7つの技術
「品質管理の7つ技術」を用いることで、業務上の問題点を明確にすることができます。
・特性要因図
問題とする特性と要因の因果関係を、魚の骨のような太いラインの周囲に細かいラインのある形で表した図です。体系的な関係づけを可視化できる利点があります。
・パレート図
データを分類項目別に分けて、棒グラフと折れ線グラフで表した図です。対策の優先度を決定しやすく、問題や改善内容の合理的な選択が可能です。
・チェックシート
データを項目別に分類し、分布を知るためのシートです。また、要因の系統的整理において、データ採取の効率化を図るためにも用いられます。関係者から意見を継続的に聞き、改善することが大切です。
・ヒストグラム
データが存在する範囲をいくつかに区切り、各区間に入るデータ数を縦軸に置いた柱状のグラフです。データのばらつきを可視化し、把握するために用います。
・管理図
工程の安全性をチェックするため、もしくは工程の安全性を保持するために用いられる折れ線グラフです。UCL=上方管理限界、CL=中心線、LCL=下方管理限界という、3本の管理線を基準としています。
・散布図
対になった変数を、それぞれ縦軸・横軸にとって値を打点することで作成する図です。ふたつのデータを検討するのに用いるため、データの関係性が可視化され、把握しやすくなります。
・グラフ
複数のデータを数字から図へと可視化し、把握しやすくします。用いる図には、棒グラフ、折れ線グラフ、レーダチャートなどがあります。
ソフトウェア品質管理の実践方法
品質管理のおもな実践方法として、まずはどのようなリスクが起こるのか、対象を分析した上で計画を立てていき、さまざまな方法を用いて状況を確認していく形となります。ここでは、品質管理の計画の立て方と実行の仕方のひとつを見ていきましょう。
ソフトウェア品質管理における計画の立て方
どのような手順で、品質管理の計画が立てられているのかご紹介します。
・リスク管理・計画
スタート地点である見積もり時から、ゴール地点である開発完了時までに、どのようなリスクがあるかを分析・管理します。
・品質目標値の設定
品質管理指標に応じて、プロジェクトにおける品質目標値を決定します。品質評価は、この目標値と実績値を比較し行います。
・テスト工程の定義
テスト作業はいくつかの工程に分かれます。ここでは、各工程でどのようなテストを行うかを定義づけします。
ソフトウェア品質管理の手法
品質管理を実行するにあたっては、以下のような方法がひとつの例として挙げられます。
・手戻り防止のため、問題点を早期に発見するピアレビュー
ピアレビューとは、ソフトウェア開発の各工程できあがった成果物に対して、チームメンバーが行うレビューのことです。ピアレビューの目的は、手戻りの防止と品質・生産性の向上となります。
ピアレビューの留意点は、できる限り早期から行うことです。開発が進行し、大きな作業成果物ができてしまってからでは修正範囲も大きくなる可能性が高く、対応が遅れてしまう恐れがあるのです。
つまり、早い段階でバグや不具合を見つけることは、後の工程でのトラブルを未然に防ぐことができ、品質を維持・向上させるだけでなく効率良く開発を進めることにもつながります。そのため、作成者は成果物だけでなく、プロジェクトの成功に関わる重要な工程であることを意識してピアレビューを行うべきなのです。
・プロセスの品質を確保するプロセスQA
プロセスQAとは、組織やプロジェクトが定めた開発プロセスを守っているかどうか、チェックするためのものです。プロセスQAの流れは、プロセスを定義することから始まります。
定義が整っていれば、あとは実際の作業を監視しトラブルを防ぐのみです。
・品質の状況把握
品質が十分に確保されているかどうかを監視・判断する必要があります。ポイントとなるのは、品質を可視化することです。可視化することで品質を評価しやすく、問題点の早期発見につながります。もちろん、問題点が発見された場合にも早期に対策を検討し、品質向上に努めましょう。
ソフトウェアの品質管理で心得ておくべきこと
ソフトウェアの品質管理においては、いくつかの留意点があります。これらをしっかり押さえておけば、より精度の高いソフトウェアテストができるようになるでしょう。
各工程で不具合・バグを発見する
ソフトウェア品質管理の手法の中でも開設されたように、各工程でミスや漏れがないか確認を行い、早期に発見することが問題の早期解決につながることが重要となります。そのためには、特定の工程だけではなく、要件定義、設計、コーディング、テスト、メンテナンスといった各工程でテストを行うことが重要になります。
何のためにテストを行うのかを明確にし、バグを発見できるよう進めることが理想的であるといえます。
バグや不具合を放置したまま作業が進行すると、それだけトラブルが大きくなります。後から修正するとなると、その分だけコストや時間が大きくなってしまいます。
そのため、各段階でチェックする体制を設け、できるだけ早くバグや不具合を発見・修正することは、ソフトウェアテストにおいて非常に重要なことです。
もちろん、各段階でチェックを設けていても、テスト内容がしっかりしていなくては意味がありません。テスト内容そのものに対し常に見直しを行い、バグを早期発見できるように改善を続けることが大切なのです。
品質の重要性を認識する
ソフトウェアテストにおいては、品質の重要性を認識することが大切となります。そのために、いくつかの事柄を定義しておくのが有効でしょう。
まず定義するべきは、品質を向上させることでどのような価値を顧客にもたらすことができるのかということです。これによって、品質向上の目的をはっきりさせましょう。
次に必要なのが、欠陥を見つけるために必要な定義です。これによって、ソフトウェアテストにおけるチェック項目を設けます。そして、ソフトウェアテストで見つかった欠陥からフィードバックを行い、ソフトウェアテストをアップデートしていくのです。
まとめ
ソフトウェアは最初から完璧な状態であるとは限らず、常にテスト工程を複数設け、バグが潜んでいる可能性があることを前提にして開発を進める必要があります。「バグが発生しなかった」という理由だけでは、欠陥がないことを証明することもできません。
「QCD」の3要素をバランスよく保ち品質管理を行うためには、問題点を早くから発見できるよう、目標を設定する必要があります。
また、ソフトウェアの品質を保つために、進捗にあわせて目標が達成できているのか、手順どおりに品質管理工程が実行されているのか、常に状況を把握し管理することが求められます。
ソフトウェアテストをする際には、顧客にもたらす価値の定義を設けること、品質の重要性の認識を意識しておくようにしましょう。