How should software design principles guide design choices?
Treat design principles as practical guides, not absolute rules; choose designs that fit the system’s goals, constraints, and likely changes.
Study 6 Software Design Principles with 12 free online flashcards. Review key terms, definitions, and concepts with this interactive flashcard deck.
How should software design principles guide design choices?
Treat design principles as practical guides, not absolute rules; choose designs that fit the system’s goals, constraints, and likely changes.
What is modularity?
Modularity divides a system into parts with clear responsibilities and defined ways to interact.
How do useful module boundaries support development?
Clear module boundaries let developers work on one part without needing to understand every implementation detail elsewhere.
What does abstraction reveal, and what does it hide?
Abstraction describes what a component offers while leaving out implementation details its users do not need.
How can an interface express an abstraction?
An interface sets expectations for a component’s behavior without requiring users to know how that behavior is implemented.
Why should checkout depend on a payment capability rather than a specific provider?
Checkout can depend on a payment capability rather than a specific provider, allowing the provider to be changed without rewriting checkout logic.
What does cohesion measure?
Cohesion describes how closely related the responsibilities within a module are.
What does coupling describe?
Coupling describes dependencies between modules and whether a change in one can force changes in others.
What is a useful general aim for cohesion and coupling?
Aim for high cohesion within modules and low, deliberate coupling between them.
What does separation of concerns mean?
Separation of concerns gives distinct concerns—such as user interaction, business rules, and data storage—distinct places in the design.
How does information hiding help limit change propagation?
Information hiding keeps internal decisions private and exposes only what other modules need, limiting how far changes can spread.
What does the single responsibility principle encourage?
Single responsibility gives a module one coherent purpose, so changes to that purpose do not require editing unrelated behaviors.