■ はじめに
ウォーターフォール開発手法 をご存じでしょうか。
これは従来から多くのプロジェクトで採用されてきたソフトウェア開発の手法であり、
計画に基づいて各工程を順次進めていく特徴があります。
開発手法といえばアジャイル開発が注目される今、ウォーターフォール開発がどのような場面で有効かや、
そのメリットとデメリットを含めて解説していきます。
また、アジャイル開発については以下の記事で解説しておりますので合わせてご覧ください。
■ 目次
1. ウォーターフォール開発とは?
ソフトウェア開発プロジェクトにおいて、各フェーズを上流から順次進めていく
工程管理手法を ウォーターフォール開発といいます。
ウォーターフォールの名前が表す通り、上流から下流に一直線に工程が進んでいく様子を表しています。
そのため次のフェーズに移行する前に現在のフェーズを完全に終了させること基本となります。
-
要件定義
- プロジェクトの全体像と詳細な要件を定義
-
設計
- システムの仕様や構造を設計
-
実装
- 実際にソフトウェアを開発
-
テスト
- 実装したソフトウェアを検証
-
リリース
- 顧客に納品し、運用を開始
この流れであれば各段階が終わってから次に進むため、プロジェクトの進行状況が
予測可能であるので規模の大きなプロジェクトでは多く取り入れられている手法です。
2. ウォーターフォールのメリット
ウォーターフォール開発には、以下のようなメリットがあります。
-
明確なプロセス
- 各フェーズが明確に定義されており、プロジェクト全体の進行が予測しやすい
-
大規模プロジェクトに適している
- 大規模プロジェクトや安定した要件のプロジェクトでは、計画に基づいた進行が求められる
-
リソース管理がしやすい
- 各フェーズに必要なリソースを事前に把握しやすいため、人員や予算の管理が可能
3. ウォーターフォールのデメリット
一方で、ウォーターフォール開発には以下のデメリットもあります。
-
要件変更に弱い
- 要件が一度確定してしまうと途中での変更が非常に難しいため、
後の工程で柔軟な対応が求められるプロジェクトには不向き
- 要件が一度確定してしまうと途中での変更が非常に難しいため、
-
手戻りが大きい
- 後半のフェーズで問題が発生した場合、
前のフェーズに戻ることが難しく大幅な修正が必要な可能性がある
- 後半のフェーズで問題が発生した場合、
-
長期間のプロジェクトではリスク
- 要件定義からリリースまでの期間が長いプロジェクトでは、最新の市場や技術の変化に対応し辛い
(5年かかるプロジェクトであればリリース時には5年前の市場/技術となってしまう)
- 要件定義からリリースまでの期間が長いプロジェクトでは、最新の市場や技術の変化に対応し辛い
4. ウォーターフォールが有効な場面
ウォーターフォール開発は上記のメリット/デメリットを考慮したうえで、以下のようなプロジェクトに適しているといえます。
-
要件が明確に決まっているプロジェクト
- 要件が変更されることがほとんどない場合
- 古い技術でもその技術が必要な場合
-
規模が大きく、各フェーズの分業が可能なプロジェクト
-
要件定義を行うチーム、設計を担当するチーム、開発を担当するチーム、テストを担当するチームなど、
フェーズごとに役割を明確に分けることが可能なチームである場合、それぞれのチームが担当フェーズに 専念することができるため、ウォーターフォール開発に向いている -
また分業が可能な環境ではプロジェクトマネージャーが全体の進捗状況を把握しやすく、
スケジュール管理が容易になるという利点もある
-
大規模プロジェクトにおいては、全体像を把握しながらも細分化されたフェーズごとの管理が重要となりますが、ウォーターフォール開発ではフェーズごとの管理がしやすいため、大規模かつ複雑なプロジェクトで用いられることが多いようです。
5. まとめ
- ウォーターフォール開発は、各フェーズを順番に進める手法
- 予測可能であり、大規模プロジェクトに適している
- 「明確なプロセス」、「リソース管理の容易さ」がメリット
- 「要件変更に弱い」、「手戻りが大きい」がデメリット
- ウォーターフォールは要件が安定しているプロジェクトに適用すると効果的