ウォーターフォール手法は時系列に沿ったプロセスであり、固定された日付、要件、成果に基づいて進みます。個々の実行チームは、統合を必要としない限り、常に連絡を取り合う必要はなく、通常は独立して作業します。
チームメンバーも独立して作業する傾向があり、アジャイルアプローチほど頻繁に進捗報告を求められることはありません。通常、1つのフェーズが終了するまで次のフェーズは始まりません。
ソフトウェア開発プロジェクトを例にとると、ウォーターフォールプロセスには通常、次のような段階があります:
要件定義
ウォーターフォール手法は、事前にすべてのプロジェクト要件を収集し理解できるという前提に依存しています。プロジェクトマネージャーは、プロジェクトスポンサーの要件を詳細に理解しようと試みます。通常1つの文書にまとめられた要件定義書には、コスト、前提条件、リスク、依存関係、成功指標、完了までのタイムラインなどの各段階が記載されています。プロジェクト要件がすべて定義されると、チームはプロジェクト全体のライフサイクルを明確に把握できるようになります。
設計
この段階では、ソフトウェア開発者がシナリオ、レイアウト、データモデルなどを含む製品要件に基づいて技術的な解決策を設計します。まず、高レベル設計または論理設計を作成し、プロジェクトの目的とスコープ、各コンポーネントの全体的な処理フロー、統合ポイントを記述します。これが完了すると、特定のハードウェアやソフトウェア技術を用いた物理設計に進みます。
システム設計には高レベル設計と低レベル設計の2つのフェーズがあります。高レベル設計では、どのように情報にアクセスし、どのように機能にするかの骨組みを作成します。次に低レベル設計で、ソフトウェアの各部分を定義し具体化します。
実装
設計が完了すると、ウォーターフォール手法は次の段階、技術的な実装へと進みます。この段階は、すでに入念な調査と設計が行われているため、ウォーターフォールプロセスの中で最も短期間で終わる可能性があります。このフェーズでは、プログラマーがプロジェクトの要件と仕様に基づいてアプリケーションをコーディングし、部分的なテストや実装も行われます。この段階で大幅な変更が必要となった場合は、設計フェーズに戻ることを意味します。
検証またはテスト
顧客に製品をリリースする前にはテストが必要です。テストにより、製品にエラーがなく、すべての要件が満たされていることを確認し、ユーザーに良好な体験を提供できることが保証されます。テストチームはプロジェクトマネジメント手法を確認し、プロダクトマネージャーが提供する設計文書、ペルソナ、ユースケースシナリオをもとにテストケースを作成します。
導入と保守
導入フェーズは、ソフトウェア、製品、または最終成果物をエンドユーザー(顧客)にリリースする段階です。円滑な展開には調整と綿密な計画が必要です。ソフトウェアが市場に展開されるか顧客にリリースされると、保守フェーズが始まります。不具合が見つかったり、ユーザーから変更要求が届いたりすると、更新や新しいソフトウェアバージョンのリリースを担当するチームが割り当てられます。