Test 1 Flashcards

1
Q

Gibt es eine gute Architektur?

A

Jedes System hat eien Software-Architektur
(welche dokumentiert oder verbreitet sein kann)

Nein gute oder schlechte Architektur, entweder mehr oder weniger funktional für Ziel

Architekturen können anhand spezifisch gestetzter Ziele evaluiert werden

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

Komponentisierung und Abstraktion

A

Komponentiesierung versteckt Komplexität

  • Abstraktion erlaubt lokale Veränderung
  • verkürzt Zeit zum einschätzen
  • Layering = wiederholte Abstraktion

Wert ist vertikal abgeleitet

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

Layers eines Information System

A

Client: jeder Benutzer oder Programm welches eine Operation über das System ausführen will

Presentation Layer: Clients interagieren mit System über PL

application logic layer: bestimmt was das System eigentlich macht

ressource management layer: kümmert sich um die Organisation der Daten um die application layer zu unterstützen (typischerweise Datenbank)

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

Pfeile und Boxen

A

Box als Teil des Systems
Pfeil als Verbindung

je mehr Boxen desto modularer -> mehr Möglichkeiten für Verteilung und Parallelisierung

je mehr Pfeile desto mehr sessions (Verbindungen) -> müssen gewartet, koordiniert werden. -> System komplexer
-> schlechtere Permormance

System Designer versuchen die flexibilität von modularem Design mit dem performance Ansprüchen von realen applications zu balancieren

Kein Problem kann nicht durch hinzufügen einer weiteren Stufe gelöst werden

Kein Performance Problem kann nicht gelöst werden indem eine Stufe entfernt wird

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

Software Components

A
  • unit of composition
  • spezifiziertes Interface
  • explizite Abhängigkeiten
  • kein spezifisches execution environment
  • verschiedene Realisierunge möglich (Sprache, Code strucuture)
  • zusammensetzbar aus anderen Software Components
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Von Software Components zu Services

A

über:

  • inter-process communication
  • Netzwerk Protokolle
  • Web Protokolle

Service als virtuelle Komponente

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

Impact of Software Architecture

A

hindert oder ermöglicht quality attributes eines systems
- Performance, Modifiability, security, Scalability, Reusability

Konsequenzen für change management

ermöglicht Kommunikation unter stakeholders
- verständlichkeit für alle (auch nicht IT-Menschen)

Trägt fundamentale Design Entscheidungen und Einschränkungen

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

Bottom-Up Design

A
  1. definiere access-channel und client platform
  2. Untersuche esistierende Ressourcen und deren Funktionalität
  3. verpacke existierende Ressourcen und integriere deren Funktionalität in einheitliches Interface
  4. passe output der application logic so an, das es von benötigten access-channel und client protocols benutzt werden kann

Hauptkosten bei wrappers und interfaces zu alten anwendungen

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

Top-Down Desing

A
  1. definiere access-channel und client-platform
  2. definiere presentation formats und protocols für den Client
  3. definiere die Funktionalität um content und format an die presentation layer zu liefern
  4. definiere date sources und data organization die für implementierung der application logic benötigt wird
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Wrapper

A

adapter design pattern erlaubt inkompatible Klassen (Client und Adaptee) mitenander zu arbeiten indem das interface des Adaptee in ein vom Client erwartetes Interface konvertiert wird

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

One-tier

A

Vollzenetralisierte Architektur

User/Programs greifen auf das System durch display terminals zu, was gezeigt wird ist vom Server kontrolliert(“dumb terminals”).

höchst optimierbar

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

Two-tier

A

presentation layer bei Client

  • Clients sind unabhägnig voneinander
  • Zugriff über API
  • ressource manager sieht nur einen client -> application logic
  • server muss sich um alle möglichen Clients connections kümmern (maximale Anzahl an Verbindungen)
  • Konkurrenz zwischen Clients
  • Client als point of integration zwischen Systemen (fat clients)
  • Sehr ineffizient
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

3-tier

A

komplett separierte Tiers

layers in der Regel verteilt

middleware als umweg zwischen client und anderen layers des system, zusätzliche layer die alle unterliegendenlayers umfasst

  • redurziert anzahl der client interfaces
  • transparenter zugriff auf untere systeme
  • platform für inter-sytem funktionaitä
  • übernimmt finden, zugriff und sammeln von ressourcen
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

N-tier

A

verbundene 3-tier systeme

web-server als zusätzliche layer für den zugriff von clients

web layer als presentation layer auf server seite

client greift durch web browser auf presentation layer zu

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

services

A

ein oder mehrere deployed, runnig (“always-on”) software programme, geräten und netzwerken die zusammenarbeiten um eine für den end-user zusammenhängende applikation zu liefern

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

Service oriented Computing (SOC)

A

deployed software einheiten die über ein netzwerk verteilt sind, welche benutzt werden können um business prozesse und - applikationen zu erstellen

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

Service oriented Architecture (SOA)

A
  • Wiederverwendbarkeit
  • geringer Aufwand beim - erstellen neuer Funktionen
  • Bessere Skalierbarkeit
  • Hohes Maß an Komplexität
  • Höherere Initialaufwand
  • Hohe Wiederverwendung kann zu zentraler Abhängigkeit führen
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Reliability

A

Wahrscheinlichkeit R(t) das ein System in einem Intervall [0:t] zufriedenstellend funktionioniert. Wenn es in t=0 funktioniert hat.

R(t) = 1 - F(t)
R(t) = [f(tau) d tau]t-inf.
= 1 - [f(tau) d tau]0-t

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

Availability

A

A(t) Wahrscheinlichkeit das das System zu einem Zeitpunkt t zufreidenstellend funktioniert.

steady-state Availability:
As = MTTF/MTBF

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

Fault Intolerance vs Fault Tolerance

A

Intolerance -> Fehler vermeiden

  • sehr zuverlässige Komponenten
  • ausgearbeitete Design Techniken
  • ausgearbeitete Herstellungs Techniken
  • viele Tests

Tolerance -> Fehler tolerieren

  • höhere Reliability
  • manchaml niedrigere Gesamtkosten
  • Kundenvertrauen
  • Kosten für Redundanz
  • manchmal höhere Komplexität
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

Redundancy

A

Duplizierung kritischer Komponenten

static -> alle Komponenten laufen kontinuierlich
dynamic -> Komponenten werden nach Bedarf dazu geschaltet

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

Triple Modular Redundancy

A
  • mehrheit der Module muss funktionieren (2/3)
  • Voter als kritische Komponente muss immer funktionieren
  • Voter gibt richtiges Result wenn Mehrheit der Komponenten funktionieren
23
Q

Structural vs. Time Redundancy

A

Structural -> Mehrere Ressourcen um redundancy
herzustellen

Time -> Eine Ressource wird länger benutzt um redundancy herzustellen

24
Q

Performance

A

Ziel der performance hängt von spezifischen System Anforderungen ab

kann durch Benchmark bestimmt werde:

  • Reales Programm
  • Komponenten
  • synthetische Benchmarks
25
Q

Scalability

A

Horizontal:

  • zusätzliche nodes
  • software muss angepasst werden

Vertical

  • zusätliche ressourcen zu node hinzufügen
  • limitiert durch vornhanene technologie
26
Q

Speedup

A

S = Ta/Tb relative Performance zwischen 2 Systemen die das gleiche Problem bearbeiten

S(p) = T(1)/T(p) performnace zwischen seriellen und parallelen System

E(p) = S(p)/p Parallele Effizienz, misst den Zeitanteil indem ein Prozessor genutzt wird

27
Q

Amdahls Law

A
T(p) = Ts + Tp / p
S(p) = Ts / Tp
28
Q

Elasticity vs. Scalability

A

Scalability

  • misst wie effizient und wie groß ein System werden kann
  • wenn ich soviel X% Ressorce hinzufüge, wieviel Y% höhere Performance wird erreicht

Elasticity -> speziell für Cloud Services

  • beschreibt was passiert wenn während der Laufzeit skaliert wird
  • Wie lange?
  • side-effects?
29
Q

Strict Consistency

A

Alle geschriebene Daten sind sofort da

30
Q

Sequential Consistency

A

Jeder prozess führt die Befehle in genau der Reihenfolge aus, in der sie im Programm festgelegt sind

31
Q

Causal Consistency

A

Writes, welche Abhängig sind müssen von allen Prozessen in der gleichen Reihenfolge gesehen werden

32
Q

FIFO Consistency

A

Writes von einem prozess wernde von anderen Prozessen in de gleichen Reiehnfolge gesehen

33
Q

Security

A
  • Interception
  • Interruption
  • Modification
  • Fabrication
34
Q

Static Process Models

A
  • lange Release Zyklen
  • keine Veränderung möglich
  • keine kontinuirliche Lieferung möglich
35
Q

Core Values of the Agile Manifesto

A
  • Individuen und Interaktionen über Prozess und Werkzeugen
  • Funktionierende Software über ausführlicher Dokumentation
  • Kunden zusammenarbeit über Vertragsverhandlung
  • auf Veränderung reagieren über folgen eines Plans
36
Q

Agile Software Development

A
  • frühe und stetige Auslieferung
  • schnelle Iteration um Änderung zu ermöglichen
  • Selbstorganisierende Teams
  • nachhaltige Entwicklung
  • weniger strikte Struktur
37
Q

SCRUM 3-3-4

A

Artifacts:

  • Product Backlog
  • Sprint Backlog
  • Burndown Chart

Roles:

  • Product Owner
  • Scrum Master
  • Team

Ceremonies:

  • Sprint Planning
  • Daily Scrum 3 Fragen
  • Sprint Review
  • Sprint Retroperspective
38
Q

Kanban

A
  • Limit Work-In-Progress
  • Visualize production (Kanban board)
  • Measure time cycle and improve
39
Q

DevOps

A
Requirements
Development
Build
Testing
Deployment
Execution

Beschleunigung des Deploymentprozesses duch geringeren Synchronisationsaufwand, kleine Teams (schnellere Entscheidungen), weniger Koordination.
Jedes Team kümmert sich um nur eine Funktion -> Microservices

40
Q

Implikation vo DevOps

A
  • Hohe Code Qualität
  • Hohe Qualität der build & delivery Mechanismen
  • geteilte Zeit
  • Ziel-orientierte Definition
41
Q

Version Control Systems

A

Weil Software meistens in Teams entwickelt wird

  • es sollte gleichzeitig gearbeitet werden
  • Veränderung sollte icht zu Konflikt führen
  • Jede Version soll archiviert werden
  • Wer?
42
Q

Testing

A

kann Fehler aufzeigen, aber nie deren Fehlen

  • Unit testing
  • Smoke testing
  • Integration testing
  • Acceptance testing
43
Q

Microservices

A

Applikation besteht aus kleienen autonomen Services die jewils eine Funktion besitzen und ein klares Interface haben

44
Q

Characteristics of Microservices

A

Componization via Sevices -> eine Funktion, klares Interface

Organized around business capabilities -> Microservices den Anforderungen anpassen

Design for failure
Products, not projects
Smart endpoints dum pipes -> SQS

45
Q

SOA vs Microservices

A

Maximiere application service reusability Fokus auf decoupling

shared data storage Each microservice can have an independent data storage

A systematic change requires modifying the monolith A systematic change is to create a new service

46
Q

Cloud Platform

A

Globaler, always-on Zugriff

  • gesammelte, virtualisierte Ressourcen
  • On-demand self service
  • Bezahle nur für das was du benötigst
  • web als universelle middleware
  • Elastizität
47
Q

Cloud Ownership

A

Public Cloud:

  • Security expertise
  • unendliche Scalability
  • lock-in Effekte
  • third-party pricing

Private Cloud

  • keine “noisey neighbours” erhöht performance
  • spezifizierte Interfaces können benutzt werden
  • hohe Anfangskosten
  • Security Probleme müssen individuell behoben werden
48
Q

Middleware als Programming Abstraction

A

Set von programming bstractions entwickelt um entwicklung von komplexen verteilten Systemen zu ermöglichen

  • versteckt Details der Hardware, Netzwerke und Verteilung
  • Evolution abhängig von Trends in Programmiersprachen
49
Q

Middleware as Infrastructure

A

Wenn programminc abstractions sich immer weiter entwickeln, die zugrundeliegende Infrastruktur wird dementsprechend größer

Infrastruktur unterstützt zusätziche funktionalität, welche Entwicklung und Intstandhaltung einfacher macht

50
Q

Nachteile Synchron

A

Session muss aufrecht erhalten werden -> teuer
Höhere Fehlerwahrscheinlichkeit
Schwierig fehler zu erkennen

51
Q

RPC

A
  • versteckt Verteilung
  • liefert IDL zur Komponenten Beschreibung
  • generiert allen notwendigen code selbstständig
  • Stub and Skeleton als proxies, anfrage über broker
52
Q

Messaging

A
  • nicht über Interface
  • Message über common message channel ausliefern, andere Apps können Message später lesen
  • asynchron
53
Q

Loose Coupling

A
  • Technology Dependency
  • Location Dependancy
  • Temporal Dependancy
  • Data Format dependancy