Software Design

Modular and Layered Design

In the previous chapter of this software engineering tutorial, we have already informed that a good software design should be modular and layered


Both modular and layered designs are easily understandable.

To make a design understandable, following steps may be taken:

  • meaningful names should be assigned to various components,
  • make good use of principles of decomposition and abstraction to ease the design

Modular software design

Modular software design is one in which the original problem statement is broken down into several modules. Modular nature is the basic characteristics of a good software design. When decomposed, each module has its own functionality to take care of. And each module will interact with other modules to form the complete software system.


While decomposing the problem statement into modules, it should be ensured that each modules should be designed such that they are functionally independent. There should be very little or no interactions with other modules involved. This would decrease the dependency of one module on other module. This would also help each module to be understood seperately.  


A software design is said to be modular if the different modules have high cohesion and their inter-module couplings are low.


Layered software design

A layered software design is one in which when the call relationships among different modules are represented graphically, it would result in a tree-like diagram with clear layering. In the layered design, the modules are arranged in the hierarchy of layers. 


In such design, a module can only invoke functions of the modules in the layer immediately below it. The higher layer module can be considered similar to management who can invoke lower layer module to get a certain task done.

Layered design makes the work easily understandable, since the layered design easily reflect the relationships among different layers and clears which layer invokes the other layers. This is also helpful in debugging in case of error. When failure is detected then it is obvious that only lower layer can possibly be source of the error.


In next chapters of the tutorial, we will learn about cohesion and coupling. Both are very important concept in software design.

Please Share this page
Views : 39
Like every other website we use cookies. By using our site you acknowledge that you have read and understand our Cookie Policy, Privacy Policy, and our Terms of Service. Learn more Got it!