QbookジャーナルQBOOK JOURNAL

上流工程からのテストが「コスト・納期・品質」を達成する近道

最終更新日時:2020.09.10 (公開日:2018.04.27)

品質向上にかかるコスト削減!ソフトウェアの不具合修正は上流工程で行おう

ソフトウェア開発ビジネスにおいて、成果物の品質向上は欠かせません。
しかし、ソフトウェア開発では開発コスト以上に品質向上に対するコストの方が膨大にかかることがあります。たとえば、リリース直前になって致命的な不具合が多数発覚し、それらの分析調査、および修正のために多大な労力と期間が必要になった、などということが開発現場では起こっているのが現状です。あるいは、大規模なシステム障害が発生し、大きな損害が発生したというニュースは連日のように報道されています。それらを修正し再稼働するためにかかるコストは開発プロジェクトが想定していないものでしょう。
成果物の品質向上にかかるコストを削減するためには、開発初期にあたる上流工程で不具合の検出・修正を行い、開発工程の手戻りを減らす必要があります。今回は、ソフトウェア開発の上流工程で不具合を検出・修正するメリットについて、および工程の手戻りとコストについてご紹介します。

「上流工程」はソフトウェア開発の要

ここで開発プロセスにおける「上流工程」について解説しておきましょう。
一般的にいわれる上流工程とは、ソフトウェア開発の工程の流れの中で開発初期段階に行われる工程のことを指します。本記事で説明する上流工程は、ソフトウェア開発の要件定義から詳細設計までを行う開発工程のことをいいます。詳しくは V 字モデル、W 字モデルに関するコラム(末尾にリンク掲載)をご覧ください。

上流工程はなぜ重要視される?

ソフトウェア開発の現場ではほとんどの場合、下流工程よりも上流工程が重要視されています。なぜ重要視されているのでしょうか。それは、上流工程で誤りが生じると、後々の下流工程で不具合として現れ、開発スケジュールの遅延、工程の手戻りが発生するためにコストが増加するからです。 日本のIT産業を支援する独立行政法人である、情報処理推進機構(IPA)も、ガイドブックの発行やシンポジウムでの講演などを通して上流工程の重要さを発信してきましたが、上流工程に起因した手戻りコストの増加により、プロジェクトの失敗が無くなってはいないのが現状です。

開発プロジェクト失敗事例

ここからは、上流工程に起因したプロジェクトの失敗事例をご紹介します。

企業向けの検索システムの開発プロジェクトでのことです。システムテストまでは順調に進んでいましたが、ユーザーテスト工程の段階で、データの検索画面に検索キーをいくつか追加する仕様変更が発生したため、スケジュールを延長しプログラムの修正を実施しました。その後、無事納品するまでに至るのですが、本番稼働後にユーザーから「オンラインのレスポンスが遅すぎて使い物にならない」とのクレームが続出する事態に発展しました。

レスポンスが悪化した原因は、ご想像のとおり、ユーザーテスト工程での仕様変更でした。システムテストの段階では大量データによる性能テストを実施し、問題が無いことを確認していました。

しかし、その後のユーザーテスト以降は機能面の確認を中心に実施していたため、大量データを使ってのテストは行っておらず、仕様変更によるレスポンスの悪化を検知することができなかったのです。この不具合の根本的な原因は、「上流工程で作成した仕様が不十分だったこと」でした。

このように、開発初期段階の要件定義にて「仕様の抜け漏れ」が生じると、後々の工程で不具合、または仕様変更として現れます。それによって当初予定されていなかった修正作業が入り開発コストがかかります。さらにスケジュールが想定よりも遅延してしまいます。この場合はリリース後に不具合が発覚したため、クレームへと発展してしまいました。場合によっては、成果物のリリースの延期・中止やシステム稼働の停止にもつながりかねません。

上流工程からのテストが「コスト・納期・品質」を達成 する近道

「手戻り」と「コスト」の関係

ソフトウェア開発は、要件定義、設計、コーディング、テストという順で進行します。
しかし、テストに移行し不具合が見つかった場合、必要な段階まで戻って不具合を修正しなければなりません。こういった手戻りが多いほど、修正作業も増えます。そのため、結果として開発費がかさみ、膨大なコストがかかってしまうのです。

「不具合」の早期発見で手戻りを防ぐ

通常テスト工程はコーディング後に行います。しかし、開発の上流工程である設計段階で「テスト」を行うことによって、要件定義や設計仕様の抜け漏れを防ぐことができます。ここでいう「テスト」とは実際にソフトウェアを操作して行う「動的テスト」ではなく、要件定義書や設計仕様書をレビューして、ユーザーにとって有益な製品を作ることができるか、という視点で行うレビュー、「静的テスト」のことです。
レビューを丹念に行うことにより多少の工数増加は発生しますが、上流工程でソフトウェアの仕様の漏れを発見することで、工程の手戻りを減らすことができるため、全体の工数が削減できます。また、手戻り工程の発生を防ぐことができるため、開発初期段階からソフトウェアの品質を高めることにもつながるのです。

加えて、下流工程で想定外の作業が発生することを抑えることが可能となり、「ソフトウェアのリリース遅れ」を防ぐことができます。

つまり、上流工程からテストを実施することは、ソフトウェア開発の「コスト・品質・納期」を達成する近道といえるでしょう。

テストエンジニアの存在

2-03

ソフトウェア開発にとって、ソフトウェアテストは必要不可欠です。
では、ソフトウェアテストを専門に行うテストエンジニアの存在はどういったものなのか、ここでは、とあるプロジェクトAの事例をみながら、テストエンジニアの存在についてご紹介します。

プロジェクトAでは、テストエンジニアが上流工程である基本設計の段階で、下流工程で実施する結合テストのテストケースを作成してから実装を行いました。
すると担当者は検証すべき事項がわかった上で、詳細設計・プログラミング・単体テストを行うため、非常に効率よく不具合を洗い出すことができ、結合テストで検出すべき不具合が90%以上、設計・実装フェーズまでの間に検出されました。不具合が単体テストまでにほぼ検出されているため、プロジェクトAで想定されていた修正にかかるコストは軽減され、なおかつ品質も向上したのです。

このような事例から分かるとおり、ソフトウェアテストに特化した専門知識を保有するテストエンジニアがプロジェクトの上流工程から、関わりを持つことは重要であるといえます。
特にソフトウェアの品質を評価する「第三者検証」を行う専門会社など、高いテストスキルを持ったエンジニアがソフトウェアの品質向上には欠かせないのです。

おわりに

今回は、ソフトウェア開発において上流工程での不具合の検出が重要であることをご紹介しました。
ソフトウェア開発における上流工程で不具合を修正しておくことは、下流工程からの作業の手戻りを減らし、結果的にコストや工数の削減につながります。そのため、テストエンジニアがソフトウェア開発の上流工程から関わることは、一見工数が増すように見えますが、プロジェクト全体を通したとき、コスト削減や工数削減など多くのメリットをもたらすのです。

もちろん、下流工程での不具合の発見や修正がすべて無くなるわけではありません。
ただ、上流工程で検出されるべき不具合が下流工程で多く検出されることが、ソフトウェア開発プロジェクトの失敗が無くならないことに起因しているのかもしれません。ソフトウェア開発においては、上流工程からの不具合対策を行うことが、多くの開発現場で求められているといえるでしょう。

参考サイト

ソフトウェア開発工程とV字モデル、W字モデルについて解説した記事です。本コラムとあわせて読むと上流工程からテストについて考えることの重要性が、より理解できるでしょう。

システム構築の上流工程強化 : IPA 独立行政法人 情報処理推進機構
https://www.ipa.go.jp/sec/system/sys_upper.html

本コラム内で紹介した IPA の上流工程に関するページです。ページ内のリンクから、各種ガ イドブックや WG の内容を知ることができます。その他のページにもソフトウェア開発に役立 つ情報が多数掲載されています。

資料ダウンロード

執筆者:Qbook編集部

ライター

バルテス株式会社 Qbook編集部。 ソフトウェアテストや品質向上に関する記事を執筆しています。