テクノロジーの進化とコロナ禍の影響もあって、日本企業もDXを推し進めているところが増えてきています。
DXを進めるにあたってIoT(モノのインターネット)やRPA(ロボットを活用した業務自動化)を活用することになると思いますが、これらはソフトウェアを使ったデジタル技術です。
デジタル技術を支えるソフトウェアの品質が重要であるということはお分かりいただけると思いますが、それではソフトウェアの品質とはどのようなものなのかご存知でしょうか。
本記事ではソフトウェア品質とはどういったものなのか、わかりやすく解説いたします。
目次
ソフトウェアとは
ソフトウェアの品質について解説する前に、そもそもソフトウェアが何であるのかを簡単に説明いたします。
ソフトウェアという言葉と共にハードウェアという言葉もよく耳にすると思います。
ソフトウェアとハードウェアはコンピューターを構成する要素です。
ふたつは対照的な関係にあるため、違いを下図に表しました。
ソフトウェアとハードウェアの違い
例)パソコンの構成要素
ソフトウェア | ハードウェア |
手で触れない、目で見えない | 手で触れる、目に見える |
Windows、Word、Excelなどのプログラム | キーボード、マウス、ディスプレイなど |
ソフトウェアとハードウェアの関係性
ソフトウェアとハードウェアの関係は人体の仕組みに例えると分かりやすいです。
ソフトウェアが指令や制御を行う神経、ハードウェアが手や足など体に該当します。
神経のみ、体のみでも人として活動することはできません。
ソフトとハードは対になってお互いの役割を全うしています。
ソフトウェア品質とは
ソフトウェアの概要を理解していただいたところで、いよいよソフトウェア品質について解説していきます。
ソフトウェア品質の定義 質の高いソフトウェアとは?
ソフトウェアは目に見えません。
ソフトウェア品質の良し悪しは何で判断するのでしょうか。
まず、悪い品質のソフトウェアというのはすぐ思い浮かぶと思います。
不具合(バグ)があるものは良い品質とは言えませんよね。
それでは良い品質のソフトウェアとはどのようなものでしょうか。
バグがなければ良い?
以前はそのような考え方がありましたが、近年では考え方が変わってきています。
近年のソフトウェア業界では顧客の満足度をより満たしたものが品質が高いという考え方が主流になってきています。
品質=顧客満足度ということです。
ですので、品質の高いソフトウェアを開発するためには、顧客(ユーザ)の要望をしっかりと定義し、完成したシステムが要求に合致しているかを検証することが重要です。
ソフトウェア品質への期待はステークホルダ(関係者)によって様々
ソフトウェアの利用には様々な人が関わりを持ちます。
ソフトウェアの利用者、開発者、発注者、システムの運用担当者、販売者といった具合です。
それぞれの立場によって品質への期待は異なります。
例えば、利用者の立場からは使い易いこと、運用担当者の立場からは安定して動作し、管理しやすいことなどが挙げられます。
そのため、ソフトウェアの品質を考える際には、これらの異なる立場のニーズを考慮することが重要です。
ソフトウェア品質の検証(テスト)とは
ソフトウェア開発プロセスにおけるテストの位置づけ
下図はソフトウェア開発の標準プロセスを図に表したものでV字モデルと呼ばれるものです。
ソフトウェアテストはプログラミング後に行われます。
ソフトウェアテストにもいくつかプロセスがあります。
- 単体テスト・・・モジュールレベルの動作確認
- 結合テスト・・・モジュールを結合させた状態での動作確認
- システムテスト・・・システム全体を稼働させての動作確認
- 運用テスト・・・システムが要求に合致しているかをユーザー担当者が検証する
前章で説明しました「完成したシステムが要求に合致しているかを検証する」のは、「運用テスト」にあたります。
運用テストは「要件定義」のアウトプットである「要件定義書」を基にユーザ側の担当者が顧客観点で行う検証です。
モノの品質で言うところの、商品を注文し納品されたときに行う検品作業や、受入検査をイメージしていただくと分かりやすいかと思います。
設計書どおりにソフトウェアが制作されているかを検証するのは単体テスト、結合テスト、システムテストがありますが、こちらは開発者側が行います。
ソフトウェア品質を評価するための基準
ソフトウェアは、その性能を評価するために国際規格や知識体系が設けられています。
これらをベースにして品質目標の設定をしています。
ソフトウェア品質の評価に関する国際規格ISO/IEC 9126(JIS X 0129)
機能適合性 | ユーザの要求を満たしている度合い |
性能効率性 | システムを実行する際の資源効率の度合い |
互換性 | システムを他製品に置き換えても機能や情報を共有できる度合い |
使用性 | システムが効果的、効率的に利用できる度合い |
信頼性 | システムが必要時に適切に機能を実行できる度合い |
セキュリティ | 不正に悪用されることなく、情報やデータが保護される度合い |
保守性 | システムを修正する場合の保守作業の度合い |
移植性 | システムを別の環境へ移した際そのまま動作する度合い |
ソフトウェア利用時の品質特性モデル(ISO/IEC 9126-4)
有効性 | システムがユーザの目的を達成している度合い |
効率性 | システムを利用するユーザの資源を有効利用できているかの度合い |
満足性 | システムがユーザーのニーズを満たす度合い |
リスク回避性 | システムを利用するユーザの潜在的リスクを緩和する度合い |
利用状況網羅性 | システムが上記特性を伴っている度合い |
まとめ
ソフトウェア品質についてITに詳しくない方にもわかりやすく解説いたしました。
ソフトウェア品質の重要性と、ソフトウェア品質を検証するためには様々な専門知識を要することがお分かりいただけたかと思います。
ITとは関わりのない企業であっても、DXやIoT、業務自動化を考えているようであれば、ITシステムを発注した場合の検品方法(テスト手法)を知っておくことをお勧めします。
それによって、より投資効果のあるシステムを導入することが可能になるでしょう。
IT人材育成研修QualityRoomでは品質マネジメントコースとしてソフトウェア品質の基礎からテスト技法について学べる講座をご用意しております。
受講方法は集合研修/Web研修/eラーニングからお選びいただくことが可能です。
ぜひご活用ください。
品質マネジメントコース | |
ソフトウェア品質の基礎講座 | 品質の定義・ソフトウェア品質の特性からソフトウェア開発の各工程での要点をまとめたソフトウェア品質の基礎を網羅したダイジェスト版です。 |
要求定義講座 | 要求はどのようにしたらまとまるのか?を解説。業務フローの整理の仕方など実践的な内容も学べます。 |
要件定義講座 | 業務要件・機能要件・非機能要件をどのようにして抜け漏れなくまとめるのか?が学べます。 |
設計講座 | データベース設計書やAPI設計書、画面設計書など実際の設計書を元に実務で活用できる形で学べます。 |
テスト講座 | IEEE829をベースとしたテスト3表(テスト計画書・テスト設計書・テスト仕様書)についてポイントを解説します。よりよいテストを実施するためのコツがわかります。 |
プロジェクトマネジメント講座 | PMBOKをベースとしたQCDバランスの取れたプロジェクトマネジメントのノウハウが学べます。プロマネ初心者から経験者まで学びや気づきの多い内容です。 |
運用講座 | ITIL(ISO20000)をベースとした保守・運用フェーズの管理方法やポイントが明確になります。 |
関連記事
製造業で10年ほど品質管理、品質保証を経験したのち、IT業界にキャリアチェンジ。
業務IT化や、IT人材育成についてなど、IT業界以外の方にもわかりやすい記事を書くことを心掛けています。