Software Design Flashcards
5 key design principles
Separation of concerns, single responsibility, least knowledge, DRY, minimize upfront design
1 design principle associated with these terms: distinct features, minimize functional overlap, achieve high cohesion and low coupling
Separation of Concerns
YAGN, BDUF, what key design principle do these refer to?
Minimize upfront design
What principle states that each component or module should be responsible for only a specific feature or functionality, or aggregation of cohesive functionality?
Single Responsibility
What principle is known as the Law of Demeter (LoD)?
Principle of Least Knowledge
What principle recommends that functionality should not be duplicated in any other component?
Don’t Repeat Yourself (DRY)
5 Design Practices
- Choose design patterns that are consistent within each layer,
- do not duplicate functionality within an application,
- choose composition over inheritance,
- establish a coding style and naming convention,
- maintain system quality measures via automated Q/A techniques.