Skip to Content

Which Software Design Principles Ensure Flexible Maintainable Systems?

Cohesion Modularity Patterns for Scalable Software Architecture?

Cohesion, modularity, and design patterns enable flexible, maintainable software by promoting focused modules, independent components, and proven architectural solutions.

Question

Select all the design principles that contribute to creating flexible and maintainable software systems.

A. Cohesion
B. Modularity
C. Design patterns
D. Global variables
E. Coupling

Answer

A. Cohesion
B. Modularity
C. Design patterns

Explanation

Cohesion ensures modules focus on single, related responsibilities, making code easier to understand, test, and modify independently, directly contributing to maintainability. Modularity decomposes systems into self-contained, interchangeable units that support parallel development, reuse, and scalability while isolating changes. Design patterns provide proven, flexible blueprints—like Factory or Observer—for common problems, enabling extensible architectures that evolve without disruption. Coupling (E) undermines flexibility when high, as tight dependencies amplify change impacts, while global variables (D) create hidden state mutations that erode predictability and debugging.