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
2
Q
Coupling and cohesion
A
- Coupling: degree of interaction between units
- Cohesion: degree to which a unit fulfills one purpose
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
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