ウォーターフォールモデルは、典型的な ソフトウェア開発ライフサイクル (SDLC)の各フェーズを順番 に実行するプロセスです。各フェーズは、次のフェーズを開始する前に完了し、各フェーズの結果が後続のフェーズを推進します。[ 1 ] アジャイル などの他のSDLC手法と比較すると、反復性と柔軟性が最も低いものの一つです。[ 1 ] なぜなら、進行は、構想、要件分析 、設計 、構築 、テスト 、展開、保守 の各フェーズを通して、ほぼ一方向に流れる(滝 のように)からです。[ 2 ] ウォーターフォールモデルは、最も初期のSDLC手法です。[ 3 ] 最初に採用された当時は、知識ベースの創造的な作業に対する認識された代替手段はありませんでした。[ 4 ]
歴史 ソフトウェアエンジニアリングにおけるこのようなフェーズの使用について説明した最初の既知のプレゼンテーションは、1956年6月29日にハーバート・D・ベニントンがデジタルコンピュータ向け高度プログラミング手法に関するシンポジウムで行ったものです。 [ 5 ] このプレゼンテーションはSAGE 用ソフトウェアの開発に関するものでした。1983年、ベニントンは、フェーズがタスクの専門化に従って意図的に組織化されていること、そしてプロセスは実際には厳密なトップダウン方式で実行されたのではなく、プロトタイプに依存していることを説明する序文を付けて、この論文を再出版しました。[ 6 ]
論文では「ウォーターフォール」という用語は使われていませんが、このプロセスの最初の正式な詳細な図は、しばしばウィンストン・W・ロイス による1970年の論文から引用されています[ 7 ] 。[ 8 ] [ 9 ] [ 10 ] しかし、彼は、テストがプロセスの最後にしか行われないことに起因する重大な欠陥があるとコメントし、それを「危険で失敗を招く」と表現しました[ 8 ] 。彼の論文の残りの部分では、変更されていないウォーターフォールアプローチに関連する「開発リスクのほとんどを排除する」ために必要だと彼が感じた5つのステップを紹介しました[ 8 ] 。ロイスの5つの追加ステップ(開発のさまざまな段階で完全なドキュメントを作成することを含む)は主流にはなりませんでしたが、彼が欠陥のあるプロセスと考えていたものの図は、「ウォーターフォール」アプローチを説明する際の出発点となりました[ 11 ] [ 12 ] 。
「滝」という用語が最初に使われたのは、ベルとセイヤーによる1976年の論文かもしれない。[ 13 ]
1985年、米国国防総省は、ソフトウェア開発請負業者との作業に関する DOD-STD-2167 規格でウォーターフォールモデルを採用しました。この規格では、ソフトウェア開発の反復[ 14 ] を「ソフトウェア開発サイクルの連続するフェーズ」と呼び、「請負業者は、ソフトウェア要件分析、予備設計、詳細設計、コーディングと単体テスト、統合、テストの6つのフェーズを含むソフトウェア開発サイクルを実施しなければならない」と述べています。[ 14 ] [ 15 ]
段階 このモデルは、一連の手順を直線的に記述しています。さまざまなバージョンが存在しますが、以下にその本質を説明します。[ 16 ] [ 17 ] [ 18 ] [ 19 ]
予備分析 予備分析を実施し、代替案を検討し、費用と便益を見積もり、推奨事項を含む予備計画を提出する。
予備分析を実施する:組織の目標を特定し、プロジェクトの性質と範囲を定義する。プロジェクトが目標に合致していることを確認する。 代替案を検討する:代替案は、従業員、顧客、サプライヤー、コンサルタントへのインタビューや、競合分析から得られる可能性がある。 費用便益分析:プロジェクトの費用と便益を分析する。
システム分析、要件定義プロジェクトの目標を、 定義された機能と操作に分解します。これには、事実の収集と解釈、問題の診断、変更の提案が含まれます。エンドユーザーの情報ニーズを分析し、矛盾や不完全性を解消します。[ 20 ]
事実を収集する:文書レビュー、顧客インタビュー、観察、アンケートなどを通じて、エンドユーザーの要件を取得する。 既存のシステムを精査する:長所と短所を特定する。 提案されたシステムを分析する:問題点に対する解決策を見つけ、適切なユーザー提案を盛り込んだ仕様書を作成する。
統合とテスト テスト環境でモジュールを組み立て、エラー、バグ、相互運用性を確認します。
受入、設置、展開システムを本番稼働させる。これには、ユーザーへのトレーニング、ハードウェアの導入、以前のシステムからの情報移行などが含まれる場合がある。
メンテナンス システムを監視して、その継続的な適合性を評価します。必要に応じて、小規模な変更や修正を行います。これにより、システムの品質を維持することができます。継続的な監視と更新により、システムが効果的かつ高品質であり続けることが保証されます。[ 21 ]
評価 システムとプロセスがレビューされます。関連する質問には、新しく導入されたシステムが要件を満たし、プロジェクト目標を達成しているか、システムが使いやすく、信頼性/可用性が高く、適切に拡張され、耐障害性があるかなどが含まれます。プロセスチェックには、タイムラインと費用のレビュー、およびユーザーによる受け入れが含まれます。
廃棄 システムの寿命が尽きると、システムの廃止と後継システムへの移行計画が策定されます。関連する情報とインフラストラクチャは、セキュリティを適切に保護しながら、再利用、アーカイブ、廃棄、または破壊する必要があります。[ 22 ]
支持論拠 ソフトウェア開発サイクルの初期段階で時間を費やすことで、後の段階でのコストを削減できます。例えば、初期段階(要件定義など)で発見された問題は、プロセスの後半で発見された同じバグよりも修正コストが安くなります(50~200倍)。[ 23 ]
一般的に、ウォーターフォール型開発手法では、プロジェクトスケジュールにおいて、最初の2つのフェーズに時間の20~40%、コーディングに30~40%、残りをテストと実装に費やすことになります。プロジェクト組織は高度に構造化される必要があるため、ほとんどの中規模および大規模プロジェクトには、プロジェクト上のすべてのプロセスを規制する詳細な手順と管理が含まれます。[ 24 ]
ウォーターフォールモデルを支持するもう一つの論拠は、ソースコード だけでなく、ドキュメント(要件定義書や設計書など)にも重点を置いている点です。設計やドキュメント化が不十分な手法では、プロジェクトが完了する前にチームメンバーが離脱すると知識が失われ、プロジェクトがその損失から回復するのは困難になる可能性があります。完全に機能する設計書が存在する場合(これは、事前の大規模設計 とウォーターフォールモデルの意図です)、新しいチームメンバーや新しいチームは、ドキュメントを読むことでプロジェクトに慣れることができるはずです。[ 25 ]
ウォーターフォールモデルは構造化されたアプローチを提供します。モデル自体は、離散的で理解しやすく説明しやすいフェーズを直線的に進むため、理解しやすいです。また、開発プロセスにおける容易に識別できるマイルストーンも提供し、多くのソフトウェアエンジニアリングのテキストやコースで開発モデルの最初の例としてよく使用されます。[ 26 ]
批判 クライアントは、実際に動作するソフトウェアを見るまでは正確な要件を把握していない可能性があり、そのため後から要件を変更し、再設計、再開発、再テスト、コスト増加につながる可能性がある。[ 27 ]
設計者は、新しいソフトウェア製品や機能を設計する際に、将来起こりうる困難を認識していない場合があります。その場合、新たに発見された制約、要件、または問題を考慮して設計されていないものと比較して、初期段階で設計を修正することで効率を高めることができます。[ 28 ]
組織は、顧客からの具体的な要求が不足している場合、システムアナリストを雇用して既存の手動システムを調査し、その機能と置き換え方法を分析することで対処しようとすることがあります。しかし、実際には、システム分析 とプログラミングを厳密に分離することは困難です。[ 29 ] なぜなら、些細でないシステムを実装すると、システムアナリストが考慮していなかった問題やエッジケースが明らかになることが多いからです。
米国国防総省などの一部の組織は、1994年に発行されたMIL-STD-498を皮切りに、ウォーターフォール型の手法を好まないことを公言しており、 進化的な取得 と反復的かつ漸進的な開発 を推奨している。[ 30 ]
改良型滝モデル オリジナルの純粋なウォーターフォールモデルに問題があると認識されたため、その問題に対処するために多くの修正版が考案されました。これには、スティーブ・マコーネル が「修正ウォーターフォール」と呼ぶ高速開発モデルが含まれます: [ 23 ] ピーター・デグレースの「刺身モデル」(フェーズが重複するウォーターフォール)、サブプロジェクト付きウォーターフォール、リスク軽減付きウォーターフォール。また、「インクリメンタルウォーターフォールモデル」などの他のソフトウェア開発モデルの 組み合わせも存在します。[ 31 ]
ロイス最終モデル ロイスの最終モデルは、フィードバックがコードテストから設計へ(コードテストによって設計上の欠陥が明らかになるため)、そして設計から要件仕様へと(設計上の問題によって、矛盾する要件や、その他の理由で満たされない/設計不可能な要件を削除する必要が生じる可能性があるため)つながる可能性があること を示しました。同じ論文でロイスは、大量のドキュメントを作成し、「可能であれば2回」作業を行うこと[ 32 ] (ソフトウェアプロジェクト管理 で影響力のある書籍である『人月の神話』の著者として有名なフレッド・ブルックスが提唱した「1つは捨てる」計画に似た考え方)、そして可能な限り顧客を巻き込むこと( エクストリームプログラミング に似た考え方)も提唱しました。
ロイスが最終モデルについて述べた内容は以下のとおりです。
分析とコーディングを開始する前に、プログラム設計を完了してください。 書類は最新かつ完全でなければならない。 可能であれば、作業を2回行う。 試験は計画、管理、監視されなければならない。 顧客を巻き込む
参考文献 1 2 Petersen, Kai; Wohlin, Claes; Baca, Dejan (2009). "大規模開発におけるウォーターフォールモデル" . Bomarius, Frank; Oivo, Markku; Jaring, Päivi; Abrahamsson, Pekka (編)『製品中心のソフトウェアプロセス改善 』Lecture Notes in Business Information Processing. Vol. 32. Berlin, Heidelberg: Springer . pp. 386–400 . Bibcode : 2009pfsp.book..386P . doi : 10.1007/978-3-642-02152-7_29 . ISBN 978-3-642-02152-7 。 ↑ トム・ギルブ (1985)。「進化型デリバリーと「ウォーターフォールモデル」の比較」 ". ACM SIGSOFT Software Engineering Notes . 10 (3): 49– 61. doi : 10.1145/1012483.1012490 .↑ リンダ・シェレル(2013)。 「 ウォーターフォールモデル」。ALC ルネホフ、L. オビエド編『科学と宗教の百科事典』所収 。 オランダ 、 ドルトレヒト : シュプリンガー 。pp . 2343–2344。doi : 10.1007 /978-1-4020-8265-8_200285。ISBN 978-1-4020-8264-1 。↑ Andreas P. Schmidt; Christine Kunzmann (2014 年 9 月 16 日). 知識成熟のための設計: 知識駆動型ソフトウェアから知識開発の促進支援へ . i-KNOW '14: 第 14 回知識技術とデータ駆動型ビジネスに関する国際会議の議事録. ACM . pp. 1–7 . doi : 10.1145/2637748.2638421 . ↑ 米国海軍数学計算諮問委員会(1956年6月29日)、「 デジタルコンピュータ向け高度プログラミング手法に関するシンポジウム」 、[ワシントンDC]:海軍研究局、海軍省、 OCLC 10794738 ↑ベニントン、ハーバート D. (1983 年 10 月 1 日)。 「大規模コンピュータ プログラムの作成」 (PDF) 。IEEE Annals of the History of Computing 。5 ( 4)。IEEE Educational Activities Department: 350–361。Bibcode : 1983IAHC....5d.350B。doi : 10.1109 /MAHC.1983.10102。S2CID 8632276。2011年 7 月 18 日 に オリジナル (PDF) からアーカイブ 。2011 年 3 月 21 日 に 取得 。 ↑ Larman, Craig; Basili, Victor (2003 年 6 月). "反復的および漸進的開発: 簡単な歴史" (PDF) . Computer . 36 (6): 47– 56. Bibcode : 2003Compr..36f..47L . doi : 10.1109/MC.2003.1204375 . 1 2 3 ロイス、ウィンストン(1970)、 「大規模ソフトウェアシステムの開発管理」 、 IEEE WESCON 会議録 、 26 (8月 ): 1-9 ↑ 「滝」 。 ブレーメン大学 - 数学およびコンピュータ科学 。 2022年1月19日に オリジナルからアーカイブ済み 。 2021年4月15日 に取得。 ↑ Abbas, Noura; Gravell, Andrew M.; Wills, Gary B. (2008). "アジャイル手法の歴史的ルーツ: "アジャイル思考" はどこから来たのか?" (PDF) . In Abrahamsson, Pekka; Baskerville, Richard; Conboy, Kieran; Fitzgerald, Brian; Morgan, Lorraine; Wang, Xiaofeng (eds.). Agile Processes in Software Engineering and Extreme Programming . Lecture Notes in Business Information Processing. Vol. 9. Berlin, Heidelberg: Springer . pp. 94– 103. doi : 10.1007/978-3-540-68255-4_10 . ISBN 978-3-540-68255-4 。↑ コンラッド・ワイサート、「ウォーターフォール方式:そんなものは存在しない!」 ↑ Lineberger, Rob (2024年4月25日). Inheriting Agile: The IT Practitioner's Guide to Managing Software Development in a Post-Agile World . Durham, NC: Sandprint Press. p. 36. ISBN 9798989149605 。↑ Bell, Thomas E.、および TA Thayer。「ソフトウェア要件:本当に問題なのか?」 第 2 回国際ソフトウェア工学会議議事録。IEEE Computer Society Press、1976 年。 1 2 DOD-STD-2167 - 軍事規格 : 防衛システムソフトウェア開発 。米国国防総省。1985年6月4日。p. 11。 ↑ 「軍事標準防衛システムソフトウェア開発」 (PDF ) ↑ 米国司法省 (2003).情報資源管理第 1 章 はじめに。 ↑ Everatt, GD; McLeod, R Jr (2007). 「第2章:ソフトウェア開発ライフサイクル」 . ソフトウェアテスト:ソフトウェア開発ライフサイクル全体にわたるテスト . John Wiley & Sons. pp. 29–58 . ISBN 9780470146347 。↑ Kay, Russell (2002 年 5 月 14 日). "QuickStudy: システム開発ライフサイクル" . ComputerWorld . ↑ Taylor, GD (2008). 『ロジスティクス工学入門』 . CRC Press. pp. 12.6 – 12.18 . ISBN 9781420088571 。↑ 「第5章」。 情報システム管理と監査 (PDF) 。インド勅許会計士協会。2013年8月。p. 5.28。 ↑ Shah, Kazim. "ソフトウェア開発ライフサイクルの保守フェーズ" . primetechnologiesglobal . kazim shah . 2024年 5月12日 取得 . ↑ Radack, S. (nd). "システム開発ライフサイクル (SDLC)" (PDF) . 国立標準技術研究所。 1 2 McConnell, Steve (1996). Rapid Development: Taming Wild Software Schedules . Microsoft Press. ISBN 1-55615-900-5 。↑ 「ウォーターフォール型ソフトウェア開発モデル」 。Oxagile 。 2014年2月5日。 2014年 8月11日 取得 。 ↑ Arcisphere technologies (2012). "チュートリアル: ソフトウェア開発ライフサイクル (SDLC)" (PDF) . 2012年11月13日 取得 。 ↑ ヒューギー、ダグラス (2009)。 「従来のシステム分析と設計とアジャイル手法の比較」 。ミズーリ大学セントルイス校 。 2014年 8月11日 取得。 ↑ Parnas, David L.; Clements, Paul C. (1986). "合理的な設計プロセス: それを偽装する方法と理由" (PDF) . IEEE Transactions on Software Engineering . 12 (2): 251– 257. Bibcode : 1986ITSEn..12..251P . doi : 10.1109/TSE.1986.6312940 . S2CID 5838439 . 2011-03-21 に取得. ↑ マコーネル、スティーブ (2004). Code Complete、第2版 . マイクロソフトプレス. ISBN 1-55615-484-4 。↑エンスメンガー 、 ネイサン( 2010)。 『コンピュータボーイズが世界を席巻する 』MIT Press、 p.42。ISBN 978-0-262-05093-7 。↑ Larman, Craig; Basili, Victir (2003). "反復的および漸進的開発: 簡単な歴史" . IEEE Computer . 36 (6) (6 月 版): 47– 56. Bibcode : 2003Compr..36f..47L . doi : 10.1109/MC.2003.1204375 . S2CID 9240477 . ↑ 「方法論:設計方法」 。 2016年3月3日に オリジナル からアーカイブ済み 。 2018年5月16日 に取得。 ↑ Saravanos, Antonios (2026-03-20). "ウォーターフォールモデルの簡潔な歴史:過去、現在、そして未来". 2025年第18回国際コンピュータ科学・情報技術会議議事録 . ニューヨーク州ニューヨーク、米国:Association for Computing Machinery. pp. 138–143 . doi : 10.1145/3783862.3783879 . ISBN 979-8-4007-1858-8 。
外部リンク ソフトウェア開発におけるウォーターフォールモデルの長所と短所を理解する プロジェクトライフサイクルモデル:その違いと使用タイミング フィリップ・クルーテン 著『RUPと共に滝を越える』CSCとIBM Rationalが提携し、C-RUPを提供して迅速なビジネス変革を支援 c2:滝