Softwarearchitekturen Flashcards

1
Q

Was ist eine Softwarearchitektur?

A

Eine Softwarearchitektur unterteilt ein System in Teile (z.B. Komponenten, Module, Objekte)

Diese Unterteilungen müssen bestimmte Anforderungen erfüllen

Komponenten des Systems erhalten dann Verantwortlichkeiten und die Zusammenarbeit aller Komponenten ergibt die geforderte Funktionalität

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

Was ist das Ziel von Softwarearchitektur?

A

Die Verringerung von Abhängigkeiten zwischen Komponenten

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

Was ist Komponentenkommunikation?

A

Austausch von Daten und Kontrollinformationen zwischen Komponenten

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

Wie beschreibt die Architektur die Kommunikation zwischen Komponenten?

A

Architekturpatterns beschreiben erfolgreiche Strukturen, die verschiedene Arten von Komponentenkommunikation unterstützen

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

Was sind nicht-funktionale Anforderungen?

A

Anforderungen die keine direkten Use-Cases haben z.B.
-technische Bedingungen (Programmiersprache, Datenbank…)
-Geschäftsbedingungen (Schnittstellen, Übergang zu anderen Systemen…)
-Qualitätsattribute (Skalierbarkeit, Verfügbarkeit…)

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

Was sind Qualitätsattribute?

A

-Teil der nicht-funktionalen Anforderungen
-müssen präzise formuliert sein (nicht “Die Anwendung muss skalierbar sein”)
-meistens schwer testbar

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

Qualitätsattribute: Was ist Performanz?

A

Ausführen von vielen Transaktionen in kurzer Zeit
Performanz ist durch folgende Maße definiert:
-Durchsatz: Arbeitsumfang (z.B. Transaktionen) pro Zeiteinheit
-Antwortzeit: Zeit die eine Anwendung braucht um eine Transaktion durchzuführen
-Terminbindung: Fähigkeit einer Anwendung zeitliche Vorgaben einzuhalten

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

Was ist bei der Messung der Performanz zu beachten?

A

-unterscheiden zwischen Durchschnitts- und spitzenwert
-es muss genau definiert sein, wie hoch der Arbeitsumfang bei der Messung ist

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

Qualitätsattribute: Was ist Skalierbarkeit?

A

gibt an wie gut das Problem gelöst werden kann, wenn die Größe des Problems zunimmt

Folgende Maße existieren
-Anfragelast: eine Erhöhung der Anfragen bei gleichbleibendem Durchsatz und linearer Steigerung der Antwortzeit ohne Änderungen an der Architektur
-Gleichzeitige Verbindungen: wie viele gleichzeitige Nutzer können verarbeitet werden
-Datenumfang: Reaktion der Anwendung auf Erhöhen der Größe der zu verarbeitenden Daten
-Inbetriebnahme: Reaktion der Anwendung auf mehr Nutzerzugriffe

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

Erkläre Scale-Up und Scale-Out

A

Scale up bedeutet, dass die Leistung des Systems durch mehr Ressourcen erhöht wird durch zusätzliche CPUs oder Speicher

Bei Scale-Out hingegen werden weitere Rechner hinzugefügt ohne Änderungen an der darunter liegenden Architektur

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

Qualitätsattribute: Was ist Änderbarkeit und wie wird der Aufwand bestimmt?

A

wie einfach kann eine Anwendung an neue funktionale und nichtfunktionale Anforderungen angepasst werden

Aufwand bzw. Kosten einer Änderung können hier nur geschätzt werden

zur Schätzung werden Änderungsszenarien konzipiert

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

Qualitätsattribute: Was sind Sicherheitsanforderungen?

A

-Authentifikation: Anwendung kann die Identität eines Nutzers oder einer Anwendung verifizieren
-Authorisierung: authentifizierte Nutzer und Anwendungen haben das Recht, auf definierte Ressourcen zuzugreifen
-Verschlüsselung: ausgetauschte Nachrichten werden verschlüsselt
-Integrität: Nachweis, dass Inhalte von Nachrichten während der Übertragung nicht geändert wurden
-Nachweisbarkeit: Absender weiß um korrekte Zustellung und Empfänger um korrekte Identität des Absenders

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

Qualitätsattribute: Was sind Verfügbarkeitsanforderungen?

A

-Verfügbarkeit: Durchschnittszeit zwischen zwei Ausfällen
-Länge einer Ausfallphase: Zeit bis die Anwendung wieder verfügbar ist
-Wiederaufsetzbarkeit: Fähigkeit eines Systems, nach einem Systemausfall betroffene Daten und Prozesse wiederherzustellen

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

Wie wird eine höhere Verfügbarkeit erreicht?

A

-minimieren der Ausfälle durch Mechanismen die automatisch Ausfälle entdecken und Systemkomponenten neu starten können
-Replikation von Systemteilen

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

Qualitätsattribute: Was ist Integration?

A

-Einfachheit mit der eine Anwendung in einen weiteren Anwendungskontext eingebettet werden kann

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

Was sind verbreitete Strategien zur Erhöhung der Integration?

A

Datenintegration: Daten werden so gespeichert, dass andere Anwendungen darauf zugreifen können
-Speicherung in einer relationalen Datenbank
-Extraktion der Daten in XML oder CS-Format

Zuverfügungstellen einer API:
interne Daten werden durch Funktionen von außen zugreifbar gemacht

17
Q

Was sind die Hauptprinzipien zur Erstellung von Softwarearchitektur?

A

-Reduktion der Komplexität
-Erhöhung der Flexibilität/Änderbarkeit

18
Q

Was ist eine lose Kopplung?

A

Die Beziehung von Bausteinen in einer Software-Architektur

19
Q

Wie kann eine lose Kopplung gemessen werden?

A

Durch Anzahl der Verbindungen zwischen z.B. Klassen und die Stärke der Verbindung: gemeinsame Nutzer globaler daten, Methodenaufruf, gegenseitiger Zugriff auf eigenen Daten

20
Q

Was sind Prinzipien der losen Kopplung?

A

Die Kopplung in der Architektur sollte möglichst gering gehalten werden, da so Bausteine besser verstanden und geändert werden können

Law of Demeter: ein Systembaustein sollte nur ein verwandte Bausteine benutzen

Vermeidung zirkulärer Abhängigkeiten: Ursache vieler Probleme (Deadlocks, schwierige Änderbarkeit) arbeitsteilige Entwicklung nahezu ausgeschlossen

21
Q

Was bedeutet hohe Kohäsion/Bindung und in welcher Beziehung steht es zu Kopplung?

A

bezeichnet die Abhängigkeiten innerhalb eines Systembausteins
Kopplung und Kohäsion stehen in einer Wechselbeziehung: Je höher die Kopplung, desto geringer die Kohäsion

so sollten verwandte Anforderungen Teil desselben Systembausteins sein, da sie sonst zu hohem Kommunikationsbedarf tendieren

22
Q

Was bedeutet Information Hiding?

A

-nur der für eine Aufgabe notwendige Teil von Informationen wird nach außen gezeigt

23
Q

Wozu wird Information Hiding verwendet?

A

-von hoher Bedeutung für die Verständlichkeit einer Architektur
-öffentliche Schnittstellen verbergen Implementierungen und verwendete Daten innerhalb eines Systembausteins
-Information Hiding kann durch ein Facadeentwurfsmuster ein Subsystem vor direktem Zugriff schützen

24
Q

Was ist Separation of Concerns und wozu wird es verwendet?

A
  • ein Prinzip bei dem Aspekte eines Systems (z. B. Datenzugriff, Benutzeroberfläche, Geschäftslogik) voneinander getrennt und unabhängig voneinander behandelt werden

Ziel: Wartbarkeit, Lesbarkeit und Wiederverwendbarkeit zu erhöhen

25
Q

Was ist Abstraktion?

A

-wichtige Aspekte identifizieren isolieren im Gegenzug unwichtige Details vernachlässigen
Ziel: Komplexität minimieren

26
Q

Nenne die Prinzipien der Schnittstellenabstraktion

A

-Explizite Schnittstellen: ein Baustein sollte seine eigenen und die verwendeten Schnittstellen bekannt geben
-Trennung von Schnittstelle und Implementierung: Schnittstellen sollten separat von den Implementierungen beschrieben werden
-Liskov-Substitutionsprinzip: eine Schnittstelle einer Klasse sollte sowohl syntaktisch, als auch semantisch an die abgeleiteten Klassen weitergegeben werden
-Schnittstellen-Segregationsprinzip: Klienten sollten nie Schnittstellen integrieren, die nicht benutzt werden; große Schnittstellen sollten somit aufgeteilt werden
-Sprachunterstützung für Abstraktionen: Unterstützung des Schnittstellenbegriffs im Entwurf sowie der Programmiersprache
-Design by Contract: Vor- und Nachbedingungen können eine Schnittstelle zusätzlich semantisch näher spezifizieren

27
Q

Was ist Modularität?

A

-klare Abgrenzung der funktionalen Verantwortlichkeiten von Systembausteinen

-Kombination der Prinzipien Abstraktion, Separation of Concerns und Information Hiding

28
Q

Was sind Prinzipien der Modularität?

A

-Rückverfolgbarkeit: Dokumentation der Struktur des Quellcodes
-Selbstdokumentation: jede Information über einen Systembaustein sollte Teil des selbigen sein (Kommentare)
-Inkrementalität: inkrementelle Vorgehensweisen bei Veränderung durch z.B. Prototyping
-Anwendungsfallbezug: orientieren an den Anwendungsfällen
-Vermeidung überflüssiger Komplexität
-Konsistenz: eine Architektur, sollte durchgängig einem einheitlichen Satz von Regeln folgen (Namensgebung, Schnittstellenstruktur, Kommunikation etc.)