Top-Down Design
Bottom-up design begins with known problems rather than the overall problem as a single starting point.
When a Software Problem Feels Too Big
Many software projects start with a single overall goal that seems too large to solve all at once. A designer looking at that goal may not know where to begin, and the whole problem can feel like one tangled mass. One practical response is to stop looking at the whole problem first and instead look for parts of it that are already understood.
What do you think happens?
A team is asked to build a large application. Before writing anything, they list the smaller tasks they already know how to solve, and they look for existing reusable software components that handle some of those tasks. Which design approach is this?
Reveal answer
Bottom-up design
The identifying clue is that the team starts with known solvable problems and available or reusable solutions, then works upward toward the overall application.
Starting From Problems You Already Know
Bottom-up design begins with known problems rather than the overall problem as a single starting point. The designer first locates problems that are already understood, meaning problems the designer knows how to solve. These known problems are the starting points of the design.
- 1Locate problems that are already understood.
- 2Use available solutions or reusable software components where they apply.
- 3Work upward by considering how those pieces contribute to the overall solution.
Notice the order of these steps. The designer does not begin by describing the entire application. The designer begins with the pieces, then reasons upward. The source describes this as a sequence of reasoning steps, not as a fixed recipe with a required number of components.
Defining Bottom-Up Design
Bottom-up design is an approach to software design that begins with known problems, uses known solutions or reusable software components as building pieces, and moves upward from those pieces toward a solution for the overall problem.
The defining direction is upward. The design reasoning moves from the parts toward the whole, which is the opposite of starting with the overall problem and breaking it downward.
The right-hand column is included for contrast. The source describes top-down reasoning only as considering the larger problem, so the labels for that column stay close to that description. The left-hand column is the one this article is built around: the design starts from known pieces and works toward the whole.
Combining Separate Solutions
Once known problems have been solved, their solutions are not meant to stay separate. The key step in bottom-up design is to consider how each piece contributes to the overall solution. Each solved part becomes a contribution, and the contributions are assembled into a larger whole.
The three pieces in this figure are an invented illustration of the pattern, not a required design. Any number of pieces could be used. What matters is the direction: each piece is built or reused first, and then each one is connected to the overall application.
Tracing a Bottom-Up Design Step by Step
Building a Small Reporting Tool Upward
A designer must build a tool that reads a list of records, orders them, and produces a summary report. The whole tool feels too large to plan in one pass. Apply bottom-up reasoning to decide where the design begins and how the pieces combine.
- 1Locate known problems
The designer notices three parts are understood: reading records, ordering records, and writing a summary. These become the starting points.
- 2Use reusable solutions where they apply
An existing ordering routine is available as a reusable component, so the designer uses it instead of rebuilding it.
- 3Treat each result as a contribution
The output of the reader feeds the sorter, and the sorted output feeds the report writer. Each result is a contribution to the whole.
- 4Work upward to the overall solution
With the three parts connected, the designer checks that together they produce the complete tool the problem asked for.
The overall tool is reached by moving upward from known pieces. The design began with parts the designer already understood, not with a single plan for the whole.
Bottom-Up Working Alongside Top-Down
Bottom-up design does not have to be used alone. In practice it is often combined with top-down design. A design can use top-down reasoning to consider the larger problem while also using bottom-up reasoning to build upward from problems and components that are already known. The two approaches are complementary: one looks at the whole, the other builds from the parts.
The figure shows one way to picture the meeting point. The top-down view of the overall problem helps the designer see what needs to be solved. The bottom-up work supplies known solutions and reusable components. The combined solution is where the two paths converge. The source does not give further detail on how top-down decomposition is carried out, so this article does not describe it beyond that role.
Mistakes Beginners Make With This Approach
Common mistake Starting with pieces that are not actually understood
Why it failsBottom-up design begins with known problems. A piece the designer cannot yet solve is not a reliable starting point.
Do this insteadBegin with problems you already know how to solve, and leave unfamiliar parts for later analysis.
Common mistake Rebuilding a solution that is already available
Why it failsThe approach uses available solutions and reusable software components where they apply.
Do this insteadBefore building a piece, check whether a suitable solution or reusable component already exists.
Common mistake Collecting solved pieces without connecting them
Why it failsThe reasoning must move upward, so each piece must be considered as a contribution to the overall solution.
Do this insteadFor each solved piece, state which larger part of the solution it contributes to.
Common mistake Treating bottom-up design as the only allowed approach
Why it failsThe source states that bottom-up design is often combined with top-down design.
Do this insteadUse top-down reasoning to view the larger problem alongside bottom-up construction of the parts.
Tracing the Reasoning on Your Own
A student must build a small quiz program. The student already knows how to read a question from the user, how to check whether an answer is correct, and how to count the score. A reusable component for displaying a menu is also available. Describe the bottom-up order of the design: which known problems are the starting points, which reusable component is used, and how the pieces combine into the overall quiz program.
Hints
- Identify which parts the student already understands. Those are the starting points.
- Ask where the reusable menu component fits, and which pieces it feeds.
- Finish by describing how the pieces contribute to the overall quiz program.
Key Takeaways
- Bottom-up design begins with known problems rather than the overall problem as a single starting point.
- Known solutions and reusable software components serve as building pieces, and the design reasoning moves upward from those pieces toward an overall solution.
- Separate solved pieces are combined by considering how each one contributes to the overall solution.
- Bottom-up design is often used together with top-down design, which considers the larger problem while bottom-up reasoning builds from known parts.