コラム

  • 2021.08.16
  • ソフトウェアテスト
  • #ウォーターフォール
  • #基礎知識
  • #開発手法

ウォーターフォールモデルとは アジャイル型開発との違いを2つの視点から紹介

いまや我々の生活になくてはならないスマートフォンやパソコン。これらの製品内に組み込まれるソフトウェアの開発手法の1つとして、「ウォーターフォールモデル」があります。

IT業界で働いている方であれば、内容は知らずとも一度ぐらい名前は聞いたことがあるのではないでしょうか。

今回はこのウォーターフォールモデルについて、ご紹介していきます。

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

「ウォーターフォール」とは日本語に訳すと『滝』を意味します。工程を策定し、細かく分け、川上から川下に向かって流れる滝のように、上流工程から下流工程へ順次移行していく開発手法です。

ウォーターフォールモデルフロー。要件定義、基本設計、詳細設計、コーディング、テスト、リリースの流れで進む。

上図に示したウォーターフォールモデルの開発工程と概要を簡単に紹介すると次のようになります。

要件定義:ユーザーの要求を整理し実装する機能や性能、工程などをまとめる。
基本設計:要件定義でまとめた内容をどのように作成していくかをまとめる。
詳細設計:基本設計で定めた動きをどのように実現していくかをまとめる。
コーディング:プログラマーやエンジニアによりプログラムを実装する。
テスト:プログラムが正しく動作するかをプログラム単体や結合した状態でテストする。
リリース:テストを終えたシステムをリリースする。

基本的なルールとして、工程を飛ばして作業することはなく、開発担当者や責任者、クライアントが各工程の成果物を共に確認し、双方の合意を得たうえで各工程を完了と見なした際に、次の工程へと進みます。そのため、基本設計の後に詳細設計が終わっていない状態でテストを行うことはありません。しかし、作成するソフトウェアの仕様変更があった場合などには、前の工程に戻って作業することがあります。

DevOps 講座

ウォーターフォールモデルフロー(工程ルール)

ウォーターフォール開発

「ウォーターフォール型開発」や「ウォーターフォールモデル」とも表現されます。一連の流れに沿った開発です。関連するキーワードとして「V字モデル」や「W字モデル」があげられます。これらのモデルにおけるそれぞれの工程はウォーターフォールの工程そのものです。上流工程がどのテスト工程(フェーズ、レベル)に対応しているのかも明確になっています。

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

それではウォーターフォールモデルのメリット、デメリットを見ていきましょう。

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

●進捗管理が容易である
ウォーターフォールモデルでは、要件定義で必要なタスクを洗い出し、設計、テストを行います。行うべきタスクが明確になっているため、進捗がわかりやすいです。また、どこのタスクで時間がかかるのか明確にできるので、事前の人員調達も容易となります。

●一定の品質を担保できる
各工程で予めタスクが決められているため、一定の品質を担保することができます。

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

●途中の仕様変更に対応しにくい
プロジェクト全体の流れやすべての工程が最初から決まっているため、仕様変更による工数が増加します。

●実際に動く成果物ができるまでに時間がかかる
要件定義、設計の後にならないと開発工程に進めないため、成果物の確認までに時間がかかってしまいます。

DevOps 講座

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

ウォーターフォール開発とアジャイル開発の違いのイメージ

ウォーターフォール開発と比較する形で、アジャイル開発という手法を耳にする機会も増えてきました。これらは対立するものではありませんが、どのような違いがあるのか2つの視点で比較してみましょう。

企画段階における違い

ウォーターフォール開発では、最初の企画段階ですべての機能を決定します。クライアント次第では要求によって仕様変更をすることもありますが、基本的には企画段階での仕様を優先して開発を進めていきます。一方、アジャイル開発ではイテレーションごとの開発になるため、新たな要求が発生した際には次のイテレーション以降でその要求に対応するか否かを決定していきます。
よく「アジャイル開発は計画がない」という誤解がありますが、実際はイテレーションごとに計画しているので、より計画的といえる側面もあります。

開発段階における違い

ウォーターフォール開発では、開発は工程によって分業して行います。そのため、要件定義からリリースまで一連の流れを見届けるメンバーの方が少ないです。

一方、アジャイル開発ではチーム一丸となって開発するため、企画からリリースまでチーム全員で行うことが多いです。(ただし、実際には得意な分野に応じた分業が行われることが現状です)

ウォーターフォール開発の活用方法

ウォーターフォール開発のメリットでも記載したとおり、ウォーターフォール開発では、開発の計画や予算の見積もりが容易になります。人員調達も容易になるため、大規模なプロジェクトに向いています。また、工程ごとに決められた基準を満たしてから次の工程に移るため、ある程度の品質を担保しやすくなります。しかし、プロジェクト期間中の要件の変更には手戻り工数が多くかかるため、途中の変更が多く予定されているプロジェクト(ユーザーの声を取り入れながら開発するプロジェクト)などにはウォーターフォール開発はあまり向いていません。こういった背景からか、特に組込みソフトウェア開発ではウォーターフォール開発が主流となっているようです。

DevOps 講座

まとめ

ウォーターフォール開発は最も一般的な開発手法の1つです。しかし、メリット・デメリットがあり、プロジェクトや状況、企業の体質、メンバーのスキル・成熟度といったさまざまな要素を考慮したうえで開発手法を選択することがプロジェクト成功のカギとなるといえるでしょう。
SHIFTではテスト工程での支援(テスト計画、テスト設計、テスト実行)はもちろん、上流工程から参画して仕様書の欠陥を早期発見し、コスト超過を防止するインスペクションや、プロジェクト運営支援や開発・テストプロセス標準化といったさまざまなサービスを展開しています。

ウォーターフォールからアジャイル開発への移行支援も行っていますので、気になるサービスがありましたらお気軽にお問い合わせください。

資料ダウンロード/動画視聴

ソフトウェアテスト入門動画

テスト計画入門動画

SHIFTサービス資料

テストサービス導入事例集

関連サービス