Cloud Design Requirements & Software Architectures (Lecture 3) Flashcards

1
Q

What is requirements engineering?

A

-> process of eliciting, analysing, documenting, validating & managing the requirements of a software

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

Typical requirements (or oppsite)

A

requirements:
- functionality
- user interaction
- error handling

no requirements:
- system design
- implemenation
- development method

–> WHAT, NOT HOW

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

Stages of requirements engineering

A
  1. Elicitation
    -> gathering requirements from endusers (workshops, interviews)
  2. Analysis
    -> analyze & prioritize requirements
  3. Specifiaction
    -> documentation of requirements
  4. Verification & Validation
    -> ensuring that the requirements are complete and correct
  5. Management
    -> tracking changes of requirements
  6. Maintenance
    -> managing changer of requirements over time
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Types of requirements

A

function requirements:
- specific task and functions
- expressed in user cases

non- functional requirements:
- characterisitcs or qualities
–> performance, usability, reliability

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

Non-functional requirements (7)

A
  1. Performance
    –> Latency : time between request and response
    –> Throughput: number of people you can serve
    –> Utilization: percentage of used capacity
  2. Scalability
    –> vertical scaling
    - parallelism with multicores

–> horizontal scaling
- adding more machines

–> A Elasticity
- ability to expand and shrink

  1. Reliability
    - safe from bugs
  2. Availability
    minimize downtime
    four 9: hour per year
    five 9: 5 minutes per year
  3. Secrurity
    - protected from unauthorized access
    - what you store an what you get has to be the same (integrity)
  4. Maintainability
    -> you have to be always able to make some changes
  5. Deployability
    - can be taken from development to porduction
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

What is software architecture

A

definiert die:
- Komponenten einer Software
- wie sie miteinander interagieren
- wie sie verpackt sind

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

Klassische 3 Tier Architecture

A

Presentation -> UI
I
I
V
Application -> logic / Brain behind application
I
I
V
Data -> Stores the information

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

Monolithic Architecture (+/-)

A

everything is packaged in a single programm
+:
Testing
Debugging
Monitoring
Deployment
-:
strong dependency
many testing
scaling

for scaling : load balancer: balances multiple clients on multiple Monolithic blocks

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

Microservice Architecure (key principles, +/-)

A
  • split the Monolithic block in small functionel units

key principles:
- loose coupling:
– changing one microservice does not require a change of everything

-high functional cohesion:
– everyone of them has a single, well defined purpose
– everyone has their own database!!

+:
Technical heterogenty
-> you can use the best Technology for each different parts

-:
complex
remote calls instead of function calls -> latency
Monitoring
- divers team of experts
- Data consistency (Cache Kohärenz)

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

How to ensure Data consistency

A

Two phase commit:
every participant has to agree on the results, if one disagrees, its not commited
prepare phase <-> commit/rollback phase

Saga Pattern
every service runs a local Transaction & report success/failure

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