There is a very true post at Agile Business Coach blog about Waterfall methodology.
“Traditional Waterfall Methodologies destroy options by making decisions earlier than they need to be made.”
I think this phrase emphasize the main weakness of Waterfall. Sure, Waterfall has many weak points, and it is obvious for most experienced developers that Waterfall is just wrong choice for the vast majority of projects. Risk management in waterfall projects doesn’t help. Actually, there is too little space for risk management. You can’t step back and do some rework. You have a Plan. You have a Signed&Approved Spec. You can change them, but very often these changes take a lot of time. And time is one of the most important constraints in the project.
Waterfall is not agile, thus I don’t like it. At all.
However, I know that Waterfall could be used for certain types of projects. It can be used successfully for small, repeatable projects, where surprises are rare. But even for these projects iterative approach is more suitable. It’s just a common sense…