TL;DR

ソフトウェア開発の工程を順番に進め、前の工程を終えてから次の工程を始める開発モデル。各工程の結果が後の工程を決める。

仕組み

Wikipedia によると、典型的には、予備分析、要件定義、設計、開発、結合とテスト、受け入れと導入、保守、評価、廃棄の順に進む。アジャイルソフトウェア開発と比べると、反復が少なく柔軟性に欠ける進め方である。

1970 年の Winston Royce の論文は、この工程を初めて詳しく図にしたものとしてよく引用される。ただし Royce 自身は、テストを最後にだけ行うことを「リスクが高く、失敗を招く」と批判していた。

注意点

Wikipedia によると、顧客は動くソフトウェアを見るまで正確な要件が分からないことが多い。後から変更が出ると、設計、開発、テストのやり直しが必要になり、費用が膨らむ。実装を進めて初めて見つかる問題も多い。A Philosophy of Software Design も、大規模なソフトウェアを事前にすべて見通すことはできないとして、設計を初期に集中させる進め方を批判している。

一方で、要件が安定していて範囲が明確なプロジェクトには今も向いており、アジャイルと組み合わせたハイブリッドな手法もある。

関連

出典