ソフトウェア開発において、高い品質を目指すことは非常に重要です。

ソフトウェアの品質を高く保つことは、クライアントとの信頼関係や企業のビジネスの成功にも繋がってきます。

目に見えないソフトウェアの品質はどのように担保されるべきなのか、内部品質と外部品質も踏まえてソフトウェアの品質特性をご紹介します。

そもそもソフトウェア品質とは?

そもそもソフトウェア品質とは?

ソフトウェア品質についてはさまざまな捉え方があります。

ソフトウェアに実装された機能がクライアントの要求を満たしつつ、かつ致命的な不具合がなく利用しやすいものとなっているかが特に重視される考え方となります。

不具合が頻発してユーザーの利用やクライアントの業務に支障をきたすと、信頼関係にも大きな影響を与えかねません。

ソフトウェアが不具合なく正しく動作することは、QA(品質保証)の観点からも重視されており、QAエンジニアはそのためのテスト計画を策定・実行します。QAについては、こちらの記事でも詳しく紹介しているのでぜひご確認ください。

ソフトウェア品質を評価する8つの国際規格

ソフトウェア品質を評価する8つの国際規格

ソフトウェア品質を評価する基準として、国際規格「ISO/IEC 25010:2011」があります。

この国際規格ではソフトウェアの品質特性を以下の8つに分け、ソフトウェアを評価する基準を策定しています。

  • 機能適合性
  • 性能効率性
  • 互換性
  • 使用性
  • 信頼性
  • セキュリティ
  • 保守性
  • 移植性

それぞれの評価基準についての詳細をご紹介します。

機能適合性

ソフトウェアに実装された機能がユーザーのニーズを満たすものとなっているかを評価する度合いです。

ユーザーがシステムを利用する際に必要となる機能が実装されているかどうか、要求仕様通りのシステムとなっているかを評価します。

性能効率性

実行時の性能や資源効率を評価する度合いです。

例えば、ユーザーがボタンを押下した際に「適切な時間で応答があるかどうか」や「ユーザーがストレスを感じるほどに遅い応答ではないか」といったシステムのパフォーマンスを評価します。

互換性

他製品やシステムと機能や情報を共有、変換できる度合いです。

例えば、ユーザーがシステムを様々なPCやスマートフォン等の異なる環境から利用しても、同じように利用できるかどうかを評価します。

使用性

ソフトウェアを効果的、効率的に利用できる度合いです。

「システムがユーザーの要求を満たすために効率的な作りとなっているか」や「年齢やシステムの扱いについての慣れ・不慣れに関係なくシステムを誰でも効果的に利用できるか」といった点を評価します。

信頼性

必要時にソフトウェアを実行できるかの度合いです。

例えば、ECサイト利用時に商品の合計金額に誤りがあったり、決済時に不具合が発生したりするとユーザーは買い物が出来ません。

システム内の機能が常時正しく動作し、かつシステム障害が起こらないかどうかを評価します。

セキュリティ

ソフトウェアを不正に悪用されることがなく、情報やデータが保護される度合いです。

ソフトウェアを不正利用されるとソフトウェア自身の開発情報等はもちろん、ユーザー登録制のシステムであれば電話番号やクレジットカード情報といった個人情報流出のリスクもあります。

脆弱性を突かれ、内部情報や個人情報の流出が起こらないかどうかを評価します。システムのセキュリティ対策については、日頃から脆弱性の診断を行うことも効果的です。

脆弱性診断については、こちらの記事でも詳しく紹介しているのでぜひご確認ください。

保守性

ソフトウェアを効果的かつ効率的に保守や修正出来る度合いです。

システム障害や不具合が発見された際に「原因の特定や修正といったリカバリ対応を迅速に行えるか」や「ソースコードは可読性に長けた修正が容易なものか」といった点を評価します。

移植性

スマートフォンの新しい機種やOSに、速やかに対応出来るかどうかの度合いです。

例えば、サーバーやデータベースの移行を行う場合、システムを容易に移すことが出来るかを評価します。こうした既存システムを別環境へ移すことを「マイグレーション」と呼びます。

マイグレーションについては、こちらの記事でも詳しく紹介しているのでぜひご確認ください。

内部品質と外部品質

内部品質と外部品質

一括りに品質といっても、ソフトウェア上で品質を評価・判断するべき箇所は多々あります。

中でも、まずは内部品質と外部品質の2つに大きく分かれることを覚えておきましょう。

内部品質とは?

内部品質とは、ユーザーには直接見えないソフトウェアの内部的な部分における品質を指します。

ソフトウェアの構成に欠かせないソースコードやソースコードを書くために必要な仕様書や設計書など、開発に携わったエンジニアにしか認識できない部分が対象になります。

上記の品質特性で言えば「互換性」「セキュリティ」「保守性」「移植性」が内部品質に該当します。

外部品質とは?

外部品質とは、ソフトウェアが要求通りに動作するか、つまり、実際にユーザーが判断出来るシステムの表面的な部分の品質を指します。

システムが期待通りに動作をするかどうかが主に品質の評価へと繋がってくるため、一般的に言う品質は、この外部品質のことを指しています。

上記の品質特性でいえば「機能適合性」「性能効率性」「互換性」「使用性」「信頼性」が外部品質に該当します。

内部品質と外部品質の違い

内部品質と外部品質の違いは「ユーザーから見えるかどうか」にあり、外部品質がユーザーの評価に直接影響します。

しかし、開発納期やコストの兼ね合いで開発スピードが重要視され、外部品質を満たすことだけを考えて内部品質が疎かになるケースも少なくありません。

外部品質を高めることで同時にユーザーからの評価も上がり、システムの品質も同じく高めることに違いはありませんが、システムの本質である内部品質を疎かにすると、結果的に品質全体に影響を与えてしまう場合もあります。

ユーザーから見えない内部品質を高めることによって、ユーザーに見える外部品質に求められる機能性の実現に近づくことが出来ます。

【まとめ】ソフトウェアの品質特性を理解しよう

ソフトウェアの8つの品質特性はいずれも品質を評価するための基準です。

複数の視点から品質について考慮しなければなりませんが、内部品質と外部品質の違いも踏まえ、顧客満足度が向上する品質を目指しましょう。

ソフトウェアの品質特性について理解して、それぞれの基準をバランスよく満たすシステム開発を心がけてみてください。