Modular systems
Modular systems are software systems that are designed as a collection of separate modules or components, each responsible for a specific functionality. These modules are designed to be independent of each other, making it easier to develop, test, maintain and modify the software system.
Cohesion:
Cohesion refers to the degree to which the elements within a module are related to each other.
There are several types of cohesion:
1. Functional cohesion: The elements within a module are related because they all contribute to a single, well-defined function or task.
2. Sequential cohesion: The elements within a module are related because they are executed sequentially to accomplish a specific task.
3. Communicational cohesion: The elements within a module are related because they all operate on the same data or communicate with each other to accomplish a specific task.
4. Procedural cohesion: The elements within a module are related because they all contribute to a specific procedural task or activity.
5. Temporal cohesion: The elements within a module are related because they are all executed at the same time or within the same time frame.
Coupling:
Coupling refers to the degree to which modules in a system depend on each other.
There are several types of coupling:
1. Content coupling: Modules are directly dependent on each other through shared data or code.
2. Common coupling: Modules are dependent on a common data structure or global variable.
3. Control coupling: One module controls the flow of execution of another module.
4. Stamp coupling: Modules are dependent on a subset of data items from another module.
5. Data coupling: Modules are dependent on each other through a parameter or return value.
6. Message coupling: Modules are dependent on each other through a message passing mechanism.