スマートフォンやパソコンなどのICT機器の普及とともに、私たちの生活にとってソフトウェアは非常に身近なものになりました。さらにIoT技術の発展により、家電製品や生活用品にもソフトウェアが利用される機会が増え、ソフトウェアの需要はますます増え続けています。そこで注目を集めているのが、ソフトウェアの”品質”です。この品質を維持・向上させるためにソフトウェアテストが必要とされています。
ソフトウェアの品質向上はなぜ重要?
ソフトウェア開発の上流工程でバグや不具合を発見し、ソフトウェアの品質を維持・向上させることで、不具合修正による開発スケジュールの遅延や余剰コストを削減できるようになります。
その他にも、ソフトウェアの品質維持・向上は、様々な観点から見ても重要であるといえるでしょう。
※ソフトウェアの品質に関しては、ソフトウェア品質って何?評価するための方法や定義をご覧ください。
ソフトウェアの品質向上が求められる理由
ソフトウェアの需要が増加しているのは「IT技術の多様化」が大きな理由です。
現代ではプライベート・ビジネス問わずソフトウェアの利用範囲が拡大し、ソフトウェアの品質が重要視されています。なぜなら、ソフトウェアの品質が悪く動かなくなってしまった場合、関係する企業やユーザーに悪影響を与えてしまいかねないためです。
システム障害を原因とする機会損失が発生した場合、影響範囲に応じ甚大な損害が生まれ、社会的信用を失う危険性も出てきます。
例えば、交通インフラに関するソフトウェアにトラブルが生じた場合、沢山の人に深刻な影響を及ぼす可能性があります。
このように、ソフトウェアが社会に浸透すればするほど、人々が快適な生活を維持するために、ソフトウェア品質の維持・向上が求められるのです。
品質向上の取り組み
ソフトウェアの品質を向上させるには、以下のような取り組みを段階的に行う必要があります。
・レビュー
ソフトウェアに関するレビューという言葉の定義は、IEEE(※)において、「システムの予備設計または詳細設計において利用者、顧客、または他の関心を持つ団体などに説明し、意見や承認を求める公式の会合」とされています。
開発者自身が問題点のリストアップを行う「ウォークスルー」、仕様書や要件所などに基づいた「テクニカル・レビュー」など、各工程でさまざまなチェックを行うことで、バグやミスを発見していくこととなります。
※IEEEとは?
IEEE(アイ・トリプル・イー)。米国電気電子学会「Institute of Electrical and Electronics Engineers」の略。標準規格の策定などに関わる、アメリカを本部とした国際的な学会。
参考サイト:https://www.valtes.co.jp/qbookplus/1520
・ソフトウェアテスト
ソフトウェアの品質を維持・向上させるためには、ソフトウェアテストの存在が必要不可欠となります。このソフトウェアテストでは単体テストや結合テスト、システムテストなどが行われますが、ソフトウェア開発の大部分が完了してから手戻りが発生した場合のコストを考えると、可能な限り早期のバグや不具合を発見することが求められます。そのために、ソフトウェア開発の各工程でテストを実施し、問題点の分析を行うことが理想的といえるでしょう。
・要件定義
ソフトウェアの品質を向上させるには、企画や計画の段階までに精度の高い要件定義を行うことが欠かせません。
要件定義では、クライアントから要望を聞き出した後、要望をかなえるために実装するべき機能やシステムを整理していきます。この整理した内容を基に、業務フローや業務シナリオを作り、クライアントと認識の違いがないことを確認しながら要件定義書の作成を進めていきます。システム開発の基礎となる要件定義書についても第三者がレビューを行うことで、ソフトウェアの品質を維持・向上させることができるので、オススメです。
ソフトウェアの品質向上は難しい?
「どの段階でソフトウェア品質向上のための取り組みをすればよいのか?」を理解できていても、実際にソフトウェア開発工程に関わっていると、品質向上のためのソフトウェアテストなどの取り組みを行うことが困難に感じられることが少なくないでしょう。
初期段階で欠陥を発見しにくい開発工程
品質の維持・向上を困難に感じさせる理由は、開発工程にもあります。どのような開発工程を計画するかにより、品質の維持・向上が難しい場合があります。もっとも代表的な開発形式として「ウォーターフォール型」があげられます。
ウォーターフォール型はシステム開発を基本計画から設計、実装と順番に行っていく開発形式であり、ソフトウェアの品質にこだわってきた日本においては、多くの企業で導入されている方式です。
そのため、ソフトウェアがすべて完成してからソフトウェアテストを行うこととなります。当然、バグや不具合が見つかれば、原因となるシステムの開発工程まで手戻りが発生することとなるのですが、すべての機能に影響を及ぼす致命的なバグや不具合を発見することになると、設計や企画、場合によっては要件定義まで手戻りが発生するケースもあり、手間だけでなくシステム開発のコストを押し上げる原因となります。さらに、想定外の修正作業となるため余分な工数が発生し、納期が遅延してしまうことにもつながりかねません。
このように、開発形式によっては早期にバグや不具合を発見するのが難しいといえるでしょう。
ソフトウェアの複雑化
AIやIoT技術が進歩していることから、ソフトウェアの開発技術が複雑化していることも、ソフトウェアの品質向上が難しくなる理由のひとつとして考えられます。PCやスマホ、家電製品だけでなく、生活用品にもソフトウェアが搭載され、活用シーンの多様化とともに構築されるシステムが複雑化しています。
それだけでなく、各ソフトウェア間で連携を求められ、より一層複雑なシステムとして構築されていくのです。例として、スマートハウスにおけるセキュリティや冷暖房の制御、高精度なナビゲーションといった自動車の車載システムなどがあります。それら各種にはアプリケーションが搭載されており、ほかの機器との連携も必要となります。
以前にはなかった機器の複雑な機能は、ソフトウェアの品質向上を難しくしているひとつの原因ともいえるでしょう。もしシステムの障害が起きたのであれば、関連するバグなどの不具合分析を行い、対策法を考案します。結果として類似障害の再発を防止することができ、それはソフトウェア全体の品質向上につながります。
ソフトウェアの品質をより向上させるためには
ソフトウェア開発会社にとっては、品質の維持・向上を怠らないことが大切です。企業や社会を支える各種システムは、現代人が快適な生活を送るうえで必要不可欠な要素だからです。
ここでは、ソフトウェアの品質をさらに向上させるためにできることを取り上げます。
ソフトウェアの開発工程を見直す
まず初めにできることは、開発工程を見直すことです。従来の開発方法では品質を維持・向上させるのが難しいのであれば、別の方法を策定する必要があるでしょう。開発工程ごとの担当者が共通のプラットフォームを活用することで、各工程の担当者間でのコミュニケーションが円滑になり、よりよいソフトウェア開発につなげることができます。
このように新しい手法や仕組みを活用するためには、プロジェクトメンバー全員の協力をあおぎ、導入した仕組みを定着させることが必要不可欠です。プロジェクトメンバーの品質向上に対するモチベーションを管理することも含まれるでしょう。
作業量を特定のメンバーに集中させることなく、適度に分散することも大切になります。基本的なことですが、労働時間や作業人数が変わらないままで作業量だけ増えることは、品質が下がる原因になりかねません。開発工程を見直す段階で、ひとり当たりの工数を再確認し、作業量がちょうどよく分散されていることをチェックしましょう。
テスト工程を重視する
ソフトウェアの品質を維持・向上させる一番の近道は、ソフトウェアテストをこまめに行うことです。各開発工程ごとにソフトウェアテストを並行して行うことで、手戻りが発生しても影響範囲を最小限に抑えることができ、修正コストや作業時間も最小限に抑えることができるという考え方です。この開発モデルをあらわすのが、W字モデルです。
一般的にソフトウェアへのテストが行われるのは、ソフトウェア開発が一定以上進んでいる下流工程となります。ウォーターフォール型開発であれば、ソフトウェアがほとんど完成するまでテストを実施しないため、テストを実施しても修正コストがかさんでしまい、品質を維持・向上させることが難しくなります。もし開発の上流工程からテストを行うことができれば、早期にバグを発見することができ、高い品質を維持することが可能になるでしょう。
テスト工程を重視するには、プロジェクトに関わる人のすべてが品質に関する認識をそろえることも大切になります。各開発工程ごとのプロジェクトチーム、もしくは担当者によっては、品質への考え方が異なることが少なくありません。プロジェクト全体で品質を維持・向上させる意識が一貫していると、実際に仕上がるシステムも自然と品質の維持・向上につながります。
まとめ
ソフトウェアの利用頻度が増えていく中で、ソフトウェアテストを行い品質を維持・向上させることは、開発されたシステムを維持するためにも重要だといえます。このソフトウェア品質の重要性が増している現在では、ソフトウェアテストを専門に行うテストエンジニアの存在が欠かせません。
「SOFTWARE JOBS(ソフトウェアジョブズ)」では、テスト・品質案件を中心にご紹介しておりますので、ぜひ取り扱い案件をご覧いただき、ご検討ください。