System Design Flashcards

1
Q

name at least three design goals.

A

low cost, rapid development, min. # of errors, Reliability

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

Name some typical trade-offs.

A
  • 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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

What is a subsystem?

A

A subsystem is part of the system with a collection of closely related classes, associations, operations, events

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

What is a Service/Subsystem interface?

A

A group of operations made externally visible and ready for use

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

Describe Coupling and Cohesion. What is desired in software engineering (high/low Coupling/Cohesion)

A
➢ 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

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

Name 3 ways to deal with complexity.

A
  • Abstraction
  • Hierarchy
  • Decomposition
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Shortly describe the layered architectural style.

A

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.

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

What is the difference between closed and open layered architectural styles? Shortly name the benefits of each.

A

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

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

What does MVC stand for?

A

Model View Controller

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

Describe the Model, View and Controller found in the MVC architectural style.

A
  • 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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

There are two ways for Notification in the mvc pattern. Which are those and how do they work?

A
  • Pull notification: view retrieves data from model

* Push notification: model updates view after change

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

Component and deployment diagrams! //TODO

A

A component diagram shows subsystems which provide and need certain interfaces

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

Name two ways to persistently store data.

A
  • File system: data used by multiple readers but a single writer
  • Database system: data used by concurrent writers & readers
How well did you know this?
1
Not at all
2
3
4
5
Perfectly