L6: Making Software Manageable Flashcards

1
Q

How to make software more manageable?

A

Separation of concerns / divide and conquer:
- Divide system into smaller units to reduce complexity and improve independence

Abstraction:
- Hide and generalise details to reduce complexity
- Level of abstraction / hiding differs during the design

Encapsulation, modularity, and information hiding:
- Place information into a unit and hiding it to prevent unwanted access
- Design units/modules with all relevant data and only expose it via an interface

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

Coupling and cohesion

A
  • Coupling: degree of interaction between units
  • Cohesion: degree to which a unit fulfills one purpose
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Information Hiding

A
  • Reveal as little information to the outside as needed
  • Prevent data manipulation
  • Ensure integrity of the unit
  • Allows access via a single, controlled interface
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Problems with divide and conquer

A
  • It can be challenging to define a good separation of concerns
  • Needs experience and typically some experimenting
  • Separation of concerns often leads to overhead
  • Functions cannot be defined in isolation
How well did you know this?
1
Not at all
2
3
4
5
Perfectly