今回紹介するウォーターフォール開発は、システム開発に使われる手法の中でも最も認知度が高いとされる手法です。
「上流工程から下流工程へと、滝が流れるように工程を進めていく様子」から、Waterfall(滝) と名付けられ、現在でも広く開発に使われています。
品質の担保や管理のしやすさが特徴で、大規模なシステム開発をする際に利用されることが多い手法です。
本記事では、このようなウォーターフォール開発について、アジャイル開発など他の開発手法と比較し、メリットやデメリット、注意すべきポイントについて紹介していきます。
ウォーターフォール開発とは何か?
ウォーターフォール開発は、1960~70年頃から提唱されている伝統的な開発手法です。
当時、大規模なソフトウェア開発において、品質の低さやエンジニア不足といった課題が問題視されていました。
ウォーターフォール開発は、このような課題に対して考案され、現在でも広く使われています。
ウォーターフォール開発では、プロジェクトの立ち上げからソフトウェアの開発までを6つの工程に区分し、上流工程から下流工程へと開発を進めていきます。
次の章では、ウォーターフォール開発の特徴とともに6つの工程について紹介していきます。
ウォーターフォール開発の6つの工程手順
基本的な工程としては、①要件定義、②基本設計、③詳細設計、④実装、⑤テスト、⑥保守・運用の順番で進めていきます。次にそれぞれの工程を詳しく見ていきたいと思います。
①要件定義
最初の要件定義は、開発するシステムの要件についてステークホルダーと綿密に話し合う段階です。システムへの要望をヒアリングしたうえで、その要望を実現するために具体的にどのような手順でシステムを構築していくかを明確にします。
②基本設計
基本設計は、システムの大枠を設計する工程です。要件定義で決めた方向性をもとに、ユーザー目線からソフトウェアの仕様を設計図に落とし込んでいきます。
③詳細設計
詳細設計は、システム内部の動作設計やプログラマーに向けた指示書を作成する工程です。データやファイルをやりとりする方法や、プログラム設計などを行います。
④実装
実装は実際にプログラムの作成を行う段階です。プログラマーが設計書にもとづいて、ソフトウェアをプログラミングし、システムを構築していきます。
⑤テスト
この段階では、コーディングされたソフトウェアのテストを行います。テストには、機能が正常に動作するかを確認する単体テストや、単体テストをクリアした機能を連携させて動作確認する結合テストがあります。
その後、システム全体を連携させてテストを行うシステムテストや、本番環境でもエラーが起きないかを確認する受入テストを行う流れです。
⑥保守・運用
テスト終了後に、ソフトの本稼働を行います。保守・運用では、本稼働後に、システムのトラブルや不具合への対応、アップデートなどを行う段階です。
ここではウォーターフォール開発においての、6つの段階にいて紹介してきました。
ウォーターフォール開発では、上記のような段階ごとに開発を進め、前の工程には戻らないのが前提とされています。そのため、初期段階で開発対象の全機能を設計し、全体スケジュールを把握しやすいなどのメリットがあります。一方で、問題が起こった場合は前の段階からやり直しをする必要があり、手戻りの工数がかかってしまうなどのデメリットがあります。
次の章では、このようなウォータフォール開発のメリットデメリットについて紹介します。
ウォーターフォール開発のメリット・デメリット
ここではウォーターフォール開発のメリット・デメリットについて詳しく見ていきたいと思います。
メリット
- プロジェクト全体の計画が立てやすい
ウォーターフォール開発は、初期段階でどのくらいの工数がかかるのかを明確になるため、予算やリソースなどの計画が立てやすいなどのメリットがあります。 - スケジュール管理が容易になる
ウォーターフォールモデル開発では、開発における各工程が細かく区切られており、各工程が完了するとその結果をドキュメントとして共有します。プロジェクトの進捗状況を可視化することができ、スケジュールの管理が容易になることがメリットとされています。 - 品質の担保が容易になる
ウォーターフォールモデルでは、各工程でレビューやテストを実施するなどの徹底した品質管理を行っています。基本的に手戻りをしない前提での開発であるため、各工程を着実に完了させてから次の工程に移ります。
その結果、全体で一定の品質を担保することができます。
デメリット
- 要件変更への対応が難しい
ウォーターフォールモデルでは、プロジェクト全体の工程が初期段階で決まっており、下流から上流に戻る場合を想定していません。前の工程に戻る場合は、再度作業を行う必要がありコストを増加させてしまいます。 - プロジェクトが長期化する場合がある
ウォーターフォール開発では、システムの要件を厳密に決めることや、品質を重視することから、開発に着手するまでに時間がかかります。また、手戻りの必要性があった場合などは、工数が大きく増えため、プロジェクトの遅延につながります。 - ドキュメントへの依存度の高さ
ドキュメントとは、完成イメージを明確にするための設計書や、完成までの制作工程を明確にしたものを指す仕様書などです。ウォーターフォールモデルでは、各フェーズで成果物となるドキュメントが必要になることが多く、ドキュメント作成の工数がかかってしまうことがあげられます。
また、実際の開発物とドキュメントが一致しないこともあり、トラブルが発生することもあります。
ウォーターフォール開発とアジャイル開発との比較
次にウォーターフォール開発とアジャイル開発についての比較をした後に、メリット・デメリットについて見ていきます。 アジャイル開発とは、ウォーターフォール開発と同様、現在主流になっている開発方法の1つです。
アジャイル開発と、ウォーターフォール開発とで最も異なる点は、開発工程の進め方です。
ウォーターフォール開発が上流から下流への順番で開発を進めていくことに対して、アジャイル開発では、開発工程において機能ごとに構築を行っていきます。具体的には、システム開発の中でも、優先順位の高い機能単位で開発~リリースまでのサイクルを繰り返していきます。
以下がウォーターフォール開発とアジャイル開発の違いを表にまとめたものです。
ウォーターフォール開発 | アジャイル開発 | |
特徴 | 上流から下流工程まで順番に進める | 機能ごとに、開発~リリースのサイクルを繰り返す |
工程 | 後戻りを想定せずに開発を行う | 機能ごとに反復して開発を行う |
仕様 | 厳密に決める | 大枠だけを決める |
開発期間 | 比較的長い | 一つの開発サイクルは短い |
向いているプロジェクト | 大規模な開発案件 | 中~小規模な開発案件 |
メリット | ・プロジェクト全体の計画が立てやすい ・スケジュールや進捗管理がしやすい ・品質の担保がしやすい | ・仕様変更や不具合に柔軟に対応できる ・少額の予算からできる ・短期間でリリースできる |
デメリット | ・要件変更への対応が難しい ・プロジェクトが長期化する場合がある ・ドキュメントへの依存度の高さ | ・進捗や全体のスケジュールが見えにくい ・仕様変更が長引き、システムの完成が遅れる可能性がある |
アジャイル開発では、機能ごとに開発を行い、段階的に機能をリリースすることができます。
計画の段階では仕様の大枠だけを決め、開発途中で成果物に対してのフィードバックを得られるため、柔軟に顧客へのニーズに対応することが可能です。
このような柔軟性がメリットといえますが、進捗がわかりにくいことや、仕様変更が長引いてしまうなどのデメリットもあります。
開発方法によって、それぞれメリット・デメリット、向き不向きがあるため、プロジェクトに合わせて開発手法を選定することが重要です。
ウォーターフォール開発を行う際の3つの注意点
前の章でのウォーターフォール開発とアジャイル開発との比較を踏まえて、ここではウォーターフォール開発を行う際の注意点に分けて紹介していきます。
- 綿密な計画立て・プロジェクト管理が必要
ウォーターフォール開発では、開発工程で後戻りをすることを想定していません。初めの要件定義の時点で顧客側と開発側での認識がずれてしまっていると、後々開発工程で手戻りする必要がでてきてしまい、工数がかさんでしまいます。 また、スケジュールについても、1つの工程で遅れが出てしまうと残りの工程に割ける時間が少なくなってしまいます。各工程のスケジュール・プロジェクト全体のスケジュールなどの計画立てや管理が重要です。 - 各工程でのドキュメント作成とテスト
ウォーターフォール開発では、成果物として各工程においてドキュメントを作成します。ドキュメントを作成することで、作業の引継ぎ時や顧客とのやりとりの際に、認識合わせが容易になります。また、ウォーターフォール開発では、単体テストや結合テスト、システムテスト、受入テストなどテストにも各工程があり、高い品質を担保するには必要不可欠なフェーズです。
- 顧客・開発担当者とのコミュニケーションの重要性
ウォーターフォール開発では、作業者や顧客との合意がとれないと次の工程に進むことができません。各工程でのドキュメント作成だけではなく、日ごろから進捗具合や方向性の確認を実施することが重要です。
まとめ
今回は、システム開発に使われる代表的な手法である、ウォーターフォール開発について紹介してきました。
ウォーターフォール開発は伝統的な手法ですが、アジャイル開発やDevOpsなど新たな開発手法の登場とともに、時代遅れといわれることもあります。しかし、ウォーターフォールモデルでしか担保できない品質の高さや、大規模なプロジェクトに対応できるという点もありあす。 重要なのは、メリット・デメリットを抑えたうえでプロジェクトに適した開発方法を選定することです。
New Venture Voiceでは今回のような役立つ技術記事を公開しています。
気になる方は記事下部の関連記事からご覧ください。
ノーコードのアプリ開発はGenAiにおまかせ!
株式会社GenAiでは、ノーコード/ローコードツールを用いたスピード感ある開発を得意領域としています。
「自社アプリを作成したい」「素早くアプリを用意してほしい」と考えている方は、ぜひ株式会社GenAiまでお問い合わせください。
なお弊社ではECサイトの開設等も承っております。