プログラマーやシステムエンジニアなど、ITエンジニアの多くはソフトウェア開発に携わったことがあると思いますが、完成したソフトウェアの品質を管理するために、様々な角度からテスト・検証を入念におこない、ソフトウェア品質の管理に携わったことがある方は少ないのではないでしょうか。この記事ではソフトウェア開発と異なる視点に立ち、ソフトウェア品質とは具体的に何を指すのか、その定義やソフトウェア品質を評価する方法を解説します。
ソフトウェアの品質とは
ソフトウェアはハードウェアなどと異なり、実際に手に取って評価することができず、品質を定義することが非常に難しくなります。そのため、プログラマーがソースコードを見てソフトウェア品質を評価するだけでなく、ユーザーが実際に使用する際の利便性など、ユーザーが下した評価が重要になります。
ソフトウェアにおける「品質」の定義
ソフトウェアの品質というのは、固有の能力として持っている性質や特性のことを意味します。ソフトウェア工学の専門家であるクロスビーは、「品質とは要求を満たすことである」と定義を述べています。一定の要求を満たしているのであれば、「品質が良い」という評価ができるのです。
参照:ソフトウェア品質における「要求に対する適合の定理」について
また、ソフトウェア工学の専門家であるワインバーグは自著において、「品質は誰かにとっての価値である」と定義しています。これを基準にすると、ユーザーにとって価値があるソフトウェアであるならば、「品質が良い」ソフトウェアであるといえます。
ふたつの定義を踏まえると、「要求」と「価値」という点を満たしているのであれば、「ソフトウェア品質が良い」と言えるでしょう。しかし、品質の「良い」「悪い」は具体的にどのような基準で判断されるのでしょうか?
品質の「良い」「悪い」とは
前述のふたつの定義からも、ソフトウェア品質の基準はユーザーが感じることに大きく影響されることが分かります。そのため、性質や特性がユーザーの期待する基準に達しているのであれば、「品質が良い」と評価することができると言えるでしょう。
基本的に、品質はユーザー目線によって決まることが多いものです。品質には様々な要素が関係しているので、その基準を満たしていると品質が良いと見られます。例として、ソフトウェアにおいては使いやすさや性能だけではなく、互換性なども品質として評価されます。
もし、ソフトウェアにバグがあると、本来の機能が発揮されないので、「品質が悪い」と評価されます。WEBサイトでボタンをクリックしても反応しない、などが良い例です。バグなどで反応しないと、「WEBサイトを閲覧して情報を得たい」というユーザーの要求を満たすことができず、「品質が悪い」と評価されます。
なぜ「ソフトウェア品質」は重要なのか
近年では急速にIT化が進み、多くのソフトウェアが世の中にあふれていますが、ITエンジニアたちには、品質の良いソフトウェアの作り手となることが求められています。なぜソフトウェア品質が大切なのか、ポイントを見てみましょう。
ソフトウェア開発の要
ソフトウェア開発の段階から、ソフトウェア品質を管理することは重要となります。システムを構築するときには、複数の工程を経てソフトウェアが完成に近づきます。その各工程でソフトウェアのテスト・検証を行うことが、品質を高めるのに大切なステップとなります。
もちろんソフトウェア開発においては、多くのバグが発生する可能性が高く、「バグは当たり前のものである」とも言われていることでしょう。
しかし、テスト・検証を繰り返すことで、バグを発見し対策を施すことができます。プロジェクトチームが一丸となってテスト・検証を繰り返し行い、品質管理を行う部署がテスト・検証の進捗確認をしたり、改善を繰り返すことで、ソフトウェア品質を管理することとなり、品質向上につながります。
本来であれば、プロジェクト全体でテスト・検証工程の全貌を知るのが理想的となります。顧客がどれほどの品質を要求しているのか、満足度はどこにあるのかを知ることが、ソフトウェア品質を管理し高めることにつながるからです。
ソフトウェア開発では、顧客が抱えているトラブルを解決することも大きな目的のひとつなので、品質の定義は重要要素なのです。
第三者からの客観的評価が重要
これまで日本では、多くの企業で「利用者の要望に応える」ことを目標に高品質なものを作り、ブランド力を構築してきました。
しかし、グローバル市場を見てみると高品質を証明するためには、客観的で合理的な説明が必要となります。それには第三者からの客観的評価が含まれます。
国際規格などを用いて説明をすることや、第三者がテスト・検証するなどといった、客観的な説明が力を発揮する場合もあるでしょう。
客観的に評価をしていくことで、顧客満足度を高めていくことができますし、品質の信頼性を証明することもできるのです。顧客のニーズが多様化する中で、第三者によるテスト・検証は大きな力を持ちます。
ソフトウェア品質を評価するための取り組み
ソフトウェア品質を評価するためには、ソフトウェア品質の指標と評価方法を理解する必要があるでしょう。
ソフトウェア品質特性
ソフトウェア品質を評価する指標をご紹介いたします。項目別に何を基準にし、品質を判断するのか見てみましょう。
・機能性
指定された条件のもとで動作をし、要求されている仕様を満たしている状態のことです。
・信頼性
ソフトウェアが指定された条件のもとで動作をし、達成水準を維持する能力です。障害が起きたときや、誤動作の際の復旧にも関連します。
・使用性
利用者がスムーズに利用できるのかという、「使い勝手」や「使いやすさ」、「操作性」のことを指します。
・効率性
設定された、もしくは入力されたリソースに対して、性能を発揮する能力です。決められた時間の中で、いかに早く、多くの情報を処理できるのかなどを表します。
・保守性
完成したソフトウェアがどこまで修正しやすいかということです。作った本人にしか修正を行うことができないのであれば、改善が必要なときにコストがかかります。
利用者に直接関係がない特性に見えますが、最終的なリリースまでにかかるコスト削減は、利用者へのメリットとなることがあるのです。
・移植性
別の環境に移したいときに、どれほど容易に移せるのかという基準です。例えば、サーバーを移行するときやフレームワークを変更する際における、移行や変更のしやすさが重要になります。
ソフトウェアの品質の評価方法
ソフトウェアという目に見えにくいものの品質を高めるには、測定の尺度(メトリックス)を高めることが必要です。ソフトウェア品質メトリックスを測定するには、仮説に基づきながら、評価をしていきます。
目標(Goal)を識別し、目標達成を評価する質問(Question)を決め、最後に質問に答える尺度(Metrics)を定義する「GQMモデル」に基づき、測定目的を明確にすると、品質を的確に評価することができるようになるのです。
バグが起きたり、修正依頼が生じたりしたときには、このようにソフトウェアの品質を評価していくと、新たなバグの発生というリスクを未然に防ぐことにつながるでしょう。メトリックスは常に変化していきますので、常に見直しをすることも不可欠です。
品質を評価して改善をしようとしても、工程が進んでしまってからでは、元に戻すコストや時間が大きくなります。設計段階から品質を意識して、チーム全体で取り組むことがコスト削減にもつながります。
「測れないものは制御することができない」考えのもと、継続的に改善するために評価をしていく必要があるのです。
まとめ
ソフトウェアという目に見えにくいものは、品質を評価するのが難しいものです。さらに、ソフトウェアにおける品質の定義は視点によって変わってしまいます。品質の指標をしっかりと定義し、見直しを繰り返すことも必要です。
IT技術の発展によりソフトウェアが複雑化する中で、ソフトウェアのテスト・検証工程を行うテストエンジニアの需要が増しています。納品前にテスト・検証を繰り返すことで、バグや不具合を発見し、質の高いソフトウェア開発につながります。
テスト・品質案件にご興味のある方はぜひ、「SOFTWARE JOBS (ソフトウェアジョブズ)」をご覧いただき、取り扱い案件についてご検討くださいませ。