In the context of modular software design, which one of the following combinations is desirable?
(A) High cohesion and high coupling
(B) High cohesion and low coupling
(C) Low cohesion and high coupling
(D) Low cohesion and low coupling
Explanation: Coupling is the manner and degree of interdependence between software modules.
Cohesion refers to the degree to which the elements of a module belong together.
In a good software design, it is always desirable to have less interaction among modules (Low coupling).
Advantages of high cohesion (or “strong cohesion”) are:
1) Reduced module complexity (they are simpler, having fewer operations).
2) Increased system maintainability, because logical changes in the domain affect fewer modules, and because changes in one module require fewer changes in other modules.
3) Increased module reusability,because application developers will find the component they need more easily among the cohesive set of operations provided by the module.