03. Design Principles and Patterns

0.0(0)
Studied by 0 people
call kaiCall Kai
learnLearn
examPractice Test
spaced repetitionSpaced Repetition
heart puzzleMatch
flashcardsFlashcards
GameKnowt Play
Card Sorting

1/35

encourage image

There's no tags or description

Looks like no tags are added yet.

Last updated 2:08 PM on 10/6/26
Name
Mastery
Learn
Test
Matching
Spaced
Call with Kai
Chat

No analytics yet

Send a link to your students to track their progress

36 Terms

1
New cards

Design Phase

In what phase of a software development project the designing and development of the software are performed?

2
New cards

Changes

When developing the software of the project, generally there are […] in the requirements document that may occur, such as the client adding additional requirements or changing a requirement.

3
New cards

Changes

These could affect the development of the software where there is a need to apply changes on the source codes.

4
New cards

Bad Design

When the software architecture has a […], it will be hard to apply changes on the project.

5
New cards
  1. Rigidity

  2. Fragility

  3. Immobility


What are three important characteristics of a bad design architecture that should be avoided?

6
New cards

Rigidity

Which bad design characteristic is it where the software is hard to change because every applied change will affect many parts of the software?

7
New cards

Fragility

Which bad design characteristic is it when applying changes, unexpected parts of the software breaks?

8
New cards

Immobility

Which bad characteristic is it where the modules of the software are hard to reuse in another software because these cannot be extracted from the current software?

9
New cards

Design Principles

In order to create a good design architecture, various software […] can be followed.

10
New cards

Design Principles

What are the set of guidelines to be followed that helps developers arrange methods and data structures into classes?

11
New cards

SOLID

It is what Martin assembled as a set of five software design principles, and Michael Feathers arranged these principles into an acronym called […].

12
New cards

SOLID Principles

What are applied to software development projects to make software easier to change when requirements changes?

13
New cards
  1. Single Responsibility Principle (SRP)

  2. Open-Closed Principle (OCP)

  3. Liskov Substitution Principle (LSP)

  4. Interface Segregation Principle (ISP)

  5. Dependency Inversion Principle (DIP)


What does SOLID acronym stands for?

14
New cards

Single Responsibility Principle (SRP)

What is one of the basic principles most developers apply to build robust and maintainable software?

15
New cards

Single Responsibility Principle (SRP)

Which suggests that each software module, class, or interface should have only one reason to change?

16
New cards

Open-Closed Principle (OCP)

What states that for a software to be easy to change, the software classes must be designed to allow the behavior of those classes to be changed by adding new code rather than changing existing code?

17
New cards

Liskov Substitution Principle (LSP)

What principle states that the derived classes should be substitutable for their base classes to build a software from interchangeable modules or classes?

18
New cards

Barbara Liskov

Who introduced the Liskov Substitution Principle (LSP)?

19
New cards

Interface Segregation Principle (ISP)

What principle advises software designers to avoid depending on things that they don’t use?

20
New cards

Dependency Inversion Principle (DIP)

What principle suggests that flexible software are those with classes that depend on abstract classes or interfaces?

21
New cards
  1. Reduce source code complexity

  2. Increase readability, extensibility & maintenance

  3. Reduce accidental errors & implement reusability easily

  4. Achieve easier & better software testing


Following the SOLID Principles help developers to achieve the following:

22
New cards

Single Responsibility Principle (SRP)

What instructs developers to design each module, interface, or class of a software system to have only one responsibility?

23
New cards

Single Responsibility Principle (SRP)

In what principle this is under: “the software systems are changed to satisfy the needs of the users or actors; and those users are the ‘reason to change’ that the principle is referring to.”

24
New cards

Single Responsibility Principle (SRP)

What does not state that a class should only have one method; rather, a class can have any number of members such as methods and instance variables as long as its members are related to only one responsibility of the class?

25
New cards

Open-Closed Principle (OCP)

What states that software modules, interfaces, or classes should be open for extension but closed for modification?

26
New cards

Open-Closed Principle (OCP)

In this principle, it means that when there are new requirements for the software, the new behavior must be added by deriving a new class without modifying the existing class?

27
New cards

Open-Closed Principle (OCP)

What suggests not to add functionality on the class that has been already tested and is working properly, but rather to extend that class for adding new functionality?

28
New cards

Open-Closed Principle (OCP)

Which principle apply this: abstract the class using inheritance or interfaces; then, whenever there is a new requirement, that functionality should be added to a new derived class without modifying the existing class?

29
New cards

Liskov Substitution Principle

What suggests that when creating a new derived class of an existing class, make sure that the derived class can be a substitute for its base class?

30
New cards

Liskov Substitution Principle

In this principle, it means that all the derived classes of a base class should be able to perform the same behavior of their base class without negative side effects.

31
New cards

Interface Segregation Principle (ISP)

What suggests avoiding depending on things that are not used?

32
New cards

Interface Segregation Principle (ISP)

In what principle it means that clients should not be forced to implement interfaces they don’t use?

33
New cards

Dependency Inversion Principle

What suggests that the most flexible software systems are those in which source code dependencies refer only to abstractions, not to concretions?

34
New cards
  1. HLC ❌ depend on LLC. Both ✔ depend on abstractions.

  2. Abstractions ❌ depend upon details. Other way around.


What are the two things DIP stated?

35
New cards

HLC ❌ depend on LLC. Both ✔ depend on abstractions.

This means a high-level class is a class that does something significant in the application, while a low-level class is a class that does secondary work.

36
New cards

Abstractions ❌ depend upon details. Other way around.

This means that developers must design the abstract class by looking at the needed details of the class.