ウォーターフォール開発は、ソフトウェア工学において最もポピュラーなシステム開発モデルです。原形となる案は1968年に提唱されており、非常に古くからある手法としても知られています。
このモデルの名前は「滝」を意味します。開発プロジェクトの各工程を一つずつ順番に完了してゆく方式が、水が上から下へと流れ落ちる様子に似ているということで名付けられました。
基本的な工程は、要求定義・外部設計・内部設計・プログラミング・テスト・運用の6段階に分けられます。要求定義が完了してから外部設計に入り、それが完了すれば次は内部設計をするというように、並行することなく一工程ずつ作業を進めていくのがこの手法の特徴です。
各工程で成果物の品質をしっかりと確保しながら進められるため、進捗状況が明確で時間のロスを減らしやすいというメリットがあります。全体的な計画を立てやすく、大規模な開発であってもスムーズな管理ができるのです。
デメリットとして挙げられるのは、仕様変更に弱いという点です。この手法の特性上、問題や変更が生じた場合には前工程から見直しをする必要があるため、時間や手間がかかってしまい負担が大きくなります。
また、テスト段階に辿りつくまで発注者に実物を確認してもらうことができないので、もし発注者から変更の注文があった時にはやり直しにかなりのロスが生じます。そのため、新たな意見を取り入れながら開発してゆくというやり方には適していません。
近年は、ウォーターフォール開発に代わって「アジャイル開発」というモデルを採用する事例が増えてきています。こちらの手法は、イテレーションと呼ばれる1~4週間程度の期間を単位として、新たな機能を一つずつ開発・リリースするものです。
仕様変更があるという前提のもと、柔軟かつ迅速に開発を進めていきます。ウォーターフォール開発とは対照的に、おおよその設計を決めたら短期間で実装とテストを繰り返すこの手法は、ユーザーの意見を取り入れながらの開発に適しています。
一方で、全体の計画を把握しにくく進捗管理が難しいというデメリットもあります。