Loading, please wait...

Design Approaches

A complex system may be divided into smaller units called modules. The advantage of modularity is that it allows the principle of separation of concerns to be applied into two phases:

When dealing with detail of each module in isolation and when dealing with overall characteristics of all modules and their relationships in order to integrate them into a system. Modularity enhances design clarity, which in turn eases implementation, debugging, testing, documenting, and maintenance of the product.

 

A system consists of components, which have components of their own. Indeed a system is a hierarchy of components. The highest level component corresponds to the total system. To design such hierarchies there are two possible approaches.

  • Top-down approach
  • Bottom-up approach



Top-Down Approach

A Top-down design approach starts by identifying the major components of the system or programs, decomposing them into their lower-level components and iterating until the desired level of complexity is achieved.

Top-down design method takes the form of stepwise refinement. In this, we start with the topmost module and incrementally add modules that it calls.

Thus, in top-down approach we start from an abstract design. In each step, design can be implemented directly.



Bottom-Up Approach

A Bottom-up design approaches starts with designing the most basic or primitive components and proceeds to higher-level components. Bottom-up method works with layers of abstraction. Starting from the very bottom, operations that provide a layer of abstraction are implemented.

The operations layer are then used to implement more powerful operations and still higher layer of abstraction, until the stage is reached where the operations supported by the layer are those desired by the system.