Vorlesung 6 Flashcards

1
Q

The goals of design

A

balancing the bermuda triangle of architecturig (which consists of lifecycle, initiatives, assets)

creation of a plan or convention for the construction of a software system (decomposition of the problem, control of the complexity, prediction of effort & quality)

Risk mitigation of the impact of change on a software system (address unforeseeable changes, prepare anticipated changes, change is inevitable!)

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

Explain “architecture is design, but not all design is architecture”

A

It depends, if it is architecturally-significant. It’s architecturally significant if it is costly to change, risky and new.

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

When do we call things architecturally-significant?

A

Costly to change

risky

new

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

Name some challenges of architecture design (name 3)

A

Understand the domain and its specifics

Work on incomplete and changing requirements

Find adequate solutions

Achieve adequate confidence that solutions work

Design a solution involving many experts for specific topics

Refine and adjust architecture while implementation is already ongoing

Judge technologies for their adequacy

Select and use technologies appropriately

Become aware of drift

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

What are the generic decomposition steps (FRAUNHOFER)

A

IDENTIFY ELEMENTS (responsibilities, composes/aggregated elements, unique & self-contained roles/elements)

IDENTIFY RELATIONSHIPS (data/information exchange requirements, interfaces, dependency types, dependency graph of elements must have no cycles)

INCREASE SEMANTIC COHESION BETWEEN ELEMENTS AND REDUCE COUPLING OF ELEMENTS
(elements that change together are grouped together,
elements that are used together are grouped together,
elements that are owned by the same group are grouped together)

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

What are essential principles of design?

A

Abstraction (extraction of the essentials)

Encapsulation (information hiding, coupling & cohesion, redudancy free)

Uniformity (common design principles)

Separation of concerns (hierarchical decomposition, divide&conquer - top down, divide & conquer - multidimensional, modularization, localization of concerns)

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

Conceptual tools for architecture design

A

Creativity

Classification (element types, relation types)

Abstraction (simplifications, aggregations, processes, end-to-end usages)

Categorization (group distinct facets of a solution concepts)

Experience (since there is no guide to creativity)

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

Architecture Decomposition Strategies

A

Hierarchical Decomposition and Modularization (Divide & Conquer)

  • functionality driven
  • data driven
  • deployment driven

Transformation (Restructure / Use Patterns)
- quality driven

Adoption and Preparation for Use/Reuse (Abstract & Retrofit)
- technology driven

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

What are the main purposes of the context view

A

definition of system boundary

identification of context (humans interacting with the system, context systems, information flow)

system seen as a black box

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

What are the aspects to think about in context view

A

what does the system do?

what is the interaction with the environment?

what data is exchanged?

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

Main purposes of the functional view

A

identification and decomposition of systems functionality

linking (functional) requirements to later design steps

understanding of function interrelationships

identify missing (functional) requirements

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

aspects to think about in functional view

A

which functions are responsible for data (creation, transportation, processing and storage)

which functions communicate?

what data is exchanged?

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

logical view main purposes

A

define the logic structure of the whole system (decompose the system into manageable components)

describe the internal logical structure of the SUD

partition the system into communicating logical components

allocate desired functions to cohesive logical units

support the reuse of already existent logical components

define the total behaviour of the system

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

Aspects to think about in logical view (2 nennen)

A

how should functionality be allocated to executable components?

how can components be refined into sub-components?

are there commonalities between components?

what data is exchanged between the components?

what are the interfaces to be used?

what behaviour does a component have?

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

software view main purposes

A

decomposition of software components into sub-components and classes

definition of software interfaces

identification of necessary software datatypes

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

aspects to think about in software view

A

how are logical components realized by software components

how should components be implemented by implementation units

what are the interfaces to be used

which component provides/requires an interface

what datatypes should be used for data exchange

17
Q

hardware view main purposes (2 nennen)

A

identification of sensors, actuators, ECUs

identification of communication buses

deployment of software components

function realization by hardware entities

18
Q

aspects to think about in hardware view

A

how should software components be deployed to computing nods

what bus systems are used to exchange data?

which logical components should be implemented in hardware?

19
Q

when to stop working at the architecture level (2 nennen)

A

You should stop when…
▪ … you addressed the key requirements and quality attributes
▪ … you can explain how they are addressed
▪ … and have enough confidence that they can be achieved
▪ … and you can assign work units to developers
▪ … and you can control the parallel development and integration

20
Q

When to temporarily leave the architecture level (2 nennen)

A

▪ … to collect information, get more confidence
▪ … if you do not exactly know what you abstract from and have to try out
▪ … in prototyping activities and technical evaluations

21
Q

when to come back to the architecture level (2 nennen)

A

▪ … to integrate your lessons learned
▪ … to judge the results in the context
▪ … to reason about change

22
Q

when to stop designing (2 nennen)

A

You have covered the most important things when…
▪ … you addressed the key requirements and quality attributes
▪ … you can explain how they are addressed
▪ … and have enough confidence that they can be achieved
▪ … and you can assign work units to developers
▪ … and you can control their parallel development and integration

23
Q

when to continue designing (2 nennen)

A

You continue designing during development because …
▪ … you refine architectural decisions
▪ … you design the methods, data structures
▪ … you implement solutions (source code and test cases)
▪ … you make the system work