Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Top Down v. Bottom Up design approach [duplicate]

Tags:

architecture

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.

like image 578
Chap Avatar asked May 13 '09 14:05

Chap


2 Answers

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.

like image 174
Roee Adler Avatar answered Oct 05 '22 06:10

Roee Adler


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.

like image 31
Dead account Avatar answered Oct 05 '22 05:10

Dead account