ウォーターフォール開発とは?ウォーターフォール型のメリット・デメリット

弊社が提供しているアジャイルトレーニングの講義中、「ウォーターフォール」と「アジャイル」の違い、何がどちらに向いているのか?といった質問を良く受けます。そこで、従来型の開発手法であるウォーターフォールについて、メリット・デメリットを含め比較しながら解説していきたいと思います!

Joe Justice

この記事でわかること

  • ウォーターフォール型開発とは?概念
  • ウォーターフォールのメリットやデメリット
  • ウォーターフォール型開発の手順
  • ウォーターフォールの向き・不向き
  • ウォーターフォールは時代遅れなのか?

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

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

ウォーターフォールモデルとは、一つひとつの開発工程を完了させて進めていくシステム開発モデルです。

ウォーターフォールとは、ひとつづつ開発工程を完了させ、次の工程へ進めていく開発手法です。開発の工程は「要件定義」「計画」「分析」「実行」「テスト」「展開」という流れで進みます。例えば、5つの機能があったとすると1〜5までの全ての機能の「要件定義」をして、それが完了すれば、全ての機能の「計画」へ進んでいきます。
ウォーターフォールは、滝のように水が流れ落ちていく様を表しています。滝は逆流はしないので、ウォーターフォール開発は、前の工程が完了して次の工程へ進むと、前の工程にさかのぼることは、ほとんどありません。

ウォーターフォール
ウォータフォール開発モデルの歴史

ウォーターフォールは、もともと製造業や建設業で生まれました。高度に構造化された物理的環境では、事後の変更は不可能ではないにしても、非常に大きなコストがかかると考えられていました。そのため、一つ一つの工程を着実に完了していく必要がありました。
そして、1956年のハーバートD.ベニントンと1970年のウィンストンW.ロイスの論文によって、ソフトウェア開発のための工程使用が説明されました。これがソフトウェアのウォーターフォール開発モデルの最初と言われることも多いですが、実際には誰がいつ「ウォーターフォール」と定義をしたのかは不明とされています。

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

ウォーターホール型開発のメリット

ウォーターフォールは通常、事前に作業対象の全機能やサービスの要件定義を完全に完成させる必要があります。そして各チームが一連の工程に従い進めていきます。つまり、最初から成果物の明確なゴールを定義できるプロジェクトや、開発期間中に変更や修正が無いプロジェクトに適しています。

メリット1:プロジェクト全体から見た計画が立てられる

ウォーターフォールは、開発対象である全機能の要件定義を作成することから始めます。そのため、要件定義を終えた段階で、開発スケジュールの全容を把握することができます。開発する範囲や内容、スケジュールを完全に決めてからプロジェクトを進めるため、全体スケジュールを把握することが容易です。

メリット2:予算やリソースの見積もりが立てやすい

ウォーターフォールは詳細なスケジュールが前提となっているので、「いつ、どの工程で、どんなスキルを持った人材が、何人必要か」の予測ができます。そのため、予算やリソースの見通しが立てやすくなります。

メリット3:進捗の管理がしやすい

ウォーターフォールは、全ての要件定義と工程を把握した状態で開発が進んでいきます。工程ごとに仕様書やタスクが決まっているため、進捗状況の把握と管理が容易です。

メリット4:構造がシンプルわかりやすい

ウォーターフォールの工程は、他の手法と比べると、非常に明確に定義されています。構造はとてもシンプルで、ウォーターフォール開発を知らなくても、誰でも理解しやすく受け入れやすいでしょう。

ウォーターフォール
ウォーターフォールの流れ
  1. 要件収集とドキュメンテーション
  2. システム設計
  3. 分析
  4. 実行
  5. テスト
  6. 展開
  7. メンテナンス
Joe Justice

各フェーズの詳細は、ウォーターフォールの手順で詳しく解説しています。

チームが次のステップに進むには、その前のステップを完了しなければならないため、何か障害があれば、それがすぐに判明します。未完成のプロジェクトが完成されないまま取り残されるというリスクも低く、プロジェクト完了時の完成度や洗練度も高くなります。

メリット5:成果物の目標・ゴールが明確である

ウォーターフォールの大きな特徴は、最初の計画時点でプロジェクトや製品全体の目標や成果物にコミットするというものです。チームはこういった初期段階で決定したコミットを極力達成するよう力を尽くします。

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

ウォーターホール型開発のデメリット

それではウォータフォールには、どのようなデメリットがあるのでしょうか。

デメリット1:仕様変更・要件変更など手戻りに柔軟に対応できない

開発開始前に、作業範囲や内容、スケジュールを完全に決めた状態で進められるため、急な仕様変更や、臨機応変な対応には向きません。事前に全てが計画されているため、現在の工程だけで部分的にやり直すということができず、各工程を見直して、やり直す必要があります。

デメリット2:顧客のレビューを取り入れにくい

ウォーターフォールは本来社内向けのプロセスのため、顧客(クライアント)のプロジェクトへの関与は、あまり重きが置かれていません。
しかし現在はVUCA時代とも呼ばれ、社会環境は、めまぐるしく変化し未来の予測が困難な状況です。テクノロジーは常に進化し、競合他社も常に進化しています。このような状況において、顧客(クライアント)が意見を追加したり、プロジェクトの進行に合わせて要望を明確にしてくることもしばしば発生するのは、もはや必然でしょう。そのような場合、柔軟に顧客やステークホルダーの要望に対応する必要が出てきます。

デメリット3:成果物のリリースまでに時間がかかる

ウォーターフォールでは、システム開発に何年もかかることがあります。また全機能が、全ての工程を完了したあと、一番最後の工程でリリースとなります。そのため、リリースまでに時間がかかり、市場やニーズは変化し、プロジェクト発足当初に定めたプロダクトゴールは、プロダクト価値を生み出さない可能性があります。

デメリット4:テストのタイミングがプロジェクトの完了時であること

ウォーターフォールでは、全機能のテストは工程の後半で実施されます。プロジェクト後半になるまで製品のテストを実施しない場合、リスクは高くなります。大きな修正が発生すれば、大幅な遅延や、予算超過となったり、最悪の場合はプロジェクト中止となることもあります。

ウォータフォール デメリット

デメリット5:書類(ドキュメント)の制作が多い

成果物作成に時間がかかる、という点があります。ウォーターフォール開発では、各工程の成果物が必要となります。大量のドキュメント作成が発生します。また、手戻りが生じた場合にも、作成した書類も作り直す必要があるのです。

ウォーターフォール開発の手順

ウォーターホール型開発の手順

ウォータフォール開発ですが、以下の工程をひとつづつ実行していきます。

要件定義(要件収集とドキュメンテーション)

ウォーターフォールの手順として、まず最初は要件定義から始まります。

要件定義とは、
顧客がどんな機能を望み実装して欲しいのかを正しく把握する
顧客の認識と乖離がない事を確認した上で、フローを考え伝える

要件定義の段階で、実装が難しいと思われるケースもあります。
その場合は、あらかじめ顧客に伝えておくことも後々のトラブルを避ける為にも必要な事になります。

ウォーターフォールの手順の中でも、顧客の要望を正しく把握する要件定義が最重要フェーズとなります。

Joe Justice
要件定義は、顧客の言うがままに要件を並べる事が重要なのではありません。顧客が抱える問題解決のための根本原因を考え、その原因を解決するための要件を考える事が大切ですよ!

設計

基本設計

ウォーターフォールの基本設計のフェーズにおいては、要件定義を元に基本設計書を作成する事がメインの成果物になります。基本設計書はクライアントと共有する事で再度顧客との認識に乖離がない事を確認しながら作成を進めます。

基本設計書の段階で、顧客が求める製品をどのような工程で開発を進めるかの大筋を決めていきます。

Joe Justice
詳細設計に入る前に、しっかりヒアリングをしておくことが大切ですよ

詳細設計

ウォーターフォールにおける詳細設計とは、基本設計書を元にどうプログラムするのかなど、言わばエンジニア向けに書かかれた設計書になります。処理のフローなど詳細に起こすことで、その後の開発の効率や出戻りにも影響します。

実装

ウォーターフォールの実装フェーズでは、設計書に基づきエンジニアがプログラムを作成していくフェーズになります。
要件定義、基本設計の段階でしっかり確認した顧客の望む機能が実現する用、プログラムを書き実装をしていきます。

テスト

ソフトウェア開発においては、テストフェースはいくつかの種類に分けられます。
主なテストとしては、単体テスト、結合テスト、総合テスト、受入テストがあります。
どのテストフェーズでどんな目的でテストを重ねて行くのか、順番に解説します。

STEP
単体テスト

単体テストで、実装したプログラムが正しく動作するかの確認をします。Bugがあれば、詳細設計を確認し問題を解決していきます。

STEP
結合テスト

結合テストでは、単体テストをクリアしたもの同士を結合(連携)し、正しい挙動で動作するかをテストします。

STEP
総合テスト

単体テスト、結合テストを繰り返し、最終的に総合テストで全体の挙動を確認します。異常があれば、結合テスト、更には単体テストへの遡り原因の追究をし解決をしていきます。

STEP
受入テスト

総合テストをクリアしたら、いよいよ受入テストに入ります。本番環境で正しく動作するか、仕様書通りの挙動を確認して行きます。総合テストでは正しく動作していたプログラムでも本番環境ではエラーになるケースもあります。その場合は、再度前のテストに立ち返りテストを重ねて行きます。

    運用・保守メンテナンス

    製品開発は発売されたら終わりではありません。
    製品がリリースされた後もバグ修正をしながらアップデートを繰り返し、より安定した状態へとメンテナンスをしていきます。

    開発のスピードだけでなく、バグ修正スピードも開発においては重要なスキルになります。

    ウォーターフォールの向き・不向き

    ウォーターホール型開発は時代遅れ・向き・不向き

    Vucaの時代(未来の予測が難しくなる状況)と言われる昨今、「ウォーターフォール開発は今後使われなくなっていく」という事を聞いたことがあるかもしれません。それでは、どのようなケースがウォーターフォール開発に向いていて、どのようなケースが向いていないのでしょうか。

    ウォーターフォール開発が向いているケース

    一般的に以下のような場合、ウォーターフォール開発が向いているケースと言われます。

    要件が定まっていてゴールが明確なプロジェクト

    あらかじめ要件が確定しており、変更や修正が発生しない開発に向いていると言えます。つまりウォーターフォール開発は、前述した通り手戻りをしないことが前提になるため、仕様変更がない開発に向いています。ウォーターフォールモデルでは、仕様変更をせずに済むように入念な要件定義をしなければなりません。

    ウォーターフォール開発が向いていないケース

    ターゲットとする市場やニーズの変化が激しく、またその変化が早い場合や、ユーザーのフィードバックを取り入れながら開発を進めるようなケースです。開発期間途中で、変更が多く発生する開発にはウォーターフォールは向いていません。

    Joe

    ウォーターフォール型開発の向き不向きと合わせて、ウォーターフォールとアジャイル開発の違いも理解しておいてください。

    ウォーターフォール開発は時代遅れなの?教えてジョー!

    アジャイル業界をリードする、ジョー ジャスティスに直接質問して聞いてみました!
    ウォーターフォールについてどう思う?

    ウォーターフォール開発は時代遅れなの?

    ”時代遅れ”という表現はよく無いかもしれません。しかし、私はアマゾンやテスラと仕事をしてきましたが、その現場でウォーターフォール開発を見たことはありません。なぜなら時代の変化と共に、開発手法も変わってきたからだと私は考えています。ウォーターフォールの考え方は、100年以上前に誕生しています。もちろんこの時点では、最良の手法であったと思います。
    しかし100年の時代の流れと共に、さまざまなことが進化しました。常に同じやり方で、同じことを継続することはできません。私たちはイノベーションを起こし続けなければ、ビジネスを成長させることはできないのです。もちろん、ウォーターフォールを否定するつもりはありません。ただ新しいことにもチャレンジしていただきたいと願っています。

    まとめ

    ウォーターフォールのこうした原則に対応するために作られたのが、アジャイルです。アジャイルの導入が急速にすすむ近年、ウォーターフォール開発は古い開発手法であるとみなされることもありますが、ウォーターフォール開発にも利点はあります。

    一般的に、ウォーターフォール開発はプロジェクト開始後の変更がなく、変化に対する柔軟性を重視しない場合に向いていると言えます。
    一方で、開発の途中での変更が見込まれる場合や、ユーザーからのフィードバックを得ながら開発を進めていきたい場合はアジャイル開発の方が適しているでしょう。

    ウォーターフォールのメリット・デメリットを理解した上で、ぜひアジャイル開発の導入も検討してみてください。

    Agile Business Institute

    Joe Justice指導の人気講座

    • 認定スクラムマスター(CSM)
    • 認定プロダクトオーナー(CSPO)
    • JoeDX
    • Executive Agile Transformation

    認定スクラムマスター(CSM)

    認定スクラムマスター/Certified ScrumMaster®は、Scrum Alliance®が提供する認定資格です。 この認定は、スクラムフレームワーク、チームメンバーの活動や役割などを深く理解するのに役立ちます。この認定を取得することで、スクラムチームが協力して効果的にプロセスを実行できるようになります。

    認定プロダクトオーナー(CSPO)

    認定スクラムプロダクトオーナー/Certified Scrum Product Owner®は、Scrum Alliance®が提供する認定資格です。プロダクトオーナーは顧客の視点からプロダクト価値の最大化を考えます。スクラムを機能させるためのフレームワークに加えて、プロダクトの価値を向上させるために必要なスキルを学びます。

    JoeDX

    JoeDXは、Agile Business Instituteが提供する資格です。
    ハードウェア開発のためのアジャイルプロセスについて学べます。アジャイルハードウェア開発には、イノベーションのスピードを上げるためのエンジニアリング、マネジメント、ビジネスプラクティスが含まれています。

    Executive Agile Transformation

    「メンバーとエグゼクティブ、エンジニアと顧客との間で『共通の解釈』を持つ、つまり『ナレッジ化』が出来れば、組織や開発の現場はより発展するだろう」このような開発現場からのリアルな要望からEAT(エグゼクティブ アジャイル トランスフォーメーション)は誕生しました。企業の組織力の向上に大いに貢献するクラスです。

    Joe Justice指導の人気講座

    • 認定スクラムマスター(CSM)
    • 認定プロダクトオーナー(CSPO)
    • JoeDX

    認定スクラムマスター(CSM)

    認定スクラムマスター/Certified ScrumMaster®は、Scrum Alliance®が提供する認定資格です。 この認定は、スクラムフレームワーク、チームメンバーの活動や役割などを深く理解するのに役立ちます。この認定を取得することで、スクラムチームが協力して効果的にプロセスを実行できるようになります。

    認定プロダクトオーナー(CSPO)

    認定スクラムプロダクトオーナー/Certified Scrum Product Owner®は、Scrum Alliance®が提供する認定資格です。プロダクトオーナーは顧客の視点からプロダクト価値の最大化を考えます。スクラムを機能させるためのフレームワークに加えて、プロダクトの価値を向上させるために必要なスキルを学びます。

    JoeDX

    JoeDXは、Agile Business Instituteが提供する資格です。
    ハードウェア開発のためのアジャイルプロセスについて学べます。アジャイルハードウェア開発には、イノベーションのスピードを上げるためのエンジニアリング、マネジメント、ビジネスプラクティスが含まれています。

    Executive Agile Transformation

    「メンバーとエグゼクティブ、エンジニアと顧客との間で『共通の解釈』を持つ、つまり『ナレッジ化』が出来れば、組織や開発の現場はより発展するだろう」このような開発現場からのリアルな要望からEAT(エグゼクティブ アジャイル トランスフォーメーション)は誕生しました。企業の組織力の向上に大いに貢献するクラスです。