ウォーターフォール型開発が失敗する理由

ウォーターフォール型開発が失敗する最大の理由は、コミニュケーションの難しさにある。
開発が成功するには意図を正しく伝える必要があるが、意図が正しく伝わっているか確認するには出来上がったもので確認するしかない。仕様書に意図が正しく反映されている保証はない。「プログラムは、意図した通りに動くのではなく、書いた通りに動く」というように書いた内容と意図した内容とを厳密に一致させることは極めて困難である。書いた内容と意図した内容とが仮に一致したとしても、その仕様書を正しく読み取ることもまた同じくらい困難である。

ウォーターフォール」という言葉自体が、コミニュケーションの難しさをあらわしている。下記のページに書かれているように、ウォーターフォール型開発のもととなったのは Winston W. Royce の "Managing the Development of Large Software Systems" という論文であるが、これにはフィードバックの必要性が書かれているし、「ウォーターフォール」という言葉も使われていない。悪魔の見えざる手が、「ウォーターフォール」という言葉を蔓延させたのである。この事実が何より的確にウォーターフォール型開発が失敗しやすいことを示しているように思う。