見出し画像

ウォーターフォール開発とは?アジャイル開発との違い、開発プロセスの流れなどを解説

競合との差別化、要件の度重なる変更など、さまざまな理由で既存のシステムやソフトウェアでは対応できなくなり、独自システムの開発を検討している企業は少なくありません。しかし、ひと口に開発といっても方法は多様にあります。自社にとって最適な開発方式を決めるには、それぞれの開発方式が持つ特徴やメリット・デメリットを把握しておかなければいけません。そこで今回は、ウォーターフォール開発について取り上げ、その概要から一般的な開発プロセス、マネジメント方式、メリット・デメリットをお伝えします。

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

ウォーターフォール開発とは、主にソフトウェアやハードウェア開発を行う際の開発方式のひとつです。ウォーターフォールとは日本語で「滝」という意味で、上流から下流に流れるような方式で開発を行うことから名付けられています。
具体的には、開発プロセスをいくつかの工程に分け、要件定義から運用までひとつずつ順番に工程を進めます。数ある開発方式のなかで、もっとも一般的な開発方式です。
ひとつの工程を終えなければ次の工程へ進めない方式であるため、進捗状況の把握が容易であり、人員や予算配分がしやすいのが特徴といえます。事前にしっかりと計画を決めて開発を始めることから、大規模なシステム開発に向いた方式です。

アジャイル開発との違い

ウォーターフォール開発の原型は1960年代に考案され、古くから活用されています。これに対しアジャイル開発は、1990年代以降に登場した新しい開発方法のひとつで、2001年に「アジャイルソフトウェア開発宣言 」が公開されて以降、広く知られるようになり、急速に普及しました。
アジャイル開発のアジャイルとは、「俊敏な・機敏な」といった意味で、開発をしながらテストとフィードバックを繰り返し、計画を柔軟に変えながら開発を進める方式です。
要件定義が明確ではなく、開発途中でも頻繁に仕様の変更、改修があるような開発に向いた方式で、スピード感のある開発を得意とします。反面、スケジュール管理が難しく、機敏に改修を繰り返した結果、当初の目的としていた方向性からずれてしまうリスクもあるため、大規模なシステム開発には向かない方式だといえるでしょう。

ウォーターフォール開発における一般的なプロセス

ウォーターフォール開発の特徴のひとつは、事前に綿密な計画を立てたうえで開発に入るため、開発プロセスがわかりやすいことです。ウォーターフォール開発の一般的な進め方を紹介します。

1.要件定義
何を目的に、どのようなソフトウェア・ハードウェアをつくりたいのか、そのためにはどのような機能が必要かを明確にし、要件定義書を作成します。

2.基本設計
ソフトウェア・ハードウェアのデザイン、レイアウト、機能などを、要件定義書をもとに設計します。

3.詳細設計
基本設計をもとに、開発者が具体的にどのように実装していくかを決める作業です。一つひとつの機能に詳細設計書を作成し、開発者間で共有します。

4.開発
詳細設計書をもとに開発を行います。

5.単体テスト・結合テスト
開発した機能が仕様書どおりに動くかどうかを確認するのが単体テストです。不具合があれば改修し、またテストを行う作業を完成まで繰り返します。
単体テストが完了したら次に行うのが、ふたつ以上の機能が連動して動作するかどうかを確認する結合テストです。例えば、MAツールで取得したメールアドレスに対してステップメールを送る機能であれば、毎回異なるメールが送信されるかどうかを確認します。ECサイトで訪問者におすすめ商品を掲載する機能であれば、設計したとおり、訪問者が前回購入した商品をもとに選定された商品が正しい位置に掲載されるかなどを確認します。

6.最終テスト
開発完了後、管理側と顧客側の双方の立場から、同じ環境下において最終のテストを実施します。具体的には、さまざまな条件でテストを行い、不具合がないか、機能要件は満たしているかなどを確認します。最終的には、顧客側のテストで問題がなければ本番運用を開始します。

7.運用・メンテナンス
運用開始後も定期的にチェックを行い、問題があればメンテナンスを行います。

ウォーターフォール開発のプロジェクトマネジメント方法のポイント

ウォーターフォール開発をスムーズに進めていくためには、適切なプロジェクト管理が必要です。ウォーターフォール開発でよく使われるプロジェクト管理方法を紹介します。

WBS(Work Breakdown Structure)の作成

「WBS」とはWork Breakdown Structureの略称で、作業分解構成図のことを指します。その名のとおり「作業を分解して構造化する」ための手法、プロジェクトの全体像を把握するために欠かせない管理方法です。
ウォーターフォール開発においても、まずWBSを作成し、タスクを細分化します。そのうえで、タスクごとに責任者を決めるのが一般的な流れです。

優先順位や期限の決定

WBSをもとにタスクの優先順位や期限を決めます。ソフトウェア・ハードウェア開発において基本となるタスクや、期限が厳しいタスクに優先的に取り組めるよう、決めていくことが重要です。

進捗管理
開発の進捗を把握し、状況に応じてスケジュールや予算の見直しを行います。遅れが生じた場合には早めに対策を講じなくてはなりません。

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

ウォーターフォール開発の導入をする際、理解しておかなければならないのが、メリットとデメリットです。自社の目的や用途に適応しているかどうかを知るためにも把握しておく必要があります。

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

⮚ スケジュール管理がしやすい
開発する前の段階でスケジュールを決め、工程ごとに進めていくため、進捗状況や予算・人員の管理がしやすくなります。

⮚ 品質の担保がしやすい
ひとつの工程が完成するまで次の工程に進めないため、厳格なテストが求められ、一定の品質担保が可能です。

⮚ 問題の特定がしやすい
開発工程が明確に示されているため、開発中に問題が発生した場合でも、どの工程で問題が発生したかを特定しやすくなります。

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

⮚ 開発中の仕様変更に対応しにくい
事前に明確な仕様書を作成してから開発を始めるため、途中で仕様変更が発生した場合には、仕様書を変更しなくてはなりません。その結果、開発業務が大幅に遅れてしまう場合があります。

⮚ 開発期間が長期化する場合がある
ひとつの工程が終わらないと次の工程に進めないため、開発期間が長期化する場合があります。また、要件定義や設計書作成の段階で問題に気づくことができないまま開発を進めていた場合、あとから修正するのに大幅な時間的ロスが発生する可能性があります。

ウォーターフォール開発で成果を上げるポイントは目的と要件定義の明確化
ウォーターフォール開発とは、主にソフトウェアやハードウェア開発を行う際の開発方式で、上流から下流に滝の流れのような形で開発を行うことから名付けられています。近年は、開発途中でも柔軟に仕様変更に対応できるアジャイル開発が主流となりつつあるのが現状です。しかし、大規模な開発を行う際には、詳細な要件定義や設計書があり、より多くの開発者がかかわってもスムーズに進められるウォーターフォール開発が適しています。
開発方法を選択する際に重要なことは、目的や用途を明確にすることです。現在の主流が何であるかではなく、自社の目的を果たすにはどのような開発方式が最適かを考えて選択しましょう。そのうえで、要件定義や設計書作成の段階で明確な完成図を描ければ、途中で問題が起こるリスクの軽減が可能です。

目的と要件定義の明確化こそが、ウォーターフォール開発を成功させるポイントであるといえるでしょう。

要約文:
ひと口にシステム開発といっても方法は多様であり、最適な開発方式を決めるには、それぞれの開発方式が持つ特徴やメリット・デメリットの把握が必須です。今回は、ウォーターフォール開発について、概要、開発プロセス、マネジメント方式、メリット・デメリットをお伝えします。

この記事が気に入ったらサポートをしてみませんか?