Top-down approach (Previously)
Start with a high-level view of the system, then break it down into smaller, more manageable subcomponents (functions)
- Disadvantages:
- You can only fully test the system after integration, which may lead to late discovery of compatibility issues
- If you want to modify a component, you would have to check all the other code as well
- diagram
Bottom-Up approach (Mostly OOP)
Start by defining the system’s individual parts first. Once the individual components are detailed, they are integrated into larger modules
- OOP
- diagram
- Reusability of low-level components, focused problem solving, and increased modularity
- easier to test ⇒ just test individual components
- Disadvantages:
- It’s harder to visualize the full system architecture from the beginning
- Without a top-level plan, it may be unclear what exactly each component should do
- More oriented towards human understanding, so sometimes you’ll need to sacrifice speed or storage efficiency
- Use for big projects, or projects with big data
- X recommended for programs that need to maximize efficiency (like smart watches)