Softwarearchitekturen Flashcards
Was ist eine Softwarearchitektur?
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
Was ist das Ziel von Softwarearchitektur?
Die Verringerung von Abhängigkeiten zwischen Komponenten
Was ist Komponentenkommunikation?
Austausch von Daten und Kontrollinformationen zwischen Komponenten
Wie beschreibt die Architektur die Kommunikation zwischen Komponenten?
Architekturpatterns beschreiben erfolgreiche Strukturen, die verschiedene Arten von Komponentenkommunikation unterstützen
Was sind nicht-funktionale Anforderungen?
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…)
Was sind Qualitätsattribute?
-Teil der nicht-funktionalen Anforderungen
-müssen präzise formuliert sein (nicht “Die Anwendung muss skalierbar sein”)
-meistens schwer testbar
Qualitätsattribute: Was ist Performanz?
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
Was ist bei der Messung der Performanz zu beachten?
-unterscheiden zwischen Durchschnitts- und spitzenwert
-es muss genau definiert sein, wie hoch der Arbeitsumfang bei der Messung ist
Qualitätsattribute: Was ist Skalierbarkeit?
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
Erkläre Scale-Up und Scale-Out
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
Qualitätsattribute: Was ist Änderbarkeit und wie wird der Aufwand bestimmt?
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
Qualitätsattribute: Was sind Sicherheitsanforderungen?
-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
Qualitätsattribute: Was sind Verfügbarkeitsanforderungen?
-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
Wie wird eine höhere Verfügbarkeit erreicht?
-minimieren der Ausfälle durch Mechanismen die automatisch Ausfälle entdecken und Systemkomponenten neu starten können
-Replikation von Systemteilen
Qualitätsattribute: Was ist Integration?
-Einfachheit mit der eine Anwendung in einen weiteren Anwendungskontext eingebettet werden kann