アイキャッチ

ウォーターフォール開発とは? なぜオワコンと言われる? メリットやデメリットを徹底解説

エンジニア辞典

認知度の高い開発手法の1つとして多くの開発現場で採用されているウォーターフォール開発。豊富な実績がある一方で、2000年代半ばごろからはアジャイル開発の採用が急速に進み、ウォーターフォール開発は押され気味であることは否めません。

そこで今回は改めてウォーターフォール開発の概要を説明するとともに、ウォーターフォール開発のメリット・デメリット、そして「ウォーターフォール開発は本当にオワコンなのか」について解説していきます。

ウォーターフォール開発とは

ウォーターフォール開発とはシステム開発における開発手法の一つ。

「ウォーターフォール=滝」という名前からわかるように、基本的には「計画」「設計」「実装」「テスト」「運用」の工程を戻ることなく上流工程から下流工程へと順番に進めていくのが特徴です。

数ある開発手法の中でも歴史が古く、認知度の高い開発手法で、現在でも大規模プロジェクトなどを中心に採用されています。

ウォーターフォール開発とは

ウォーターフォール開発の歴史

ウォーターフォール開発の基となる考え方が生まれたのは1970年代。情報工学博士のロイスの論文に記載された「大規模ソフトウェア開発には、製品製造過程のようにいくつかの工程に分けたトップダウンアプローチが必要」という内容が基とされています。

その後ロイスの論文はアメリカ国防省やIEEE(米国電気電子学会)などさまざまな団体や人々に受け入れられ、国際的な地位を獲得していきました。

当初ロイスの論文内では「複数回のIteration(反復)を実施する」という記載がありましたが、アメリカ国防省やIEEEなどが文書化するにあたり「複数回のIteration(反復)を実施する」の記載がなくなり、「ウォーターフォール開発=反復なし」という考え方が一般化したとされています。

ウォーターフォール開発の流れ

▼【1】計画
ユーザーと共に必要な機能や性能、工程など、システム開発に必要な要件を決めます。「要件定義(要求定義)」などと呼ばれます。

▼【2】設計
要件定義で決めた内容を基に設計書を作成する工程です。「基本設計(外部設計)」「詳細設計(内部設計)」などと呼ばれます。

▼【3】実装
設計書の内容に基づき、プログラミングを行う工程です。

▼【4】テスト
作成したプログラムが要件定義で決めた通りの動きをするかを確認する工程です。「製造・単体テスト」「結合テスト」「運用テスト」などと呼ばれます。

▼【5】運用
システムが完成したらシステム移行を経て運用が始まります。システムが滞りなく稼働するように管理する「保守」も含みます。

参考記事:システム開発の工程(流れ)とは?ウォーターフォールとアジャイルの違いも解説

代表的なウォーターフォール開発のモデル

ウォーターフォール開発には各工程の作業をより効率的に行うための上位互換モデルとしてV字モデル、W字モデルがあります。それぞれの特徴を紹介します。

V字モデル

V字モデルとは?

V字モデルとは、従来のウォーターフォール開発の考え方に設計工程とテスト工程をリンクさせる考え方を追加した開発手法のことです。「要件定義⇔システムテスト」「基本設計⇔結合テスト」「詳細設計⇔単体テスト」をリンクさせて検証をおこなうことでレビュー効果をあげる狙いがあります。

W字モデル

W字モデルとは、設計工程とテスト工程をリンクさせることで効率化を実現したV字モデルのさらに上位互換モデルです。V字モデルは一つ一つの工程を順に進めていくのに対し、各設計工程とテスト工程を同時並行で進めていくことで上位工程で不具合があった場合のカバーがしやすくなっています。

アジャイル開発との違いって?

ウォーターフォール開発と比較される開発手法の一つにアジャイル開発があります。

ウォーターフォール開発が上流工程から下流工程へと順番に進めていくのに対して、アジャイル開発は最初に大まかな仕様を決める「計画」を立て、その後は開発を小さな単位に分けて「計画」「設計」「実装」「テスト」「運用」の工程を何度も繰り返す開発手法です。

アジャイル開発は短期間でのリリースが可能なことや、開発途中の仕様変更に強い点がメリットとされており、近年ウォーターフォール開発を凌ぐ勢いでさまざまなプロジェクトに導入されています。

参考記事:アジャイル開発とは? メリットや成功の秘訣など、今さら聞けない基本を解説

アジャイル開発とウォーターフォール開発の違いって?

ウォーターフォール開発に向いているプロジェクトとは?

ウォーターフォール開発は、前述した通り手戻りをしないことが前提ですので「仕様変更がない(少ない)システム」の開発に向いています

さらに、ウォーターフォール開発は要件定義で全工程のスケジュールを決めたうえで開発を進めていくため、綿密に品質を担保する必要があるプロジェクトや煩雑になりやすい大規模プロジェクトでも重宝されています。

さらに、クライアントのシステム開発を一貫して請け負うSIerでは予算や人員、開発期間などプロジェクト全体の見通しが立てやすいウォーターフォール開発が用いられることがほとんどです。

≪ウォーターフォール開発に向いているシステム例≫

●家電や自動車などの組込系ソフトウェア
●銀行の基幹システム
●携帯キャリアの通信システム など

ウォーターフォール開発のメリット・デメリット

ウォーターフォール開発は長く開発現場の第一線で活躍してきた安定感のある開発手法の一つですが、やはりメリット・デメリットはあります。

ここではウォーターフォール開発のメリット・デメリットを解説していきますので、ぜひ最適な開発手法を選ぶのに役立ててください。

ウォーターフォール開発のメリット・デメリット

ウォーターフォール開発のメリット1:品質を担保しやすい

これまで何度も述べている通り、ウォーターフォール開発は最初に「どんなシステムを作るか」を明確にしたうえで開発を進めていくため、システムの品質を担保しやすいという特徴があります。クライアントと技術者が共通の認識を持って開発を進められるため、納品後に「イメージと違った」ということが発生しづらい点もメリットの一つでしょう。

ウォーターフォール開発のメリット2:スケジュール管理がしやすい

ウォーターフォール開発は、最初の要件定義の段階でシステムに実装する機能面だけでなく必要な予算や人材、各工程にかかる期間なども詳しく決めます。そのため、開発中も各工程の進捗状況が把握しやすく、スケジュール管理がしやすいというメリットがあります。各工程ごとの業務引継なども円滑に行いやすいのも特徴です。

ウォーターフォール開発のメリット3:人材育成や採用がしやすい

ウォーターフォール開発は事前に必要な技術力が明確化しておりイレギュラーが発生しづらいため、「人材を過剰に採用してしまった」ということが起こりづらく、新人エンジニアなど特定の技術の習得を目指すエンジニアの育成に向いているのが特徴です。

ウォーターフォール開発のメリット4:開発事例が多い

ウォーターフォール開発は日本で古くから採用されてきた開発手法の一つです。そのため開発事例が多いのが特徴です。さらにウォーターフォール開発に精通した技術者も多いため、人材確保がしやすい点は大きなメリットと言えるでしょう。

ウォーターフォール開発のデメリット1:開発期間が長期化しやすい

ウォーターフォール開発は事前にシステム要件をしっかり決めてから開発を進めていくため、アジャイル開発などと比較すると開発に着手するまでに時間がかかるのが特徴です。そのためスタートアップでの開発やWebサービス、スマホアプリ開発などスピード感が必要な開発案件には向かないとされています。

ウォーターフォール開発のデメリット2:仕様変更にコストがかかる

ウォーターフォール開発は最初にすべての工程の要件を決定した上で開発を進めることが前提ですので、途中でトラブルが発生した場合や機能追加が発生した場合に手戻りが難しいという特徴があります。トラブルが発生したタイミングが後工程であるほど手戻りのための時間やコストがかかりやすいというリスクもあります。コストを捻出できない場合、致命的な不具合でなければ対応せずにシステムを完成させてしまうことも珍しくありません。

ウォーターフォール開発が「オワコン」と噂されるワケ

「品質を担保しやすい」「スケジュール管理がしやすい」など数多くのメリットがあるウォーターフォール開発ですが、2000年代にアジャイル開発が日本でも導入されるようになると「ウォーターフォール開発は時代遅れ」と言われることも増えてきました。

それでは「なぜウォーターフォール開発が時代遅れ」と言われるようになったのか、そして「ウォーターフォール開発は本当にオワコンなのか」について解説していきます。

ウォーターフォール開発がオワコンと言われる理由は?

ウォーターフォール開発がオワコンと言われる理由は?

「ウォーターフォール開発はオワコン」と言われている理由は、アジャイル開発の台頭が大きく影響しています。

これまで何度も説明している通り、ウォーターフォール開発は最初に要件を決定し、基本的にはその要件通りに開発を進める手法です。計画通りに開発が進めばまったく問題ないものの、臨機応変さやスピード感が求められる開発には不向きとされています。

しかし近年はWebサービスやスマホアプリなどユーザーの要望によって臨機応変な対応が求められるケースや、クライアント参加型で開発を進めながら仕様を決めていくようなケースも増えてきました。

そこで重宝されつつあるのがアジャイル開発です。「アジャイル=素早い」という名前の通り、アジャイル開発はサービスインまでの時間が短いことが特徴です。さらに最初の要件定義の段階ではおおよその仕様しか決めないため仕様変更に強いというメリットがあります。

米Microsoftのプロジェクトマネージャーであるサム・グッケンハイマー氏が日本に来日した際、日本企業からの「アジャイルと、ウォータフォールのメリット・デメリットを教えてください」という質問に対して「ウォーターフォールは一切メリットがないので止めておきなさい」と発言したことも「ウォーターフォール開発はオワコン」と言われるようになった理由の一つでしょう。

ベンチャーやスタートアップでは早くから取り入れられていたアジャイル開発ですが、近年では大企業での導入も進み、「ウォーターフォール開発よりもアジャイル開発」といった風潮が生まれつつあるようです。

ウォーターフォール開発は本当にオワコンなの?

結論から言うと、ウォーターフォール開発はまだまだ現役と言ってもいいでしょう。その理由は、臨機応変さやスピード感に定評があるアジャイル開発もウォーターフォール開発ほどの「品質の高さ」は担保できないから。

SNSやIoT、AIなどユーザー満足度を重視するシステムに関してはアジャイル開発が優勢ではありますが、ERP(企業資源計画)やCRM(顧客管理)、SCM(供給連鎖管理)など継続的に情報を蓄積し管理することが目的のシステムに関してはウォーターフォール開発が向いています。

また近年では、ウォーターフォール開発とアジャイル開発のメリットを取り入れ、デメリットを補完し合う「ハイブリッド開発」という手法も選択されつつあります。このことからも、ウォーターフォール開発がこの世からなくなることは考えづらいでしょう。

ウォーターフォール開発を成功に導くには

ウォーターフォール開発を成功に導くには、まずそのプロジェクトがウォーターフォール開発向きなのかを見極める必要があります。以下の3点は確認しておいたほうがいいでしょう。

1.仕様が明確に決まっている(変更を前提としていない)
2.スピードよりも品質重視である
3.プロジェクトが大規模である

またウォーターフォール開発は当初決めた要件通りに開発を進めていくことが大前提です。つまり、人材・コスト・スケジュールなどをしっかり管理できるマネージャーが必要不可欠となります。ウォーターフォール開発を進める時は、プロジェクトマネージャーの能力をしっかり担保しておくことが大切です。

ウォーターフォール開発は品質重視の開発手法

ウォーターフォール開発は上流工程から下流工程へと順番に開発を進めていく開発手法です。品質の高さや管理のしやすさを重視する際に重宝され、大規模なプロジェクトや銀行、インフラ関連のシステム開発に向いているとされています。

近年ではスピード感や臨機応変さに定評のあるアジャイル開発が主流となりつつありますが、どちらもメリット・デメリットがあるため、プロジェクトの内容やクライアントの意向に合った開発手法を選ぶことが大切です。

文/赤池沙希

Twitterをフォローしよう

この記事をシェア

RELATED関連記事

RANKING人気記事ランキング

JOB BOARD編集部オススメ求人特集




サイトマップ