Week 2 Flashcards

1
Q

Principles of Design First

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

What is Suitability Principle?

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
3
Q

What is Simplicity Principle?

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
4
Q

What is seperation 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
5
Q

What is Tight Coupling?

A

Strong and lasting connections between modules

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

What is Loose Coupling?

A

Weaker and or temporary connections between modules

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

What is 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
8
Q

What is 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
9
Q

What are Highly Cohesive Classes?

A

Classes are highly cohesive when the field variables and methods they define are highly related to each other

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

Cohesive characteristics are?

A

Necessary and sufficient to define an object’s identity

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

Cohesive methods are?

A

necessary and sufficient to implement the class’s main concern or responsibility

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

What is Module Cohesiveness Principle?

A

All elements of a highly cohesive modules are necessary and sufficient to implement the module’s concern

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

What is Separation of Concerns Principle?

A

Software modules defined by the software design shall be as loosely coupled as possible

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

What is Modularization Principle?

A

A software design shall divide a system in highly cohesive modules that each represents a discrete system concern and is loosely coupled with other modules

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

How do objects communicate?

A
Through Dependencies (USES relaationships)
Associations (HAS-A relationship)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

What are Dependency relationship?

A

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

17
Q

What are Associations?

A

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

18
Q

What is stronger Association or Dependency?

A

Associations are stronger and lead the tight coupling between separated concerns

19
Q

What is 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

20
Q

What is Software Reuse Principle?

A

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

21
Q

What is Abstraction Principle?

A

Software design is simplified by defining and maximizing dependencies on abstractions

22
Q

What is GRASP?

A

Design strategies.

General Responsibility Assignment Software Patterns or Principles

23
Q

What is SOLID Design Principle?

A

Describe the micro-architecture of object-oriented software applications

24
Q

What is Software Degradation?

A

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

25
What are the measures of Software Degradation?
``` Rigidity Fragility Immobility Viscosity Needless Complexity Needless Repetition Opacity ```
26
What is Rigity?
Software is difficult to change
27
What is Fragility?
Change results in unpredictable behavior and bugs
28
What is Immobility?
Reuse and separation of concerns is hard
29
What is Viscosity?
Original software design is hard to preserve
30
What is Needless Complexity?
Design and Code that is not used
31
What is Needless Repetition?
Reuse through copy and paste
32
What is Opacity?
Software is difficult to understand