M1 Flashcards
Welche Architekturprinzipien sehen Sie in folgendem Klassendiagramm verletzt?
- Vermeide zyklische Abhängigkeiten
- Interface Segregation Principle
Wie hängt die Verteilungssicht im SAD mit der Bausteinsicht zusammen?
- Die Verteilungssicht beschreibt die Verteilung der Bausteine auf physische Ressourcen.
- Die Bausteinsicht legt die interne Struktur und Abhängigkeiten der Bausteine fest.
- Beide Sichten sind eng miteinander verbunden
Nachfolgend ist schematisch ein verteiltes System in 2 Varianten dargestellt. Die Komponenten des Systems wurden in der 2. Variante zur Laufzeit entkoppelt, durch die Kommunikation über eine asynchrone Middleware (Messaging).
Welche der Antworten sind zutreffend?
- Die Pufferung in der asnychronen Middleware kann beim Umgang mit kurzzeitigen Last-Spitzen helfen
- Durch die Entkopplung darf erwartet werden dass sich die Verfügbarkeit des Systems erhöht
Welches sind Teile eines strukturierten Vorgehens beim Entwurf einer Software-Architektur?
- Systemidee mit Stakeholdern validieren
- Überprüfung von Risiken mittels Prototypen
- Resultate immer wieder vorstellen und im Team besprechen
- Nach Grundsätzen & Prinzipen entscheiden
Welches sind geeignete Mittel um Architektur-Dokumentation aktuell zu halten
- Eher dokumentieren “Warum” es etwas so entworfen wurde als “Wie” es umgesetzt wurde
- Aktualisierung früh in den Prozess einbinden
- Entscheide festhalten mit Varianten, Annahmen und Zeitpunkt
Welches sind Mittel um Architekturarbeit im agilen / iterativen Kontext einzubetten?
- Automatisierung von Dokumentation und Governance
- Qualitätsstories im Backlog einplanen
- Früh Feedback einholen
- Risikogetrieben priorisieren
- Mit einem Walking Skeleton Architekturkonzepte verifizieren
Was benötigen Sie zum Erstellen einer Zerlegung in Komponenten?
Anforderungen und Randbedingungen
Das Anforderungskonzept verlangt eine pro Monat bewertete Verfügbarkeit eines Systems von 99.0%.
Wieviele Minuten darf das System pro Monat maximal ausfallen (Monat = 30 Tage)?
432
Welche dieser Punkte sind spezifische Herausforderungen des Loggings in verteilten Systemen?
- Korrelation der Log-Einträge zwischen Systemen
- Einfluss auf Performance durch Streaming der Logs übers Netzwerk
Wie hilft ein “Walking Skeleton” dabei, die Architektur zu entwicklen?
Ist eine Teil-Implementation des Systems welches die aus Architektursicht wesentlichen Komponenten beinhaltet und ermöglicht so die
Architekturvision früh zu validieren
Was sind die Auswirkungen wenn eine Komponente eine geringe interne Kohäsion hat? Begründen Sie (mind. 2 Auswirkungen).
- Schwierigkeiten bei der Wartung und Erweiterung
- Beeinträchtigung der Wiederverwendbarkeit
Was verstehen Sie unter “Anti-Zähigkeit”?
Ein System braucht neben Robustheit auch die Fähigkeit, von Störungen oder Veränderungen profitieren zu können und dadurch stärker zu werden.
Geben Sie zwei Gegenbeispiele davon: Wie und warum Sie als Architekt/in die Wahrscheinlichkeit dafür verringern dass das Architektur-Konzept im Entwicklungs-Team eingehalten wird.
- Mangelnde Kommunikation und Dokumentation
- Fehlende Schulung und Unterstützung
Welche dieser UML-Diagrammtypen zeigen eine Laufzeitsicht?
- Sequenzdiagramm
- Aktivitätsdiagramm
Worauf müssen sie achten bei Caching in der Persistenz-Schicht? Nennen Sie 2 Punkte.
- Muss bei Änderungen aktualisiert werden (Data Freshness)
- Erhöht Speicherverbrauch
Wie erklären Sie ihrer/ihrem Vorgesetzten warum es sich lohnt, für ein neu aufzubauendes Software-Produkt Aufwände in die Software-Architektur zu investieren? Begründen Sie.
- Schafft Qualität
- enthält bewusste Kompromisse und Entscheidungen
- hat zum Ziel, die funktionalen und nicht-funktionalen Anforderungen an ein System zu erfüllen
Wo fokussieren Sie ihre Architekturaufwände?
- Wo ich Risiken erwarte
- Auf komplexe Teilbereiche des Systems
Warum enthält ein SAD eine Bausteinsicht?
Die Bausteinsicht bildet die Aufgaben des Systems und die nicht-funktionalen Anforderungen auf Bausteine ab.
Was sind die wesentlichen Elemente einer Bausteinsicht?
- Bausteine
- Beziehungen und Abhängigkeiten
- Schnittstellen
- Hierarchie und Struktur
- Verantwortlichkeiten
- Annotationen und Beschreibungen
Wie gehen Sie vor beim Entwurf der Bausteinsicht?
- Von der Systemidee / Architekturvision ausgehen
- Elementen und Begriffe der Fachdomäne verwenden
- Einflussfaktoren und Randbedingungen berücksichtigen
- Architekturmuster und Referenzarchitekturen einsetzen
- Pragmatisch und redundanzfrei verfeinern: So viel als durch die Komplexität gerechtfertigt ohne Trivialitäten zu modellieren
- 60% - 80% der Zeit werden in diese Sicht investiert
Welche dieser Arten von Änderungen werden durch eine Schichten-Architektur gut gekapselt resp. haben eine begrenzte Auswirkung auf die
Applikation?
- Anpassung der Authorisierungs-Art einer angebundenene Schnittstelle
- Migration der Messaging-Technologie von IBM MQ auf Apache Kafka
- Persistenz-Framework austauschen
Welches davon sind Beispiele für Komplexitätstreiber einer Softwarearchitektur?
- Hohe Qualitätsanforderungen
- Es wird zum ersten Mal eine Document-Store-Datenbank als Persistenz-Technologie eingesetzt
- Sehr viele zu integrierende externe Systeme
Kontext
* Ein System wird auf zwei redundanten Hosts betrieben. Beim Ausfall des einen Hosts kann der andere sofort übernehmen.
* Die Datenbank wird aus Sicht des Systems extern betrieben, als eine Instanz welche gemeinsam von beiden Hosts verwendet wird. Diese
Datenbank weist eine Verfügbarkeit von 98% auf.
* Andere Systemkomponenten wie z.B. das Netzwerk werden nicht berücksichtigt
* Die Anforderungen verlangen dass das Gesamtsystem eine Verfügbarkeit von mindestens 97% erreicht.
Frage
* Welche Verfügbarkeit in Prozent (Ganzzahl reicht) müssen die beiden einzelnen redundanten Hosts je mindestens haben um die geforderte
Verfügbarkeit des Gesamtsystems zu erreichen?
90%
Nannen Sie 3 organisatorische Einfussfaktoren auf eine Softwarewarchitektur. Begründen Sie jeweils warum & in welcher Weise diese die Architektur
beeinflussen.
- Unternehmenskultur: Die Unternehmenskultur kann die Softwarearchitektur beeinflussen, indem sie die Akzeptanz neuer Technologien und innovativer Architekturen fördert oder einschränkt.
- Organisationsstruktur: Die Organisationsstruktur kann die Softwarearchitektur beeinflussen, indem sie die Zusammenarbeit, Kommunikation und Entscheidungsfindung zwischen den Architektenteams und anderen Stakeholdern beeinflusst.
- Managemententscheidungen: Entscheidungen des Managements können die Softwarearchitektur beeinflussen, indem sie die Ressourcenallokation, Prioritäten und den Umfang von Architekturinitiativen bestimmen.
Welches Rollenmodell erachten Sie in folgendem Kontext als am besten geeignet:
* Unternehmen ist sich gewohnt, mit agiler Methodik zu arbeiten
* Grösseres Produkt, mit vielen externen Abhängigkeiten, aber relativ klaren Zielen
* Dynamisches Umfeld welches den Teams viel Freiheit lässt
* 1:1-Ablösung eines existierenden Produktes, aber mittels neuer Technologien
* Architektur-Blueprint / Technologie-Stack in der Entstehung begriffen
* Entwicklungsteam ist über 3 Standorte verteilt, hat noch wenig Erfahrung, ist aber bereit Verantwortung zu übernehmen
Unterstützender Architekt / Unterstützende Architektin
Nennen Sie 3 Gründe warum Schnittstellen besondere Beachtung verdienen beim Entwurf einer Software-Architektur
- Interoperabilität: Schnittstellen ermöglichen die Interaktion und den Austausch von Daten und Funktionen zwischen verschiedenen Systemen, Komponenten oder Modulen, was die Interoperabilität und Integration erleichtert.
- Flexibilität und Erweiterbarkeit: Durch die Verwendung von Schnittstellen können verschiedene Komponenten unabhängig voneinander entwickelt und ausgetauscht werden, wodurch die Flexibilität und Erweiterbarkeit der Softwarearchitektur erhöht wird.
- Testbarkeit und Wartbarkeit: Schnittstellen ermöglichen eine klar definierte Schnittstelle zwischen Komponenten, was zu einer besseren Testbarkeit und Wartbarkeit führt, da Änderungen oder Upgrades an einer Komponente die anderen Komponenten nicht beeinflussen sollten, solange die Schnittstelle erhalten bleibt.
Nennen Sie 3 unterschiedliche Eigenschaften einer externen Schnittstelle welche für Sie als Architekt/in wichtig sind
- Stabilität und Abwärtskompatibilität
- Dokumentation und Verständlichkeit
- Sicherheit und Zugriffskontrolle
Warum denken Sie hat eine hohe Änderungsrate einen Einfluss auf die Architektur eines Systems
Eine hohe Änderungsrate hat einen Einfluss auf die Architektur eines Systems, da sie eine flexible, erweiterbare und modularisierte Architektur erfordert, um Änderungen effizient zu bewältigen und die Stabilität des Systems zu gewährleisten.
Nennen Sie zwei Möglichkeiten um die Architektur eines Systems so zu gestalten dass die Architektur über eine längere Lebensdauer häufige
Änderungen gut unterstützt
- Modularität und lose Kopplung
- Verwendung von Designprinzipien und Mustern
Was ist die Aussage der Kontextabgrenzung im SAD nach arc42?
Die Kontextabgrenzung im SAD nach arc42 beschreibt den systemischen Kontext der Softwarearchitektur, indem sie die externen Systeme und Benutzergruppen identifiziert und deren Interaktionen mit dem System festlegt.
Wie ist die Kontextabgrenzung aufgebaut?
- Externe Systeme
- Benutzergruppen
Was ist der Unterschied zwischen der technischen und der fachlichen Kontextabgrenzung
Die technische Kontextabgrenzung fokussiert sich auf die technischen Aspekte der Interaktion, während die fachliche Kontextabgrenzung den Fokus auf die Geschäftslogik und die funktionalen Anforderungen legt. Beide sind wichtig, um den systemischen Kontext der Softwarearchitektur vollständig zu verstehen und zu beschreiben.