
Introduction
いまや我々の生活になくてはならないスマートフォンやパソコン。これらの製品内に組み込まれるソフトウェアの開発手法の1つとして、「ウォーターフォール(V字)モデル」があります。
IT業界で働いている方であれば、内容は知らずとも一度ぐらい名前は聞いたことがあるのではないでしょうか。
今回はこのウォーターフォールモデルについて、ご紹介していきます。
目次
ウォーターフォール(V字)開発モデルとは?
「ウォーターフォール」とは日本語に訳すと『滝』を意味します。工程を策定し、細かく分け、川上から川下に向かって流れる滝のように、上流工程から下流工程へ順次移行していく開発手法です。
「ウォーターフォール型開発」や「ウォーターフォールモデル」とも表現されます。一連の流れに沿った開発です。関連するキーワードとして「V字モデル」や「W字モデル」があげられます。これらのモデルにおけるそれぞれの工程はウォーターフォールの工程そのものです。上流工程がどのテスト工程(フェーズ、レベル)に対応しているのかも明確になっています。
ウォーターフォール(V字)開発の流れ

上図に示したウォーターフォールモデルの開発工程と概要を簡単に紹介すると次のようになります。
要件定義:ユーザーの要求を整理し実装する機能や性能、工程などをまとめる。
基本設計:要件定義でまとめた内容をどのように作成していくかをまとめる。
詳細設計:基本設計で定めた動きをどのように実現していくかをまとめる。
コーディング:プログラマーやエンジニアによりプログラムを実装する。
テスト:プログラムが正しく動作するかをプログラム単体や結合した状態でテストする。
リリース:テストを終えたシステムをリリースする。
基本的なルールとして、工程を飛ばして作業することはなく、開発担当者や責任者、クライアントが各工程の成果物を共に確認し、双方の合意を得たうえで各工程を完了と見なした際に、次の工程へと進みます。そのため、基本設計の後に詳細設計が終わっていない状態でテストを行うことはありません。しかし、作成するソフトウェアの仕様変更があった場合などには、前の工程に戻って作業することがあります。

大規模開発で採用されるケースが多い
ウォーターフォールモデルでは、上流工程でしっかり要件定義を行い、仕様を作りこんだ上で開発を進めていきます。上流工程でリリースまでの計画を入念に立てるため、遅延が許されない大型案件を正確に進める上ではメリットのある開発モデルです。
また、先々のリソースを正確に計算することができる点もウォーターフォールモデルのメリットと言え、同じく長期にわたって開発を行う大規模案件で採用される傾向があります。
ウォーターフォール(V字)開発モデルのメリット
進捗管理が容易である
ウォーターフォールモデルでは、要件定義で必要なタスクを洗い出し、設計、テストを行います。行うべきタスクが明確になっているため、進捗がわかりやすいです。また、どこのタスクで時間がかかるのか明確にできるので、事前の人員調達も容易となります。
一定の品質を担保できる
各工程で予めタスクが決められているため、一定の品質を担保することができます。
予算やリソースの計画と確保がしやすい
前述のとおり、ウォーターフォールモデルは、上流工程において入念に計画を立てた上で進行します。そのため、初期段階から何をどのくらいの期間で作り、どのくらいの工数がかかるのかが明確になり、先々の予算やリソースの計画と確保がしやすいというメリットがあります。
ゴールが早い段階で決まる
ウォーターフォールモデルでは初期段階で最終的な目標が明確になります。それは、チーム全体の目標として機能し、常に目標を意識しながらプロジェクトが進行するため、方向性がブレることを避け、想定する成果物により正確にコミットすることが可能になります。
プロジェクトを個々のスプリントに分割して行うスクラムでの開発とは違い、皆で同じ目標を意識して開発を行います。
ウォーターフォール(V字)開発モデルのデメリット
途中の仕様変更に対応しにくい
プロジェクト全体の流れやすべての工程が最初から決まっているため、仕様変更による工数が増加します。
実際に動く成果物ができるまでに時間がかかる
要件定義、設計の後にならないと開発工程に進めないため、成果物の確認までに時間がかかってしまいます。
世の中の変化やユーザーのニーズに対応した開発が難しい
開発が始まってからの仕様変更が難しいため、企画からリリースまでの間に世の中の状況が大きく変化してしまったり、ターゲットとするユーザーのニーズが変わってしまうこともあり、その点においてはリスクを伴います。
手戻りなどによる工数が増加しやすい
どんなに上流工程で綿密に作られた仕様でも、開発をする中で仕様変更が発生したり、仕様通りにできていないことが発覚したりすることがあります。柔軟性のないウォーターフォールモデルでの開発では、こういったことで想定以上の工数がかかる場合があります。
ウォーターフォール(V字)開発とアジャイル開発の違い

ウォーターフォール開発と比較する形で、アジャイル開発という手法を耳にする機会も増えてきました。これらは対立するものではありませんが、どのような違いがあるのか2つの視点で比較してみましょう。
企画段階における違い
ウォーターフォール開発では、最初の企画段階ですべての機能を決定します。クライアント次第では要求によって仕様変更をすることもありますが、基本的には企画段階での仕様を優先して開発を進めていきます。一方、アジャイル開発ではイテレーションごとの開発になるため、新たな要求が発生した際には次のイテレーション以降でその要求に対応するか否かを決定していきます。
よく「アジャイル開発は計画がない」という誤解がありますが、実際はイテレーションごとに計画しているので、より計画的といえる側面もあります。
開発段階における違い
ウォーターフォール開発では、開発は工程によって分業して行います。そのため、要件定義からリリースまで一連の流れを見届けるメンバーの方が少ないです。
一方、アジャイル開発ではチーム一丸となって開発するため、企画からリリースまでチーム全員で行うことが多いです。(ただし、実際には得意な分野に応じた分業が行われることが現状です)
アジャイル開発白書

近年、市場の変化スピードやニーズに対応するために高速リリースの重要性が高まり、アジャイル開発を導入する企業が急速に増えています。そこで、SHIFTでは、アジャイル開発を検討中、導入済の企業に対し、課題や成果、プロジェクト体制などについての調査を行い、これから導入される企業様、既に導入されている企業様のプロジェクト成功にお役立ていただけるよう調査資料にまとめました。
近年、市場の変化スピードやニーズに対応するために高速リリースの重要性が高まり、アジャイル開発を導入する企業が急速に増えています。そこで、SHIFTでは、アジャイル開発を検討中、導入済の企業に対し、課題や成果、プロジェクト体制などについての調査を行い、これから導入される企業様、既に導入されている企業様のプロジェクト成功にお役立ていただけるよう調査資料にまとめました。
関連サービスについて
ウォーターフォール(V字)開発の活用方法
ウォーターフォール開発のメリットでも記載したとおり、ウォーターフォール開発では、開発の計画や予算の見積もりが容易になります。人員調達も容易になるため、大規模なプロジェクトに向いています。また、工程ごとに決められた基準を満たしてから次の工程に移るため、ある程度の品質を担保しやすくなります。しかし、プロジェクト期間中の要件の変更には手戻り工数が多くかかるため、途中の変更が多く予定されているプロジェクト(ユーザーの声を取り入れながら開発するプロジェクト)などにはウォーターフォール開発はあまり向いていません。こういった背景からか、特に組込みソフトウェア開発ではウォーターフォール開発が主流となっているようです。
まとめ
ウォーターフォール開発は最も一般的な開発手法の1つです。しかし、メリット・デメリットがあり、プロジェクトや状況、企業の体質、メンバーのスキル・成熟度といったさまざまな要素を考慮したうえで開発手法を選択することがプロジェクト成功のカギとなるといえるでしょう。
SHIFTではテスト工程での支援(テスト計画、テスト設計、テスト実行)はもちろん、上流工程から参画して仕様書の欠陥を早期発見し、コスト超過を防止するインスペクションや、プロジェクト運営支援や開発・テストプロセス標準化といったさまざまなサービスを展開しています。
ウォーターフォールからアジャイル開発への移行支援も行っていますので、気になるサービスがありましたらお気軽にお問い合わせください。