従来型開発手法「ウォーターフォール」とは?

DXを学びたい
先生、デジタル変革でよく聞く「ウォーターフォール」って、滝のことですか?システム開発に関係があるみたいですが、どういう意味なんでしょう?

DXアドバイザー
はい、滝のように上から下へ流れるイメージで、システム開発の進め方を表す言葉です。ウォーターフォール型開発とも言いますね。最初から順番に、計画、設計、開発、テストと進めていく方法です。

DXを学びたい
順番に進める、というのは分かりやすいです。でも、もし途中で「やっぱり違う」ってなったら、どうするんですか?

DXアドバイザー
そこがウォーターフォールの難しいところなんです。基本的には前の段階に戻らないので、途中で変更が必要になると、最初からやり直すことになる場合が多いんです。だから、最初にしっかりと計画を立てることがとても重要になります。
ウォーターフォールとは。
「デジタル変革」に関連する言葉で、システム開発の手法の一つに「滝」と呼ばれるものがあります。これは、水が上から下へ流れる様子に例えられ、一般的には、要求を明確にする段階、システムの概要を決める段階、システムの中身を具体的にする段階、プログラムを作る段階、動作を確認する段階といった手順で開発を進めます。各段階が完了したら次の段階へ進み、前の段階には戻らないのが基本です。しかし、途中で仕様の変更が必要になった場合、最初の段階からやり直す必要が生じます。この「滝」のような手法に対して、開発の手順をより細かく分け、短い期間でプログラムの開発と動作確認を繰り返す手法を「素早い」開発と呼びます。
水が流れるように進む開発

滝のように一段ずつ進む開発手法は、最初に計画を立て、その後、設計、実装、試験と順番に進みます。各段階は明確に区切られており、前の段階に戻ることは基本的にありません。大きな規模の開発で、計画的に進めるために有効です。各段階の成果物をきちんと確認し、承認を得てから次へ進むことで、やり直しを減らすことを目指します。文書作成も重要で、後の段階での参照や保守のために詳しく記録します。厳格な管理が特徴で、信頼性が求められるシステム開発で使われることがあります。しかし、最近は変化が速いため、より柔軟な開発手法が注目されています。この手法は変化に対応するのが難しいという弱点があるため、計画の内容に合わせて開発手法を選ぶことが大切です。この手法を使う場合でも、各段階での連携を密にし、意思疎通を円滑にすることで、より効率的な開発ができます。
| 特徴 | メリット | デメリット | 適用場面 | 補足 |
|---|---|---|---|---|
|
|
|
|
|
各工程の詳細

水が滝を流れ落ちるように進む開発手法において、各段階をさらに詳しく見ていきましょう。まず、要求定義では、お客様が情報処理システムに求める機能や性能、制約条件などを明確にします。この段階は非常に重要で、後の段階の成否に大きく影響します。次に、外部設計では、情報処理システムの利用者から見た画面表示や操作性、情報の出し入れなどを設計します。内部設計では、情報処理システムの内部構造や情報蓄積場所の設計、プログラムの詳細な仕様などを決定します。実際のプログラムを作成する段階では、設計に基づいてプログラムを記述します。そして、試験段階では、プログラムが設計通りに動作するか、要求を満たしているかなどを検証します。試験は、個々の機能の試験から始め、結合試験、そしてシステム全体の試験へと段階的に行われます。各段階の成果は、文書として記録され、次の段階の参考にされます。このように、各段階は密接に関連しており、前の段階の質が、後の段階の質に影響を与えます。したがって、各段階において、十分な検討と確認を行うことが重要です。
| 段階 | 内容 | ポイント |
|---|---|---|
| 要求定義 | お客様が情報処理システムに求める機能、性能、制約条件などを明確化 | 後の段階の成否に大きく影響 |
| 外部設計 | 利用者から見た画面表示、操作性、情報の出し入れなどを設計 | |
| 内部設計 | システムの内部構造、情報蓄積場所の設計、プログラムの詳細な仕様を決定 | |
| プログラム作成 | 設計に基づいてプログラムを記述 | |
| 試験 | プログラムが設計通りに動作するか、要求を満たしているかなどを検証 | 個々の機能の試験から始め、結合試験、システム全体の試験へと段階的に行う |
変更への弱点

既定の手順に沿って開発を進める手法の最大の難点は、計画の変更に弱いことです。各段階が明確に区切られているため、後の段階で仕様の変更が必要になった場合、最初の段階からやり直す必要が出てきます。これは、時間と費用の大きな無駄につながります。現代の事業環境は変化が早く、開発の途中で仕様が変わることは珍しくありません。そのため、既定の手順に沿った開発手法は、柔軟性に欠けるという批判を受けることがあります。計画変更への対応を容易にするためには、要件を定める段階で、将来的な変更の可能性を考慮しておくことが大切です。例えば、将来的に機能を追加する必要がある場合は、拡張しやすい構造にする必要があります。また、試作品を作り、早い段階でお客様に確認してもらうことで、要件の誤解や見落としを早期に見つけることができます。さらに、変更管理の手順を確立し、仕様変更が発生した場合の対応を明確にしておくことも重要です。変更の影響範囲を評価し、関係者に知らせることで、混乱を最小限に抑えることができます。既定の手順に沿った開発手法は、計画変更に弱いという弱点がありますが、事前の準備と対策をすることで、ある程度克服することができます。
| 課題 | 説明 | 対策 |
|---|---|---|
| 計画変更への弱さ | 既定の手順に沿った開発手法は、各段階が明確に区切られているため、仕様変更時に最初の段階からやり直す必要があり、時間と費用の無駄につながる。現代の事業環境の変化の速さも影響する。 |
|
アジャイルとの比較

柔軟性を重視する開発手法として、敏捷式開発が注目されています。これは、計画に沿って段階的に進める手法とは対照的です。敏捷式開発では、短い期間で開発と検証を繰り返し、顧客からの意見を取り入れながら、システムを徐々に作り上げていきます。そのため、仕様の変更が必要になった場合でも、柔軟に対応できます。変化の激しい事業環境に適しており、近年重要視されています。計画的な手法は、進捗を管理しやすいという利点があるものの、仕様変更には弱いという弱点があります。一方、敏捷式開発は、仕様変更に強く、顧客の要望に柔軟に対応できますが、計画や進捗の管理が難しいという側面があります。事業の内容や要件に応じて、適切な開発手法を選ぶことが大切です。例えば、要件が明確で、変更の可能性が低い事業には、計画的な手法が適しています。一方、要件が曖昧で、変更の可能性が高い事業には、敏捷式開発が適しています。また、両方の開発手法を組み合わせることも可能です。それぞれの利点を活かした、両者を組み合わせた開発手法も有効です。
| 開発手法 | 特徴 | メリット | デメリット | 適した事業 |
|---|---|---|---|---|
| 計画的な手法 | 計画に沿って段階的に進める | 進捗を管理しやすい | 仕様変更に弱い | 要件が明確で変更の可能性が低い事業 |
| 敏捷式開発 | 短い期間で開発と検証を繰り返し、顧客からの意見を取り入れながらシステムを開発 | 仕様変更に強い、顧客の要望に柔軟に対応できる | 計画や進捗の管理が難しい | 要件が曖昧で変更の可能性が高い事業、変化の激しい事業環境 |
| 両者を組み合わせた開発手法 | それぞれの利点を活かす | – | – | – |
今でも有効な場面

近年、迅速な開発手法が主流となる中でも、段階的な開発手法は依然として有効な場面があります。例えば、初期段階で全ての要求事項が明確に定義でき、最終的な製品の全体像が具体的に描ける場合には、この手法が適しています。また、金融機関の中核業務システムや医療情報システムのように、高い信頼性と安全性が求められる開発にも向いています。これらのシステムでは、変更に伴う危険性を極力抑えるため、詳細な計画と厳格な検証が不可欠であり、段階的な手法が有効です。さらに、大規模な事業で複数の開発チームが連携する場合、明確な工程分割と成果物の定義が、チーム間の連携を円滑にし、全体の進捗を管理しやすくします。ただし、現代の開発手法を取り入れ、危険管理や意思疎通を重視することが大切です。例えば、各工程の成果物を早期に評価し、顧客からの意見を取り入れることで、手戻りを減らす工夫も必要です。
| 段階的な開発手法が有効な場面 | 理由・詳細 |
|---|---|
| 初期段階で要求事項が明確 | 最終的な製品の全体像が具体的に描ける場合 |
| 高い信頼性と安全性が求められるシステム | 金融機関の中核業務システム、医療情報システムなど。変更に伴う危険性を極力抑えるため。 |
| 大規模な事業で複数の開発チームが連携 | 明確な工程分割と成果物の定義がチーム間の連携を円滑にし、全体の進捗を管理しやすくする。 |
