Software Architektur Flashcards
Was versteht man unter Software Architektur?
Software-Architektur ist die Planung einer grundlegenden Struktur, wie die zu programmierende Software aufgebaut ist. So Prinzipien wie beispielsweise “Wie kommunizieren einzelne Softwarekomponenten miteinander” sind ein wichtiger Bestandteil der Software-Architektur.
Welche Aussagen beschreiben Software-Architektur?
Es geht um Bausteine und deren Schnittstellen und Beziehungen
Baustein als allgemeiner Begriff, Komponente eine spezielle Ausprägung
Strukturierungen, Prinzipien und umfassende Konzepte
Entwurfsentscheidungen
Software-Architektur betrifft das Gesamtsystem und den gesamten Lebenszyklus
Durch welche Faktoren kann Software-Architektur beeinflusst werden? Nenne 3 Faktoren.
Produktbezogene Faktoren
Technische Faktoren
Organisatorische Faktoren
Regulatorische Faktoren
Trends
Implizites Wissen
Nenne 3 produktbezogene Einflussfaktoren für Software-Architektur und jeweils ein Beispiel dazu.
Funktionale Anforderungen → Das Programm muss mit großen Datenströmen umgehen können
Qualitätsziele → Muss skalierbar sein, gut wartbar
Qualitätsanforderungen → Benutzerfreundlichkeit, Sicherheit
Produktkosten → möglichst billig, im Budget bleiben
Geschäftsmodell → Money++
Was sind funktionale Anforderungen an die Software? 2 Anforderungen mit je einem Beispiel
Funktion - was kann unsere Software? Datenbanken verwalten?
Verhalten - macht die Software das, was ich mir erwarte? Wenn ich auf senden klicke, wird meine Kundenanfrage abgesendet?
Erkläre das Wesen des Kano-Modell in kurzen Worten. Was sagt es aus? Je Faktor ein Beispiel mit kurzer Erklärung.
Das Kano-Modell ist eine systematische Herangehensweise zur Erreichung von Kundenzufriedenheit, die von mehreren Faktoren geprägt ist
Basisfaktoren (Muss Merkmale) - grundlegendes zu erwartendes Verhalten eines Produkts, das dem Kunden nur bei Nichterfüllung bewusst wird → Handy ohne Kamera (heutzutage)
Leistungsfaktoren (Soll-Merkmale) - sind dem Kunden bewusst, sie beseitigen Unzufriedenheit oder schaffen Zufriedenheit abhängig vom Ausmaß der Erfüllung → Handy kann bis zu 20 Applikationen gleichzeitig offen haben, biometrischer Login
Begeisterungsfaktoren (Kann-Merkmale) - Merkmale, mit denen der Kunde nicht unbedingt rechnet, machen das Produkt einzigartig gegenüber der Konkurrenz → verbiegbares Handy
Was sind Qualitätsanforderungen an die Software?
Qualitätsanforderungen bestimmen das “Wie” - also wie wird Software umgesetzt
Funktionalität, Benutzerfreundlichkeit, Zuverlässigkeit, Leistung, Sicherheit, Wartbarkeit, Skalierbarkeit, Kompatibilität, Dokumentation…
Qualitätsanforderungen sollen SMART sein. Was bedeutet das? Kurze Erklärung.
sind SMART → Spezifisch, messbar, attraktiv, realistisch, terminiert
Spezifisch: Anforderungen müssen eindeutig sein
Messbar: Anforderungen müssen messbar sein
Attraktiv: Anforderungen müssen für die Person ansprechend sein
Realistisch: Anforderungen müssen möglich und realisierbar sein
Terminiert: Anforderungen muss mit einem fixen Datum festgelegt werden können
Was ist das AAA-Pattern?
Das AAA pattern ist eine Herangehensweise zum Schreiben von Unit Tests und wird in Arrange, Act und Assert gegliedert
Arrange: Erforderliche Vorbedingungen für den Test werden eingerichtet - Erzeugen von Testdaten, Initialisieren von Objekten und Setzen von Variablen
Act: Eigentliche Testaktion wird durchgeführt - zum Beispiel der Aufruf einer Methode oder eine Funktion mit den vorbereiteten Daten
Assert: Es wird überprüft, ob das Ergebnis der Testaktion dem erwarteten Ergebnis entspricht (Vergleich mit Rückgabewert)
Was versteht man unter Black-Box-Sichtweise auf Bausteine in der Software-Technik?
Black-Box-Bausteine sind geschlossene Systeme, bei denen man Daten reinwirft (Eingabe) und auf der anderen Seite Daten rauskommen (Ausgabe), ohne zu wissen, was in der Black Box passiert
ignoriert Innenleben, betrachtet Schnittstellen
Was bedeutet der Ausdruck “Hierarchischer Architekturstil”? Welche gibt es?
Hierarchie ist eine stufenmäßig auf Überordnung und Unterordnung beruhende Ordnung - Rangordnung mit einer Wertigkeit, Ordnungsrelation
Schichten und Layer, Leader & Follower, Virtual Machine, Ports & Adapter (Hexagonal)
Beschreibe mit eigenen Worten das Architekturmuster “Schichten und Layer”. Was sind die wesentlichen Eigenschaften.
Software wird in Schichten unterteilt und jede Schicht wird entkoppelt durch Schnittstellen
Die obere Schicht kann immer nur auf die untere Schicht zugreifen, es kann keine Schicht übersprungen werden
Benenne die 3 Bestandteile des MVC-Patterns und erkläre die Aufgabe der Bestandteile in kurzen Worten.
Model - enthält Daten, ist unabhängig von View und Controller, genaue Implementierung ist nicht geregelt
View - bildet mit Controller ein Paar und präsentiert die Daten (generische Verwendung)
Controller - verwaltet Model und View, wertet Benutzereingaben aus, gibt Änderungen bekannt
Benenne die 3 Bestandteile des MVP-Patterns und erkläre die Aufgabe der Bestandteile in kurzen Worten.
Model - enthält die Daten für Anzeige (wie bei MVC), eventuell Daten für View anpassen (Aggregation)
View - Baum von Widgets, keine Reaktion von Benutzeraktionen, Widgets beinhalten View und Controller von MVC, View wird über Observer aktualisiert, besitzt Interface
Presenter - das Reagieren auf User Events obliegt dem Presenter mittels Commands (Command Pattern), Presenter ändert Daten im Model, synchronisiert Änderungen zwischen Model und View
Was ist der entscheidende Unterschied zwischen den Architekturmustern “Schichten und Layer” und “Hexagonale Architektur”
Schichten und Layer teilt das System in logische Schichten und Layer, die jeweils unterschiedliche Funktionen erfüllen, jede Schicht hat bestimmte Verantwortung und Aufgaben im System und kommuniziert mit der direkt drunter liegenden Schicht; Klare Trennung von Aufgaben und Verantwortlichkeiten im System und erleichtert die Wartung und Erweiterbarkeit des Codes
Bei der hexagonalen Architektur besteht das System aus einer zentralen Domäne und einer Reihe von Ports oder Schnittstellen, über die das System mit der Außenwelt kommuniziert
Beschreibe die wesentlichen Prinzipien des Architekturmusters “Leader and Follower”.
Hierarchische Verwaltung von Zugriffen auf gemeinsame Ressourcen
ein Teilnehmer ist Primary, alle anderen Secondary
Primary darf als einziger auf die Ressource zugreifen
Secondary darf nur auf Ressource zugreifen, wenn es vom Primary die Erlaubnis bekommt
Secondary muss warten, bis er die Erlaubnis bekommt (Wartepflicht)
Secondary kann Primary signalisieren, dass er die Erlaubnis bekommen möchte
Beschreibe die wesentlichen Prinzipien des Architekturmusters “Virtuelle Maschine”.
Funktionsweise
Kapselung eines Rechnersystems (oft Betriebssystem) innerhalb eines Rechners
Nachbildung eines realen Rechners
Hypervisor abstrahiert den Hostrechner
Mehrere virtuelle Maschinen auf einer realen Maschine möglich
Verschiedene Ausprägungen von rein Hardware- bis rein softwaremäßige Visualisierung
Container Systeme
Container bekommt nur notwendige Abhängigkeiten und ein Minimum an Betriebssystemanteilen
teilen sich den Betriebssystem-Kernel
sind untereinander isoliert
Klein, schnell, ressourcensparend
Nicht nur “docker”
Was bedeutet “SOA”?
= Service Oriented Architecture
Welche Ziele will man mit Hilfe der “Service Oriented Architecture” erreichen?
“Das Hauptziel einer Service-Orientierten Architektur (SOA) besteht darin, die Flexibilität, Agilität und Wiederverwendbarkeit von Anwendungen und IT-Systemen zu verbessern, indem sie als lose gekoppelte, wiederverwendbare Services organisiert werden.”
Beschreibe die wesentlichen Eigenschaften von “Microservices”.
Microservices sind ein Architekturmuster (distributed systems)
Methode der Softwareprogrammierung
Microservices zerlegen komplexe Anwendungen in kleinste unabhängige Prozesse
Weitestgehend entkoppelt und erledigen eine kleine Aufgabe
organisiert um Business Capabilities
Unabhängiges Deployment
verbesserte Skalierung und Ressourcenausnutzung pro Service
Prozesse kommunizieren über sprachunabhängige Schnittstellen miteinander
Ermöglichen einen modularen Aufbau der Software
Implementieren das Single Responsibility Pattern
Microservices unterliegen als Verteilte Architektur dem CAP-Theorem. Was sagt dieses Theorem aus?
In einem verteilten System ist es unmöglich, gleichzeitig die folgenden drei Eigenschaften zu garantieren:
Consistency (Konsistenz)
Availability (Verfügbarkeit)
Partition Tolerance (Ausfalltoleranz)
Laut dem CAP-Theorem kann ein verteiltes System zwei der Eigenschaften gleichzeitig erfüllen, jedoch nicht alle drei