ウォーターフォール

英語名 Waterfall Model
読み方 ウォーターフォール モデル
難易度
所要時間 プロジェクト全期間
提唱者 ウィンストン・W・ロイス
目次

ひとことで言うと
#

要件定義→設計→実装→テスト→リリースの各工程を、滝の水が上から下に流れるように「順番に」進めていくプロジェクト管理手法。前の工程が完了してから次に進むのが大原則。

押さえておきたい用語
#

押さえておきたい用語
フェーズゲート(Phase Gate)
各工程の終わりに設ける品質チェックポイントのこと。ゲートを通過しなければ次の工程に進めない仕組み。
要件定義書(Requirements Specification)
「何を作るか」を機能要件・非機能要件に分けて網羅的に記述した文書のこと。ウォーターフォールの最重要ドキュメント。
V字モデル(V-Model)
要件定義→設計→実装の各段階に対応するテストレベル(受入→システム→結合→単体)を対にして品質を検証するモデルを指す。
手戻り(Rework)
前工程の不備により後工程でやり直しが発生すること。ウォーターフォールでは手戻りコストが工程が進むほど指数関数的に増大する。
アジャイル(Agile)
短い開発サイクル(スプリント)を繰り返しながら変化に素早く適応する開発手法の総称。ウォーターフォールの対極に位置づけられることが多い。→ アジャイルマニフェスト
スプリント(Sprint)
アジャイル開発で使われる1〜4週間の固定された開発サイクルのこと。スプリントごとに「動くソフトウェア」を届ける。ウォーターフォールの「全工程完了後に一括リリース」との最大の違い。
イテレーション(Iteration)
「計画→実行→検証→改善」を短期間で繰り返すこと。ウォーターフォールが一方通行なのに対し、アジャイルはこの反復により方向修正を可能にする。

ウォーターフォールの全体像
#

ウォーターフォール:各工程を順番に進め、フェーズゲートで品質を管理する
1. 要件定義「何を作るか」を固めるここが最重要工程2. 設計「どう作るか」を決める基本設計+詳細設計3. 実装設計書どおりにコーディング単体テストも含む4. テスト結合→システム→受入テストここを削ると本番炎上5. リリース・保守本番デプロイ+運用開始監視体制を敷くGGGGG= フェーズゲート(品質チェックポイント)
ウォーターフォールの進め方フロー
1
要件定義
「何を作るか」を全て洗い出す
2
設計
基本設計+詳細設計で「どう作るか」
3
実装・テスト
コーディング+4段階のテスト
リリース・保守
本番デプロイと運用開始

こんな悩みに効く
#

  • 要件がはっきりしているのに、進め方がバラバラで混乱している
  • 大規模プロジェクトで各工程の責任範囲を明確にしたい
  • 規制やコンプライアンスの関係で、きっちりドキュメントを残す必要がある

基本の使い方
#

ステップ1: 要件定義

「何を作るか」を徹底的に洗い出す

  • クライアントやユーザーの要望をヒアリングし、要件定義書にまとめる
  • 機能要件と非機能要件(性能・セキュリティなど)を明確に分ける
  • ステークホルダー全員の合意を取る

ポイント: ここが甘いと、後工程での手戻りコストが膨大になる。時間をかけてでも要件を固めるのがウォーターフォールの鉄則。

ステップ2: 設計

要件をもとに「どう作るか」を設計する

  • 基本設計(外部設計)でシステム全体の構造を決める
  • 詳細設計(内部設計)でモジュールごとの処理を定義する
  • 設計書をレビューして、要件との整合性を確認する

ポイント: 設計書は「実装者への指示書」。曖昧な表現は禁止。

ステップ3: 実装・テスト

設計書に従ってコードを書き、テストで品質を担保する

  • 設計書どおりにコーディングする
  • 単体テスト→結合テスト→システムテスト→受入テストの順に進める
  • バグが見つかったら修正し、再テストする

ポイント: テスト工程をケチると、リリース後に炎上する。テストにはしっかり時間を確保すること。

ステップ4: リリース・保守

完成したシステムを本番環境にデプロイし、運用を開始する

  • リリース手順書に沿って慎重に本番反映する
  • 初期不具合に備えて監視体制を敷く
  • 運用・保守フェーズに移行し、改修要望を管理する

ポイント: リリースして終わりではない。運用フェーズまで見据えた計画を最初から立てておく。

具体例
#

例1:銀行の勘定系システム刷新50名体制で14ヶ月かけて完遂する

背景: 地方銀行が勘定系システムを刷新。開発チーム50名(ベンダー40名+行内SE10名)。金融庁のガイドラインに完全準拠が必須。

プロジェクト計画:

工程期間主要成果物要員数
要件定義3ヶ月要件定義書(800項目)、規制要件チェックリスト15名
設計4ヶ月基本設計書、詳細設計書、DB定義書25名
実装4ヶ月ソースコード、単体テスト結果40名
テスト2ヶ月結合/システム/受入テスト結果35名
リリース1ヶ月移行手順書、運用マニュアル20名

フェーズゲートの実施:

  • 要件定義完了ゲート: 800項目の要件に対し全ステークホルダー(12名)の署名取得
  • 設計完了ゲート: 設計レビューを3回実施し、要件との整合性チェックシートで95%以上の一致を確認
  • 実装完了ゲート: 単体テストカバレッジ85%以上、静的解析の重大指摘ゼロ

結果: 14ヶ月で予定通りリリース。テスト工程で不具合を200件検出し全件修正。本番稼働後3ヶ月間の重大障害ゼロ。要件定義に3ヶ月かけて800項目を徹底的に固めたことが、テスト工程での手戻り最小化に直結した

例2:医療機器メーカー15名チームがFDA規制下でソフトウェア開発する

背景: 医療機器の組み込みソフトウェア開発。FDA(米国食品医薬品局)の規制でドキュメント完備とトレーサビリティが必須。チーム15名、期間18ヶ月。

ウォーターフォール採用の理由:

  • FDAの510(k)申請に、各工程の完全な文書化が必要
  • 要件→設計→コード→テストの「トレーサビリティマトリクス」が審査で求められる
  • 工程ごとの品質記録が法的に必須

工程別の文書量:

工程期間成果文書ページ数
要件定義4ヶ月SRS(ソフトウェア要件仕様書)、ハザード分析380ページ
設計5ヶ月SDD(ソフトウェア設計記述)、FMEA520ページ
実装4ヶ月ソースコード、コードレビュー記録-
テスト4ヶ月テスト計画書、テストケース2,400件、トレーサビリティマトリクス890ページ
申請準備1ヶ月510(k)申請書類一式1,200ページ

トレーサビリティマトリクス: 要件定義の各項目→対応する設計→対応するコード→対応するテストケースを全て紐付け。要件240項目に対し、100%のトレーサビリティを達成。

結果: FDAの510(k)申請が1回目の提出で承認。通常の審査期間(90日)より20日早い70日で承認取得。ウォーターフォールの「各工程の文書化」が規制準拠に完全にフィットし、アジャイルでは実現困難なトレーサビリティを確保できた

例3:自治体の住基ネット更改で8名チームが手戻りを最小化する

背景: 人口12万人の市が住基ネット端末の更改プロジェクトを実施。予算1.8億円、期間12ヶ月。ベンダー8名+市職員3名。

ウォーターフォール採用の理由: 住基ネットの仕様は総務省のガイドラインで詳細に規定されており、要件の変動がほぼゼロ。

各工程の工夫:

工程期間工夫ポイント
要件定義2ヶ月総務省ガイドライン対照表を作成し、全要件を網羅確認
設計3ヶ月既存システムからの移行手順を設計段階で詳細化
実装3ヶ月ペアプログラミングを部分導入し単体テスト品質を向上
テスト3ヶ月本番環境と同一の検証環境を構築し、移行リハーサルを3回実施
リリース1ヶ月土日の本番切替+2週間の集中監視体制

手戻り防止策:

  • 設計レビューに現場の窓口職員3名を参加させ、運用上の問題を早期発見
  • テスト工程でのバグ発見数: 計85件(うち設計起因12件、実装起因73件)
  • 設計起因バグ12件のうち9件は「窓口職員がレビューに参加していれば防げた」もの → 次回からレビュー参加を必須化

結果: 12ヶ月で予定通り本番切替完了。切替後の初日から正常稼働し、市民サービスへの影響ゼロ。要件が固定されたプロジェクトではウォーターフォールが最も効率的であることを実証。ただし設計レビューへの現場参加が重要という教訓を得た

やりがちな失敗パターン
#

  1. 要件定義が不十分なまま設計に入る — 「とりあえず進めよう」で始めると、実装段階で「これ要件に書いてない」が多発する。要件定義の完了基準を明確にしてからゲートを通すこと
  2. テスト工程を圧縮する — スケジュールが押すと真っ先に削られるのがテスト期間。しかしテスト不足は本番障害に直結する。テスト期間は最初からバッファ込みで確保する
  3. 変更要求に対応できない — ウォーターフォールは途中での仕様変更に弱い。変更が多い場合はアジャイルとのハイブリッドを検討する
  4. ドキュメントが形骸化する — フェーズゲートのためだけに形式的な文書を作ると、実際の開発に役立たない。「読んで理解できる」品質のドキュメントを書くことを意識する

ウォーターフォール vs アジャイル — どちらを選ぶ?
#

ウォーターフォールの話をすると必ず出てくるのが「アジャイルではダメなの?」という問い。どちらが優れているという話ではなく、プロジェクトの性質に合わせて選ぶものだ。

比較軸ウォーターフォールアジャイル
要件の確定度最初にほぼ100%固める走りながら発見・変更する
変化への対応苦手(手戻りコスト大)得意(スプリントごとに方向修正)
成果物の出し方全工程完了後に一括リリース2〜4週間ごとに動くものを届ける
ドキュメント各工程で詳細な文書を作成動くソフトウェアを優先、文書は必要最小限
向いている場面規制産業・大規模受託・ハードウェア連携Webサービス・新規事業・要件が不確実な領域
リスクの現れ方テスト段階で一気に顕在化早期に小さく顕在化(早く失敗、早く修正)

現実には白黒つけられないケースが多い。「要件定義と設計はウォーターフォールで固め、実装以降はスプリントで回す」ハイブリッド型も増えている。迷ったら以下のチェックで判断しよう。

  • 要件は最初から9割以上固まっている → ウォーターフォール向き
  • 「作ってみないとわからない」要素が多い → アジャイル向き
  • 法規制やトレーサビリティが必須 → ウォーターフォール向き(ただしアジャイルでも対応手法はある)
  • リリース後もユーザーの反応を見て改善し続ける → アジャイル向き

まとめ
#

ウォーターフォールは、要件が明確で変更が少ないプロジェクトに向いた伝統的な開発手法。各工程を順番にきっちり進めることで、大規模プロジェクトでも品質と進捗を管理しやすい。特に規制産業(金融、医療、行政)では、ドキュメント完備とトレーサビリティの観点から現在も広く使われている。ただし変化への対応力が弱いため、プロジェクトの性質に合わせてアジャイルとの使い分けを判断しよう。