SW Architektur und Entwurfsmuster

¡Supera tus tareas y exámenes ahora con Quizwiz!

Erklären Sie das Prinzip des Information Hiding (3 Punkte). Was passiert, wenn man dagegen Verstößt?

- Art und Weise wie ein Systemteil seine Aufgabe erfüllt muss im inneren des Moduls verborgen bleiben - Über das Modul sind nach außen nur Informationen bekannt, welche über eine Schnittstelle explizit zur Verfügung gestellt werden Über eine Schnittstelle wird so wenig wie möglich nach außen hin preis gegeben => Problem bei Verstoß: System wird instabil bei Änderungen

Was kann zu einem Systemausfall führen (In 2 Kategorien) ? Wie können diese Faktoren jeweils vermieden werden?

- Geplant ○ Hardware Upgrade => Abhilfe Hot Plug Hardware ○ Software Upgrade => Abhilfe: Rolling Upgrades ○ Wartungsarbeiten=> Abhilfe: Switchover auf anderen Knoten - Ungeplant ○ Defekte Hardware => Abhilfe: Redundante HW ○ Fehlerhafte Software => Abhilfe: aktuelle Patches ○ Bedienungsfehler => Abhilfe: Backup, Standby System ○ Stromausfälle => getrennte Stromnetze, USV ○ Netzwerkprobleme=> Redundante Netzwerkkomponenten Katastrophen / Desaster=> Ausweichrechenzentrum, Geo-Cluster

Welche Prinzipien müssen bei der Definition von Kategorien in Quasar beachtet werden(4)? Wan gilt eine Kategorie als Rein und wann als unrein?

- Kategorien sind teilgeordnet - Jede Kategorie kann eine oder mehrere Kategorien verfeinern - Der so entstehende Kategoriegraph ist zyklenfrei - Die Wurzel bildet die Kategorie 0 - Eine Kategorie a heißt rein, wenn es von a genau einen Weg zu Kategorie 0 gibt - Ansonsten heißt die Kategorie unrein - Reine Kategorien entstehen durch stückweise Verfeinerung von Kategorie 0 Jede einfache Komponente (=Modul), Schnittstelle und Klasse/Datentyp sollte genau zu einer reinen Kategorie gehören

Wofür dienen Szenarien (Definition 2, Anwendung 3)

Entwicklung & Qualitätssicherung der erstellten Architektur Definition - Ein Szenario ist eine Instanz eines allgemeinen Use-Case - Ein Szenario ist eine Abstraktion der relevanten Anforderungen Anwendung - Als Treiber um verschiedene Architekturelemente während des Designs zu ermitteln - Als Werkzeug der Qualitätssicherung und Visualisierung Kriterium für Architekturbewertung

Was bedeutet Idempotenz?

Mehrere Funktionsaufrufe führen immer zum gleichen Ergebnis unabhängig davon wie oft sie mit den gleichen Daten wiederholt werden

Welche Sichtbarkeitsregeln definiert Quasar basierend auf den Kategoriegraphen (2))?

Software einer hohen Kategorie darf nur auf Software einer niedrigeren Kategorie zugreifen (Vorgänger im Kategoriegraphen) Komponenten dürfen kommunizieren, sobald sie eine gemeinsame Gesprächsebene haben

Wie kann eine Schnittstelle dokumentiert werden?

Syntax kann in UML bzw. der jeweiligen Programmiersprache definiert werden Keine allgemeingültige Möglichkeit der Definition der Semanik Informell durch zugehörige Schnittstellendokumentation Vor- und Nachbedingungen sowie Invarianten um Schnittstelle zu beschreiben (z.B. QSL)

Was ist ein Service (DDD) ? Welche Desingprinzipien müssen bei der Erstellung eins Service beachtet werden(2)?

- Operation, welche für sich alleine innerhalb des Domänenmodells steht - eine notwendige Operation, welche aber nicht direkt einem Objekt (Entität/Value) zugeordnet werden kann Designprinzipien - Operation bezieht sich auf ein Konzept der Domäne, welches nicht natürlicher Bestandteil eines Entität oder Value-Objekts ist - Definition des Interface auf Basis des Domänenmodells Operation ist Zustandslos (stateless)

Wofür werden Softwarekategorien im Framework Quasar verwendet(3)?

- Richtschnur beim Entwurf von Komponenten - Dienen als Kontrollinstanz bei zukünftigen Änderungen Verbessertes Know-How-Management: Bei der Entwicklung ist es möglich, sich auf einzelne Sachgebiete des Wissens zu konzentrieren

Welche Eigenschaften müssen Systeme aufweisen, um als Hochverfügbar zu gelten?

- Toleranz und Transparenz gegenüber Fehlern - Redundante Auslegung aller Teilsysteme um einen Single Point of Failure zu eliminieren - keiner/geringer Datenverlust - Schnelle Wiederherstellungsmöglichkeiten Automatisierte Wiederherstellung ohne administrative Eingriff

Die 6-Merkmale einer Komponente

1. Eine Komponente exportiert eine oder mehrere Schnittstellen 2. Eine Komponente importiert andere Schnittstellen => (1+2)Komponenten sind über Schnittstellen gekoppelt 3. Eine Komponente versteckt die Implementierung 4. Eine Komponente definiert eine Einheit der Wiederverwendung 5. Komponenten können andere Komponenten enthalten Die Komponente spielt eine zentrale Rolle für Entwurf, Planung und Implementierung

Beschreiben Sie die Ablaufsicht und dessen Ziel. Welche Anforderung an die SW Qualität wird damit gelöst?

Abbildung des Produktmodells auf ein Verarbeitungsmodell. Behandlung von Nebenläufigkeit und Synchronisation Betrachtete Elemente - Teilmenge der nicht-funktionalen Anforderungen (performance, availability) - Nebenläufigkeit - Prozesse - Koordination / Synchronisation Statische Sicht - Stellt alle an der Verarbeitung beteiligten Klassen dar - Ergänzt um die Stereotypen <<process>> und <<thread>> Dynamische Sicht Stellt die Verarbeitung einer Anfrage auf Basis des statischen Modells dar => Sicherstellung der Skallierbarkeit

Erklären Sie das Prinzip der Dependency Injection(3Punkte) und nennen Sie die unterschiedlichen Mechansmen (3)

Abhängigkeiten zu den importierten Schnittstellen wird durch den Container (=Laufzeitumgebung) verwaltet Wird eine Komponente erzeugt, werden die Abhängigkeiten von außen durch den Container injiziert Komponenten selbst haben keine Abhängigkeiten zu importierten Schnittstellen Injection Mechanismen Setter Injection Constructor Injection Interface Injection

Was sagt das Liskovsche Substitutionsprinzip aus? Was kann Passieren, wenn gegen dieses verstoßen wird?

Alle beweisbaren Eigenschaften der Oberklasse müssen auch für alle Unterklassen gelten. => Wird gegen das Prinzip verstoßen ist die polymorphe Verwendung problematisch weil sich Unterklassen anders verhalten als die Oberklassen. Dadurch kann es zu instabilen Programmsystemen kommen.

Erklären Sie das Interface Seggregation Prinzip

Aufrufer soll nur von Schnittstellen abhängig sein, die er auch tatsächlich benötigt => Aufteilen großer Interfaces in kleine Teile => reduzieren der Abhängigkeit von unnötigen Schnittstelllen

Wofür steht das Base-Prinzip und was sagt es aus?

Basicly Availible, Soft State, Eventual Consitency Das System ist nach Ablauf einer gewissen (möglichst kurzen) Zeitspanne der Inkonsistenz wieder in einem konsistenten Zustand Konsistenz der Daten (temporär) wird zugunsten einer konstanten Verfügbarkeit der Daten eingeschränkt

Erklären Sie das Prinzip der Context Map (DDD) anhand eines Beispiels

Beispiel: Flugbuchungsapplikation für Frachtgut Es gibt 2 Bounded Kontexte Reise und Tourplanung: Berechung der besten Route bei Buchung => RoutingService hat Aufgabe der Berechnung Wegberechnung: Optimale Routenberechnung (nach Dijkstra) => Daten in Form von Matrizen Contextmap ermöglicht die Datentransformation zwischen beiden Contexten/Datenmodellen =>Definition Abbildung der relevanten Objekte aus beiden Contexten (=Berührungspunkte zwischen Modellen beschreiben) =>Definition eines Transformationsservices

Beschreiben Sie die Struktursicht und dessen Verwendungszweck (5) Welche Anforderung an die SW Qualität wird damit gelöst?

Beschreibt die Statische Struktur der Software in Form von Subsystemen und Komponenten Verwendungszweck - Requirement Allocation - Arbeitsorganisation - Kostenplanung und -Kontrolle - Projektfortschritt - Wiederverwendung - Portabilität Sicherheit => Sicherstellung der Wiederverwendung

Aus welchen Komponenten besteht das Decorator Pattern (4)

Component: zur Verfügung stehende Schnittstelle ConcreteComponent: Objekt, das Component-Schnittstelle implementiert Decorator: ○ Hält Referenz auf das zu dekorierende Objekt ○ Hält gleiche Schnittstelle wie die zu dekorierende Komponente Concrete Decorator: ○ fügt dekorierter Komponente zusätzliche Funktionalität hinzu ○ Überschreibt die angebotenen Methoden Delegiert Aufrufe an das dekorierte Objekt

Erklären Sie die Komponenen des Interpreter Patterns (4)

Context: Enthält Informationen für Berechnung, welche zwischen den Ausdrücken übergeben werden können AbstractExpression: Abstrakte Sicht auf einen Ausdruck. Ausdruck berechnet ein Ergebnis => Berechnung der konkreten Implementierung überlassen TerminalExpression: Einfacher Ausdruck, ist durch sich selbst beschrieben => benötigt keine weiteren Unterausdrücken NonTerminalExpresssion: Zusammengesetzter Audruck => Ergebniss berechnet aus Teilergebnisse der Unterausdrücke

Beschreiben Sie die Logische Sicht und dessen Ziel, Welche Anforderung an die SW Qualität wird damit gelöst?

Darstellung eines Implementierungsmodells. Ausgangspunkt ist ein Domänenmodell, welches um Designaspekte und Komponenten erweitert wird Ziel - Bereitstellung der funktionalen Anforderungen - Bereitstellung von Dienstleistungen (Services) welche das System für den Benutzer erbringen soll Verfeinern des Analysemodells in Form eines "Design"- Klasseniagramms => Realisierung der Funktionalität

Viele Anwendungen nutzen das Call-Return Prinzip. Was ist damit gemeint? Welche Eigenschaften sind damit verbunden

Das Hauptprogramm wird als Prozess gestartet und ruft verschiedene Methoden auf Eigenschaften Einfache Programme mit klar definierter Struktur Keine Parallelität in der Verarbeitung Arbeitsschritte werden sequentiell ausgeführt

Welche Arten der Kopplung gibt es (4) nennen Sie jeweils 3 Eigenschaften / Probleme

Datenkopplung Zugriff auf interne Datenstruktur einer Komponente Problematisch bei Veränderungen Einhaltung von Invarianten problematisch Strukturkopplung Ein Modul ist abhängig von Strukturelementen eines anderen Moduls Subsysteme sollen unabhängig voneinander entwickelt/ausgetauscht werden können Durch die "Strukturkopplung" entsteht eine sehr hohe Abhänigkeit, welche die Stabilität des Systems nachteilig beeinfluss Schnittstellenkopplung Zugriff nur über wohldefinierte Schnittstellen, welche Implementierungsdetails verbergen Kopplung ist akzeptabel. Interne Änderungen haben kein Auswirkung auf andere Module Problematisch: Veränderung der Schnittstelle Schnittstellenkopplung mit öffentlicher Schnittstellendefinition Module sind nicht mehr direkt voneinander Abhängig. Getrennte Entwicklung ist möglich Änderung der Öffentlichen Definition bedingt Änderung bei allen abhängigen Modulen => Öffentliche Definition stabil halten

Erklären Sie die Architekturform Micro Service. Welche Vor(3) und Nachteile sind damit verbunden?

Definition einer simplen Grundarchitektur, in die die konkreten Features unabhängig voneinander eingebettet werden Unabhängige Entwicklung der Features von UI bis zur Datenhaltung Kein gemeinsamer Code und keine gemeinsame Datenhaltung (Shared-Nothing) Features werden als getrennte Einheiten in Grundarchitektur eingebildet => Kommunikation über ein gemeinsames Protokoll (z.B. HTTP Rest) Vorteile - Jeder Microservice ist sehr kein => Einfacher zu verstehen, Schnellerer Programmstart - Es ist einfacher, neuere Versionen zu deployen (da unabhängige Entwicklung) - Fehlerisolation Nachteile - Zusätzliche Komplexität (aufgrund verteilter Architektur) Höherer Speicherverbrauch, da jeder Service in einer eigenen Laufzeitumgebung läuft

Erklären Sie das Prinzip Inversion-Of Control und nennen Sie mögliche Implementierungsvarianten(3)

Die Komponenten wissen nichts über ihre Umgebung. Die Umgebung steuert die Komponenten und deren Beziehung zueinander Implementierungsvarianten - Service Locator - Dependency Injection (Setter, Interface, Constructor Injection) - Compiler/Linker zur Übersetzungszeit

Warum sollte man beim Erstellen einer Komponentenarchitektur mit Quasar auf eine Strikte Trennung zwischen A und T Software achten? Und warum ist dies wichtig?

Die strikte Trennung führt zu einer hohen "Software-Hygiene" Warum ist dies wichtig? Die Technische Basis heutiger Systeme verändert sich permanent/schnell => Trennung wichtig um Flexibilität und Erweiterbarkeit einfach zu gestalten

Welche Möglichkeiten(3) gibt es Assoziationen im Domänenmodell zu Implementieren? Welche Vor und Nachteile sind damit verbunden und wann ist die Verwendung im Kontext DDD sinnvoll?

Direkt mit Hilfe von Objektreferenzen Nachteil: Lebenszyklus voneinander abhängig Vorteil: Einfch zu programmiern=> Objektnavigation möglich => Geeignet innerhalb eines Aggregats Indirekt mit Hilfe von Fremdschlüsselreferenzen Vorteil: Lebenszyklen unabhängig, geeignet zwischen Aggregaten Nachteil: Navigation über Zugriff auf Persistence-Layer=> Aufwändiger zu programmieren mit Hilfe von Lookup-Methoden

Welche Möglichkeiten gibt es, einen Konfigurator zu implementieren?

Direkter Aufruf des Konstruktors Indirekter Aufruf des Konstruktors über das Muster "Factory" Verwendung eines Namensdienstes Konfiguration zur Übersetzungszeit (Compiler/Linker)

Was ist beim Domain Driven Design im hinblick auf den Lebenszyklus der Domänenobjekte zu beachten(3Punkte)?

Domänenobjekte existieren nicht nur im Hauptspeicher sondern auch in der Datenbank. Sie haben unterschiedliche Repräsentationen Der Lebenszyklus, wie ihn eine Programmiersprache definiert, ist für Domänenobjekte zu klein gefasst Eine Persistzensschicht muss die unterschiedlichen Lebenszyklen zwischen den Domänenobjekten (Assoziationen) berücksichtigen

Was bedeutet Skallierbarkeit von SW Systemen

Eigenschaft eines SW Systems mit einem größeren Lastaufkommen fertig zu werden durch Nutzung von zusätzlich bereitgestellten Ressource

Was ist ein Session Context Manager? Erklären Sie in diesem Zusammenhang auch den Begriff "Multiple Request Session" und gehen Sie auf mögliche Probleme/offene Fragen des Serverpatterns ein(2)

Ein Server, der das Listener/Worker Pattern implementiert hat möchte Multiple Request Sessions handhaben. Der Kontext zwischen mehreren Request eines Clients soll erhalten bleiben => Ein Session Context Manager verwalten Zustand und Daten einer Multiple Request Session Worker bearbeitet einen Request, Anforderung des Kontext vom Manager Identifikation der Session => Session ID Client überträgt ID zusammen mit dem Service Request Multiple Request Sessions -Verbindungsaufbau Client <> Server -Mehrere Anfragen <> Antworten -Verbindungsabbau Eigenschaften Optimale Ausnutzung der Worker Tasks, da nicht zwischen zwei Service Request eines Clients für einen anderen Request blockiert wird Client muss Session über eine ID identifizieren => Wiederherstellen der Session bei Verbindungsausfall möglich Probleme/Offene Fragen Wird eine Session nicht sauber beendet=> Garbage Collection im Session Context erforderlich Höhere Antwortzeit aufgrund der Anforderung des Session Context

Erklären Sie die Begriffe Erweiterung und Modifikation im Zusammenhang mit dem Open-Closed Principle

Eine Erweiterung in diesem Sinne verändert das vorhandene Verhalten der Einheit nicht, sondern erweitert die Einheit um zusätzliche Funktionen und Daten Eine Modifikation hingegen, würde das bisherige Verhalten der Einheit ändern

Was versteht man unter einem Service Locator? Und welche Möglichkeiten gibt es, diesen zu implementieren(2)?

Eine Klasse hat alles Wissen über die vorhandenen Services (Komponenten) => Komponenten fragen die ServiceLocator Instanz um die Referenz auf weitere Komponenten Implementierungsarten - manuell/statisch: Festlegung der Services im Programmcode dynamisch: Konfiguration der Services mittels XML

Was versteht man unter einem Value-Object (DDD) und wie geht man bei der Implementierung damit um(Warum?)?

Enthält den Aspekt der Domäne, besitzt keine eigene konzeptionelle Identität => Definieren als immutable => Nicht ändern, sondern löschen und neu anlegen => ausschließen von Seiteneffekten aufgrund von gemeinsamer Verwendung Spezialfall: Mutability of Value O Objects aufgrund (Häufiger Wertänderung, Teurer Erzeugung/Löschung)

Welche Funktionen muss eine Clustersoftware erfüllen(3) und wie können diese realisiert werden?

Erkennen, das ein Knoten ausgefallen oder nicht voll funktionsfähig ist ○ Prüfen über verteiltes Cluster-Membership-Protokoll ○ Prüfen auf Betriebsumgebung (z.B. CPU-Last, Swap-Space) ○ Prüfen der Anwendung (z.B. Überwachen der Prozessliste) Durchführen eines Fail-Overs Stoppen des fehlerhafte Knotens Start des neuen Knotens Manueller Fail-Over durch den Administrator

Wozu/Warum benötigt man Factorys im Kontext Domain Driven Design? Wann benotigt man diese nicht (Was ist dabei zu beachten?)?

Erstellung eines Aggregates sehr komplex => viel internes Wissen benötigt (Kopplung) => Mittel der Kapselung von Internas der Objekterzeugung => Bessere Trennung von Verantwortlichkeiten Keine Factory verwenden - Keine relevante Vererbungshierarchie - Client ist an implementierenden Klasen interessiert Konstruktion nicht komplex => Konstruktor muss ebenfalls auf Einhaltung der Invarianten achten

Was versteht man unter Dependency Management? Wie können Abhängigkeiten mittels Konfigurationsgraphen aufgelöst werden?

Erstellung eines Konfigurationsgraphen - Komponenten definieren Knoten - Importbeziehungen definieren Kanten => Konfigurationsgraph muss "zyklenfrei" sein. Andernfalls entsteht eine unbeherrschbare Abhängigkeit zwischen den Komponenten (Callback) => Konfigurationsgraph muss "kreisfrei" sein. Sonst entstehen Seiteneffekte, die evtl. zu Problemen führen können

Erläutern Sie die Grundidee/-problem, welches durch den Einsatz von Erzeugermusstern gelöst werden soll (2)

Erzeugungsprozess von Objekten essentiell für Erweiterbarkeit Erzeugung von Objekten direkt über "new" => enge Kopplung

Was versteht man unter einem Aggregat? Welche Eigenschaften zeichnen ein Aggregat aus(3)?

Finden von Gruppen von Objekten, die als eine Einheit für Lade und Speichervorgänge verwendet werden können (= gleiche Lebenszyklus) Eigenschaften Aggregate: Kapselt Referenzen der beteiligten Objekte Besitzt Root Entity => Externe Verweise nur auf Root-Entity Andere Entities (nicht Root Entity) => lokale Entität, nur innerhalb des Aggregats eindeutig

Erklären Sie das Konzept Master-Slave Server? Welches Problem ist damit verbunden und welche Varianten gibt es dieses zu Lösen(2)?

Grundkonzept Ein Master erhält eine Client-Anfrage und verteilt diese auf mehrere Slaves (=Gehilfen) zur Bearbeitung Aus dem Ergebnis der einzelnen Slaves wird das Gesamtergebnis berechnet => Für Programme, welche eine hohe Fehlertoleranz, Rechengenauigkeit benötigen oder Parallelität in der Berechnung erlauben Idee Master startet mehrere Slaves als eigene Threads Probleme Was passiert, wenn der Master keinen Thread starten kann Welche Anzahl an Threads ist optimal? Variante - Slave-as-Process Master startet mehrere Slaves als eigene Prozesse Master kennt nur Stellvertreter-Objekte (Proxy), welche die Kommunikation mit den "RemoteSlaves" übernehmen Für Master bleibt die Kommunikation transparent Variante - Workpool Modell Master verwaltet eine Menge von Slaves Eingehende Anfragen der Clients werden jeweils auf einen der Slaves aufgeteilt und zur Auführung gebracht => Vorteil: Anfragen werden mit einer definierten Anzahl an Ressourcen ausgeführt Sind weniger Ressourcen als Anfragen vorhanden, müssen alle eingehenden Anfragen warten

Erklären Sie das Prinzip Hohe Kohäsion - Niedrige Kopplung? Warum sollte man das Prinzip anwenden?

Hohe Hohäsion (Zusammenhalt) Dinge sollen in Struktureinheiten zusammengefasst werden, die inhaltlich zusammengehören Innerer Zusammenhalt der Komponente. Die internen klassen haben eine hohe Abhängigkeit und bearbeiten gemeinsam ein Thema Niedrige Kopplung (Abhängigkeiten) Einzelne Struktureinheiten sollen möglichst unabhängig voneinander sein Es muss möglich sein, einzelne Komponenten A weitgehend auszutauschen oder zu verändern ohne Komponente B zu verändern Kopplung ist ein Maß für die Abhängigkeit zwischen Komponenten Geringe Kopplung erleichtert die Wartbarkeit und macht Systeme stabiler Motivation Lokale Begrenzung der Auswirkungen bei Austausch/Veränderung der Subsysteme

Was sagt das CAP-Theorem aus

In einem Netzwerksystem sind zu einem gegebenen Zeitpunkt nur zwei der drei Eigenschaften Konsistenz (C), Verfügbarkeit (A) und Partitionstoleranz (P) (= Ausfalltoleranz der Rechner/Servernetze) gleichzeitig realisierbar

Was zeichnet eine Komponente im Hinblick auf die Anwendungsstruktur/-architektur aus (5 Merkmale)?

Komponenten stellen die Grundpfeiler einer Anwendung dar Zerlegen in Komponenten ≜Gliederung Lösungsstruktur durch Festlegen der Abhängigkeiten zwischen Komponenten Definition der Komponenten neutral und Implementierungsunabhängig Ausgangspunkt für (Entwurf, Codierung, Test)

Nennen und Erklären Sie 4 Arten der Skallierbarkeit

Lastskalierbarkeit: konstantes Verhalten über Lastbereiche hinweg Räumliche Skallierbarkeit: Speicherplatz steigt nicht inakzeptabel hoch an, wenn Anzahl der zu verwaltenden Objekte steigt Zeitlich-räumliche Skallierbarkeit: Zeigt an, wie das System mit der erhöhten Antwortzeit, wenn die Anzahl der Datenobjekte ansteigt Strukturelle Skallierbarkeit: sagt aus, dass sich die SW Architektur des Systems nicht hinderlich auf die Erhöhung der Anzahl der Datenobjekte auswirkt

Welche Möglichkeiten/Ansätze gibt es innerhalb der Persistenz zu skallieren(2)? Was ist die Idee hinter den einzelnen Verfahren?

Master-Slave DB DB hat wesentlich mehr Lese als Schreibzugriffe => erstellen mehrerer Read-Only-Kopien und verteile den lesenden Zugriff diese Kopien => Achtung Aktualisierung der Kopien nicht 100%-Synchron Master DB: Zeichnet alle Änderungen der Daten auf => Replikation an Slaves Slave DB: Enthält Read-Only Kopie =>Änderungen werden zeitversetzt in die Slave-DB übernommen Vertikale Fragmentierung Aufteilen der Gesamtheit der Datensätze einer Tabelle auf unterschiedliche (physische) Tabellen Partitionierung: Alle Teile einer Tabelle auf dem gleichen Rechner Sharing: Die Teile einer Tabelle können über mehrere Rechner verteilt werden

Was ist mit Interner Wiederverwendung gemeint? Was wird dadurch erreicht und womit kann man dies erreichen(Werkzeuge/Hilfsmittel)? Welche Probleme können bei einer Internen Wiederverwendung auftreten?

Maß für die Ausnutzung von Gemeinsamkeiten zwischen Komponenten Reduktion der Redundanz Erhöhung der Stabilität und Ergonomie Hilfsmittel - im objektorientierten Entwurf: Vererbung, Parametrisierung - Im modularen und objektorientierten Entwurf: Module/Objekte mit allgemeinen Schnittstellen Problem Wiederverwendung kann Kopplung erhöhen => Schnittstellenkopplung und Strukturkopplung

Warum sind Konzeptionelle Serverpatterns in heutigen SW Systemen wichtig (2)

Moderne Softwaresysteme sind unterteilt in einen Client- und einen Serverteil Serverkomponente nutzt Multitasking um eingehende Aufträge zu bearbeiten

Was beschreibt das Dependency-Inversion Prinzip und was wird damit erreicht?

Module hoher Ebene sollen nicht von Modulen niedriger Ebene abhägen. Beisde sollen von Interfaces abhängen Interfaces sollen nicht von Details abhägen. Details sollen von Interfaces abhängen => Abhängigkeitsbeziehungen immer in eine Richtung => Vermeidung zyklischer Abhängigkeiten

Was ist der Unterschied zwischen Objektorientierter und Dienstorientierten Schnittstellen? Was bedeutet dies für die Kopplung?

Objektorientierte Schnittstellen enthalten Objektreferenzen auf Domain-Objects => enge Kopplung (Importeur ist eng an Exporteur gekoppelt) Dienstorientierte Schnittstellen enthalten nur Werte => lose Kopplung, da Seiteneffekte ausgeschlossen sind (aufgrund call-by-value), Kopplungsform erfolgt über Datenobjekt

Wie kann eine Hohe Kohäsion erreicht werden (3)

Prinzipien der Objektorientierung (Datenkapselung) Einhalten von Regeln zur Paketbildung Verwendung geeigneer Muster zur Kopplung und Entkopplung

Was ist ein Bounded Context (DDD) welches Problem soll damit gelöst werden?

Problem - In großen Projekten werden verschiedene Modelle verwendet - Kombination von Code (basierend auf verschiededenen Modellen) => Software wird fehleranfällig, unzuverlässig und schwer verständlich - Nicht klar, in welchem Kontext ein Modell nicht verwendet werden soll Lösung - Explizites definieren eines Kontextes => in welchem Modell findet er Anwendung - Grenzen des Kontextes (Teamorganisation, Spezielle Anwendungsbereiche der Anwendung) => Modell konsistent innerhalb dieser Grenzen => Keine Beeinflussung durch Probleme außerhalb der Grenzen

Was ist ein Anticorruption Layer? Welches Problem soll damit gelöst werden und welches Pattern wird dabei verwendet(wofür?)?

Problem - Integration eines Systems mit Altsystemen (Legacy) => Modelle von Altsystemen oft widersprüchlich und labil => Bei Vermischung ist auch das neue System davon betroffen Lösung - Definieren eines "Isolation Layer" welche dem Client externe Funktionalität innerhalb des eigenen Domänenmodells zur Verfügung stellt - Isolation Layer kommuniziert mit externen Systemen durch existierende Schnittstellen ohne/mit geringer Modifikation => Isolation Layer ist Übersetzer in beide Richtungen Patterns Adapter: Wrapper stellt Client ein anderes Protokoll zur Verfügung als durch das Subsystem angesprochen wurde

Welches Problem soll mit dem Pattern "Object Pool" gelöst werden? Wie ist die Funktionsweis und wo wird es Eingesetzt(2)? Nennen Sie mögliche Vor(1)-und Nachteile(3)

Problem Erzeugung von Objektinstanzen unter Umständen Zeitaufwändig Zweck Definiton eines Pools von Objekten Bereitstellung der Objekte an den Client Objekte wiederverwendbar, wenn nicht mehr Benötigt Beispiel Thread-Pool Datenbank-Pool Vorteile Erzeugung von aufwendigen Objekten optimiert => Schonung von Systemressourcen Nachteil Rückgabe von Objekten muss durch Client erfolgen (Programmierfehler) Objekte müssen sich vor Ihrer Wiederverwendung wieder im Initialzustand befinden Pool an zentraler Stelle => Deadlock möglich

Was zeichnet ein Fehlertolerantes System aus? Erklären Sie in diesem Zusammenhang den Begriff "Hybride Systeme"

Reaktion auf jede erdenklcihe Art von Fehler Alle Elemente des Systems müssen Fehlertolerant sein Hardware Hochverfügbare Festplattensysteme (RAID) Software Awendung kann nach einem Fehler korrekt weiterarbeiten (Failover) Erkennen aktiver Transaktionen Reaktion auf Fehlersituation und Bereinigung/Wiederholen offener Transaktionnen Hybride Systeme Kombination aus redunanter HW und SW Ganze Rechner werden redundant vorgehalten Idealerweise ohne Verlust von Daten

Wofür wird das Proxy-Pattern verwendet(3)?

Remote-Proxy/Stub für verteilte Objekte Virtueller Stellvertreter: Verzögerung "teurer" Operationen auf den Zeitpunkt des tatsächlichen Bedarfs Schutzproxy: Sicherstellen von Zugriffsrechte auf ein Objekt

Was ist ein Repository (DDD)? Was sind die Vorteile von Repositorys(4)?

Repositories Objekt, welches eine Menge von Objekten als konzeptuelles Set repräsentiert virtuelle Collection => Abbildung auf Persistenzmechanismus Stellt Methoden zur Verfügung ○ CRUD (Create,Update,Delete) ○ Suchen nach Objekten - Repositories nur für Aggregat-Roots - Schafft Illusion eines "In-Memory-Speichers" => alle Art von Objekt-Speicher und Zugriff an Repository delegieren Vorteile - Einfaches Modell für Zugriff auf Persistenz und Lebenszyklus - Trennung zwischen Applikations- und Domainlogik von Persistenztechnologi - Explizite Darstellung von Design-Entscheidungen über den Objekt-Zugriff - Einfache Ersetzung durch eine Dummy-Implementierung bzw. andere Strategie Reposity Teil der Domäenschicht, Zugriff auf Objekte der Persistenzschicht

Was ist eine Schnittstelle und was zeichnet sie aus

Schnittstellen sind das Bindeglied zwischen Komponenten Die Definition einer Schnittstelle besteht aus einer Menge von verschiedenen Operationen => Abbildung über ein technisches Protokoll (z.b. Webservices, RMI,...) Eine Operation wird durch folgende Eigenschaften definiert Syntax (Signatur) Semantik Nichtfunktonale Eigenschaften (Performance, Robustheit, Verfügbarkeit)

Welche Möglichkeiten gibt es Domänenobjekte, die Assoziationen zu anderen Domänenobjekten aufweisen, zu persistieren (3) und Welche Vor und Nachteile sind damit verbunden?

Separates Speichern jedes einzelnen Objektes ○ Nachteil: Navigation über Persistence-Layer, Viele Lade/Speicher-Vorgänge ○ Vorteil: Effizienter im Speicherverbrauch Speichern des kompletten Objektgraphen ○ Vorteil: Navigation über Assoziationen , Ein Lade/Speicher Vorgang ○ Nachteil: Hoher Speicherverbrauch Separates Speichern von Aggregaten Finden von Gruppen von Objekten, die als eine Einheit für Lade und Speichervorgänge verwendet werden können (= gleiche Lebenszyklus)=> Aggregate

Was versteht man unter einem Session Fail Over Cluster? Welche Eigenschaften muss die Anwendungsschicht hierfür aufweisen (2) und welche Varianten der Spiegleung des Session Context gib es? Welches Problem bringt das Verfahren mit sich?

Sicherstellung der Fortsetzbarkeit einer Session selbst wenn der aktuell bearbeitende Knoten ausfällt Notwendige Eigenschaften Persistente Speicherung der Session-Kontexte außerhalb des eigentlich bearbeitenden Dienst- Servers Automatischer Zugriff auf die Kopie eines Session Kontextes wenn Request einer unbekannten Session ankommt Varianten der Spiegelung des Session-Context Über Datenbank Über verschiedene Knoten (im Hauptspeicher) => Routing des Sessionkontext zu neuem Knoten im Fehlerfall (Durch Load-Balancer) Bewertung Schlechtere Antwortzeit durch Spiegelung der Sessionkontexte Spiegelung Löst jedoch Problem nicht entgültig Kritisch prüfen ob Session Fail Over notwendig ist

Definieren Sie das Prinzip "Seperatio of Conzerns". Was ist mit "Concern" gemeint?

Unterschiedliche "Concerns" sollen durch unterschiedliche Systemteile realisiert werden Concerns Spezifische Anforderung oder Gesichtspunt, welcher in einem Software-System behandelt werden muss, um die übergreifenden Systemziele zu erreichen

Was versteht man unter einem Selective Broadcast? Nennen Sie Anwendungsmöglichkeiten(2), die Vorteile(3) sowie damit verbundenen Probleme(3)

Verwendet ein ereignissgesteuertes Modell anstelle von direkten Methodenaufrufen Komponenten können sich für den Empfang von Ereignissen registrieren => Tritt das Ereignis auf, werden alle registrierten Komponenten von diesem Ereignis benachrichtigt Anwendung Verteilte Systeme können auf Basis dieser Muster lose gekoppelt werden Erweiterbare, graphische Oberfläche (z.B. Eclipse) Vorteile Einfache Erweiterbarkeit, wenn System auf diesem Muster basiert Geringe Kopplung zwischen dem Kernsystem und den angebundenen Komponenten Bestehende Komponenten können ausgetauscht werden Probleme Nach Melden eines Events gibt EventSource die Kontrolle über die Verarbeitung des Ereignisses ab Keine feste Verarbeitungsreihenfolge bei mehreren Listener EventSource weiß nicht wann alle Events abgearbeitet sind

Welche Vor(3)- und Nachteile(2) sind mit dem Obeserverpattern verbunden?

Vorteile - Neue Observer können jederzeit hinzugefügt werden - Observer und Observable unabhängig voneinander - Unabhängige Weiterentwicklung/Wiederverwendung von Observer und Observable möglich Nachteil - Bei vielen Observer Objekten => Benachrichtigungen dauern lange - Zustand wird von Observable durch Observer geändert => Endlosschleife Jeder Observer wird informiert, auch wenn er die Nachricht nicht benötigt

Nennen Sie Vor(2)- und Nachteile(1) des Visitorpatterns

Vorteile - Neue Operationen lassen sich leicht durch die Definition neuer Besucher hinzufügen - Besucher können über mehrere Klassenhierarchien arbeiten Nachteile Gute Erweiterungsmöglcihkeiten der Klassen von Bersuchern => aber: schlechte Erweiterbarkeit der Klassen der konkreten Elemente Neue Klassen konkreter Elemente => Erweiterung in allen Besuchern

Nennen Sie Vor- und Nachteile des Strategiepatterns

Vorteile Erhöhung der Flexibilität des nutzenden Kontext Möglichkeit Familien von Algorithmen zu definieren => Jeder Algorithmus ist gekapselt => Kann beliebig ausgetauscht werden Nutzender Kontext abhängig von der konkreten Implementierung Nachteil Applikation muss die zu nutzende Strategie nennen (Konfiguration) ggf. zu viele Strategien, welche selten genutzt werden => Erhöhung des Testaufwands Parameterübergabe zwischen Kontext und Strategie aufwendig

Nennen Sie Vor(2)- und Nachteile(1) des Interpreter Patterns

Vorteile Grammatik kann durch Entwurfsmuster leicht geändert oder erweitert werden Derselbe Satz oder Ausdruck kann durch ändern des Kontextes immer wieder auf neue Art und Weise interpretiert werden Nachteil Für komplexe Grammatiken und sehr große Sätze ungeeignet => Klassenhierarchie zu groß => Sinkende Effizienz => Parsergerneratoren besser für komplexe Grammatiken

Welche Vor(4)- und Nachteile(1) sind mit dem Decoratorpattern verbunden

Vorteile mehrere Dekorator können hintereinander geschaltet werden Dekorator kann zur Laufzeit und sogar nach Instanziierung ausgetauscht werden Die zu dekorierende Klasse nicht unbedingt festglegt (jedoch Schnittstelle) Vermeidung langer und unübersichtlicher Vererbungshierarchieen Nachteil Dekorierte Komponente nicht identisch mit der Komponente selbst => Achtung beim Testen auf Objekt-Identitäten (Unterschiedlich obwohl gleiche Komponente gemeint)

Was beschreibt Recovery Point Objective (RPO)?

Wie hoch darf der maximale Datenverlust sein?

Was beschreibt Recovery Time Objective (RTO)?

Wie lange darf ein IT-System maximal ausfallen?

Was ist eine Komponentenarchitektur(3Punkte)? Nennen Sie die Ziele(4) sowie Vorraussetzungen für eine sinnvolle Zerlegung (3)

Zerlegung des Systems in kleine, voneinander möglichst unabhängige Teile (=Komponenten) Bei großen Systemen können diese Komponenten wieder in Teile zerlegt werden. Ein Subsystem stellt dann quasi selbst wieder ein System dar Abstraktion der spezifischen Aufgaben der Subsysteme Motivation/Ziel - Reduktion der Komplexität - Parallelisierung bei der Entwicklung - Komponenten können von Zulieferern entwickelt werden/Fertig gekauft werden - Erhöhung der Wartbarkeit und Portierbarkeit Voraussetzung für eine sinnvolle Zerlegung Geringe Schnittpunkte zwischen Komponenten Klare Definition der Schnittstellen zwischen Komponenten Sinnvolle Aufteilung der Verantwortlichkeiten auf die Komponenten

Beschreiben Sie die Physikalische Sicht und dessen Ziel. Welche Anforderung an die SW Qualität wird damit gelöst?

Zuordnung der Software auf die physische Hardware sowie Verteilung (=Distributed System) Ziel Sicherstellung der nichtfunktionalen Anforderungen (availability, reliability, performance, scalability) Betrachtete Elemente - Netzwerk - Kommunikation - Verarbeitungsknoten Verteilung der Subsysteme/Komponenten auf verschiedene Knoten => Sicherstellung der Availability

Erklären Sie den Zweck des Visitorpatterns + Beispiel(2) und erklären Sie die Komponenten (3)

Zweck - stellt eine allgemeine Möglichkeit zur Traversierung einer beliebigen Datenstruktur zur Verfügung - Trennt die Datenstruktur von den Operationen, welche auf dieser auszuführen sind Beispiel - Compilerbau: Erzeugen des Quellcodes - Interpreter: Berechne dynamisch das Ergebnis eines Ausdrucks Komponenten - Visitor: deklariert für jede Klasse konkreter Elemente eine Besuchsfunktion - ConcreteVisitor: ○ Implementiert Besuchsfunktion ○ Jede Besuchsfunktion ist ein Fragment des Algorithmus, der auf die gesammte Objektstruktur angewendet wird ○ lokaler Zustand dient als Kontext für den Algorithmus - Element: Schnittstelle zum Empfang eines Besuchers - ConcreteElement ○ Implementiert Empfang eines Besuchers ○ Definiert, wie konkretes Element traversiert wird Gibt Visitor an Kindelement weiter

Was ist der Zweck des Singleton-Patterns(2)? Nennen Sie Einsatzbeispiele(3) sowie Vor(3)- und Nachteile(4)?

Zweck Absicherung: Klasse besitzt genau eine Instanz Bereitstellung von globalen Zugriffpunkte Beispiel Logging (Applikationsweit) Gemeinsamer Zugriff auf Ressourcen (Drucker,Cache) Realisierung einer Komponenten-Architektur Vorteile Verbesserung ggü. globalen Variablen Zugriffskontrolle realisierbar globaler Namensraum wird nicht "verschmutzt" Kontrolle über Initialisierungsreihenfolge Einzelinstanz muss nur erzeugt werden wenn benötigt(=Lazy Loading) Sollten später mehrere Objekte benötigt werden => Änderung leichter als bei globalen Variablen Nachteil Verschleierung der Abhängigkeiten zur Singleton-Klasse Erhöhung der Kopplung Einführung eines globaler Status Test wird erschwert (ken Mocken möglich) Performance-Engpas bei multithreaded-Applikationen (Synchronisation)

Wofür wird das Strategiepattern verwendet(Zweck)? Nennen Sie mögliche Anwendungsbeispiele(3)

Zweck Ermöglicht Austauschen eines ganzen Algorithmus in Form einer Kapsel Anwendung möchte verschiedene (Lösung-)Strategien für ein Problem anbieten Beispiel Landesabhängige Berechnung der Steuern Ein Zip-Tool das verschiedene Kompressionsalgorithmen bieten soll Layout von Komponenten in einer graphischen Oberfläche

Welchem Zweck dient das Obsever Pattern? Was soll damit erreicht werden? Nennen Sie mögliche Anwendungsbeispiele(2)

Zweck Objekt möchte andere Objekte über eine Veränderung des eigenen Zustands informieren Lose Kopplung zwischen den Objekten Menge der informierten Objekte soll sich ändern können Beispiel Aktualisierung einer Anzeige, wenn sich ein Eingabewert ändert Neu kompilieren einer Klasse, wenn der Quelltext geändert wurde

Was ist der Zweck des Patterns "Abstract Factory"? Aus welchen Komponenten besteht das Pattern und welche Vor(3)- und Nachteile(4) sind damit verbunden?

Zweck Schnittstelle zum Erzeugen von Familien verwandter/voneinander Objekte Bennennen keine konkreten Klassen Komponenten Abstract Factory: deklariert eine abstrakte Schnittstelle für Operationen, die konkrete Produktobjekte erzeugen Concrete Factory: Implementiert die Operationen zur Erzeugung konkreter Produktobjekte Abstract Product: Schnittstelle für einen bestimmten Typ von Produktobjekten Concrete Product: Implementiert eine von der Konkreten Fabrik zu erzeugendes Produktobjekt Vorteile Konkrete Klassen werden isoliert Austausch von Produktfamilien einfach möglich Nachteil Neue Produktarten lassen sich nur schwer hinzufügen => Änderungen an allen konkreten Fabriken erforderlich


Conjuntos de estudio relacionados

Mukesh Ambani ranked 12th in the Bloomberg Billionaires Index 2021

View Set

Entrepreneurial Small Business Chapter 3

View Set

Ch 14: information technology (IT) for business

View Set

Avian - mareks, myoplasma, and turkey bordatella

View Set

13. Central Nervous System Trauma

View Set

ch 4 adaptive quizzing womens health

View Set

El Día de Los Muertos Questions

View Set

Increased Intracranial Pressure (ICP) NCLEX Questions

View Set

Rad Review test questions, Pt 11, Pt 12

View Set

PRIVACY 2 Privacy for Customer Contact Personnel

View Set

Amoeba Sisters Video Recap: Photosynthesis and Cellular Respiration

View Set