Paradigms Flashcards

1
Q

Structured Programming

A

Imposes discipline on direct transfer of control

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Object Oriented Programming

A

Imposes discipline on indirect transfer of control

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Functional Programming

A

Imposes discipline upon variable assignment

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

SOLID Principles

A
SRP: Single Responsibility Principle
OCP: Open Closed Principle
LSP: Liskov Substitution Principle
ISP: Interface Segregation Principle
DIP: Dependency Injection Principle
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

SRP: Single Responsibility Principle

A

A module should have one and only one “reason to change” (user, stakeholder, actor)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

OCP: Open Closed Principle

A

A software artifact must be open to extension but closed to modification

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

LSP: Liskov Substitution Principle

A

if S is a subtype of T, then objects of type T may be replaced with objects of type S (i.e., an object of type T may be substituted with any object of a subtype S) without altering any of the desirable properties of the program (correctness, task performed, etc.).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

ISP: Interface Segregation Principle

A

Clients should not be forced to depend upon interfaces that they do not use.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

DIP: Dependency Injection Principle

A

High-level modules should not depend on low-level modules. Both should depend on abstractions.
Abstractions should not depend on details. Details should depend on abstractions.
Don’t refer to or derive from volatile classes.
Don’t override concrete functions.
Never mention the name of anything concrete or volatile.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

The Reuse/Release Equivalence Principle (REP)

A

The granular of reuse is the granular of release.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

The Common Closure Principle (CCP)

A

Gather together those things that change at the same times and for the same reasons. Separate those things that change at different times or for different reasons.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

The Common Reuse Principle (CRP)

A

Don’t force users of components to depend on things they don’t need.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

The Stable Dependencies Principle

A

Depend in the direction of stability.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

The Stable Abstractions Principle

A

A component should be as abstract as it is stable.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Architecture of a Software System

A

The shape given to a system in order to facilitate Development, Deployment, Operation and Maintenance. The strategy behind that facilitation is to leave as many options open as possible, for as long as possible.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Keeping Options Open

A

The details that don’t matter. (Database, Web, Frameworks, etc.).
A good architect maximizes the number of decisions not made.

17
Q

Screaming Architecture

A

Your architecture should tell readers about the system, not about the frameworks used in the system.

18
Q

The Dependency Rule

A

Source code dependencies must point only inward, toward high-level policies.