ウォーターフォールモデル、V字モデル、W字モデルは、ソフトウェア開発に携わる方ならよく知っている用語です。では、各々の違いは何でしょうか。
ウォーターフォールモデルとは
ウォーターフォールモデルの定義
ウォーターフォールモデルとは、手戻りがないことを原則として、要求定義、分析、設計、実装、テストの工程を順番に実施するソフトウェア開発方法のことです。ウォーターフォールモデルは、英語で表記すると“Waterfall Model”です。Waterfallは「滝」という意味ですね。滝の水は落ちるだけで上に戻ることはありません。手戻りがないことを、滝の水が落ちるさまに例えて、ウォーターフォールモデルと呼ばれているのです。ウォーターフォールモデルは、ロイス[1]が提唱したといわれています。
ウォーターフォールモデルのメリット
ウォーターフォールモデルのメリットは、要求が確定している場合には、作業を順番に進めていくのに非常に有用であることです。要求内容が確定していれば、開発計画を立案して、その通りに秩序立てて開発を進めていくことができます。顧客から見ると、固定金額かつ固定期間で開発契約を交わすことができるので、非常に受け入れやすい方法といえます。
ウォーターフォールモデルのデメリット
ウォーターフォールモデルのデメリットは、現実的な問題として、開発開始時にすべての要求を確定することが難しいことです。要求がなかなか決まらない、決まったはずの仕様が変更になるという問題は、ソフトウェア開発に常に付きまとう問題です。また、実際にソフトウェアが動く様子を見ることができるのは、ソフトウェア開発の後半になるため、もし仕様に致命的な問題があった場合には、その発見が遅れてしまうという問題もあります。
ウォーターフォールモデルの適用状況
ウォーターフォールモデルは、古典的なモデルといえますが、日本ではいまだに主流のプロセスモデルとして使われています。ウォーターフォールモデルを使いこなすことは、ソフトウェア業界で働く方にとっては、必須の要件といえるでしょう。
V字モデルとは
次にV字モデルについて説明します。
V字モデルの定義
V字モデルはウォーターフォールモデルの表現形式をV字に変えたものです。
V字モデルの詳細説明
V字モデルは、ウォーターフォールモデルを実装工程で折り曲げて、対応する開発工程とテスト工程を、視覚的に同じ位置に置くことにより、各テスト工程のテストレベルを示したモデルです。上図では、単体テストでは、実装工程で実装した内容をテストします。同様に、統合テストは詳細設計で設計した内容を、総合テストでは基本設計で設計した内容を、受入テストでは要求定義で定義した内容を、各々テストするのです。このように、V字モデルは、テストのレベルと範囲を明確にできるという効果があります。
W字モデルとは
では、W字モデルとはどのようなモデルでしょうか。
W字モデルの定義
W字モデルは、V字モデルの左側の開発工程と、対応するテスト工程の作業を並行して実施することを表したモデルです。
W字モデルの詳細説明
開発プロセスのⅤ字と、テストプロセスのV字が並行して実施するさまが、Wの形になることからW 字モデルと呼ばれています。W字モデルには、いくつかの考え方があり、V字モデルの左側の開発工程と並行して、対応するテストの計画やテスト設計を実施するものや、開発工程の成果物に対してレビューなどの静的テストを実施するものなどがあります。
V字モデルとW字モデルの関係
V字モデルは、ウォーターフォールモデルの工程を順に進めるのでなく、V字モデルの左側の開発工程に合わせて、テストの設計を先取りすることにより、レビュー効果をあげることを狙ったモデルです。そのレビューによる品質向上方法を詳細に表現したものがW字モデルです。
V字モデルとW字モデルの効果
ウォーターフォールモデルで開発をするときには、V字モデルやW字モデルで開発を進めることをお勧めします。実際にV字モデルやW字モデルに取り組んでみると、すぐにその効果を実感できると思いますよ。設計内容を、同時にテストする立場で見ることになるので、しっかり設計したつもりが、実はテストするためには情報が足りないといったことに気が付くでしょう。例えば、パラメータ同士の組み合わせや、動作条件によっては、どういう動きをするのかわからないといったことです。それを、テスト工程で気が付くのでなく、設計した段階で気が付くので、早期に品質を確保できるという効果が期待できるのです。
さいごに
ウォーターフォールモデルと、V字モデル、W字モデルについて解説しました。ご理解いただけたでしょうか。
参考文献
参考文献[1] Winston Royce, Managing the Development of Large Software Systems, Proc. Of IEEE WESCON, 1970