Hoofdstuk 8 - Software Architecture Flashcards

1
Q

What’s the role of a software architecture?

A

◦ Maps requirements onto system structure
◦ A description of components and the connectors between them specified in a view to show the relevant functional and non-functional properties.

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

What is a component? And what’s a connector?

A

◦ A component is an encapsulated part of a software system with designated interface, either a module/class/object/set/subsystem
◦ A connector is a connection between two components, either static (in source code) or dynamic (temporary invocations)

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

What is coupling? What is cohesion? What should a good design do with them?

A

◦ Coupling is a measure of the strength of a connector (how strongly it is connected)
◦ Cohesion is a measure of how well the parts of a component belong together
◦ Both help us evaluate architecture trade-offs, it’s best to minimize coupling and maximize cohesion

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

What is a pattern? Why is it useful for describing architecture?

A

◦ A pattern is the essence of a solution to a recurring problem in a particular context
◦ It’s easy to recall and customize, it documents existing experiences, it states when to apply and lists trade-offs
◦ It allows experts to have deep discussions in a few words

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

Can you name the components in a 3-tiered architecture? And what about the connectors?

A

◦ The database, domain and application layers
◦ The Database Connection and the Application Logic

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

Why is a repository better suited for a compiler than pipes and filters?

A

Compiler problem: needs flexible integration of partial solutions

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

What’s the motivation to introduce an abstract factory?

A

Need for a class hierarchy with abstract roots representing a family of objects
→ concrete leaves representing particular configurations

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

Can you give two reasons not to introduce an Adapter (Wrapper)?

A

◦ If separately developed classes evolve much, adapter must change accordingly
◦ overhead in maintenance & performance

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

What problem does an abstract factory solve?

A

Invoking constructors implies tight coupling with concrete leaves instead of abstract roots

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

List three trade-offs for the Adapter pattern.

A

◦ How much adapting is required?
◦ How will the separately developed classes evolve?
◦ Does the merging work in one direction or in both directions?
◦ How much overhead in performance and maintenance can you afford?

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

How do you decide on two architectural alternatives in scrum?

A

By using Spikes (a.k.a. Knowledge Acquisition Stories/Proof-of-concept)

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

What’s the distinction between a package diagram and a deployment diagram?

A

◦ A package diagram decomposes a system into packages
◦ A deployment diagram shows the physical lay-out of run-time components on hardware nodes

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

Define a sensitivity point and a trade-off point from the ATAM terminology

A

◦ Sensitivity point: property of 1 or more components that is critical for achieving a quality attribute response
◦ Trade-off point: involves 2 or more conflicting sensitivity points

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