In the context of modular software design, which one of the following…
20142017
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
Attempted by 25 students.
Show answer & explanation
Correct answer: B
Concept
Modular software design is evaluated along two independent axes: cohesion, how closely the responsibilities inside a single module are related, and coupling, how much modules depend on one another. A module with high cohesion focuses on one well-defined responsibility; a design with low coupling lets modules communicate only through minimal, well-defined interfaces, so a change in one module rarely forces changes elsewhere.
Applying It To This Question
The four offered combinations pair each cohesion level with each coupling level. The design goal is to keep modules internally focused and externally independent at the same time, which means pairing high cohesion with low coupling: each module owns a single responsibility, so it is easy to understand, test, and reuse, while its dependencies on other modules stay minimal and well-defined, so a change in one module is unlikely to ripple through the system.
Contrasting The Other Combinations
High cohesion and high coupling: modules stay individually focused, but heavy interdependence means a change in one module forces changes across many others.
Low cohesion and high coupling: modules mix unrelated responsibilities and are also tightly interlinked with each other, the hardest combination to maintain.
Low cohesion and low coupling: modules are largely independent of each other, but each one still bundles unrelated responsibilities internally, making individual modules hard to understand and reuse.
Conclusion
A design that combines high cohesion with low coupling gives the best balance of maintainability, reusability, and stability, which is why it is the standard target in modular software design.