Software Design First Principles Flashcards

(30 cards)

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
Fragility?
Change results in unpredictable behaviour and bugs
26
Immobility?
Reuse and separation of concerns is hard
27
Viscosity?
Original software design is hard to be preserved
28
Needless Complexity?
Design and code that is not used
29
Needless Repetition?
Reuse through copy and paste
30
Opacity?
Software is difficult to understand