V字モデルとは?IPAの定義やアジャイル、ウォーターフォールとの関係について解説

Autify, Inc.

V字モデルは、ソフトウェア開発プロセスにおける品質確保のための手法として広く知られています。このモデルは、開発プロセスとテストプロセスを対応させることで、品質の実装と検証をシステム全体で行うことが目的です。本記事では、V字モデルの定義やそのメリット、他の開発手法との関係について詳しく解説します。

V字モデルとは?一般的な定義

出典:https://ja.wikipedia.org/wiki/V%E3%83%A2%E3%83%87%E3%83%AB

V字モデルは、開発ライフサイクルを表すモデルの一種です。ウォーターフォールモデルの実装(コーディング)を中心に半分に折ったようなもので、同じレベルの開発工程と検証工程が、それぞれ紐づくように図示したものです。開発工程と検証工程に明確な関係性を持たせることによって、開発段階から検証について意識することを促し、早い段階から品質向上に関する取り組みを始めることができます。

V字モデルを知っておくべき人

V字モデルは開発ライフサイクルのモデルなので、プロジェクトマネージャーやリーダーなどが知っておくとよいですが、自分たちの開発チーム・プロジェクトがどのような工程を経てソフトウェアを開発するのかを知っておくという意味では、開発に携わる全員が知っておくのがよいでしょう。

V字モデルのメリット

ここからは、V字モデルのメリットについていくつか説明していきます。

開発段階から品質に関する取り組みをスタートできる

V字モデルは開発ライフサイクルの中の、同じレベルの開発工程と検証工程をそれぞれ紐づけ、開発段階から品質に関する取り組みをスタートさせることができます。

例えば、要件定義のようないわゆる上流工程と呼ばれる段階が完了した時点で、受け入れテスト項目を導出することが可能です。実際に検証がスタートするのはV字モデルの最後ではありますが、要件定義の段階で受け入れテスト項目を考えておけば、プロジェクトの最終段階になって要件がテスト不可能であることが分かる、というようなことを防げます。

出典:https://www.ipa.go.jp/archive/files/000027415.pdf 50ページ

さらに、後述するIPAの「共通フレーム2013」においても、プロジェクトの早い段階で要件を明確にし、テスト活動を計画することが強調されています​​。これにより、後の工程での手戻りを防ぎ、コスト削減および利益率の向上が期待できます​​。

開発チームとテストチームが連携して仕事を進められる

開発チームとテストチームが別々に仕事をしていて、うまく連携を取れていないようなケースでは、V字モデルの採用を検討するのがよいかもしれません。例えば、テストチームが要件定義や基本設計などの段階で関与し、要件や設計などがテスト可能であることをその都度確認できれば、テスト実行で困ることは少なくなるでしょう。

さらに、V字モデルの適用により、テスト技術者が上流工程から参画することで、早期に問題を発見し、修正することが可能です。これにより、テストチームは開発チームと連携し、効率的にプロジェクトを進めることができます​​。

これらのメリットを考慮することで、V字モデルはソフトウェア開発プロジェクトにおいて品質を確保し、コスト削減と効率的なプロジェクト進行を支援する有用な手法といえるでしょう。

V字モデルが役に立つ組織・チーム・プロジェクト

ウォーターフォール

V字モデルはウォーターフォールモデルから派生したもので、各工程に対して明確なテスト工程を対応させることにより、品質管理を徹底する手法です。

ウォーターフォールモデルは、各工程を順番に進め、その成果物を次の工程で利用するという特性を持ちます。V字モデルを採用することで、各開発工程の完了時に対応するテスト工程が明確に定義され、その段階でテスト項目書などの成果物を作成することが可能です。これにより、プロジェクトの初期段階からテストを意識し、テスト計画を立てることができます。

アジャイル

アジャイル開発では、顧客に価値を迅速に提供することを重視し、フィードバックを元に短期間で製品を改善していきます。このような環境でもV字モデルは有効です。

アジャイル開発では、各スプリントの終了時にリリース可能なインクリメントが生成されるため、そのインクリメントごとにテストを実施する必要があります。V字モデルの概念を取り入れることで、アジャイルチームはスプリントごとにテスト計画を立て、テスト活動を効率的に進めることができます 。

IPA(独立行政法人 情報処理推進機構)における例

出典: https://www.ipa.go.jp/archive/files/000027415.pdf 45ページ

IPA (独立行政法人 情報処理推進機構) 共通フレーム 2013」では、いわゆる上流工程に当たる「要件定義」のさらに上に当たる段階を「超上流」として定義しており、これらに対する検証もV字の右側に記載されています。

これは、要件定義や設計のさらに前段階である、システム化の方向性や計画段階からV字モデルを適用し、各フェーズでの検証方法を事前に決めておくアプローチです。

これにより、システム全体の方向性が適切かどうかを早期に評価することが可能です。プロジェクトの進行中に大きな方向転換を避けることができたり、プロジェクトの終了時に方針が適切だったかどうかレビューしたりできます。このアプローチは、特に大規模なプロジェクトや複雑なシステムにおいて有効です​​ 。

以上のように、V字モデルはウォーターフォール、アジャイル、そして超上流プロセスにおいても効果的に適用できる柔軟性を持つ手法です。各プロジェクトの特性や組織のニーズに応じて、適切にV字モデルを取り入れることで、品質向上と効率的なプロジェクト管理を実現することができます。

他のモデルとの関係

W字モデル

W字モデルは、開発者とテスト担当者の協調をより具体的に説明したモデルです。V字モデルの概念を拡張し、開発プロセスとテストプロセスを2つのV字に分けて示すことで、開発とテストの双方の活動を並行して進めることを目指しています。これにより、各段階でのフィードバックループが形成され、早期に問題を発見・修正することが可能です。

具体的には、W字モデルは以下のように構成されています​​。

  • 開発とテストの協調: V字モデルと同様、要件定義、設計、コーディングといった各開発工程に対して、それぞれに対応するテスト工程が定義されています。例えば、要件定義の段階で受け入れテスト項目が作成され、設計の段階では統合テスト項目が計画されます 。
  • 責務とコミュニケーションの明確化: V字モデルに比べ、W字モデルでは開発工程とテスト工程が同時並行で発生することや、それぞれの責務と連携、フィードバックの流れなどが明確に記されています。そのため、それぞれのタイミングで誰が何をするのかが明確になります。
  • 上流工程からのテスト技術者の参画: 組織内のテスト技術者や第三者検証会社などの品質担当者が上流工程から参画し、要件定義や設計時にテスト観点を取り入れることで、品質の向上を図ります​​ 。
  • 継続的なフィードバック: テストの知見を早い段階から開発にフィードバックし、継続的にプロセスを改善します。

出典:https://jasst.jp/symposium/jasst12tokyo/pdf/D4-1.pdf

U字モデル

U字モデルは、V字モデルの派生であり、開発プロセスとテストプロセスがU字の形で連携しています。野村総合研究所(NRI)が採用したといわれています。

参考: https://xtech.nikkei.com/atcl/nxt/column/18/00840/070900002/

V字モデルと比べた際の大きな特徴として、詳細設計→コーディング→単体テストの箇所が省略されていることが挙げられます。実装に必要なUI部品(コンポーネント)を共通化し、基本設計の内容がそのままアプリケーションの実装になるような仕組みを構築しています。

また、共通部品群で作れない機能は極力排除することにより、設計段階では作れる見込みだったのが、実際には難しかった、といった手戻りを極力排除しています。

U字モデルとV字モデルは、同レベルの開発工程とテスト工程を並べているという点では全く違いは無く、得られるメリットもほぼ同じです。ただ、U字モデルの方がより開発フレームワークとシームレスに繋がるように設計されており、洗練されているといえるでしょう。ただし、V字モデルがU字モデルに比べて極端にデメリットが大きいということはありません。

V字モデルの導入に必要なこと

出典:https://ja.wikipedia.org/wiki/V%E3%83%A2%E3%83%87%E3%83%AB

V字モデルの導入に特別に必要なことはありませんが、他の開発プロセス同様、それぞれの工程における成果物は明確にしておくべきでしょう。例えば、要件定義から要件定義書と受け入れテスト項目書が作成され、それぞれ次の工程に渡されることを図に表しておき、関係するメンバー全員に協力を仰いでおくべきです。

まとめ: V字モデルは古くて新しい

V字モデルはソフトウェア開発で長らく使われているモデルですが、現代においても充分通用する概念です。むしろ、品質意識がおろそかになっている組織ほど、基本に立ち返ってV字モデルを使ってみるのもよいのではないでしょうか。