Duplicate: Design & Coding - top to bottom or bottom to top?
I think I have found in my recent experience that I design software differently than most of my peers. I tend to take the incremental bottom up approach after gathering enough requirements to get a high level idea of the components in the software.
So, in the case of designing an interface that would support multiple concrete classes...I would take a look at what is common to each specific concrete candidate, asking how would I get the job done for each concrete (while thinking about being robust for future concrete). Then I take that set of commonalities and make an interface, which I believe is a "bottom-up" approach.
In the case of a top down approach I would believe that the designer would look at the client side of the interface and how a client would interact with the interface and then try to implement the concrete classes.
So I can see advantages and disadvantages of top-down / bottom-up. I just would like to know which is more efficient and provides a better result based off of your previous experiences?
Note: I'm not talking about development methodology (agile, waterfall, etc.), I'm talking about design approaches.
I believe that with good software designers (and in my opinion all software developers should also be software designers at some level), the magic is in being able to do top-down and bottom-up simultaneously.
What I was "schooled" to do by my mentors is start by very brief top-down to understand the entities involved, then move to bottom-up to figure out the basic elements I want to create, then to back up and see how I can go one level down, knowing what I know about the results of my bottom up, and so forth until "they meet in the middle".
Hope that helps.
It depends on the problem.
If you know what the problem is [allow customers to see online bank statements], and how to solve it then use a bottom-up approach. Analyse each step, group these together by area and develop a solution. Project plan based.
If you have a vague idea of the problem [allow field agents to communicate via a distributed offline/online wiki] then a top-down approach would work better. Look at the over all problem and what steps can be used to solve them. Trial and error. Agile.
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