Softwarearchitekturen Flashcards
(28 cards)
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
Was sind verbreitete Strategien zur Erhöhung der Integration?
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
Was sind die Hauptprinzipien zur Erstellung von Softwarearchitektur?
-Reduktion der Komplexität
-Erhöhung der Flexibilität/Änderbarkeit
Was ist eine lose Kopplung?
Die Beziehung von Bausteinen in einer Software-Architektur
Wie kann eine lose Kopplung gemessen werden?
Durch Anzahl der Verbindungen zwischen z.B. Klassen und die Stärke der Verbindung: gemeinsame Nutzer globaler daten, Methodenaufruf, gegenseitiger Zugriff auf eigenen Daten
Was sind Prinzipien der losen Kopplung?
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
Was bedeutet hohe Kohäsion/Bindung und in welcher Beziehung steht es zu Kopplung?
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
Was bedeutet Information Hiding?
-nur der für eine Aufgabe notwendige Teil von Informationen wird nach außen gezeigt
Wozu wird Information Hiding verwendet?
-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
Was ist Separation of Concerns und wozu wird es verwendet?
- 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