ウォーターフォールのイメージ画像
ITコラム 初級編

ウォーターフォールモデルとは?開発の工程とメリット・デメリット

2021年11月1日

目次Category


システム開発では「品質を重視したい」「早くリリースしたい」など、さまざまな要望があります。こうした要望に応じて、適切な開発モデルを選ぶことが大切です。ウォーターフォールモデルは、一般的な開発モデルとして多くの現場で採用されています。

こちらでは、このウォーターフォールモデルの概要や適しているプロジェクト、メリット・デメリットや開発手法として比較されることが多いアジャイル型との違いについてお話しします。

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

ウォーターフォールモデルとは、どのような開発モデルなのでしょうか。以下では、ウォーターフォールモデルの基本的な情報についてお伝えします。

ウォーターフォールモデルの意味

ウォーターフォールモデルとは、決められた工程を順に遂行していくやり方の開発モデルのこと。「ウォーターフォール(Waterfall)」とは「滝」を意味する英単語です。滝のように水が上流から下流に流れて落下していく様子になぞらえて名付けられました。ウォーターフォール型開発とも呼ばれます。1970年ごろから提唱され、計画を立てやすい点や品質を担保しやすい点が評価され普及しました。現在も一般的なソフトウェア開発手法として多くの現場で採用されています。

ウォーターフォールモデルに向いているプロジェクト

  • 規模の大きなプロジェクト

ウォーターフォールモデルが適しているプロジェクトの代表例が規模な大きなプロジェクトです。開発するシステムの規模が大きくなると、多くの作業人員数が必要になるほか、スケジュール確保など事前の調整が必須となります。ウォーターフォールモデルであれば、事前に計画を立てられるため、多くのリソース(工数)が必要なプロジェクトでも進めやすいでしょう。

  • スピードよりも品質が重視されるプロジェクト

ウォーターフォールの下流工程では、機能テストや結合テストなど品質を担保するための作業が繰り返し行われます。そのため時間がかかってしまう傾向がありますが、スピードよりも品質を重視しなければならないプロジェクトの場合は最適です。

ウォーターフォールモデルの工程

ウォーターフォールモデルの一般的な工程をご紹介します。

STEP1:要件定義

まず、開発側と発注側でシステムに必要な要件や機能条件をすり合わせて整理する必要があります。開発側がヒアリングにより情報を整理して要件定義書としてまとめるのが一般的です。要件定義書には、システムを開発する目的、開発期間、実装する機能、導入・運用方法などが記載されます。システム開発において、要件定義は重要な上流工程です。要件定義の質が高ければ、開発側と発注側の認識のずれが生じにくく、修正時の手戻りの量が少なく済みます。

STEP2:設計(基本設計、詳細設計)

要件定義で決められた内容に基づき設計を行います。システムの設計は、基本設計と詳細設計に分類されます。

基本設計はユーザーから見えるインターフェース部分の決定を行う設計です。一般的に、各機能の基本設計書をそれぞれ作成します。基本設計の内容をもとに詳細設計書の作成を行います。
基本設計書はプログラミング工程に進むため、エンジニア向けの資料として作成される設計書です。
詳細設計はシステムの内部の動作・機能・データベースの設計のことです。実際にプログラマーがプログラムを組むために必要な詳細な設計書を作成します。ユーザーからは見えない部分のため「内部設計」と呼ぶこともあります。これに対して、基本設計は「外部設計」とも呼ばれます。

STEP3:実装

詳細設計書の内容に基づき、プログラマー・エンジニアが実際にプログラミングを行います。

STEP4:テスト(単体テスト、結合テスト、総合テスト、受入テスト)

システムを動かし、テストを行います。単体テストは、実装した各機能を対象に行うテストです。それぞれの機能にエラーがないか確認します。機能の性能についても評価されます。

結合テストは、単体テストで確認された各機能を連携させ、問題なく動作するかどうか評価するテストです。機能を連結させてもエラーが起こらないことを確認します。
総合テストはシステム全体を対象としたテストです。ここまでのテストで確認された機能をすべて連結させてテストを行います。エラーが見つかった場合、前の工程に戻ってエラーの原因を探さなければなりません。
受入テストは本番環境でシステムを作動させ、エラーがないか確認するテストです。要件定義の内容を満たせているかどうか、ユーザーに近い目線で検証を行います。

STEP5:リリース~運用・保守

リリース時は、一般的に旧システムからの移行が必要です。仕様変更によるトラブルや、システムを停止できる時間制限に配慮しながら慎重に移行を行います。
リリース後も、適切にシステムを稼働させるためには運用・保守が不可欠です。トラブル対処や改修・アップデートを必要に応じて実施し、システムの安定稼働を目指します。

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

ウォーターフォールモデルはメリット・デメリットを正しく理解して採用することが大切です。具体的なメリット・デメリットをご紹介します。

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

  • スケジュールや進捗状況を把握しやすい

計画の順番通りに作業を行っているため、進捗状況がシンプルでわかりやすい点が特徴です。必要な人員を必要な期間だけ利用できるため、コストの無駄を削減しやすくなります。開発を依頼する場合も状況を把握しやすいので安心できます。

  • 高い品質を保ちやすい

ウォーターフォールモデルでは、工程の進捗に応じて目標や基準を明確に設定します。そのため、高い品質を保ちやすい開発モデルです。

  • ほぼすべての開発会社で対応できる

標準的でシンプルな開発モデルのため、ほぼすべての開発会社が対応している点もウォーターフォールモデルの特徴です。そのため、開発会社の選択肢が広がります。

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

  • 工程途中での修正・仕様変更が難しい

それぞれの工程を一つ一つ順番に進めていくため、後々の工程になってから仕様変更が発生すると、前の工程に戻ってすべての修正が必要になり非効率です。例えば、設計・製造が終わり、テスト工程中に修正や仕様変更するには追加で多くの費用や時間が必要になります。後戻りの修正ができず、代替策が必要になるケースも考えられます。

この対策として、要件定義の段階で「後々変更しない・されない」と確証が持てるまで綿密に要件を擦り合わせることが効果的です。

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

ウォーターフォールモデルでは、要件定義・設計での綿密な仕様のすり合わせが不可欠です。先述に挙げたとおり、後々に仕様変更が起きてしまうと多大な費用がかかってしまいます。それを避けるためにも、要件定義・設計に時間がかかることが一般的です。そして、実際に開発に進むまでに時間がかかるため、開発期間全体が長期化する傾向があります。

  • 書類(ドキュメント)を多く作成する必要がある

工程が別れている関係上、設計資料などの書類作成の業務が多くなります。また、仕様変更や手戻りが生じた場合は、再度書類の作成が必要です。

アジャイル開発との違い

アジャイル開発とは、システム開発を小さな単位に分け、実装とテストを繰り返しながらプロジェクトを進める方法のことです。開発単位が小さいため、不具合が起きた際に修正しやすい点が特徴です。修正や仕様変更に柔軟に応じやすい半面、全体のスケジュール管理は難しい傾向があります。

ウォーターフォールモデルで品質の高いシステムを実現

開発期間が長期化しやすい一方、品質の高いシステムが期待できるウォーターフォールモデル。信頼性の高いシステムが求められるケースでは最適です。柔軟な修正が可能なアジャイル型と比較し、双方の特徴を理解した上で採用する必要があります。

YAZはウォーターフォール型、アジャイル型などさまざまな開発モデルに対応しています。コストの面で制限がある場合もお気軽にご相談ください。

この記事を書いた人

ITコラム部YAZ

YAZ ITコラム部

IT業界や専門用語について、分かりやすさを意識して情報発信しています!
弊社に興味がございましたらお気軽にご連絡くださいませ。☞詳しくはコチラ