I’m working on a project that is the epitome of BDUF. After more than a 4 week effort into an end-all be-all requirements document, the technical design phase has started. This requires the complete application design to be laid out with textual documents, Sequence Diagrams, Excel spreadsheets, class diagrams and countless other artifacts.
This is so ridiculous, as we all know that the second development begins most of those docs are out of date. I don’t mind doing UML docs, a little at a time, but doing all of them at once really sucks. I asked if there would be use cases, which I find to be the most useful artifact of all, but it seems they are meshed somewhere in the 70 page design document.
For those companies not quite willing to jump into a pure Agile methodology, may I suggest a hybrid between Agile and Waterfall.
- Define enough requirements to get the project going, i.e. most important features
- Design for those features
- Approve design
- Begin requirements on next phase during development
- Review development
- Make changes as necessary
- Start over
This is sort of like a bunch of smaller water falls, but at least there is some time to react to changes from the previous iteration, which could take any amount of time. It also breaks up the mind numbing Visio UML tasks so more attention can be focused to them. Whose to say that one week into the project, a better flow or object model won’t be discovered, invalidating all the sequence and class diagrams developed?
UPDATE (6/8/2009): Jeff Palermo wrote on this topic with some insights into how Headspring does Agile.