Unfortunately, long-term waterfall projects just don't cut it any more. By the time you're done (are you ever "done???"), if you didn't allow scope creep, then what you've produced probably isn't relevant anymore!
I've always lobbied for more, smaller, implementations preferring to deliver the most requested features as soon as possible to the end-user, but it's not always possible like when you're completely redesigning an interface.
Of course, I can't help but laugh at trying this with the Defense Contractor I worked at back in the early 80's. To make a code change you had to:
1) Checkout the printed code from the facility librarian,
2) Mark the code up in red ink,
3) Make SEVEN (yes, 7!) copies to distribute for comment,
4) Attempt to incorporate all feedback with more red ink,
5) Perform steps 3 & 4 until there were no more comments,
6) Actually code & test (with any major changes going through steps 3 & 4 again),
7) Send the code to the testing department,
8) Send the code to the CMQA Tech. Lead (me) to see if it plays well with the rest of the system,
9) Send the code to the Architecture Group for actual installation and, finally,
10) Check in a printout of the final code to the facility librarian.
You wouldn't believe how long even a one line change took!