パソナについて
記事検索

今こそ知っておきたい「ウォーターフォールモデル」を徹底解説

この記事ではウォーターフォールモデルについて、詳しく解説していきます。どのような開発手法なのか、またどのような開発に向いているのか、しっかり確認していきましょう。

今こそ知っておきたい「ウォーターフォールモデル」を徹底解説

この記事ではウォーターフォールモデルについて、詳しく解説していきます。どのような開発手法なのか、またどのような開発に向いているのか、しっかり確認していきましょう。

スキルアップ

2022/06/02 UP

現代のシステム開発ではアジャイル開発やスクラム開発が主流であることから、ウォーターフォールモデルは時代遅れの開発手法とみなされがちです。しかしどの開発手法にも、適材適所があります。ウォーターフォールモデルは現在でも、有効な開発を行なえる優れた手法の一つです。

この記事ではウォーターフォールモデルについて、詳しく解説していきます。どのような開発手法なのか、またどのような開発に向いているのか、しっかり確認していきましょう。

なお、比較されるアジャイル開発やスクラム開発およびプロトタイプモデルについての詳細は、こちらの記事をご覧ください。
アジャイル開発とはどのような開発手法か徹底解説
スクラム開発を徹底解説!メリット・デメリットも紹介
プロトタイプモデルとは?メリットやデメリット、他の開発手法との相違点も解説

ウォーターフォールモデルとは?

ウォーターフォールモデルを正しく知ることは、適切な開発手法を選ぶうえで欠かせないポイントです。ここではウォーターフォールモデルの概要について、3つの観点に分けて解説します。

各工程の完了後に進む、一方通行の開発手法

ウォーターフォールモデルは以下に挙げる特徴を持つ、システム開発の代表的な手法です。

・工程は要件定義、基本設計、詳細設計、実装、テスト、本稼働の順に実施される

・各工程の完了時に、開発会社と顧客によるレビューを実施。レビュー完了後に次の工程へ移る

・各工程は一度限りの実施。一度次の工程に進んだら、前の工程には後戻りしない

上記のとおり、一方通行の開発手法であることが特徴。前の工程の成果物は正しいという前提で、次の工程が実施されます。「ウォーターフォールモデル」と呼ばれる理由は、滝が上から下の一方にしか落ちず、下から上には戻らないことから来ています。

ウォーターフォールモデルが適する案件

ウォーターフォールモデルは、以下に挙げる案件に適しているといわれています。

・大規模システム

・高い品質が求められるシステム

・生命や健康に影響を与えるシステム

・本稼働時に多くの機能を提供する必要があり、段階的なリリースが許されない場合

・年月が経過しても仕様が変わりにくいシステム

スクラム開発がよく使われるようになった現在でも、ウォーターフォールモデルが適するケースは数多くあります。これは、今でも主流の開発手法となっている理由の一つです。

アジャイル開発との違い

ウォーターフォールモデルは全機能の開発を同じタイミングで進め、一度の開発で完成させる開発手法です。開発初期の段階で、すべての要件を決定しなければなりません。また開発途中での追加や変更は、原則として受け入れられません。その反面、どれだけ大規模なシステムであっても対応可能なことは特徴に挙げられます。

一方でアジャイル開発は開発期間が1週間から1ヵ月程度と、短いことが特徴。早い段階からシステムを使い始められるものの、一度の開発で対応可能な要件は限られます。一方で「イテレーション」と呼ばれる開発サイクルを何度も実施し、徐々に機能を増やせる強みがあります。「とりあえず使ってみた感想をもとに、機能追加や修正を依頼する」ことは、アジャイル開発ならば可能です。

ウォーターフォールモデルを構成する6つの工程

ウォーターフォールモデルを構成する6つの工程

ウォーターフォールモデルによる開発は、大きく6つの工程に分けられます。それぞれの工程で行なうべき項目を確認し、スムーズな開発に活かしましょう。

要件定義(Analysis)

要件定義は、システムに必要な要件や実現したい項目、開発期間などを定める工程です。海外では分析という意味のAnalysisが充てられていることがあります。システムの成否を決める最も重要な工程であり、基本設計以降では要件や機能の見直しが行なわれません。

このため、抜けや漏れのないように細部まで合意を取る必要があります。顧客が語る要求内容をただ聞くだけでは不十分。エンジニアからも積極的に質問や提案を行なうことは、より良いシステムを作る秘訣です。

要件定義の成果物は、要件定義書となります。

基本設計(Basic Design)

基本設計は外部設計とも呼ばれる工程で、ユーザーから見える部分や、ミドルウェアなど他システムとの連携部分を設計します。顧客と打ち合わせをしながら、要件定義書に示された項目をどのように実現するか決める工程です。

以下の項目は、基本設計で決定される代表的なものに挙げられます。

・操作画面や結果の表示

・操作方法

・出力される帳票のレイアウト

・機能一覧や業務フロー図、データフロー図

・使用するミドルウェア

・ハードウェアの構成

・開発に用いる言語

基本設計の成果物は、基本設計書となります。

なお、要件定義と基本設計についてはこちらの記事でも紹介しています。併せてご確認ください。
要件定義と基本設計はなにが違う?実施すべき内容と進め方のポイントを解説

詳細設計(Specific Design / Detail Design)

詳細設計は内部設計とも呼ばれ、システム内部の動作に関する設計を行ないます。また、基本設計書の内容をどのように実現するか決める工程です。以下の項目は、代表的なものに挙げられます。

・データやファイルをやり取りする方法を決める

・バッチ処理など、自動で実行する処理の設計

・プログラム設計

・コーディング規約の作成

詳細設計の成果物は詳細設計書であり、実装はこの資料をもとに進められます。このため、実装担当者が理解できるように記述しなければなりません。

実装(Implementation)

実装はプログラミング言語を用いて、詳細設計書に従いコーディングを行なう工程です。多くの時間が必要となり、進捗がスケジュールに大きく影響することに注意しなければなりません。またプロジェクトの人員も、実装工程が最大となる場合が多いです。

実装工程の成果物は、ソースコードです。

テスト(Testing)

テストは設計書どおりに実装されているかチェックする工程であり、品質を担保するうえで欠かせません。成果物は、エビデンスとなります。テストには以下に挙げる4つの段階が設けられており、1段階ずつ順を追って進めなければなりません。

1.単体テスト:プログラム単位で実施するテスト。実装工程のチェックを行なう

2.結合テスト:プログラム間の連携をチェックする。詳細設計書に従ったチェックを行なう

3.総合テスト:システム全体の動作をチェックする。基本設計書に従ったチェックを行なう

4.受入テスト:本番環境で正常に動作するかチェックする。要件定義書に従ったチェックを行なう

もし不具合が見つかった場合は、修正が必要です。早い段階で気付けば手戻りも少なくて済む一方、あとの段階で気付くと修正にかかる手間や時間は大きくなります。

本稼働および運用・保守(Maintenance)

テストが終了すると、いよいよ本稼働を迎えます。その後は運用や保守のフェーズに入り、以下の業務を行ないます。

・トラブルや不具合に対応する

・法令改正への対応など、適時適切なアップデートを施す

いずれも、システムを安心して使うために欠かせない業務です。上記の要望に対応するため、「保守開発」と呼ばれるプロジェクトを設ける場合もあります。

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

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

他の開発手法と同様に、ウォーターフォールモデルにも長所と短所があります。適した開発手法を選ぶためにも、メリットとデメリットの把握は重要です。

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

ウォーターフォールモデルが広く使われる背景には、以下のメリットを得られることが挙げられます。

・進捗状況がわかりやすく、管理しやすい

・リリースの時点で、高い品質を備えたシステムを提供できる

・大量の人員が必要な大規模プロジェクトにも無理なく対応できる

・分業が可能。実装工程など、ピンポイントで大量の人員を投入しやすい

・請負契約にも適した手法である

ウォーターフォールモデルなら、「要件定義は少数精鋭、実装は100人単位」といったプロジェクトでも活用できます。このようなメリットがあるため、大規模システムの開発や正確性が求められるシステム開発で役立ちます。

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

ウォーターフォールモデルは、万能の開発手法ではありません。以下に挙げるデメリットがあることに注意が必要です。

・開発期間が長くなりやすい。要件を出してからシステムを受け取るまでの期間が長い

・詳細設計や実装段階に入ると、顧客の追加要求は受け入れられにくい

・要件定義や設計にミスがあると手戻りの影響が大きくなり、費用の増加やスケジュール遅延の原因となる

・ドキュメント作成の負担が大きい

・実装など一部の工程しか担当しないエンジニアが多く、全体を俯瞰したスキルを身につけにくい

このためWebサービスなど、変化に対して迅速に対応しなければならないシステムにはあまり向きません。

ウォーターフォールモデルの特徴を知り適切な活用を

ウォーターフォールモデルは、決して時代遅れの開発手法ではありません。大規模開発や品質重視のシステムでは、よく選ばれる手法です。一方で工程ごとにミスが許されない開発手法であることにも、留意しなければなりません。

ITエンジニアとして活躍するためには、ウォーターフォールモデルも知っておく必要があります。特徴とメリット・デメリットをしっかり把握し、適切に活用しましょう。