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
Q

What are the measures of Software Degradation?

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

What is Rigity?

A

Software is difficult to change

27
Q

What is Fragility?

A

Change results in unpredictable behavior and bugs

28
Q

What is Immobility?

A

Reuse and separation of concerns is hard

29
Q

What is Viscosity?

A

Original software design is hard to preserve

30
Q

What is Needless Complexity?

A

Design and Code that is not used

31
Q

What is Needless Repetition?

A

Reuse through copy and paste

32
Q

What is Opacity?

A

Software is difficult to understand