Architecture design space Flashcards

1
Q

What should an architect be aware of?

A
  1. Alternatives in proposing design solutions.

2. which alternatives are more suitable and capture Func, and NFRs

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

What are the perspectives of a software architecture.

A
  1. Software code units: source, binary, files, modules, components deployment.
  2. Runtime structure: threads, processes, sessions, transactions, objects, component instances
  3. Allocation structure: project management structure.

Each uses different connector types and different performance attributes than the other.

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

Software Code structure

A
  • A project is implemented in multiple source files.
  • Ad dev time, the main software elements are source code modules/
  • Each module is assigned; Functional and non functional attribute. Public APIs, separate interfaces and implementations of a module.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Dependencies of a software code structure.

A

Module A contains B
Module A follows B
Module A delivers data to B
Module A uses B

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

What is a call graph?

A

Graph that represents Uses relations.

Proper design calls that information flow between components comes through method calls.

Knowledge between components should be a minimum. The remaining dependencies determine the complexity of relations between components.

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

What are the attributes of Connectors in Software code structure?

A

Direction: Module A invokes a method of B, there is a unidirectional connector from A to B.
Synchronization: Method invocation can be synchronous or Asynchronous.
Async: process operates independently to other processes.
Synch: Process runs only as a result of some other process completed or handing off operation.
Sequence: some connectors must be used in a particular sequence.

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

Software Runtime Structure.

A

This can run on same computer or across a network.

An element in code structure can implement or support multiple runtime elements. Client server, same client runs on many client computers.

Several code structure elements may implement or support a single runtime element. Many threads run multiple methods from different classes that may be packaged in different code units. (thread is a runtime element.)

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

Attributes of Connectors in Software runtime structure.

A

Multiplicity: One element can be connected to multiple other elements if it needs to invoke methods of multiple elements at runtime.

Distance: Two connected elements may communicate; in same thread, in same process, in same computer, across a network.

Universal Invokable: Allows any external system to invoke a method on the connector’s target.

Self descriptive: Allows external systems to invoke target method without preinstallation of hardware/software for the method. Bluetooth devices from different companies can communicate.

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

Software Management Structure.

A

Some architectures are best implemented by a particular management structure. Also often used for resource allocation.

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

Software Elements at runtime.

A

Each has its well-defined functions.

each are connected into a dependency graph through connectors.

each are usually refined through transformation steps based on the SRS.

each has different synchronization and performance constraints. (some reentrant, some are not and can’t have many threads working on them.)

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

If element is reentrant.

A

Can be implemented by any thread or process. (more efficient, avoid synchronization, not always possible.)

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

If not reentrant but many threads or processes have to communicate with it

A

It must be run on separate threads or processes to be thread safe.

Must be made thread safe!

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

If an element has high multiplicity and performance is important.

A

Use an application server for implementation. uses thread and resource pooling, data caches.

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

If there are heavy computations in the elements for deployment at a particular location.

A

Use a cluster of processors.

size of cluster depends on:
balancing computational load.
minimize total communication traffic.

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

Element is assigned well-defined complex functions + similar off shelf solution exists + performance not critical.

A

Use off shelf solution. But you are responsible for its performance.

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

How can you break up a complex element?

A

Subsystem with own elements and connectors. This includes a well defined interface for the subsystem.

Sequence of layered elements. Each layer provides an interface to upper layer element.
Each layer hides some low level detail from upper layer.

Sequence of tiered elements. A sequence of discrete processing stages for data. These stages can be implemented by tiered elements with defined interfaces and balanced workloads.

17
Q

What are connectors?

A

The necessity for one element to send a message to another and potentially get a return, in an abstract sense.

18
Q

What are some connector attributes?

A
  • synch mode
  • initiator
  • implementation type
  • active time
  • span
  • fan-out
  • information carrier
  • environment
19
Q

Synchronization mode.

A

blocking connectors.

non-blocking connectors.

20
Q

Initiator

A

One initiator

two initiator.

To support callback between two subsystems, they need to be connected to a two-initiator.

21
Q

Information carrier

A

Variable (two threads in same process.)

Environment Resource (register, pipes, files or local message queues)

Method invocation and message.

22
Q

Implementation type

A

Signature Based. can implement one type of operation.

Protocol Based. Many types of operation.

23
Q

Active time

A

Programmed: method call will be made at a time specified at programming time

Event driven: Reactive systems, GUI, automata.

24
Q

Connective span

A

Local: In same processor

Network: implemented with proxy pattern usually

25
Q

Fan-out

A

1-1

1-* Can impact performance

26
Q

Environment

A

Homogeneous: same programming language, framework and on same OS.

Heterogeneous

27
Q

How is an architecture refined?

A
  1. Initial abstract architecture proposed.
  2. Go through multiple refinement processes to support deployment constraints.
  3. Delay binding connectors for more flexible implementation decisions
  4. Seamless integration of multiple architectural styles in realizing different subsystems or different architectural levels.