ウォーターフォールとは?~各工程について解説~

 2021.11.08  株式会社システムインテグレータ

IT技術の急速な発展に伴い、今や生活のあらゆるところで多くのプログラムが利用されています。たとえば、図書館で使用できる検索システムや銀行のATM、スマホアプリなどもすべてプログラムで動作しています。

では、プログラムはどのように開発されるのでしょうか。プログラムを開発するにはプログラミング言語を始め多くの技術が必要ですが、今回はその中でもプログラミング開発手法の1つ「ウォーターフォール」について解説します。

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

1.1 ウォーターフォールの概要

ウォーターフォールは、要件定義から設計、開発、テストへと滝のように上流から下流へ水が流れているようにプロジェクトが進められる開発手法です。image1


プログラムを開発するには、まずどのようなプログラムを開発したいのか、要件を決めるところから始まります。要件が決まれば画面イメージや入力・出力のインタフェースなどを決める基本設計、詳細な処理ロジックを設計する詳細設計を経て、実際にプログラム言語を用いて開発を行います。

開発されたプログラムが正常に動作するかテストを行ったあと、プログラムはリリースされ、多くの人に使われていくのです。

ウォーターフォールでは工程や作業内容が明確に決められているため、大規模プロジェクトや、品質を重視する場合に向いています。次からは、ウォーターフォールで開発することのメリットとデメリットをそれぞれ見ていきましょう。

1.2 ウォーターフォールのメリット

進捗状況を把握しやすい

ウォーターフォールは、工程および実施すべきタスクが明確になっているため、進捗状況が把握しやすいというメリットがあります。最初にゴールを決め、ゴールから逆算して工程にあわせて日程を調整し、各工程で実施すべきタスクを詳細に洗い出せば、WBSの完成です。あとは各工程のタスクがスケジュールどおりできているかチェックすることで、進捗が把握できます。

進捗が予定より遅延している場合でも、全体スケジュールの中でどれだけ影響があるかも容易に把握でき、容易に調整が可能です。このように進捗が把握しやすくなることは、開発者・クライアントどちらにとっても大きなメリットとなります。

一定の品質を担保できる

ウォーターフォールでは、各工程1つ1つ確実に進めていくため、完成品の品質は保証されています。

たとえば、要件定義を固めた上で設計を行うため要件以外のものがつくられることはなく、また開発後確実にテストを行うので高い品質のものが完成します。各タスクで漏れなく作業が完了していれば、一定の品質は担保されています。

大規模プロジェクトや品質を優先する開発を行いたい場合は、ウォーターフォールは大変有効です。

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

成果物の完成まで時間がかかる

基本的に前工程が完了していないと、次の工程に進められません。たとえば、要件定義や設計がきちんと完了していないと開発工程は進められません。要件が全て整理されていなければ漏れなく設計ができませんし、設計書がなければ開発を進めることができません。

そのため、各工程の成果物ができあがるのに、時間がかかります。特にウォーターフォールでは各工程で成果物をドキュメントとして残すため、大量のドキュメントを作成する必要があります。

仕様変更に対応しにくい

ウォーターフォールで最も避けたいのは仕様変更です。最初に明確なゴールをもとにスケジュールを決め、定められた工程に沿って計画的に進めていくため、仕様変更が発生すると大幅な計画変更を伴うことになります。

たとえば、開発工程を進めていく中で追加の要件が発生すると、要件定義から設計までやり直す必要が生じ、手戻りを余儀なくされることもあります。そうなるとスケジュールの見直しをせねばなりません。

そのため、ウォーターフォールでは要件定義や設計など、完了した工程の内容で変更が発生しないことが前提です。企画時点でゴールが明確に定まっていない場合や、途中で仕様変更が発生することが予想される場合は、ウォーターフォールは不向きです。

2.アジャイルとの違い

ウォーターフォール以外の開発手法として、注目されているものに「アジャイル」があります。ウォーターフォールとアジャイルの違いを見ていきましょう。


2.1 アジャイルとは

アジャイルは、顧客からの要望や仕様変更に比較的容易に対応できる開発手法です。ウォーターフォールがフェーズごとにきっちり決めていくのに対し、アジャイルは短期間の開発サイクルを反復(イテレーション)し、決定した仕様を取り込みながら開発を進めていきます。image2

2.2 アジャイルのメリット・デメリット

メリット

アジャイルは短期間で開発サイクルを回していくため、仕様変更や不具合発生時などにも臨機応変に対応できるメリットがあります。顧客の要望にも対応でき、コミュニケーションをとりながら満足度の高いプログラムを開発できます。

デメリット

アジャイルのデメリットとしては、ウォーターフォールと異なりある程度仕様変更が発生することを前提に計画を立てるため、詳細まで計画を詰めることはしません。おおよその計画で開発をスタートすることから、スケジュールや方向性が管理しにくいという点があります。

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

ウォーターフォールは最初の段階でゴールや仕様を明確にしていくため、全体が見えやすくスケジュール管理が容易という点があげられます。その反面、ウォーターフォールは仕様が確定していることが前提なので、仕様変更やトラブルなどによる手戻りに対応しにくいという課題があります。

多くの開発者が関わるため全体が管理しにくい大規模プロジェクトや、ある程度仕様が固まっており変更が発生しないプロジェクトでは、ウォーターフォールが適しています。

アジャイルは仕様変更やトラブルに対応しやすいメリットがありますが、おおまかな計画で開発をスタートさせるため、全体が見えにくいというデメリットがあります。そのため、開発全体がそれほど大きくなりすぎず把握しやすい小規模なプロジェクトや、仕様変更が頻繁に変更されることが想定されるプロジェクトでは、アジャイルが適しています。

3.ウォーターフォールの各工程

ウォーターフォールでは、各工程で実施すべき内容が明確に決められています。ここでは、各工程で行う内容を解説していきます。

① 「要件定義」

要件定義では、作成するシステムやプログラムで満たす要件を決めていきます。顧客が解決したい課題や、実装すべき必要な機能を定義し確定させます。要件定義を可能な限り細部まで決めておかないと、後の工程で仕様変更が発生し手戻りの要因となる可能性があるため、最も重要な工程です。要件定義をまとめた成果物が、要件定義書です。

②「設計」(基本設計・詳細設計)

要件定義書に基づき、プログラムの設計を行います。基本設計では主に画面やイメージなど外部から見える部分を、詳細設計では実際にプログラムが動く内容など内部動作を設計していきます。

③「開発」

基本設計、詳細設計の内容に基づき、実際にプログラミングしていきます。

④「テスト」(単体テスト・結合テスト・システムテスト)

作成したプログラムが正常に動作するか確認していきます。チェックする範囲によって、テストのフェーズが分けられます。詳細設計の内容どおりに動作するか確認する単体テスト、複数のプログラムと連携して動作を確認する結合テスト、システム全体の動作を確認するシステムテストと、少しずつ対象規模を広げていきながらテストを進めます。

テストを終え、最初に決めた要件を満たしたプログラムが完成すればリリースされます。要件定義や設計が不十分だと、テストで不具合が多発するため、上流工程でいかに品質を高めるかが重要なポイントです。

新規CTA
新規CTA

4.まとめ

本記事では、プログラム開発手法の一つであるウォーターフォールについて解説しました。ウォーターフォールは多くのプロジェクトで採用される基本的な開発手法であるため、エンジニアを目指す方はしっかり理解しておきましょう。

また、Webアプリ開発やモバイルアプリ開発などでアジャイルが採用され、注目されています。ウォーターフォールとアジャイルの違いを理解し、開発するプログラムにあわせて使い分けられるようにしましょう。

CTA

RECENT POST「コラム」の最新記事


コラム

システム開発手順について押さえるべきポイント

コラム

進化するシステム開発ツールとその役割

コラム

定番プログラミングフレームの代表例ご紹介

コラム

プログラム設計書とは?各設計書との違いから作成時によくある課題と解決策まで徹底解説!

ウォーターフォールとは?~各工程について解説~