The problem with the approach you just described is that it's missing analysis.
It's not missing analysis, it's missing the analysis phase.
Instead of working against human nature by tediously building use cases, data flow diagrams, logic flows, process breakdowns, etc., etc., etc. before doing any development, analysis, design, development, testing, and deployment are tightly coupled in many small iterations. That's the whole point.