• HOME
  • ITコラム
  • ウォーターフォール開発とは?手法やメリット、アジャイル開発との違いを解説
ITコラム

ウォーターフォール開発とは?手法やメリット、アジャイル開発との違いを解説

2022年11月14日

2022年11月25日

ウォーターフォール開発は古いのか

日本のIT業界では多くの大規模開発がウォーターフォール開発によって行われてきました。しかし、最近はアジャイル開発を採用して開発をしている企業も増え、ウォーターフォール開発は「時代遅れ」というイメージもあるようです。

この記事では、ウォーターフォール開発について、手順やメリットといった基礎知識を解説したうえで、アジャイル開発との違いを解説します。ウォーターフォール開発とアジャイル開発のそれぞれに違ったメリットがありますので、なぜウォーターフォール開発に「古い」というイメージがついてしまったのかも合わせて検証してみましょう。

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

「ウォーターフォール(Waterfall)」の日本語訳は「滝」です。

ウォーターフォール開発の大きな特徴は、システム開発の工程が分担されており、順番に進んでいくことにあります。システムの開発工程が上流工程から下流工程へと、後戻りすることなく滝のように進んでいくため、この名前が付けられました。それぞれの工程について概要を見てみましょう。

1.要件定義

開発スタートの前に、システムエンジニアがクライアントにヒアリング調査をして、システムに実装してほしい機能や性能を擦り合わせ、要件定義書にまとめます。クライアントと受注側に認識やずれが生じないよう、要件定義書には、開発の目的・開発期間・性能・導入方法や運用方法などを明記します。

2.設計

要件定義は、あくまでシステムに持たせる機能や目的といった要件をまとめたものであり、その要件をどのようにシステムで実現させるかは、設計の工程により決めていきます。設計では、クライアント向けと開発担当者向けの設計書を、各機能ごとに作成するのが一般的です。

基本設計【外部設計】

基本設計では、要件定義で決定した内容をもとに、画面や操作方法、データ出力といったシステムの概要やユーザから見えるインターフェース部分を設計します。完成した基本設計はクライアントも確認する場合が多いため、専門用語や複雑なデータはあまり記載されません。

詳細設計【内部設計】

基本設計書の内容が確定したら、ユーザーから見えにくいシステム内部の動作などを設計し、実際にプログラムができる内容まで細かく落とし込んでいきます。開発工程の指示書としても使用されるものであり、開発者や内部者のための専門的な資料を盛り込みながら作成していきます。システムの品質だけでなく、プログラミングやメンテナンスのしやすさにも影響が出る重要な工程です。

3.開発(プログラミング)

設計ができれば、いよいよ開発工程です。目的の機能をシステムに実装するため、プログラマーがプログラミング言語を使って、コンピュータへ必要な指示をプログラムしていきます。いくつものプログラムが組み合わさることで、複雑な機能を持つシステムが構築されます。開発は、一人のプログラマーが行うわけではなく、チームで行うことが一般的です。

ウォーターフォール開発では、要件定義や設計の工程を上流工程といい、開発にかかわる工程以降を下流工程といいます。単に工程が分かれているだけでなく、担当する職種も分かれており、一般的には上流工程をシステムエンジニア、下流工程をプログラマーが担当します。案件や企業規模によっては、詳細設計にプログラマーが携わったり、開発工程にシステムエンジニアが携わったりすることもあります。

4.テスト

プログラムが正しく動作するかテストを行います。

単体や結合した状態でテストを実施し、エラーが発生しないよう確認することが目的で、テストには次のようなものがあります。

  1. 単体テスト:プログラミングで完成した機能を単体ごとにテスト
  2. 結合テスト:単体テストでチェックされた機能を結合してテスト
  3. システムテスト(総合テスト):リリース後の本運用を想定して、システム全体のテスト
  4. 運用テスト:システム稼働下で問題が発生しないかテスト

5.リリース(システム移行)

テストに問題がなければ本番環境にリリースします。旧システムからの移行の場合は、一時的にシステムが使用できなくなるため、システムを停止できる時間帯を選ぶなど、環境に配慮しながら慎重に移行を行わなければなりません。

リリース後も、トラブル対処や改修・アップデートを必要に応じて実施し、システムが安定稼働できるよう運用・保守を行っていきます。

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

ウォーターフォール開発には、開発工程ごとに作業が分担されているからこそのメリットがあります。

ウォーターフォール開発のメリットについて詳しくみてみましょう。

スケジュールや進捗の管理がしやすい

ウォーターフォール開発は各工程で期間を設定してプロジェクトを進めるので、納期から逆算し、スケジュールを立てやすい点が大きなメリットです。

また、開発状況の進捗も把握しやすいため、チームリーダーがトラブル発生時に迅速に対応できるという利点があります。

予算や人員の予想が立てやすい

スタートの段階から、それぞれの工程で「いつまでに」「なにをするのか」という具体的な計画を立てるため、人員確保の予測を立てやすいというメリットがあります。また、次の工程へ引継ぎするために情報を常に整理しておくことが重要な開発手法であり、人員に不測の事態があったときの引き継ぎもスムーズに行うことができます。

完成品の品質を保ちやすい

ウォーターフォール開発では、要件定義の段階で事前にクライアントと充分な打合せをして開発計画を立て、各行程で作業分担をして開発を始めます。各工程ごとにテストをして、完成品をチェックするため、システム完成後の安定性に定評があります。

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

ウォーターフォール開発にはメリットがあるにもかかわらず「古い」「時代遅れ」という声も上がっています。

その要因ともなっているウォーターフォール開発のデメリットをご紹介しておきます。

開発期間が長期化しやすい

ウォーターフォール開発では要件定義、設定の段階でじっくり仕様の打合せをするため、開発のスタートまでに時間がかかります。開発スタートまでに時間がかかるぶん、開発期間全体が長期化しやすいというデメリットがあります。

途中での仕様変更が難しい

ウォータフォール開発は各工程を順番に開発し、完成したら次工程に移るという開発方式です。次の工程に移った後は、前の工程にさかのぼることを想定していないため、実際に開発が始まると、途中で仕様変更が困難なのが欠点です。

やむを得ず仕様変更をする場合には、人的コスト増加、工数の増加による開発期間の延長などの負担も大きくなります。場合によっては、調整が難しく代替案で対応せざるを得ないこともあります。

ウォーターフォール開発が適した開発

開発開始までに時間がかかり、途中での仕様変更がしにくいウォーターフォール開発ですが、計画的に開発を行い確実な品質を求めるプロジェクトなどには好まれる傾向にあります。具体的にウォーターフォール開発に適している開発を3つご紹介します。

クライアントの合意を必要とする開発

クライアントからシステム開発を請け負う業態の企業、いわゆるSIerではウォーターフォール開発が良く採用されます。SIerは、クラアントが望むシステムを期限内に決められた予算で納品する必要があるため、各工程を計画的に進めていく手法は相性が良いといえます。クライアント側がIT知識に乏しい場合でも、各工程の成果物を開発側とクライアントが双方に確認し、合意を得ながら進めていくことで、大きな手戻りの期間や費用を発生させることなく、プロジェクトを進めていくことができます。

プロジェクトの規模が大きなシステム

ウォーターフォール開発は、要件定義まで進めばスケジュールが分かり、開発期間の目途がつきます。また、どの工程でどのくらいエンジニアを確保すべきかも予測が立てられるので、予算も早い段階で把握することが可能です。多くの企業や人がかかわり、費用も大きくなる大規模なプロジェクトでは、ウォーターフォール開発のメリットが活きます。

品質を重視したシステム

短期間でのリリースよりも、確実な安定性を求められる開発には金融系のシステムや携帯電話の通信システムなどがあります。不具合が発生した場合、大きな被害につながるような開発は、安定性に定評のあるウォーターフォール開発がよく採用されます。

アジャイル開発との違いは?

従来からシステム開発で採用されているウォーターフォール開発に対し、アジャイル開発は近年主流になりつつある手法です。

アジャイル開発では、大まかな要件定義で開発に取り掛かり、「計画→設計→開発→テスト」を細かく繰り返すことで、システムの精度を高めていきます。要件定義をしっかり詰めてから計画性をもって開発を進めていくウォーターフォール開発と違い、短い開発期間でリリースできる点と、開発途中での仕様変更が前提となっている点にメリットがあります。

デメリットとしては、見積もりが十分にできないため、開発途中で予想外の変更が重なると、開発期間や人件費などのコストに影響がでる点などがあげられるでしょう。

プロジェクトを進捗させながら要件を固めていくため、チーム内のコミュニケーションや、クライアントや上層部の理解、プロジェクトリーダの手腕などが求められます。

アジャイルに適した開発

ウォーターフォール開発よりもスピーディーにリリースでき、クライアントの要望による仕様変更や、不具合への対応も柔軟なため、近年はアジャイル開発を採用する企業が増えています。

全体像を詳細には決めずに柔軟な開発を検討したい場合や、開発途中に仕様変更が多く出てくることが見込まれる場合、継続的に改善が必要な製品の開発などではアジャイル開発が適していると言えます。

なぜウォーターフォール開発に「古い」というイメージがついたのか?

「ウォーターフォール開発は古い」というイメージは主に次の3つの要因によるものです。

  1. ウォーターフォール開発は従来からある開発手法
  2. アジャイルの方が変更に柔軟に対応できる
  3. リリースまでの時間がアジャイルの方が早い

最近では、エンドユーザーのニーズ変化が速く、開発側もスピーディーな開発が求められる傾向が強くなっています。開発期間が長くなると、完成する頃には顧客ニーズが変わってしまうリスクがあり、せっかく開発したシステムが水の泡になってしまう可能性もあります。アジャイル開発はこのようなスピードを重視する時代に適していると言えるのかもしれません。また、海外ではアジャイル開発が主流にもなっています。

しかし、開発期間や予算の予測が立てやすく、品質も安定したウォーターフォール開発は現在でも多くの企業に採用されています。明確なメリットがある以上、決して古いわけではありません。ウォーターフォール開発とアジャイル開発、両方のメリットとデメリット、それぞれの特性を理解した上で、案件に合った開発方法を選ぶことが必要です。

まとめ

ウォーターフォール開発を重点に、アジャイル開発との違いを解説しつつ「ウォーターフォール開発は古いのか」を検証してみましたが、いかがでしたか?

ウォーターフォール開発は開発の計画が立てやすいという大きなメリットがあります。また、品質の高い完成品を求める際に多く採用される開発方法で、これまでの実績もある、頼もしい開発方法の一つです。

一方で、開発期間が長くなり途中での仕様変更が難しいため、スピーディーさを求められる昨今では時代に合わなくなりつつあるデメリットも抱えています。

ウォーターフォール開発とアジャイル開発、どちらの開発方法にもメリットとデメリットがあり、開発の向き不向きがあります。それぞれの開発手法のメリットとデメリットを吟味して、プロジェクトにあった開発方法を選びましょう。

WRITER -この記事を書いた人-

学舎さくら編集部

未経験からプログラマーを目指せる就職支援付きプログラミングスクール。プログラミングの基礎知識や、IT業界への転職に向けた情報など、未来のITエンジニアに役立つ情報を発信しています。

最新記事

ウォーターフォール開発とは?手法やメリット、アジャイル開発との違いを解説

2022年11月25日

この記事の目次1 ウォーターフォール開発は古いのか2 ウォーターフォール開発とは2.1 1.要件定義2.2 2.設計2.2.1 基本設計【外部設計】2.2.2

プログラマーになるには?未経験でもプログラミングスキルは必要?

2022年11月25日

「プログラマーになるにはどうすればいいの?」「プログラミング未経験から何を始めればいい?」 プログラマーに興味はあるけど、何から始めればいいのかわからない。進学

【保存版】プログラミングを無料で独学できるおすすめ学習サイト12選

2022年11月1日

「プログラミングを学習したいけど、できれば無料で習得したい」「学習を継続できるかわからないから、とりあえず独学で体験してみたい」。さまざまな理由から、独学でプロ

最新記事

0

ウォーターフォール開発とは?手法やメリット、アジャイル開発との違いを解説

0

プログラマーになるには?未経験でもプログラミングスキルは必要?

0

【保存版】プログラミングを無料で独学できるおすすめ学習サイト12選

0

プログラミングの独学は何から学習すればいい?独学を成功させるコツ

0

プログラミング向いてない?と悩んでいる方!あきらめる前にできること

TOPへ戻る