When designing a system synthetically (such as an electronic machinery, a biological enzyme or a building), the system could be designed by two broad ways. The first way would be to design the complete system using the known theories, and use the system, as it is designed, in the real conditions. An alternative way would be to design the different components of the system separately, and test each component in separate conditions. Modular design, or “modularity in design”, is an approach that subdivides a system into smaller parts (modules or skids) that can be independently created and then used in different systems to drive multiple functionalities. A modular system can be characterized by the following:
- (1) Functional partitioning into discrete scalable, reusable modules consisting of isolated, self-contained functional elements
- (2) Rigorous use of well-defined modular interfaces, including object-oriented descriptions of module functionality
- (3) Ease of change to achieve technology transparency and, to the extent possible, make use of industry standards for key interfaces.
Besides reduction in cost (due to lesser customization, and less learning time), and flexibility in design, modularity offers other benefits such as augmentation (adding new solution by merely plugging in a new module), and exclusion. Examples of modular systems are cars, computers,process systems, and high rise buildings. Earlier examples include looms, railroad signaling systems, telephone exchanges, pipe organs and electric power distribution systems. Computers use modularity to overcome changing customer demands and to make the manufacturing process more adaptive to change (see modular programming). Modular design is an attempt to combine the advant
ges of standardization (high volume normally equals low manufacturing costs) with those of customization. A downside to modularity (and this depends on the extent of modularity) is that modular systems are not optimized for performance. This is usually due to the cost of putting up interfaces between modules