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

V字モデルとは?

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

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

要求分析-受入テスト(AT)
 要求定義システムテスト(ST
  基本設計結合テスト(JT
   詳細設計単体テスト(UT
    コーディングコードレビュー

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

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

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

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

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

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

反復型開とは アジャイル開発とは W字モデルとは

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

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

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

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

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

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

V字モデル活用において重要なポイントとメリット
 V字モデルは、微妙にプロセスの言い回しなどが変わるため、プロジェクト担当者の描いているV字モデルについては、開発する前に確認が必要になります。しかし、V字モデルを活用する上で最も重要なことは、開発の段階とテストの段階を結びつけることで、どの段階の開発内容を、どの段階のテストで検証するのかを明確にする点にあります。

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

 対応する開発段階に沿った内容のテストに絞り込むことができるため、分担が容易で、各プロセスの責任者が明確です。
 システム開発プロジェクトの進行段階が把握しやすく、分担することにより、開発会社は、発注者の細かい要望が実現できているかどうかのチェックをひとまず置いて、コーディングなどのシステムの骨格部分を作りこむことに集中することができます。 結合テストが完了し、基本設計部分の不具合が全て解消され、基本的な動きに問題が無いことがわかってから、受け入れテストで発注者の細かい要望が実現できているかどうかを検証し、検証と改修の繰り返しを行って製品としての品質をブラッシュアップしていくと言う流れが理想です。

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

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

これは大きなシステム開発プロジェクトになるほど重要な要素となります。W字モデルとは?も併せてご覧ください。

今後の開発を始める前に確認しておきたい内容ではありますね。

開発における用語
開発工程
・ウォーターフォールモデル
・Vモデル
・Wモデル
・スクラム開発
・アジャイル開発

開発を始める前に
・コーディング規約

・上流工程 上流工程とは
・要求定義
・機能定義
・構成管理
・計画立案

・下流工程 下流工程とは
・要件定義
・基本設計
・詳細設計
・コーディング
・コードレビュー
・コーディング規約
・単体テスト
・結合テスト
・総合テスト
・評価テスト 評価テストとは
・シナリオテスト
・運用テスト

業務リスト
・テスト計画
・テスト設計
・手順書作成
・テスト項目表作成
・テスト環境作成
・テストデータ作成
・単体テスト実施
・結合テスト実機
・総合テスト実施
・不具合再現
・報告書作成
・不具合分析
・不具合原因の特定
・改善案提案
・打ち合わせ
・オペレーターフォロー
・開発アシスト
・進捗管理

徐々にまとめていくぞ、、、今年中に!!


THE CARD GAME は地域活性化プロジェクト、若者応援事業、就職支援の一環のアイテムとしてもご利用になれます!