「ウォーターフォールで開発しています」「アジャイルかウォーターフォールか」という話、IT現場ではよく出てきます。でも「ウォーターフォール開発って何?」と思ったことはないでしょうか。
この記事では、ウォーターフォール開発の基本と現場での使われ方を、初心者にもわかるように解説します。
この記事でわかること
- ウォーターフォール開発とは何か
- なぜ「ウォーターフォール(滝)」という名前なのか
- 各工程がどのように進むか
- メリット・デメリット
- どんなプロジェクトに向いているか
ウォーターフォール開発とは?
ウォーターフォール開発とは、要件定義 → 設計 → 開発 → テスト → リリース というように、工程を順番に(後戻りせずに)進める開発手法です。
「ウォーターフォール(waterfall)」は「滝」という意味で、水が上から下に向かって流れ落ちるように、前の工程から次の工程へと順番に進んでいくイメージから名付けられています。
身近な例で考えると
建設工事に似ています。
家を建てるとき、「設計図 → 基礎工事 → 骨組み → 内装 → 引き渡し」という順番で進みます。骨組みが終わってから「やっぱり設計図を変えたい」と言っても、大きなやり直しが発生しますよね。
ウォーターフォール開発も同じで、前の工程の成果物(設計書・仕様書など)をもとに次の工程が始まります。途中での大きな仕様変更は、手戻りのコストが大きくなります。
ウォーターフォール開発の流れ
典型的なウォーターフォール開発の流れは以下のとおりです。
- 要件定義:何を作るか決める
- 基本設計(外部設計):画面・機能の概要を設計する
- 詳細設計(内部設計):内部の処理方法を設計する
- 実装(コーディング):実際にプログラムを書く
- 単体テスト・結合テスト:部品ごと・組み合わせで確認する
- 総合テスト(システムテスト):全体として動くか確認する
- 受け入れテスト(UAT):発注側が確認する
- リリース・移行:本番環境に公開する
各工程が終わると、次の工程へと移ります。
メリット
計画が立てやすい:工程が明確なため、スケジュールや見積もりを作りやすいです。
進捗管理しやすい:「今は設計工程」「今週でテストが終わる」という状況把握がしやすいです。
ドキュメントが整いやすい:各工程で設計書・仕様書などのドキュメントが作成されるため、後から見返せます。
大規模・長期プロジェクトに向く:関わる人が多く、役割分担が明確な大規模プロジェクトで使いやすいです。
デメリット
途中での変更が難しい:上流工程の変更が下流工程に影響するため、仕様変更のコストが大きくなります。
動くものが見えるのが遅い:実際に動くシステムが確認できるのはテスト工程以降になります。
要件の後出しに弱い:「最初に要件をしっかり決める」前提のため、最初に要件を固めにくい案件には向きません。
どんなプロジェクトに向いているか
- 要件が比較的明確で変更が少ないプロジェクト
- 規模が大きく、役割分担が明確なプロジェクト
- 公官庁・金融機関など、ドキュメントが重視される環境
- 発注側と受注側が明確な受託開発
IT現場ではどう使われるか
日本のIT受託開発では、ウォーターフォール型が長く使われてきました。特に大手SIer(システムインテグレーター)や官公庁向けプロジェクトでは、今もウォーターフォールが主流のケースがあります。
PMや非エンジニアにとって、「今どの工程にいるか」を意識することが重要です。「要件定義工程で設計工程の作業をしている」「テスト工程中に新しい要件が出てきた」といった状況を把握することで、適切な対応ができます。
初心者がつまずきやすいポイント
「ウォーターフォール=古い開発手法」ではない
近年はアジャイル開発が注目されていますが、ウォーターフォールが不要になったわけではありません。プロジェクトの性質に応じて使い分けるものです。
「後戻りが一切できない」わけではない
小さな修正や確認の手戻りは発生します。ただし、大きな仕様変更は工程が進むほどコストが増します。
「前の工程が完璧に終わってから次に進む」とは限らない
実際には並行して進む部分もあります。ただし原則として、前工程の成果物をもとに次工程が始まります。
関連用語
- アジャイル開発:短いサイクルで繰り返す開発手法(ウォーターフォールとよく比較される)
- 要件定義:何を作るかを決める工程
- 設計工程:どのように作るかを決める工程
- SIer:System Integrator。システムを受託して開発・運用する企業
- ドキュメント駆動:各工程でドキュメントを作成しながら進める方式
さらに学ぶなら
システム開発の全体像とPM実務を学びたい方は、テックエイドのコースをご覧ください。