Waterfall SDLC is broken

From Slashdot | More Than Coding Errors Behind Bad Software

Re:Waterfall (Score:5, Insightful)

by radish (98371) on Monday January 12, @02:52PM (#26421813)
Homepage

The waterfall is broken, seriously. I’m paraphrasing from an excellent talk I attended a while back, but here goes.

For a typical waterfall you’re doing roughly these steps: Requirements Analysis, Design, Implementation, Testing, Maintenance. So let’s start at the beginning…requirements. So off you go notebook in hand to get some requirements. When are you done? How do you know you got them all? Hint: you will never have them all, and they will keep changing. But you have to stop at some point so you can move onto design, so when do we stop? Typically it’s when we get to the end of the week/month/year allocated on the project plan. Awesome. Maybe we’ve got 50% of the reqs done, maybe not. It’ll be a long time until we find out for sure…

Next up – Design! Woot, this bit is fun. So we crank up Rose or whatever and get to work. But when do we stop? Well again, that’s tough. Because I don’t know about you but I can design forever, getting better and better, more and more modular, more and more generic, until the whole thing has flipped itself inside out. So we stop when it’s “good enough” – according to who? Or more likely, it’s now 1 week to delivery and no-one’s written any code yet so we better stop designing!

Implementation time. Well at least this time we know when we’re done! We’re up against it time wise though, because we did such a good job on Reqs & Design. Let’s pull some all nighters and get stuff churned out pronto, who cares how good it is, no time for that now. That lovely, expensive design gets pushed aside.

No time to test…gotta hit the release date.

Sure this isn’t the waterfall model as published in the text books, but it’s how it works (fails) in real life. And the text books specifically don’t say how to fix the problems inherent in the first two stages. What to do instead? Small, incremental feature based development. Gather requirements, assign costs to them, ask the sponsors to pick a few, implement & test the chosen features, repeat until out of time or money.

[Slashdot] [Digg] [Reddit] [del.icio.us] [Facebook] [Technorati] [Google] [StumbleUpon]

Leave a Reply