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

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

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

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

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

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

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

この記事でわかること

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

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

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

記事の信頼性として、僕がやってきたことを簡単に紹介します。

記事の信頼性

【1日12時間×3年】→ 30歳からプログラミングを独学
【取締役・フルスタックエンジニア】→ Web系ベンチャー企業にて
【合計2万ユーザー以上】→ 開発したWebサービスにて
【2,800万円の資金調達】→ 開発したWebサービスにて
【新規事業企画】→ AIベンチャー企業にて

まずは結論から

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

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

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

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

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

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

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

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

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

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

あわせて読みたい

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

main-image

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

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

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

②システムエンジニア

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

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

③プログラマー

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

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

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

要件定義

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

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

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

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

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

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

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

外部設計

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

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

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

内部設計

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

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

開発・実装

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

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

単体テスト

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

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

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

結合テスト

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

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

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

最終テスト

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

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

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

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

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

メリット

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

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

デメリット

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

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

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

まとめ

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

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

例えば、

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Webサービス開発Tips

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

main-image

【決定版】社会人におすすめのプログラミングスクール完全比較ランキング
プログラミングスクールに入学しようか悩んでいる社会人やプログラミングスクールを探している初心者の、「選び方がわからない…」「数が多すぎて悩んでしまう…」「目的に合わせて選びたい」「習得するプログラミング言語に合わせて選びたい」こんな悩みを解決するために、社会人におすすめのプログラミングスクール・コースの比較ランキングを、わかりやすくまとめました。
「あなたがプログラミングスクール選びに失敗しないために」ぜひこの記事を役立ててくださいね!

main-image

【厳選3校】自信をもって女性におすすめするプログラミングスクール
プログラミングスクールに入学しようか悩んでいる女性や女性向けのプログラミングスクールを探している人の、「女性向けのプログラミングスクールと、それぞれの特徴を知りたい」「数が多すぎて悩んでしまう…」「自分のレベルに合わせて選びたい」こんな悩みを解決するために、女性におすすめのプログラミングスクールを厳選して、3校にまとめました。
「あなたがプログラミングスクール選びに失敗しないために」ぜひこの記事を役立ててくださいね!

main-image

【決定版】高校生におすすめのプログラミングスクール完全比較ランキング
プログラミングスクールに入学しようか悩んでいる高校生やプログラミングスクールを探している高校生の、「選び方がわからない…」「数が多すぎて悩んでしまう…」「自分のレベルに合わせて選びたい」こんな悩みを解決するために、高校生におすすめのプログラミングスクール・コースの比較ランキングを、わかりやすくまとめました。
「あなたがプログラミングスクール選びに失敗しないために」ぜひこの記事を役立ててくださいね!