I agree on every thing ... the pros and cons and all but the fact is that the real projects in india we very rarely follow this deep documented pattern..
The Burst production technique we call it... No Analysis or Design phases .. just raw coding.. (works fine for lone coders

)the trick is implementing the feasible requirements one at a time and patching a proto from the build code.. Release the proto on that requirement to the customer on the testing of that requirement proceed on to another part of the project which is less dependent on the currently tested code..
I did it for an nice inventory management project.. and AI based vendor selection... i developed a proto for data entry and mantainance for the client and when the client is busy with that proto populating the database .. i turn to the neural network that is to be trained on the process.. logs are very use full as when that proto is taken away and then replaced,the log can restore and provide valuable info on incoming improved proto.. This is not Prototype aproach as there is no such thing as the design here... when we use some nice IDE like VS then the job of design is nearly an act of beautification.. and for buisness consultancy projects like vender selector.. Inventory and other such projects the Burst production method works beautifully.. try it for a large project like a look-alike-GNOME or UI for DOS then this is very easy to use... use all the tricks
Like Core Engine with Waterfall or Spiral and all the other with Burst Production..