As a beginner programmer blindly trying to figure things out from scratch, I had only an abstract understanding of the top-down approach and did not truly understand it. Whenever I tried top-down and encountered an unfamiliar word or term, I ended up straying from the essence of the problem more than once while trying to understand it. Therefore, to resolve this issue, I want to organize and understand the top-down and bottom-up approaches more easily.
If there are any incorrect or problematic parts, please feel free to leave feedback in the comments at any time!
minsing-sik One-Line Summary
1. top-down
Look at a highly abstract concept and define the other conceptual elements by breaking it down step by step.
2. bottom up
Start by understanding concrete component concepts, then assemble them to understand higher-level concepts.
Top-Down
the top-down approach starts with a highly abstract concept. If we say that we are flushing a toilet, we begin the design with “pressing the button makes the water go down.” Press the button -> lever moves -> lever principle -> toilet flapper opens -> pre-filled water flows … This is the process of defining other specific design elements like these.
In other words, the top-down approach starts with something abstract and progressively increases the level of detail.
Bottom-Up
This is an approach that starts with concrete elements, assembles them step by step, and works toward the general. You design the process as follows: fill the tank with water, open the flapper, use a lever to open the flapper, and press the toilet button to make the water go down.
In other words, concrete elements -> general concept
For more details about the advantages, disadvantages, and uses, see the link. Source