ソフトウェア品質とは? 評価方法や品質の高め方を初心者向けに解説

更新:2024.3.5
著者:Sky株式会社


ソフトウェア品質とは?

「ソフトウェア品質」という言葉の定義や、品質評価の指標、品質の高め方などについてご紹介します。

ソフトウェアの品質とは何か?

あらゆる領域でデジタル化が加速している現代社会において、私たちの生活を内側から支えるソフトウェアの役割は重要性が増す一方です。この記事では、「ソフトウェアに対する要求や目的を満たしている度合い」を意味するソフトウェア品質が、具体的にどのように評価・担保されているのかをご紹介します。

ソフトウェア品質は外部から見えない

ソフトウェアは自動車や電化製品といったハードウェアと異なり、計算などの情報処理を製品内部で行うプログラムであり、わかりやすく目に見えるかたちを持ちません。そのため、開発工程でどのような作業が行われているのか、不具合が何に起因するのかを把握しづらいという特徴があります。

このため「品質」の捉え方は決して一様でなく、ソフトウェア品質について考える際には、品質評価の指標や関連する概念を幅広く考慮する必要があります。

ソフトウェア品質の例

例えば、多くの開発現場では品質保証の観点から「ソフトウェアが仕様書に従い想定どおりに正しく動作すること」を重視しており、ソフトウェアの欠陥をゼロに近づけるために必要なテストの設計や分析に力が注がれています。

実際、こういった基礎的な欠陥をなくしていくことが、会社の信頼失墜や経済的な損失、ひいては生命に関わる重大事故といった、ソフトウェア品質の低下が招くさまざまなリスクの防止につながります。ただ、こうした最低限の不具合を解消したソフトウェアを開発するだけでは、品質にまつわる問題をすべて解消するには至りません。

ソフトウェア品質に対する顧客の要求レベルが高くなっている

かつてのようにソフトウェアの利用者が限定的だった時代には、まず「しっかり動くものを開発してほしい」という要望を満たしてさえいれば、品質に関して一定の評価を得られていました。

しかし近年、技術レベルの向上や開発環境の改善、価値観の多様化が進むにつれ、「動作するだけでなく、より満足いくものが欲しい」といったかたちで、顧客側が開発者に対して求める要求レベルが格段に高まっています。

要求にはシンプルな機能面での動作保証のみならず、直感的でスムーズな操作性や、セキュリティ面での高い安全性、負担の少ない運用や保守性など、実に多様な観点が含まれます。より高い品質を目指すには、そのような顧客の期待を整理し分析した上で開発を進めることが重要です。

ステークホルダーごとに異なる要求に応えていくことが必要

こうした要求レベルの高まりが続いた結果、ソフトウェアの機能はひと昔前に比べ格段に、複雑かつ高度なものに進化しています。また同時に、ソフトウェアに関わる人々(以下、ステークホルダー)の数も増え、多様化が進んでいます。

例として、開発される製品に対する期待は、各ステークホルダーに応じて以下のようなものが挙げられます。

  • 事業担当者の期待:低コストで、とにかく不具合が起こらず円滑に動作してほしい。
  • 運用担当者の期待:運用・保守にかかる労力を徹底的に少なくしてほしい。
  • エンドユーザーの期待:より直感的かつスムーズに使いこなせるようにしてほしい。

ソフトウェア開発を成功させるには、運用担当者やエンドユーザーなど幅広い関係者の期待に応え、満足度を高める必要があります。

ソフトウェア品質の指標

このように、ソフトウェア品質に対する期待はシンプルな動作保証にとどまらず、運用・保守や使い勝手の観点に及ぶほど多様であり、ステークホルダーすべての要求に応えることは決して容易ではありません。

このような状況において千差万別な要求の整理に役立つのが、ソフトウェア品質の評価に関する国際規格「ISO/IEC 25010:2011」です。この規格では、品質特性としてソフトウェア品質を示す指標が大きく8つに分類されています。

「ISO/IEC 25010:2011」による8つの品質特性の概要
1.機能適合性 実装された機能がユーザーのニーズをどれほど満たせているかを示す指標。あらかじめ明確にされている要望のみならず、潜在的なニーズもくみ取る必要がある。
2.性能効率性 システム実行時の性能や資源効率が適切かを示す指標。コンピュータで言えば、CPUの性能やメモリ・ストレージの容量に関係する。より省エネルギーで高性能な状態が望ましい。
3.互換性 別の動作環境でも支障なく機能を維持できるかを示す指標。例えばモバイルアプリなら、さまざまな機種のスマートフォンからアクセスしても適切に動作することを意味する。
4.使用性 どれだけ効果的・効率的に利用できるかを示す指標。例えばECサイトなら、商品の検索や注文が、年齢や性別を問わず直感的かつスムーズに操作できる状態を指す。
5.信頼性 システム障害の発生率の低さや、障害が発生した際の復旧のスムーズさといった、必要時に利用できるかを示す指標。特に利用頻度が高いシステムほど求められる。
6.セキュリティ 適切な利用者以外による「不正利用がない状況」の実現度合いを示す指標。例えば銀行のATMなど、個人情報や金銭が絡むシステムにおいて重要。
7.保守性 不具合要因の速やかな特定と復旧が可能か、日頃のメンテナンスが容易かを示す指標。異常が起きた時にも、ユーザーが安心して使い続けるために大切な観点。
8.移植性 ほかの動作環境への移植のしやすさを示す指標。例えばパソコンの最新OSにすぐ対応できるかが該当する。そのまま使うことを指す「互換性」と異なり、移植作業に伴う手の加えやすさが前提。

参考:ISO/IEC 25010:2011(JIS X 25010)

例えば、スマートフォンやタブレット端末を用いた「飲食店のセルフオーダーシステム」では、以下のようなイメージで品質特性を捉えることができます。

  • 機能適合性:お客様が自ら注文するために必要な機能が過不足なく備わっていること。
  • 性能効率性:お客様がメニュー検索・注文などの各種ボタンを押下した際に、適切なタイミングで反応があること。
  • 互換性:さまざまな機種のスマートフォンやタブレット端末からアクセスしても同様に使用できること。
  • 使用性:年齢や性別・操作方法への慣れを問わず、直感的かつスムーズにメニュー検索や注文ができること。
  • 信頼性:システム障害が起こらず、注文金額の合算などの会計処理が間違いなく行われること。
  • セキュリティ:必要に応じて登録・取得した氏名や住所などの個人情報の流出や不正利用がないこと。
  • 保守性:システムやソフトウェアに何らかの不具合が発生した際に、原因の特定と復旧を速やかに行えること。
  • 移植性:スマートフォンやタブレット端末の新しい機種やOSに速やかに対応できること。

このように8つの品質特性を用いて分類することで、一見すると曖昧に感じられるソフトウェア品質も、より明確なイメージをもって整理することが可能です。また、このことからも、ソフトウェア品質はエンドユーザーのみならず多様なステークホルダーに深く関係していることがわかります。

ソフトウェア品質の高め方

ソフトウェア品質の高め方のイメージ

ここまでご紹介したソフトウェア品質の特徴や指標の性質からも、ソフトウェア品質を高めるためには、特に以下の2点が重要であるといえます。

  • 高まり続ける顧客の要求レベルを高い水準で満たすこと。
  • 発注者や運用管理者を含むあらゆるステークホルダーの要求に広く応えること。

品質向上をどのようにすれば実現できるのか、顧客満足度に影響を与える要素を分類した品質モデルと、多方面の関係者にとってカギとなる概念を用いて、詳しくみていきましょう。

顧客の要求を先読みし、不満を抑え期待を超える

顧客の満足度に影響を与える品質要素を分類したものに、「狩野モデル」があります。1980年代に東京理科大学名誉教授の狩野紀昭氏が提唱したもので、「Kano Model」として世界的に知られ、マーケティングや品質管理の分野で多大な影響を与えています。狩野モデルでは、ソフトウェアの品質要素を以下の5つに分類しています。

品質要素 顧客の感じ方
当たり前品質 充足されれば当たり前と受け止められるが、不充足であれば不満を引き起こす。
一元的品質 充足されれば満足を、不充足であれば不満を引き起こす。
魅力的品質 充足されれば満足を与えるが、不充足であっても仕方ないと受け取られる。
無関心品質 充足でも不充足でも、満足を与えず不満も引き起こさない。
逆品質 充足されているのに不満を引き起こしたり、不充足であるのに満足を与えたりする。

参考:狩野モデル(Kano model) https://www.jstage.jst.go.jp/article/jsoft/27/4/27_128_2/_article/-char/ja

特に顧客満足度に影響するのは「当たり前品質」「一元的品質」「魅力的品質」の3つ。前提として「当たり前品質」を最優先で満たした上で、「一元的品質」と「魅力的品質」を満たす工夫が求められます。例えば、先に例示した「飲食店のセルフオーダーシステム」なら、以下のような内容が挙げられます。

  • 当たり前品質:端末から意図どおりのメニューを選択し、注文から会計までを適切に完了できる。
  • 一元的品質:メニューの文字や画像が鮮明で読み取りやすく、操作時の画面遷移が速い。
  • 魅力的品質:待ち時間に暇を潰せるゲームが搭載されており、会計時には合計金額のみでなく人数で割った金額も確認できる。

いかに不満を抑えつつ高い満足感を引き起こすか、いずれの品質要素もないがしろにせず、バランスを保つことが大切です。

品質の基礎を成す「プロセス品質」を向上させる

ソフトウェア開発における品質を包括的に把握しようとした場合、以下の3つに大別されることが、国際規格である「ISO/IEC 9126-1:2001」に示されています。3つの品質には互いに密接なつながりがあり、影響を及ぼし合っています。

品質 概要
プロセス品質 製品の品質を確保するため、開発の各工程において必要な手順を踏んでいること。
プロダクト品質 製品が要件・仕様どおり適切に動作すること。外部品質と内部品質の2つに分類される(後述)。
利用時の品質 実際に製品を利用するときにユーザーの要求を満たし、期待を超える高い満足を得ていること。

これまで本記事では、より一般的でなじみやすい「プロダクト品質」や「利用時の品質」に目を向けながら、ソフトウェア品質についてご紹介してきました。ここでは、もう一つの重要なポイントである「プロセス品質」についての概要をご紹介します。

プロセス品質とは「適切なプロセスで開発を行えば、より良い品質のプロダクトが完成する」という考えの基に、開発の各工程で実施すべき業務を確実に実施し、品質をつくり込むことを指します。

プロセス品質を向上させる方法としては、例えば以下の流れが考えられます。

  • 開発プロセス全体の流れや情報を「可視化」し
  • 明確になった状況や課題を踏まえ指標を設定する「定量化」を行い
  • 業務手順を統一し属人性を解消する「標準化」を進める

プロセス品質は、特に開発者側に対して大きな影響を与える概念です。「良いプロダクトは良いプロセスから生まれる」といった言葉もあり、多種多様なステークホルダーにとっての品質向上において最も重要であるともいえます。

参考:ISO/IEC 9126-1:2001(JIS X 0129-1:2003)

外部品質・内部品質とは

ソフトウェア品質を考える上で欠かせない視点についてご紹介します。前述でお伝えした3つの品質のうち「プロダクト品質」に該当する内容です。

プロダクト品質には大きく2種類に分けられ、ユーザーの目に見える品質と、ユーザーの目に見えない品質が存在しています。ソフトウェアの品質保証においては、前者を「外部品質」、後者を「内部品質」と表現し区別しています。各概念の詳細を以下のとおりです。

外部品質とは

外部品質とは、エンドユーザーが製品を実際に使用した時に判断できる「表面的な品質」のことです。使用過程のなかで初めて品質の良し悪しが判明する場合も多いですが、使いやすさや動作の正確性などはエンドユーザーの満足度に直接的に影響するため、リリース前から妥当性を確認することも大切です。

内部品質とは

内部品質とは、ソフトウェアの動きを成立させる「内部のつくりの品質」のことです。仕様書やソースコードのほか、セキュリティや移植性、保守性といった、エンドユーザーが目にできない部分の質を指します。主に、ソフトウェアの開発者や運用担当者が影響を受ける概念です。

一般的に、「品質」を考える際には優先度を下げられがちですが、内部品質の低下は中長期的に致命的な不具合を引き起こす原因にもなり得るため、決しておろそかにはできません。

内部品質を高めるのは難易度が高い

ソフトウェアの品質を考える際には、外部品質と内部品質を共に高い水準で満たすことが理想です。しかし、開発現場の現実として、品質以上にスピードが重視される場合も多々ある上、一つの製品にかけられるコストには限りがあり、品質への取り組みは多くある重要事項の一つに過ぎないのも事実です。

こういった理由から、開発現場ではわかりやすく顧客満足度に影響のある外部品質を満たすことに終始し、内部品質への対応が後回しにされがちです。外部品質が低ければ製品として機能しづらく、優先順位の面で内部品質が遅れをとるのは仕方がない側面もあります。

このような事情から、直接的な悪影響が可視化されづらい内部品質の向上は、難易度の高い課題であるといえます。ただ、目に見える不具合への対応はあくまで対症療法に過ぎないため、本質的な改善には至らず、むしろ内部品質に対して悪影響を及ぼしかねないことに注意する必要があります。

まとめ

この記事では、ソフトウェア品質の特性や評価方法・高め方に関してご紹介しました。日々、目まぐるしい動きのあるソフトウェア開発の現場において、スピードと品質を高い水準で両立させ続けることは決して容易ではありません。とはいえ、膨大な数の人々が利用するソフトウェアの影響範囲は大きく、品質の向上は避けて通れない重要な課題であるといえます。

なお、Sky株式会社ではソフトウェアの開発はもちろん、運用・保守から品質管理に至るまで、お客様のさまざまなご要望にお応えする環境を整えています。ソフトウェア品質の向上に関するご依頼・ご質問などございましたら、ぜひ弊社へご相談ください。

ソフトウェア評価・テストに関するお問い合わせはこちら

お問い合わせはこちら

著者 Sky株式会社

Sky株式会社は、家電のシステム開発を手掛けたのをきっかけに、デジタル複合機やカーエレクトロニクス、モバイル、情報家電、さらに自社商品として教育分野における学習活動ソフトウェアや、公共・民間向けクライアント運用管理ソフトウェアなど、幅広い分野でのシステム開発を展開しております。

お問い合わせ

Sky株式会社は、さまざまなシステムやソフトウェアの開発および評価/検証のご依頼を承っています。ご相談やご質問がございましたら、こちらのフォームからお気軽にお問い合わせください。

パートナー企業募集

Sky株式会社では長期的なお付き合いができ、共に発展・成長に向けて努力し合えるパートナー企業様を募集しております。パートナー企業募集に関するご依頼・ご質問は、下記よりお問い合わせください。

ページのトップへ