There are basically those two approaches to designing a system. What are the advantages and disadvantages? When should I use which? Should I combine those approaches? How?
Roughly speaking, top-down comes from a decomposition of the problem space into sub-problems, while bottom-up comes from organizing parts of the solution space into larger chunks.
To be able to effectively use top-down, you need a very solid understanding of the problem, i.e. have solid requirements in hand. For bottom-up to be effective, you need to be solving a 'standard' problem whose pieces are well-known, but where the exact assembly might need some experimentation before you get it right.
You should read Parnas' brilliant paper A rational design process and how to fake it for much more on this issue. The answer is: use both, as appropriate. When you're done, make it all look like (in your specifications, design documentation and user documentation) as if you had done everything top-down.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With