Top-Down vs Bottom-Up


In the early days of software methodology there was a raging debate on whether top-down versus bottom-up practices were best. A the time I never understood why it was a debate. I thought of the two approaches as synergistic. In simple terms we do top-down design and bottom-up development.

This is where agile, as it is most commonly practiced, is today. Development teams are embracing agile practices. Since a core part of agile is a working system every iteration, agile leans heavily towards a bottom-up approach. BDD and TDD are just the life-lines to the design.

For many projects today everything else is both top-down and waterfall. A company creates a tender document and bids on the tender. If won, the resulting document goes to analysts and architects. Only afterwards do we hand it to an agile team to implement.

I am proposing that we unify the SDLC by making all parts agile. Until we can convince clients that the bid/tender/accept process is not in their best interest, the SDLC is two time-separated sections.

So, take design. If we have iterations each of which must produce results, does that make agile methodology a bottom-up approach for a top-down process?