Top-down Approach Vs Bottom-up Approach
Last updated on 30th Sep 2020, Artciles, Blog
When talking in terms of computer science and programming, the algorithms we use to solve complex problems in a systematic and controlled way are designed on the basis of two approaches that is Top-down and Bottom-up approach. The ideology behind top-down approach is, a bigger problem is divided into some smaller sub-problems called modules, these modules are then solved individually and then integrated together to get the complete solution to the problem. In bottom-up approach on the other hand, the process starts with elementary modules and then combining together to get the desired result. Let us now quickly see in brief what these two approaches has to offer, how they differ from each other and what are the similarities.
Subscribe For Free Demo[contact-form-7 404 "Not Found"]
Definition of Top-down Approach
The top-down approach basically divides a complex problem or algorithm into multiple smaller parts (modules). These modules are further decomposed until the resulting module is the fundamental program essentially understood and can not be further decomposed. After achieving a certain level of modularity, the decomposition of modules is ceased. The top-down approach is the stepwise process of breaking the large program module into simpler and smaller modules to organise and code the program in an efficient way. The flow of control in this approach is always in the downward direction. The top-down approach is implemented in the “C” programming language by using functions.
Thus, the top-down method begins with abstract design and then sequentially this design is refined to create more concrete levels until there is no requirement of additional refinement.
Definition of Bottom-up Approach
The bottom-up approach works in just the opposite manner to the top-down approach. Initially, it includes the designing of the most fundamental parts which are then combined to make the higher level module. This integration of submodules and modules into the higher level module is repeatedly performed until the required complete algorithm is obtained.
Bottom-up approach functions with layers of abstraction. The primary application of the bottom-up approach is testing as each fundamental module is first tested before merging it to the bigger one. The testing is accomplished using certain low-level functions.
The Pros and Cons of a Top-Down Approach
Top-down project management remains very common, and it is well suited to projects in which there are few unfamiliar tasks and few unique challenges to be met. Its pros include:
- Straightforward planning phase because decision-making is centralized
- Expectations are unified while roles and responsibilities are clear
However, many organizations have begun to find that the top-down approach has its limitations in some modern projects. Possible cons include:
- Demoralizing and demotivating team culture in which members have little control over their responsibilities and methods
- Risk of surprises and issues down the road due to gaps in leaders’ expectations and team members’ capacities
|BASIS FOR COMPARISON||TOP-DOWN APPROACH||BOTTOM-UP APPROACH|
|Basic||Breaks the massive problem into smaller subproblems.||Solves the fundamental low-level problem and integrates them into a larger one.|
|Process||Submodules are solitarily analysed.||Examine what data is to be encapsulated, and implies the concept of information hiding.|
|Communication||Not required in the top-down approach.||Needs a specific amount of communication.|
|Redundancy||Contain redundant information.||Redundancy can be eliminated.|
|Programming languages||Structure/procedural oriented programming languages (i.e. C) follows the top-down approach.||Object-oriented programming languages (like C++, Java, etc.) follows the bottom-up approach.|
|Mainly used in||Module documentation, test case creation, code implementation and debugging.||Testing|
Key Differences Between Top-down and Bottom-up Approach
- Top-down approach decomposes the large task into smaller subtasks whereas bottom-up approach first chooses to solve the different fundamental parts of the task directly then combine those parts into a whole program.
- Each submodule is separately processed in a top-down approach. As against, bottom-up approach implements the concept of the information hiding by examining the data to be encapsulated.
- The different modules in top-down approach don’t require much communication. On the contrary, the bottom-up approach needs interaction between the separate fundamental modules to combine them later.
- Top-down approach can produce redundancy while bottom-up approach does not include redundant information.
- The procedural programming languages such as Fortran, COBOL and C follows a top-down approach. In contrast, object-oriented programming languages like C++, Java, C#, Perl, Python abides the bottom-up approach.
- Bottom-up approach is priorly used in testing. Conversely, the top-down approach is utilized in module documentation, test case creation, debugging, etcetera.
The top-down approach and bottom-up approach are the algorithm design methods where top-down is a conventional approach which decomposes the system from high-level specification to low-level specification. On the other hand, the bottom-up approach is more efficient and works in an inverse manner where the primitive components are designed at first then proceeded to the higher level.
The top-down approach emphasizes on the isolation of the submodules (signifies the low coupling between the modules) while ignores the identification of communication and reusability concept. While in the bottom-up approach, information hiding and reusability are the prominent factors.
Are you looking training with Right Jobs?Contact Us
- How to Build a Career in Project Management?
- How to Get Project Management Experience for PMP Certification
- Risk Assessment in Project Management
- MS Project Tutorial
- Project Management Interview Questions and Answers
- What is Dimension Reduction? | Know the techniques
- Difference between Data Lake vs Data Warehouse: A Complete Guide For Beginners with Best Practices
- What is Dimension Reduction? | Know the techniques
- What does the Yield keyword do and How to use Yield in python ? [ OverView ]
- Agile Sprint Planning | Everything You Need to Know