WRブログ

V字モデルとは?

V字モデルとは?

V字モデルは、ソフトウェアの開発~テスト~リリースまでの一連の流れにおける、システム開発プロジェクトにおける開発工程とテスト工程の対応関係を表した1つのモデルです。

V字モデルの概要とウォーターフォールモデル

v_shaped_model

  • V字の左半分に、開発工程を上流工程から順番に右下がりに並べます。
  • V字の右半分に、左の開発工程に対応したテスト工程を右上がりに並べます。
  • V字の左右を見比べることで、実施されるテストがどのレベルの開発内容を検証するためのテストなのか、何に着目したテストが行われるのかを示すことができます。

上図のV字モデルの左半分をご覧いただき、お気づきかと思いますが、この図はシステム開発プロジェクトで用いられる代表的な手法の一つ「ウォーターフォールモデル」の開発工程そのものです。

ウォーターフォールモデルは、工程や作業プロセスごとにチェック(検収)しやすいため、品質を重視する日本のシステム開発の現場、特に大規模なシステム開発プロジェクトにおいて、多く採用されてきた、なじみの開発手法です。開発作業を進める中で、各工程に対応した品質保証が求められますが、それがV字モデルでは明示的に表現されていることがわかります。

V字モデルとアジャイル開発

多くのWebサービスが登場し、アプリ開発とシステム開発の境界が曖昧になってきた昨今では、よりユーザーに近くスピードが最優先のフロントエンド側(アプリ開発)と、安定性と品質が最重視されるバックエンド側(システム開発)の両方を開発プロジェクトとしてこなさなければならない状況になってきました。

開発と運用を有機的にこなすDevOpsや、より効率が高く工期の短縮を狙う開発手法として提唱されたアジャイル開発モデルなど、従来のウォーターフォールモデルの概念に留まらない多様な手法が登場してきました。

V字モデルは、ウォーターフォールモデルの開発工程そのものと前述しましたが、ウォーターフォールモデルを前提としているわけではなく、アジャイル開発モデルにおいてもV字モデルは活用できると言えます。

例えば、反復型開発の代表例である「スクラム(SCRUM)」を例に挙げてみましょう。

スクラム

スクラムにおいては、「スプリント」と呼ばれる比較的短いスパンの中で、要件定義〜設計〜開発〜テストを実施します。一つ一つのスプリントの中で、V字モデルに沿って開発作業を行っている、とも言えます。工程や作業フェーズを区切って、まとめて作業を進めていくウォーターフォールモデルとは違い、スクラムではスプリントを繰り返すことで要求事項を満たす製品に仕上げていきます。開発作業のアプローチ方法が違うだけで、対応しなければならない作業項目(タスク)自体はウォーターフォールと同様になります。

V字モデルとテスト

ウォーターフォールモデルもアジャイル開発モデルも、作業工程ごとに目標(到達点)が明確に定められています。各モデルにおけるテスト作業においても例外ではありません。

テスト工程ごとに、どのレベルの品質保証をすべきかは、テストレベルとして定義されています。テストレベルやテストの種類(タイプ)については、当ブログでも触れていますので、こちら(テストタイプ・テストレベル)をご一読いただければ幸いです。

以下に「結合テスト」「受け入れテスト(総合テスト・評価テスト・シナリオテスト)」を例に挙げて、V字モデルとの関係性をご説明します。前述の図と見比べながら、お読みいただけますと理解が深まるかと思います。

(例1)結合テストについて

例えば、「基本設計」に対応した「結合テスト」では、基本設計で決定された仕様書(基本設計書)通りの動作をするかどうかに着目したテストが行われます。 つまり、「結合テスト」では当初の要求事項(企画やコンセプト)に合致しているか否か、ユーザビリティは適切か、などという内容を検証する段階ではないということがわかります。

(例2)受け入れテストについて

結合テストで仕様書(基本設計書)通りに動作するかどうかのテストをしただけでは、企画当初の要求水準に達しません。そのため「受け入れテスト」(総合テスト・評価テスト・シナリオテストなどとも言われます)を実施します。要求分析・要件定義の工程で定義されたユーザビリティや製品の企画当初の要求事項自体を満たせているかなど、よりユーザーに近い目線で品質を検証していくことになります。

V字モデル活用において重要なポイントとメリット

V字モデルは書籍や文書によって、微妙にプロセスの言い回しなどが変わるため、プロジェクト担当者の描いているV字モデルについては確認が必要になります。

しかし、V字モデルを活用する上で最も重要なことは、開発の段階とテストの段階を結びつけることで、どの段階の開発内容を、どの段階のテストで検証するのかを明確にする点にあります。

開発段階とテスト段階を結びつけることでいったいどのような利点があるのでしょうか?V字モデルのメリットは、大別して次の2点となります。

  • 対応する開発段階に沿った内容のテストに絞り込むことができるため、分担が容易で、各プロセスの責任者が明確。
  • システム開発プロジェクトの進行段階が把握しやすい。

分担することにより、開発会社は、発注者の細かい要望が実現できているかどうかのチェックをひとまず置いて、コーディングなどのシステムの骨格部分を作りこむことに集中することができます。 結合テストが完了し、基本設計部分の不具合が全て解消され、基本的な動きに問題が無いことがわかってから、受け入れテストで発注者の細かい要望が実現できているかどうかを検証し、検証と改修の繰り返しを行って製品としての品質をブラッシュアップしていくというわけです。

各工程の責任者が明確であることで、検証の結果、大きな手戻りが発生したときの対応担当者も明確になります。

また、プロジェクトの進行段階が把握しやすいため、進捗状況に応じてコストや人員、スケジュールの調整が明確に決められるというメリットもあります。

これは大きなシステム開発プロジェクトになるほど重要な要素となります。

W字モデルとは?も併せてご覧ください。

■関連記事

受け入れテスト(UAT)について

【参考文献】
『ソフトウェアテスト教科書 JSTQB Foundation 第3版』

【参考URL】:
http://www.itmedia.co.jp/im/articles/1111/07/news155.html,(参照 2018年11月30日)
http://itpro.nikkeibp.co.jp/article/lecture/20061130/255501/(参照 2018年11月30日)