公開日:2022/11/07 最終更新日:2023/08/16

ウォーターフォール開発とは|メリット・デメリット&アジャイルとの比較

記事「ウォーターフォール開発とは|メリット・デメリット&アジャイルとの比較」のトップ画像

 

かつてシステム開発といえばウォーターフォール開発が主流でした。近年は短期間でのリリースが求められることが多く、アジャイル開発が主流となりつつありますが、アジャイル開発にも得手不得手があるため、一つの開発方法にこだわるのは合理的とはいえません。

 

近年は時代遅れとも言われることも多いウォーターフォール開発ですが、マネジメントが比較的容易で品質の水準を保ちやすいといったメリットもあります。

このテキストではウォーターフォール開発にスポットを当てて解説していきます。ウォーターフォール開発とは何か、どういった工程があるのかといった基礎知識からメリットとデメリット、アジャイル開発など他の開発方法との違いについても詳しく解説します。

INDEX

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

2. ウォーターフォール開発の工程

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

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

5. ウォーターフォール開発とアジャイル開発の違い

6. その他の開発手法との違いは?

7. ウォーターフォール開発の向き・不向き

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

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

まずはウォーターフォール開発とはどのようなものなのか、簡潔に解説します。

 

ウォーターフォールとは1970年代に登場した開発手法であり、最も有名な開発手法とも言われています。「Waterfall」は滝を意味する言葉であり、水が上から下へと流れ落ちるように、上流から下流へと工程計画が進められていく開発手法です。

 

前の工程が終わってから次の工程に進むため、前の工程が終わっていないと次の工程に進むことはできず、原則手戻りを想定していない手法となります。

近年は小規模開発が増えたため、アジャイル開発など他の開発手法が注目されていますが、工程ごとの管理がしやすいため、大規模開発に向いている手法でもあるウォーターフォール開発は、現在も活用されている開発手法のひとつです。

ウォーターフォール開発の工程

前項で述べたとおり、ウォーターフォール開発はあらかじめ決められた工程を順番に進めていく手法です。では、ウォーターフォール開発においてはどのような工程で開発が進められるのでしょうか。

この項ではウォーターフォール開発の工程について解説していきます。

 

ウォーターフォール開発の工程は大きく分けて次の5つです。

 

・要件定義

・設計

・開発

・テスト

・保守運用

 

では、それぞれの工程の内容を詳しく見ていきましょう。

 

|要件定義

 

クライアントに詳しくヒアリングを行い、「どのようなシステムが必要なのか」「システムによって何を実現したいのか」「誰がどのように使うのか」など、ヒアリングで得た情報をもとに、システムの機能や仕様などを決定し、要件定義書にまとめます。

 

要件定義ではシステム化することを決定するため、クライアントの要望からシステム化しないことも決定する必要があります。また、システムを構成するのは機能だけではありません。拡張性や移行性、セキュリティなどの非機能要件についてもまとめる必要があります。

 

|設計

 

要件定義が定まったら、それをもとにして設計を行います。設計には外部設計(基本設計)と内部設計(詳細設計)があります。

 

・外部設計(基本設計)とは?

 

ユーザーの視点から何が必要かを設計していくのが外部設計(基本設計)です。要件定義書をもとに、要件を満たすハードウェアやソフトウェアを決定し、機能の洗い出し、データ管理の方法や既存システムとの連携など、さまざまな設計内容をクライアントのフィードバックをもらいつつ基本設計書にまとめていきます。

 

・内部設計(詳細設計)とは?

 

要件定義書、基本設計書に基づいて、実際に開発を行う際にどのように作っていくのかを設計するのが内部設計(詳細設計)です。開発を行うエンジニアがわかるように作る必要があるため、機能ごとに詳細な設計書や仕様書を作成する必要があります。

 

|開発

 

設計書がかたまったら、いよいよ開発へと移ります。開発に必要なものは全て揃っているため、あらかじめ決められた工程どおりに開発を進めます。

 

|テスト

 

システムができたらテストの工程です。問題なく動作するか、クライアントの要望に沿ったシステムとなっているかを確認します。テストには単体テストや結合テスト、システムテストなどがあり、これらを行うことでバグなどがないかを隅々までチェックします。

 

ここで知っておきたいのが「V字モデル」です。V字モデルとは、ウォーターフォール開発において開発の工程と各テストをV字型に並べることで、どの開発工程にどのテストが対応しているのかをわかりやすくしたモデルのことです。

 

ウォーターフォール開発のV字モデルのイメージ画像

 

・単体テストとは?

 

単体テストとはシステムを作る部品に不備がないかを見つけるテストであり、プログラムを構成する単位ごとに検証を行います。

 

・結合テストとは?

 

結合テストは、単体テストでチェックした部品を組み合わせて動作確認を行うことです。部品に問題がなくても組み合わせることで不具合が生じることもあるため、さまざまな組み合わせやパターンを試すことが必要です。

 

・システムテストとは?

 

システムが仕様書のとおりにできているかをチェックするテスト工程がシステムテストです。実際に使われるのと同じ環境でさまざまなテストを行うことで、開発環境では出なかった不具合をあぶりだすことができます。

 

|保守運用

 

テスト工程を経て、システムが無事リリースとなってもそこで終わりではありません。保守運用によって定期的にシステムの動作を確認し、トラブルや不具合に備える必要があります。また、アップデートなどにも対応する必要があるでしょう。

 

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

ウォーターフォール開発の概要がわかったところで、メリットとデメリットについても比較しておきましょう。この項ではメリットについて解説します。

 

ウォーターフォール開発の主なメリットは「進捗管理がしやすい」「品質管理がしやすい」「予算や工数の計画を立てやすい」ということでしょう。

 

ウォーターフォール開発においては前述したように工程が分けられているため、各工程の進捗管理や品質管理がしやすいという利点があります。基本的に手戻りを想定しないため、各工程で計画通りに進めるため、比較的高い品質を担保しやすい開発手法でもあります。

 

計画が定まっているということは、予算や人員、工数の計画も立てやすいということです。システムができあがってみたら大きく予算オーバー、といった事態を避けやすいのがウォーターフォール開発のメリットのひとつです。

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

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

 

ウォーターフォール開発の主なデメリットは「臨機応変な対応がしづらい」「開発に比較的時間がかかる」「工程の最後にならないとテストできない」ことです。

 

計画どおりに進めるウォーターフォール開発では、手戻りを基本的に想定していないので手戻りがあった場合にコストや時間が大きく増加することになります。

全体像を定め、しっかりと計画を立てて進めるため、比較的開発期間も長期間になりがちな開発手法です。また、工程の最後にテスト工程があるため、大きな不具合がそこで見つかった時にはプロジェクトの遅延を招く可能性もあります。

ウォーターフォール開発とアジャイル開発の違い

アジャイル開発とは近年開発手法の主流となりつつある手法であり、「アジャイル(agile)」とは敏捷という意味の形容詞です。正確にいうと、アジャイル開発とは迅速な開発を行うための開発手法群の総称であり、開発手法そのものの名称ではないそうです。

 

アジャイル開発は開発するシステムの機能を細分化し、それぞれの機能に対して短期間の開発期間を設けます。機能ごとに短期間での開発を繰り返し、それが完了するたびに機能追加されたシステムができあがっていく、というイメージです。

 

アジャイル開発については、こちらの記事も参考になるのでぜひご一読ください。

* 参考記事:「アジャイル開発とは?|適したプロジェクトと契約形態も解説

 

計画をしっかり立ててそのとおりに進めていくウォーターフォール開発とは真逆のコンセプトを持った開発手法であり、小規模な開発を、スピード感をもって進めていくには最適の手法として近年人気を集めています。

その他の開発手法との違いは?

アジャイル開発はウォーターフォール開発とは真逆の開発コンセプトを持つ手法であることを前項では解説しましたが、その他の代表的な開発手法についてもウォーターフォール開発との違いを確認しておきましょう。

 

|プロトタイプ開発

 

プロトタイプ開発とは、ウォーターフォール開発の改良版であり、開発を始める前に試作品を作成し、それをクライアントに見てもらうという手法です。プロトタイプとは試作品を意味する言葉です。手戻りを想定していないウォーターフォール開発に対して、工程の途中で試作品を作ってクライアントに確認をしてもらいながら進めるため、ウォーターフォール開発よりもクライアントとのコミュニケーションが取りやすくなります。

 

基本的にはウォーターフォール開発と同じ工程で開発が進みますが、その工程の中にプロトタイプの開発とテスト、レビューが含まれるのがウォーターフォール開発との違いです。

試作品を作るため、ウォーターフォール開発よりも設計は厳密でなくてよいのもプロトタイプ開発とウォーターフォール開発の違いです。

 

|スパイラル開発

 

スパイラル開発は、機能ごとに計画を立て、重要な機能から開発を進めていく手法のことです。機能ごとの設計計画を立てますが、初めのうちは全体の設計は行いません。仕様変更などに対応しやすく、比較的臨機応変な対応ができる開発手法です。

 

アジャイル開発と似ていますが、短期間の機能ごとの開発において、あらかじめ保証した品質を提供するアジャイル開発とは異なり、まずは機能開発を行った後に品質を向上していきます。

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

すべての開発に対して万能な開発手法は存在しません。プロジェクトごとに最適な開発手法を選定する必要があります。

ウォーターフォール開発に向いている開発と向いていない開発について知っておきましょう。

 

|向いている開発

 

ウォーターフォール開発に向いているプロジェクトといえば、やはり大規模な開発案件が挙げられるでしょう。最初にしっかりと計画を立てて行うため、多くの人員がかかわる大規模プロジェクトでもスムーズに進めることができます。

 

また、ウォーターフォール開発は基本的に手戻りを想定していない開発手法であり、それは各工程における品質を担保できるということでもあります。高い品質を求められる開発にも向いています。

 

|向いていない開発

 

ウォーターフォール開発はしっかりと計画を立てて進めていく開発手法なので、アジャイル開発など他の手法に比べてどうしてもスピード感では劣ってしまいます。そのため、スピード感を求められるプロジェクトには不向きです。

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

近年、高速インターネットやスマートフォンの普及などから、さまざまなアプリが作られるようになりました。かつてのような大規模なシステム開発だけではなく、臨機応変さやスピード感が求められる小規模開発が増加しており、そのため小規模開発に向いているアジャイル開発に注目が集まっています。

 

アジャイル開発が主流となりつつある今、「ウォーターフォール開発は時代遅れである」と言われることも増えてきましたが、ウォーターフォール開発には前述したように、規模の大きな開発案件の品質を保ちつつスムーズに開発を進めることができるといったメリットがあります。実際に大規模開発においては、現在もウォーターフォール開発が活用されています。

 

流行だからと安易に開発手法を選ばず、開発するシステムに応じて最適な手法を選択することがもっとも大切なことです。

まとめ

ウォーターフォール開発には大規模な開発案件や、仕様が明確なプロジェクトが向いていますが、大規模開発には大量のリソースが必要であり、国内のIT人材は近年慢性的に不足しているため、人件費も高騰しています。そのため、オフショア開発を視野に入れる企業も急増しています。

 

また、仕様が明確なプロジェクトはオフショア開発でも品質担保がしやすいため、海外に任せるのが不安という企業でも比較的取り入れやすいようです。

 

オフショア開発.comでは、専任コンシェルジュへの無料相談サービスをご用意しております。無料でさまざまなお悩みやご要望をお聞きし、最適な企業をご紹介するだけでなく、開発における最新の情報もご提供いたします。例えばこのプロジェクトにはウォーターフォール開発とアジャイル開発、どちらが向いているのか知りたい、ウォーターフォール開発からアジャイル開発に移行支援してほしいといったご要望にもお応えできます。

 

オフショア開発に関する情報はもちろん、日本企業の急務であるDXのトレンドに関する多くの情報についてもご提供できますので、ぜひお気軽にお問合せください。

この記事を書いた人

ユーザーサムネイル

オフショア開発.com 編集部

日本最大級の「オフショア開発」専門の発注先選定支援サービスとして、オフショア開発に関するご相談やお問合せを日々、承っております。


企業選定にお困りでしたら、オフショア開発. comの専門スタッフが無料相談を受け付けていますので、お気軽にご利用ください。

このページを見た人は以下の記事も見ています。(関連記事)