The reverse of top-down design is a technique where the easiest problems are solved and then the solutions are combined to solve problems of higher order. For example, one would whip up code to read one byte from a communications port and then he would improve the whole communications program.
Bottom up design is quite common among single programmers using languages such as Visual Basic, LISP, or FORTH and is a good way of coming up with a quick application or even a mock up of an application. However, for large team projects, the top-down design is often compulsory; nevertheless, bottom-up design is still possible.
The bottom-up design approach is particularly valuable for complex projects and offers several advantages:The bottom-up design approach is of great use if the project is big and intricate is beneficial in several ways which are as follows:
Bottom-up design is an important approach in software architecture and system design and it is quite useful in projects that need a lot of scalability and flexibility. Whereas in top down approach the whole system is developed from top to bottom, in bottom up approach, the basic components or problems are tackled individually first, and then solutions are built up from these components or problems. This approach is more frequent in programming methodologies such as modular programming and Component-Based Development in which each module or component is separately designed, implemented, tested and debugged before being incorporated in the whole system.
Another advantage of the bottom-up design is that it is easy to scale up the design. It is, therefore, possible that through the creation of simple and more controlled components, developers can then construct a more extensive and complicated system, checking each component as they progress. This also helps to improve code reusability and code maintainability because any single module can be used in other areas of the system or in other system. Also, bottom up approach is easier to modify in case of changes to be made and this is due to its flexibility. This is because the changes can be made on the individual components of the system and not the entire system therefore supporting the development of a moreflexible system.
The bottom-up design also helps in increasing the efficacy of cooperation as well as innovation in the development teams. This way, the team members can focus on some parts and maybe experiment and implement changes in their design and concepts. Since each module is created with specific specifications and every program passes a debugging check before being integrated into the final product, the final product shall have a lower probability of having serious bugs or low quality. This means that bottom up design not only is cheap since problems are identified and solved before they cause damage but also is user oriented since each component can be designed to fit the user’s needs and thus making the final product more user friendly.