Facebook x

ジャンル

テスト技法・工程
テスト技法・工程 2024.02.07
x hatenabookmark

そもそも「ソフトウェア品質」って何? 定義からポイント、学習方法、資格まで紹介

監修: 布施 昌弘

バルテス・ホールディングス株式会社 R&C部 副部長

そもそも「ソフトウェア品質」って何? 定義からポイント、学習方法、資格まで紹介

「品質」は業種を問わず重要なものですが、ソフトウェア開発においても例外ではありません。しかし、ソフトウェア品質がどのようなものかイメージしづらいと感じる方も多いでしょう。

この記事では、ソフトウェア品質に関心を持つ全ての方々が押さえておくべき基礎知識についてご紹介します。ソフトウェア品質を向上させたい方はもちろん、ソフトウェア品質について理解を深めたい方も、ぜひご確認ください。

もくじ
  1. ソフトウェア品質の定義とは
  2. ソフトウェア品質の歴史
  3. ソフトウェア品質の低下が招くリスク
  4. ソフトウェア品質に関する代表的な規格・ガイドライン
  5. ISO/IEC 25010のソフトウェア品質特性とは
  6. ソフトウェア品質を低下させるバグや不具合
  7. ソフトウェア品質を向上させるポイント
  8. ソフトウェア品質に関する代表的な資格
  9. ソフトウェア品質に関する学習方法
  10. まとめ:ソフトウェア品質への理解を深めよう

1.ソフトウェア品質の定義とは

実際のところソフトウェア品質の定義には、さまざまな解釈が存在します。代表的な2つの定義を挙げると、次のとおりです。

『本来備わっている特性の集まりが,要求事項を満たす程度』(ISO 9000)

『品物又はサービスが,使用目的を満たしているかどうかを決定するための評価の対象となる固有の性質・性能の全体』(旧JIS Z 8101:1981)

引用元:(社)日本品質管理学会 品質管理関連用語一覧

それぞれに共通するのは、要求事項や使用目的を「満たす」という点です。簡単にいえば、ソフトウェア品質とは「ソフトウェアに対する要求や目的をどれだけ満たせているかの度合い」と表現できます。

2.ソフトウェア品質の歴史

ソフトウェア品質の歴史は長いため、ここでは大まかな流れを簡単に説明します。

ソフトウェア開発が日本で行われるようになったのは、1960年代ごろにさかのぼります。当時は大企業が中心でしたが、1980年代のパソコン普及にともなって、ソフトウェア開発も普及していきました。

1990年代ごろになると、企業だけでなく多くの一般消費者もソフトウェアを利用するようになりました。しかし利用者が増えたことで、ソフトウェアの使いづらさや故障といった問題も浮き彫りとなったのです。この頃から、ソフトウェア品質という概念が広まっていきました。

1990年代以降には、ソフトウェア品質に関するさまざまな組織が発足しています。そして「ISO 9000」シリーズをはじめとする各種規格によって、ソフトウェア品質は体系化・一般化していきました。

3.ソフトウェア品質の低下が招くリスク

ソフトウェア品質が低下すると、さまざまなリスクが顕在化します。ソフトウェア品質の低下が招く主なリスクは、次の4つです。

システム障害や事故

低品質なソフトウェアは、開発者や顧客が想定しない動作をする危険性をはらんでいます。その結果システム障害や事故が発生し、多くの人々に損失や危害をもたらす恐れもあります。

信用・ブランドイメージの低下

システム障害や事故が発生すれば、顧客からの信用を失うことは避けられません。また、エンドユーザーの満足度も下がり、ブランドイメージ低下につながる場合もあります。

コストの増加

低品質なソフトウェアの問題を改修するために、多くの人件費をかけなければなりません。市場不具合の内容によっては、損害賠償を請求される場合もあります。コスト削減のためにソフトウェア品質を犠牲にすると、品質問題が顕在化して結果的にコストが増加する可能性もあるでしょう。

時間の損失

システム障害や事故に対応するために、開発者や運用者は多くの時間を費やすことになります。結果的に機能追加や新規開発に使える時間を失うことになるでしょう。

こうしたリスクを低減するためにも、ソフトウェア品質を向上することは重要です。

4.ソフトウェア品質に関する代表的な規格・ガイドライン

ソフトウェア品質向上に向けて取り組むうえで、有用な規格やガイドラインが存在します。ソフトウェア品質に関する代表的な規格・ガイドラインとして、次の2つを知っておきましょう。

ソフトウェア品質知識体系ガイド(SQuBOK)

「ソフトウェア品質知識体系ガイド(SQuBOK:スクボック)」は、ソフトウェア品質に関する知識を体系化したガイドラインです。日本科学技術連盟のソフトウェア品質委員会(SQiP)と、日本品質管理学会ソフトウェア部会が共同で策定しました。

SQuBOKの大きな目的は、ソフトウェア品質の暗黙知を形式知とすることです。そのため、ソフトウェア品質に関する用語の定義や品質向上のノウハウ、具体的な活動内容など、多岐にわたる知識が集約されています。SQuBOKについてより詳しく知りたい方は、次の記事を参考にしてください。

ISO/IEC

「ISO/IEC」は、国際標準化機構(ISO)と国際電気標準会議(IEC)が共同で策定する国際規格や、その策定にあたる組織を指します。「電気・電子以外の分野」を専門とするISOと、「電気・電子分野」を専門とするIECが共同することで、あらゆる分野の国際規格を包括する組織となっています。

ISO/IECの国際規格は、ソフトウェア品質においても重要な存在です。次節で紹介する品質特性もISO/IECによって標準化されたものであり、国際的に重要な位置づけとなっています。

5.ISO/IEC 25010のソフトウェア品質特性とは

ソフトウェア品質特性とは、ソフトウェア品質の評価や分析、テスト(保証)において重要となる観点のことです。ISO/IEC 25010では8つの「品質特性」、それらを細分化した31個の「品質副特性」を定め、品質モデルとして体系化しています。
品質副特性は割愛しますが、8つの品質特性は下表のとおりです。

品質特性 概要
機能適合性 求められる機能が正確・適切・完全であるか
性能効率性 時間効率や資源効率、最大容量といった性能面が満足なものであるか
互換性 関連するほかの製品やシステムとの連携が行えるか
使用性 ユーザーが快適・満足に利用できるか
信頼性 障害のリスクを抑え、必要なときに機能を提供できるか
セキュリティ サイバー攻撃に対してデータやシステムを保護できるか
保守性 システムの変更やメンテナンスが適切に行えるか
移植性 環境の移行に対応できるか

重要なのは、ソフトウェアの明示的な機能だけが「品質」ではない点です。たとえば使用性やセキュリティは仕様書や設計書に明記されないケースも少なくありませんが、ソフトウェア品質の観点では欠かせない要素といえます。

6.ソフトウェア品質を低下させるバグや不具合

「バグ」や「不具合」がソフトウェア品質の低下につながる、という認識は多くの方が持っているでしょう。バグと不具合は似ていますが、異なる概念のため注意が必要です。

バグとは、ソフトウェアの機能が要求を満たせない原因となる「不備」を指します。たとえば「合計金額を算出する機能」を実装する際に、プログラマーが計算式の演算子を取り違えたとしましょう。このとき、計算式に間違った演算子が混入していることが「バグ」です。

一方で不具合は、バグなどによってソフトウェアの機能が要求を満たせなくなる「現象」を指します。上記の例でいえば、演算子の取り違えという「バグ」によって、合計金額が誤って表示されるという「不具合」が発生するのです。

また、バグや不具合に関連する言葉として「エラー」「欠陥」「フォールト」「故障」の4つがあります。それぞれ細かい違いがあるため、大まかに把握しておきましょう。なお、バグや不具合について詳しくは、以下の記事も参考にしてください。

エラー

エラー(error)とは、正しくない結果をもたらす人間のミスを指します。たとえば、設計工程で考慮が漏れたり、実装工程で変数名を間違えたりする行為自体がエラーです。プログラムへのバグ混入は、主にエラーによって引き起こされます。

欠陥

欠陥(defect)は前述したバグとほぼ同義で、機能が実現できない原因となるソフトウェアの不備を指します。欠陥が生じる場合、多くのケースではエラーが引き金となるでしょう。

フォールト

フォールト(fault)は、前述した欠陥とほぼ同義です。特に、ソースコードに混入された不備を指して使われることが多いでしょう。ただしフォールトの解釈はさまざまで、不備によって機能に生じる異常な状態を指す場合もあります。

故障

故障(failure)は、機能やサービスが本来の価値を提供できなくなることです。たとえば前述した「合計金額を算出する機能」が、欠陥やフォールトによって「誤った金額を表示してしまう状態」が故障です。「合計金額をユーザーに伝える」という本来の価値が故障で失われている状態といえます。

7.ソフトウェア品質を向上させるポイント

ソフトウェア品質の向上を目指すうえでは、ポイントを押さえて取り組むことが重要です。ソフトウェア品質を向上させるポイントとして、次の2つを押さえておきましょう。

第三者検証を充実させる

ソフトウェアの品質を保証するためにはテストが欠かせません。ソフトウェアの品質を高めるうえでは、「第三者検証」を充実させることが効果的です。第三者検証とは、ソフトウェアの開発に関与していない第三者が品質を検証することを指します。

開発関係者がテストを実施する場合、「ちゃんと動くだろう」といった思い込みが生じ、不具合の見逃しを引き起こしがちです。第三者検証であれば、こうした思い込みが入り込む余地がないため、見逃しやすい不具合をしっかりと検出できるでしょう。

ソフトウェア開発の第三者検証について詳しくは、以下の記事をご一読ください。

ツールにより自動化・効率化する

ソフトウェア品質の向上に関わる取り組みは工数がかかりやすいうえに、しばしば人的ミスを発生させます。特に、昨今の高機能なソフトウェアのテストでは、テストケースが膨大になりがちです。手動によるテストでは工数増大だけでなく、実施の漏れ・ミスも生じやすいでしょう。

こうした問題を解決するためには、ツールにより自動化・効率化することが効果的です。たとえば、テスト自動化ツールで自動テストを行うことで、手動テストの手間・ミスを大幅に削減できます。担当者の負担軽減はもちろん、テスト漏れによるソフトウェア品質低下の防止にもつながります。

テスト自動化ツールについて詳しく知りたい方は、以下の記事もお読みください。

8.ソフトウェア品質に関する代表的な資格

ソフトウェア品質への理解を深めるうえでは、資格を取得するのもおすすめです。資格取得を目指す過程で、ソフトウェア品質について体系的に学べます。また、ソフトウェア開発現場への就職・転職を考える場合、資格があれば客観的な知識・スキルの証明にもなるでしょう。

ここでは、ソフトウェア品質に関する代表的な3つの資格を紹介します。なお、ソフトウェアテストの仕事に役立つ資格について詳しく知りたい方は、以下の記事も参考にしてください。

JCSQE(ソフトウェア品質技術者資格認定)

「JCSQE(ソフトウェア品質技術者資格認定)」は、日本科学技術連盟が認定するソフトウェア品質に関する資格です。試験では、ソフトウェア技術者が品質と向き合ううえで必要な知識を幅広く問われます。SQuBOKに沿った内容のため、SQuBOKのガイドブックを中心に学習しましょう。

JCSQEを取得するメリットを知りたい方は、次の記事をご覧ください。

JSTQB認定テスト技術者資格

「JSTQB」は、日本におけるテスト技術者の資格認定組織です。JSTQBが認定する「JSTQB認定テスト技術者資格」ではテスト技法やテストマネジメント、テスト支援ツールなど、テストに関する幅広い知識を問われます。

JSTQBは国際的な資格認定組織「ISTQB」に加盟しているため、JSTQB認定テスト技術者資格を取得すれば海外でもテスト技術者としての能力を証明可能です。JSTQB認定テスト技術者資格について詳しくは、以下の記事を参考にしてください。

IVEC(IT検証技術者認定試験)

「IVEC(IT検証技術者認定試験)」は、一般社団法人IT検証産業協会が認定するテストエンジニアに関する資格です。

IVECは記述式の試験で、テストの実務に即した出題が中心のため、より実践的なスキルを証明できます。

9.ソフトウェア品質に関する学習方法

ソフトウェア品質に関して覚えるべき知識は非常に多く、しっかりとした学習が必要です。ソフトウェア品質に関して学習する場合、次の3つから自分に合った方法を選びましょう。

書籍

ソフトウェア品質に関するさまざまな書籍が存在します。幅広い知識が1冊に詰まっているため、パソコンを使わずとも体系的な学習が可能です。ただし、古い書籍だと情報が更新されていないケースもあるため注意しましょう。

なお以下の記事では、ソフトウェア品質保証に関するおすすめの本を紹介しているため、ぜひ参考にしてください。

Webサイト

ソフトウェア品質に関して学べるWebサイトを使えば、パソコンやスマートフォンで学習が可能です。コラム形式、動画教材、eラーニングなど多岐にわたるため、自分に合ったものを選びましょう。ただし、Webサイトによって品質にばらつきがあるため注意が必要です。

なお、バルテスではソフトウェア品質に関するeラーニングを提供しています。JSTQBの各種試験に関してレベル別の対策講座を受けられるため、興味がある方はお試しください。

セミナー・研修・勉強会

独学に不安がある場合は、セミナーや研修、勉強会に参加するのがおすすめです。参加費用はかかる場合が多いものの、ソフトウェア品質に関するエキスパートから確かなノウハウを吸収できます。

なお、バルテスではソフトウェア品質教育サービスを提供しています。企業に合わせた柔軟なカリキュラムで、ソフトウェア品質について体系的・実践的に学ぶことが可能です。この機会に利用してみてはいかがでしょうか。

まとめ:ソフトウェア品質への理解を深めよう

ソフトウェア品質とは、簡単にいえば「ソフトウェアに対する要求や目的をどれだけ満たせているかの度合い」です。

低品質なソフトウェアはシステム障害や事故だけでなく、ブランドイメージ低下を引き起こすリスクもあります。こうしたリスクを低減するうえでは、品質を向上することが重要です。

ただし、ソフトウェア品質に関する知識は多岐にわたります。品質改善や資格対策を行ううえでは、まずソフトウェア品質に対する理解を深めることが重要です。これからソフトウェア開発に関わるのであれば、ソフトウェア品質についてより深く学習していきましょう。

テスト技法・工程
x hatenabookmark

監修: 布施 昌弘

バルテス・ホールディングス株式会社 R&C部 副部長

様々なテスト対象(組込み系、Web 系、金融系)の現場でテスト設計、テスト管理などを行う。現在は社内外のテスト関連教育セミナーの講師とコンテンツ制作、コンサルティングを担当する。JSTQB 認定 Advanced Level テストマネージャ。 著書は、『【この1冊でよくわかる】 ソフトウェアテストの教科書 [増補改訂 第2版]』、『いちばんやさしいソフトウェアテストの本』。