• home
  • ブログ
  • ウォーターフォール開発の特徴とは?メリット・デメリットもわかりやすく解説!
  • 用語集

22.05.10

  • twitter
  • facebook

ウォーターフォール開発の特徴とは?メリット・デメリットもわかりやすく解説!

システム開発は、要件定義や実装、テストといった色々な作業工程を進めてシステムが完成しますが、開発手法や手順は案件によって異なります。

今回は開発手法の中でも非常に古くからある「ウォーターフォール開発」と言う開発手法をご紹介するとともに、「ウォーターフォール開発の特徴やアジャイル開発との違い」「ウォータフォール開発におけるメリットやデメリット」についてもご紹介します。

 

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

ウォーターフォール開発は、1970年ごろに誕生した開発手法で非常に古くからある標準的な開発モデルです。

上流工程から下流工程滝の流れのように工程を進めていくことから、この名前がつけられました。現在でも大型開発プロジェクトなどで採用されるため開発現場やエンジニアの中で最も浸透している開発手法であると言えます。

 

図:ウォーターフォールモデル

・ウォーターフォール開発の特徴

ウォーターフォール開発の特徴を2つご紹介します。

・上流工程から下流工程へと順番に開発を進める
・各工程での厳格なスケジュール管理や品質管理が求められる

 

上流工程から下流工程へと順番に開発を進める

ウォーターフォール開発は、要件定義→基本設計→詳細設計→実装→単体テスト→システムテスト→受け入れテストと言った流れに沿って、上流工程から下流工程へと順番に開発が進められます。

ウォーターフォール開発では原則、手戻りができませんので開発責任者と顧客が成果物に対して一つ一つの工程をチェックし、合意を得たうえで各工程を進めるのが基本となります。

 

各工程での厳格なスケジュール管理や品質管理が求められる

年単位で進むような長期間のプロジェクトでは、各工程での厳格なスケジュール管理や品質管理が求められるので、ウォーターフォール開発では仕様変更を行うことができません。万が一仕様変更やバグなどが見つかり、手戻りが必要な場合は、スケジュールの変更や予算の見直しなどをする必要があることも特徴の一つです。

 

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

アジャイル開発とウォーターフォール開発の違いを2つご紹介します。

・開発工程の進め方
・開発の品質

 

開発工程の進め方

小さな機能ごとに分割して開発からテストを行うアジャイル開発では急な仕様変更に対して柔軟に対応できますが、ウォーターフォール開発では上流工程から下流工程を後戻りしない前提で進めていくため、開発途中での仕様変更などに柔軟な対応ができません。

また、アジャイル開発には「スクラム開発」という手法があります。ラグビーの「スクラム」のようにチームが連携し合って開発を進めていく手法で、目標達成のためにチーム一丸となって開発していくため、開発スピードも速く、仕様変更にも柔軟に対応できます。

 

開発の品質

アジャイル開発では仕様変更にも柔軟に対応できますがその分、変更が加わりすぎてしまうと機能全体の品質が安定しません。一方、ウォーターフォール開発は全体設計を行なった上で開発を進めていくため、開発の品質を担保しやすいです。

 

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

ウォーターフォール開発は、全体の設計からスケジュール通りに工程を進めていくシステム開発の主流とも言える手法ですが、メリット・デメリットがありますのでご紹介します。

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

 ウォーターフォール開発の大きなメリットを3つご紹介します。

・スケジュールと進捗状況が把握しやすい
・開発者にとって作るシステムの全体像がイメージしやすい
・プロジェクトの最初の段階で各工程に必要な人員が確保しやすい

 

スケジュールと進捗状況が把握しやすい

事前の計画通りに作業工程を進めるため、進捗状況がシンプルでわかりやすいです。必要な人員を必要な分だけ利用できるので、コストの無駄などを把握しやすいです。

開発を依頼する場合も、開発担当者や依頼元が状況を把握しやすいの特徴です。

開発者にとって作るシステムの全体像がイメージしやすい

一つ一つの工程が明確化されてから次のステップへ進むため、開発者にとって作るシステムの全体像がイメージしやすいです。例えば、チーム内で開発者同士会話をしながら各工程を進めることも多いと思いますが、そんな時にシステムの全体像をお互いにイメージできていると会話もスムーズに進みます。

また、プロジェクト開始と同時に要件定義、基本設計や詳細設計を進めていくので、速い段階でエンジニアが何をするべきなのかを明確にすることができます。

各工程に必要な人員が確保しやすい

工程が明確化されているということは、プロジェクトの最初の段階で各工程に必要な人員が確保しやすく、開発者の入れ替えが発生しても引き継ぎがスムーズに行えます。

これにより、プロジェクトに大きな支障をきたさずに進められるのも大きなメリットとなります。

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

ウォータフォール開発のメリット見てきましたが、次にデメリットについても2つご紹介します。

・各工程での仕様変更が難しい
・開発期間が長期化してしまう

 

各工程での仕様変更が難しい

例えば、現段階で実装を行なっているのに詳細設計に仕様変更が発生した場合、その詳細設計からやり直さなければならず非常に非効率です。軽微な変更であれば問題ないかもしれませんが、システム全体に影響のある変更などの場合は追加の工数や費用を見積もらなければならなくなります。

こういった事情から、ウォーターフォール開発での仕様変更は、基本的に行なってはならないというのが考えの一つとなります。

開発期間が長期化してしまう

アジャイル開発などの他の開発手法に比べると、開発期間が長くなるというのもデメリットです。先述しましたが、仕様変更すると追加工数や費用がかかってしまいます。それをなるべく避けるために一つ一つの工程で顧客と綿密にすり合わせをするため、必然的に開発期間が長くなってしまいます。

まとめ:ウォーターフォール開発が向いているのは?

ウォーターフォール開発は、高品質で信頼性の高いシステムが求められるケースに向いています。

例えば金融機関系システムは障害発生が許されないので、リリースを早めるよりもテストを数多く行い、障害を発生させないことが一番の信頼性につながります。また、大規模なシステム開発にも向いています。大規模になると、より多くの開発者に設計書などの資料を提示する必要があり、設計書のレベルにおいても高いものが要求されます。

一つ一つにおいて顧客と合意をとって進めているウォーターフォール開発であれば、質の高い設計書を提示できるなどのメリットがあるため向いています。