Software Design First Principles Flashcards

1
Q

A principle is a?

A

Fundamental truth or proposition that serves as the foundation for a system of belief or behaviour or for a chain of reasoning.

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

Latin origin of principle?

A

Principium - beginning, origin, source, foundations

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

Software design principles are the?

A

Foundation of the software design field and its methodologies, practices and strategies

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

Software Design First Principles?

A
Suitability
Simplicity
Code Reuse
Modularization
Separation of Concerns
Module Cohesiveness
Module Encapsulation
Abstraction
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Suitability?

A

The software design represents a system that satisfies its requirements and serves its purpose

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

Simplicity?

A

The optimal software design is the simplest design that can be used to build a suitable system

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

Separation of Concerns?

A

A software system is made of separate modules that communicate with each other through their connections

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

Types of Coupling?

A

Tight Coupling

Loose Coupling

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

Tight Coupling?

A

Strong and lasting connections between modules

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

Loose Coupling?

A

Weaker and temporary connections between modules

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

Types of Cohesiveness?

A

High Cohesiveness

Low Cohesiveness

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

High Cohesiveness?

A

Concerns of a module are highly related to each other

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

Low Cohesiveness?

A

Concerns of a module are very little or not related to each other

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

Objects communicate through two major types of relationships?

A

Dependencies

Associations

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

Dependency?

A

Dependencies are temporary relationships that exist only while a method is executing

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

Associations?

A

Are permanent relationships that exist for the entire life time of an object

17
Q

Encapsulation is also called?

A

Information hiding

Proposed in 1971 by David Parnas

18
Q

Module Encapsulation Principle?

A

A software module design shall maximize the information and functionality of the module that is hidden from other modules and minimize its interface

19
Q

Software Reuse Principle?

A

A software design shall maximize reuse by ensuring n artefact or parts of an artefact are duplicated.

20
Q

Abstraction Principle?

A

Software design is simplified by defining and maximizing dependencies on abstractions

21
Q

GRASP?

A
General
Responsibility
Assignment
Software
Patterns or Principles
22
Q

Software Degradation?

A

Software degradation is the aging effect of software loosing its qualities as it evolves over time

23
Q

Measures of Software Degradation?

A
Rigidity
Fragility
Immobility
Viscosity
Needless Complexity
Needless Repetition
Opacity
24
Q

Rigidity?

A

Software is difficult to change

25
Q

Fragility?

A

Change results in unpredictable behaviour and bugs

26
Q

Immobility?

A

Reuse and separation of concerns is hard

27
Q

Viscosity?

A

Original software design is hard to be preserved

28
Q

Needless Complexity?

A

Design and code that is not used

29
Q

Needless Repetition?

A

Reuse through copy and paste

30
Q

Opacity?

A

Software is difficult to understand