【初心者向け】ウォーターフォール開発とは? → 5分でわかりやすく解説します

main-image
  • 「ウォーターフォール開発とは?」
  • 「ウォーターフォール開発することになったけど、どう進めればいいの?」

なんて疑問をもったりしていませんか?

もしそうであれば、この記事はとても役に立ちます。

この記事を読めば、もうウォーターフォール開発で迷うことはありません。

あなたがウォーターフォール開発の理解を深めるために

ぜひ役立ててくださいね!

この記事でわかること

  • ウォーターフォール開発とはどんなものか
  • ウォーターフォール開発の進め方

この記事はこんな人におすすめ

  • プログラミング初心者
  • Webサービス開発初心者

記事の信頼性

りょうぴー
この記事を書いている僕の実績は次のとおり。
  • 【1日12時間×3年の学習量】
    → 30歳からプログラミングを開始
  • 【取締役・フルスタックエンジニア】
    → Web系ベンチャー企業にて
  • 【合計2万ユーザー以上・2,800万円の資金調達】
    → 開発したWebサービス・アプリにて

まずは結論から

ウォーターフォール開発は「前の工程には戻らない」という前提のもと、各工程の作業が明確に分かれています。

「前の工程には戻らない」ということから、下流から上流には戻らない水の流れに例えて「ウォーターフォール(滝)」と呼ばれています。

僕はプロダクトのウォーターフォール開発において、「プロジェクトマネージャー」・「システムエンジニア」・「プログラマー」すべての経験があります。

その経験をもとにウォーターフォール開発について、それぞれわかりやすく解説していきます。

ウォーターフォール開発とは?

ウォーターフォール開発は、最初に仕様策定・要件定義・機能設計などをすべておこないます。

先に全体の計画を決めてから開発・リリースするという開発手法です

主に開発期間が中長期にわたり、最初に決めた設計から新たな機能追加がほぼ発生しないような場合に多く用いられます。

ウォーターフォール開発は「アジャイル開発」と対になって語られることが多いです。

「アジャイル開発」については、以下の記事で詳しく説明しているので、あわせて読んでみてください。

あわせて読みたい

「アジャイル開発とは?」 「アジャイル開発することになったけど、どう進めればいいの?」 なんて疑問をもったりしていませんか? もしそうであれば、この記事はとても役に立ちます。 この記事を読めば、もうア[…]

main-image

ウォーターフォール開発における3つの役割

①プロジェクトマネージャー

プロジェクト全体の管理・進行・最終意思決定をおこなう「ウォーターフォール開発における責任者」です。

②システムエンジニア

主に、以下の工程をメインで担当する役割を担っています。

  • 要件定義
  • 外部設計
  • 内部設計

③プログラマー

主に、以下の工程をメインで担当する役割を担っています。

  • 開発・実装
  • 単体テスト
  • 結合テスト
  • 最終テスト

ウォーターフォール開発の進め方

要件定義

まず、プロダクトやシステムを開発するにあたり、どのようなことを実現したいのかを決めていきす。

まだこの時点では、実現したいことに対して必要なシステムなどは曖昧な状態です。

システムエンジニアは依頼を受けた内容をもとに、要望を整理していきます。

システムの要件をまとめたら、プロジェクトマネージャーに提示します。

これが「要件定義書」となります。

プロジェクトマネージャーはシステムエンジニアから提示された要件定義書を見て、実現したい内容に即しているか確認します。

問題がなければ、次の工程に進む形になります。

外部設計

定義された要件を満たすために、どのようにシステムを構築するかを決めていきます。

画面のレイアウト・表示する項目・ボタンの配置などを明確化していきます。

これが「設計書」となります。

内部設計

外部設計で定めた設計書をさらに具体化します。

詳細な機能やシステムでおこなう処理の内容などを決定し、設計書に落とし込んでいきます。

開発・実装

外部設計や内部設計で定めた設計書をもとに、プログラマーが実際にプログラミングしていきます。

この段階で徐々にシステムができあがっていきます。

単体テスト

テストフェーズでは設計書をもとに、機能ごとの実行処理などを確認するためのチェックリストを作成します。

これが「テスト仕様書」となります。

単体テストでは、開発・実装した機能単位ごとに細かいテストをおこないます。

結合テスト

各機能を組み合わせ結合し、システムの一連の流れを確認します。

システムが設計書通りに問題なく動作するかをテストします。

「システムが設計書通りに動作しない」・「なにか問題が発生した」など場合は、すべてのテストをクリアするまでプログラムの修正とテストを繰り返していきます。

最終テスト

プロジェクトマネージャーを含めたステークホルダーに、プロダクト・システムが要望通りのものになっているか実際に操作してもらいます。

もしここで問題が発生した場合は、どの工程に間違いがあったのかなどを精査します。

その上で、要望通りに動作するように修正していきます。

プロジェクトマネージャーがOKをだし、プロダクト・システムをローンチしたらプロジェクトは終了となります。

ウォーターフォール開発のメリット・デメリット

メリット

先に全体の設計をおこなった上で、開発・実装していくので、

  • 全体計画を立てやすい
  • 開発・実装の進捗状況を把握しやすい
  • 大規模開発に向いている

デメリット

最初に決定した計画がすべてのベースになるため、

  • 開発工程でトラブルが発生した際の差し戻し対応が困難
  • 開発・実装の途中で新しい機能を追加する場合、時間・コストが膨らむ
  • ユーザーからの意見や要望を取り入れにくい

このようなメリット・デメリットがあります。

まとめ

  • 「前の工程には戻らない」という前提のもと、各工程の作業が明確に分かれている
  • 「前の工程には戻らない」ということから、下流から上流には戻らない水の流れに例えて「ウォーターフォール(滝)」と呼ばれている
  • 全体計画を立てやすい
  • 開発・実装の進捗状況を把握しやすい
  • 大規模開発に向いている
  • 開発工程でトラブルが発生した際の差し戻し対応が困難
  • 開発・実装の途中で新しい機能を追加する場合、時間・コストが膨らむ
  • ユーザーからの意見や要望を取り入れにくい

ウォーターフォール開発では各工程で決めるべきことが曖昧なまま次に進んでしまうと、後の工程に大きな影響が出てきてしまいます。

例えば、

・要件定義で必要な項目が不足している
・曖昧なまま次の外部設計に進んでしまう

すると当然、その部分については設計書に記載されないことになります。

そのため、内部設計でも詳細は明確化されません。

その結果、、開発・実装の際にプログラマーの混乱を招きます。

テストの際には、何を正しい動作としてテストするべきかわからなくなってしまいます。

最悪の場合は要件定義を「1から」やり直すことになります。

「前の工程には戻らない」という前提をしっかり理解しておかないと、このような事態になりかねません。

「前の工程には戻らない」という前提がしっかり理解されていないプロジェクトは、みんなを不幸にします。

このような事態を引き起こさないためにも、各工程でやるべきことを丁寧かつ慎重に実施していく必要があります。

ステークホルダーそれぞれの認識にズレがないように各工程でしっかりと認識のすり合わせをおこない、合意をとっていくことが重要です。

この記事を通して、ウォーターフォール開発への理解を深めていただければ幸いです。

【厳選3冊】Webサービス開発におすすめの本

Webサービス・プロダクト開発に携わる人には、それぞれ「必読の一冊」となっています。

以下のような点がわかりやすく解説されています。

  • Webサービス・プロダクト開発のプロセスや進め方
  • 個人開発・チーム開発のやり方やコツ

Webサービス開発Tips

プログラミングスクール選びにおすすめの記事

【現役エンジニア厳選】失敗なしのプログラミングスクールおすすめ3校【初心者はこの中から選べばOK】
おすすめのプログラミングスクールを知りたいですか?
本記事では現役エンジニアの僕が厳選したおすすめのプログラミングスクール3校を紹介します。
「プログラミングスクールありすぎ…どこを選んだらいいの?」と悩んでいる人は必見です。

【厳選3校】自信をもって女性におすすめするプログラミングスクール
女性におすすめのプログラミングスクールを知りたいですか?
本記事では女性におすすめのプログラミングスクール厳選3校を紹介します。
「女性向けのプログラミングスクールを探してるけど、どこにすればいいかわからない…」と悩んでいる女性は必見です。

【現役エンジニア厳選】自信をもって高校生におすすめするプログラミングスクール3校
高校生におすすめのプログラミングスクールを知りたいですか?
本記事では現役エンジニアの僕が厳選した高校生におすすめのプログラミングスクール3校を紹介します。
「高校生向けのプログラミングスクールを探してるけど、どこにすればいいかわからない…」と悩んでいる高校生は必見です。