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