Cohesion and Coupling Difference
Difference between Cohesion and Coupling in Tabular Form
- Cohesion is an indication of the relative functional strength of a module. A cohesive module performs a single task, requiring little interaction with other components in other parts of a program. Stated simply, a cohesive module should (ideally) do just one thing. Cohesion is a measure of the functional strength of a module. A module having high cohesion and low coupling is said to be functionally independent of other modules. By the term functional independence, we mean that a cohesive module performs a single task or function.
- Coupling is an indication of the relative interdependence among modules. Coupling depends on the interface complexity between modules, the point at which entry or reference is made to a module, and what data pass across the interface. A module having high cohesion and low coupling is said to be functionally independent of other modules. If two modules interchange large amounts of data, then they are highly interdependent. The degree of coupling between two modules depends on their interface complexity.
|Cohesion is the indication of the relationship within the module.||Coupling is the indication of the relationships between modules.|
|Cohesion shows the module’s relative functional strength.||Coupling shows relative independence among the modules.|
|Cohesion is a degree (quality) to which a / module focuses on a single thing.||Coupling is a degree to which a component/module is connected to the other modules.|
|While designing you should strive for high cohesion i.e. a cohesive component/ module focus on a single task (i.e., single-mindedness) with little interaction with other modules of the system.||While designing you should strive for low coupling i.e. dependency between modules should be less.|
|Cohesion is the kind of natural extension of data hiding, for example, the class having all members visible with a package having default visibility.||Making private fields, private methods and nonpublic classes provide loose coupling.|
|Cohesion is Intra -Module Concept.||Coupling is the Inter-Module Concept.|
- A module is said to have coincidental cohesion if it performs a set of tasks that relate to each other very loosely, if at all.
- In this case, the module contains a random collection of functions. It is likely that the functions have been put in the module out of pure coincidence without any thought or design.
- For example, in a transaction processing system (TPS), the get-input, print-error, and summarize- members
- Functions are grouped into one module.
- A module is said to be logically cohesive, if all elements of the module perform similar operations, e.g. error handling, data input, data output, etc.
- An example of logical cohesion is the case where a set of print functions generating different output reports are arranged into a single module.
- When a module contains functions that are related by the fact that all the functions must be executed in the same time span, the module is said to exhibit temporal cohesion.
- The set of functions responsible for initialization, start-up, a shutdown of some process, etc. exhibit temporal cohesion.
- A module is said to possess procedural cohesion, if the set of functions of the module are all part of a procedure (algorithm) in which certain sequence of steps have to be carried out for achieving an objective, e.g. the algorithm for decoding a message.
- A module is said to have communicational cohesion, if all functions of the module refer to or update the same data structure, e.g. the set of functions defined on an array or a stack.
- A module is said to possess sequential cohesion if the elements of a module form the parts of the sequence, where the output from one element of the sequence is input to the next.
- For example, in a TPS, the get-input, validate-input, sort-input functions are grouped into one module.
- Functional cohesion is said to exist if different elements of a module cooperate to achieve a single function. For example, a module containing all the functions required to manage employees’ pay-roll exhibits functional cohesion.
- Suppose a module exhibits functional cohesion and we are asked to describe what the module does, then we would be able to describe it using a single sentence.
Classification of Coupling
- Two modules are data coupled if they communicate through a parameter. An example is an elementary data item passed as a parameter between two modules, e.g. an integer, a float, a character, etc.
- This data item should be problem-related and not used for the control purpose.
- Two modules are stamp coupled if they communicate using a composite data item such as a record in PASCAL or a structure in C.
- Control coupling exists between two modules if data from one module is used to direct the order of instructions executed in another.
- An example of control coupling is a flag set in one module and tested in another module.
- Two modules are commonly coupled if they share data through some global data items.
- Content coupling exists between two modules if they share code, e.g. a branch from one module into another module.
Read More Difference