System Design Flashcards
name at least three design goals.
low cost, rapid development, min. # of errors, Reliability
Name some typical trade-offs.
- Functionality vs. usability: e.g. complex menu
- Cost vs. robustness: ebay 2005 version
- Efficiency vs. portability
- Rapid development vs. functionality
- Cost vs. reusability: plastic bag vs. reusable bag
- Backward compatibility vs. readability -> design patterns
What is a subsystem?
A subsystem is part of the system with a collection of closely related classes, associations, operations, events
What is a Service/Subsystem interface?
A group of operations made externally visible and ready for use
Describe Coupling and Cohesion. What is desired in software engineering (high/low Coupling/Cohesion)
➢ Cohesion measures dependency among classes (within a subsystem), preferably high (interaction within subsystems rather than across subsystem boundaries) ➢ Coupling measures dependency among subsystems, preferably low (calling class doesn ́t need to know about internals of called class – principle of information hiding, Parnas)
GOAL: High cohesion, low coupling
Name 3 ways to deal with complexity.
- Abstraction
- Hierarchy
- Decomposition
Shortly describe the layered architectural style.
Every layer is a subsystem that provides a service to another subsystem. Layers have no knowledge about higher layers and depend on lower level layers services.
What is the difference between closed and open layered architectural styles? Shortly name the benefits of each.
In a closed architecture each can only call operations from a layer below. This leads to better maintainability, flexibility, portability, but less performance
In an open architecture a layer can call operations from any layer below. This leads to a higher performance and real-time operation support
What does MVC stand for?
Model View Controller
Describe the Model, View and Controller found in the MVC architectural style.
- View: subsystem containing boundary objects, display information to user
- Model: subsystem containing entity objects, application domain knowledge
- Controller: subsystem mediating between views, interact with user & notify views about changes in model, handle user input
There are two ways for Notification in the mvc pattern. Which are those and how do they work?
- Pull notification: view retrieves data from model
* Push notification: model updates view after change
Component and deployment diagrams! //TODO
A component diagram shows subsystems which provide and need certain interfaces
Name two ways to persistently store data.
- File system: data used by multiple readers but a single writer
- Database system: data used by concurrent writers & readers