ソフトウェア品質指標はソフトウェア製品を作るために管理することです。長年使われてきたバグ密度やテスト密度では適切な指標にならないケースが増えています。
この記事では、ソフトウェア品質指標の前提条件や手順などを詳しく説明していきます。
ソフトウェアの品質指標とは?

ソフトウェア品質管理(Quality ManagementもしくはQuality Control)とは、ISO9000の定義では「要求を満たすソフトウェア製品・サービスを提供するために、組織を指揮し、管理すること」です。
ソフトウェア品質管理は発注者の評価に応じて変化するため、発注者が求めていることを把握することが重要です。
長年使われてきた2つの品質指標

ソフトウェア開発では、長年バグ密度とテスト密度が品質指標に使われていました。品質面を確認して次のプロセスに進むべきか、リリースを承認するべきか等の判断をする場合に使う基準の数値です。
さらに、開発プロセス改善において指標として活用しています。長年使われてきた品質指標として、次の2つが挙げられます。
- バグ密度
- テスト密度
1.バグ密度
バグ密度とは、ソフトウェア開発全体の工程においてバグが発生する確率を示す指標です。バスの総数÷開発の規模で計算をすることが一般的です。
開発において規模が異なるため、バグの数だけでは単純な比較ができません。そこで、バグ密度を比較することで、傾向比較や総量推移をしやすくなります。また、バグ密度において開発プロセスの課題を把握することも可能です。
2.テスト密度
テスト密度とは、ソフトウェア開発全体の工程においてテストを実行した頻度を示す指標です。テスト数÷規模で計算をします。テスト密度は次回のテスト工程や基準値の参考にする指標でもあります。
バグ密度とテスト密度はセットで考えることが多く、リリースまでのケーステストに対してバグが発生した割合が高ければ、テスト工程に何か課題がある可能性があると判断することが可能です。
バグ密度の指標は意味がない?

システム開発のテストを実施する工程には、システムの品質を保持するために適切なバグ検出数を設定することが一般的です。工数において適切なバグ検出数は異なり、このことをバグ密度とも呼びます。しかし、近年ではバグ密度は必ずしも適切でない場合があります。
近年ではデバッグしながら開発を進めることが多いため、自然とバグは減ります。そのため、実際には期待値ほどのバグが発生しないことが少なくありません。このことから、バグ検出の基準値は開発の手法に合わせることが重要です。
ソフトウェア品質管理を行う3つの前提条件

ソフトウェア開発において、品質の確保が必要です。しかし、いきなりテストをするのではなく前もって条件を把握しておくことが求められます。
この章では、ソフトウェア品質管理を行う3つの前提条件を紹介します。ソフトウェア品質管理をおこなううえで次の3つの前提条件が挙げられるでしょう。
- バグは必ずある
- ソフトウェアの指標は代替指標
- 適切な品質の報告例
1.バグは必ずある
ソフトウェアの開発において、バグは必ず発生すると考えましょう。ソフトウェアが複雑であったりヒューマンエラーが起きたりするなどさまざまな要員があります。
そのため、品質管理ではバグを早期に発見して修正することが必要です。ソフトウェア品質管理においては、エラーが必ず起きると考えることで進めやすくなります。
2.ソフトウェアの指標は代替指標
ソフトウェアの品質は、保守性やユーザビリティなど定量的に測定しにくく完全なものでないのが特徴です。ソフトウェア開発においては、機能性やコスト、スピードなどの要素も考慮することが求められます。
そのため、ソフトウェアの指標は代替指標として使われていることが一般的です。代替指標はレビュー時間が長いからといって品質がいいとは限らない、バグを大量に解消したからといって大丈夫とはいえない点が課題といえるでしょう。
3.適切な品質の報告例
問題発見の手段として定量指標を使うことがあり、品質を現物確認している点が特徴です。定量に安定しない動きがあれば、どこか原因なのか、プロセスに問題はないのかを掘り下げ最終的に現物を見て確認するようにしましょう。
サブシステムごとにバグ密度の成長トレンドを確認しており、サブシステムが上限に近づいたゐたので点検が可能です。
定量品質管理の主な指標

定量品質管理は品質の悪そうな箇所を推定し、早いプロセスで問題を発見できます。また、品質が悪化している原因を見つけて効率化したり、今後の品質の見通しを立てられます。
定量品質指標は、導出指標と基本指標の2種類です。基本指標は直接計測して得られるデータで、指標として有効でない可能性があります。導入指標は、基本指標を基にしており有効な情報を得られる可能性が高まります。
ソフトウェア品質管理の手順

ソフトウェア品質管理を効率的に進めるためには、開発工程やレビューア、成果物などを明確にすることが重要です。さらに、アーキテクチャやシステム構成図などソフトウェアをより理解するための資料を準備することも少なくありません。
品質管理をするためには、次のような手順で進めることが一般的です。
- 計画
- 実施
- 記録
1.計画
ソフトウェア品質管理の計画は、プロジェクトを始めの段階におこないます。計画の目的は、品質目標や品質管理の方針を設定することです。計画は品質管理における重要なステップです。
計画をしないで品質管理をすると、方針や目標が不明確になり品質が保証されないリスクが高まります。計画を正確に進めて、品質目標を明確にすることで品質を高められます。
2.実施
ソフトウェア品質管理の実施は、品質管理の具体的なアクションを実行することです。実施段階では品質基準を定めてテストをすることで、品質の確保をします。
品質基準を定めないで開発を進めると、開発者の判断によりテストを実施してしまい品質が安定しません。また、テストを実施しないと不具合を見つけることができず、顧客満足度の低下につながります。
3.記録
ソフトウェア品質管理の記録は、品質管理の実施結果を保管していくフェーズです。記録では、品質管理の実施状況や発見された課題の内容、課題に対する対処方法などを明確にしていきます。
品質管理の実施結果を保管していないと、同じ問題が起きた場合に、過去の実施結果を参考にできず同じミスに対処できない可能性があります。
近年取り入れられている2つのソフトウェアテストの手法

ソフトウェア品質シンポジウム2020では、これまでになかったような手法が発表されBest Presentation Awardを受賞しました。
このときに受賞した手法は次の2つの観点を組み合わせた方法であることが特徴です。このため以下の両方の観点を把握することが求められます。
- 観点カバレッジ
- モニタリング
1.観点カバレッジ
従来の方法であったテスト密度とよばれる手法では、規模あたりにおこなっているテストの件数を評価することが一般的でした。
観点カバレッジは、テストケースが対応するべきソフトウェアの仕様の範囲を測定することが目的です。ソフトウェアの仕様を構成する要件を特定し、内容がどの程度テストケースにカバーされているかを測定します。
2.DDPモニタリング
モニタリングとは、システムの動作を目視してバグや不具合を発見する方法です。マイクロサービスやクラウドネイティブアプリケーションのような分散型システムでよく利用されます。
それぞれ独立した複数のコンポーネントで構成されており、単体テストでは不具合を発見できない可能性があります。そこで、モニタリングを使ってコンポーネント同士でシステム全体が予定通りに動くかどうかを確認することが必要です。
新しいソフトウェアテストの実施方法

ソフトウェア開発においてシフトレフトテストとよばれるテスト手法があります。従来のテストフェーズを開発におけるプロセスの書記におこなうことで、早い段階で品質確保ができます。
シフトレフトテストは、バグを検出しやすい段階で見つけることで開発の手間が減り品質の向上が可能です。シフトレフトテストは、ソフトウェア品質を向上でき開発の初期プロセスにおいて品質を意識することが重要です。
ソフトウェア品質指標でよくある2つの質問

ソフトウェア品質指標において、さまざまなことを知っておく必要がありますが、この章では特によくある質問を紹介します。ソフトウェア品質指標においてよくある次の質問をまとめました。
- ソフトウェアの品質特性とは何ですか?
- ソフトウェア品質の国際規格とは何ですか?
ソフトウェア品質指標において、ソフトウェアの品質特性や国際規格を把握することが重要です。
質問1.ソフトウェアの品質特性とは何ですか?
製品品質モデルの品質特性は、セキュリティや信頼性、使用性、機能適合性、保有性、移植性、性能効率性、互換性と8つから構成されています。ISO/IEC 25023において品質服特性や品質特性ごとに、品質測定量が定義されています。
要求分析を基にテスト仕様や外部仕様を設定し、実際のテストにおいて動作と仕様において差がないかどうかを測定することが主な品質特性の活用場面です。
質問2.ソフトウェア品質の国際規格とは何ですか?
ソフトウェア品質の国際規格とは、JIS規格とよばれている日本産業規格やISO規格であり、品質評価プロセスや品質における考え方などを定義しています。
スイスにあるISOで策定された規格を基準にしていることから、海外にも通用する ソフトウェアの作成が可能です。海外でも、品質が高いことを証明できるのです。
まとめ

日本では従来ソフトウェア品質指標において、バグ密度やテスト密度といった手法が活用されていました。しかし、近年開発方法が変わっていることもありバグ密度の指標が必ずしも適切でない可能性があります。
ソフトウェア品質管理を適切におこなううえで、前提条件や手順、手法などを把握しておくことが重要です。