AI Klausur Flashcards
Woraus besteht Softwarearchitektur?
- Strukturen wie Bausteinen, Beziehungen
- Entwurfsentscheidungen wie Technologien oder Architektur
- Sichten für Dokumentation über System
Nennen Sie eine der Definitionen für den Begriff Softwarearchitektur
- Softwarearchitektur ist der Teil der Software, die am schwersten zu ändern ist.
- Menge der Haupt und Designentscheidungen eines Systemes
Was ist Softwarearchitektur und wozu braucht man sie?
- Um komplexere Systeme zu entwickeln als kurze Snippets benötigt man Planung durch Architektur
- Gerade bei Arbeiten im Team mit hohen Anforderungen und Kosten braucht man geordnete Strukturen
Was muss ein Softwarearchitekt können?
- Beraten
- Dokumentieren
- Abschätzen
- Entwickeln
Wie konzipiert man große Anwendungen?
- Anhand von iterativen agilen Vorgehen
- Mit Architekturmustern, welche Lösungenrichtungen für komplexe große Systeme bereitstellen
- Anhand von Erfahrung und Ausprobieren
Wie werden Architekturen entworfen, dokumentiert und bewertet?
- Durch Architekten mit Erfahrung und Hilfsmittel, wie Muster, Templates und iteratives Vorgehen.
Nennen Sie stichwortartig 3 Gründe für den Einsatz von Sichten
- Filterung von Informationen der Darstellung auf das wesentliche
- Passende Darstellung für Betrachter mit verschiedenen Interessen
- Eine Darstellung kann nicht alle Eigenschaften eines Systems alleine abbilden
Was ist ein Architekturmuster?
- Heuristik, welche die Erfahrung und Wissen anderer Projekte nutzt um eine abstrakte Hilfestellung zu geben, ohne konkret zu sein.
Nennen Sie jeweils einen Vor und Nachteil des Layer Architekturmusters
-
Vorteil:
Wiederverwendung und Austauschbarkeit von Schichten -
Nachteil:
Unklar wie viele Schichten man braucht
Was macht ein Framework?
- Gibt Anwendungsarchitektur vor
- Definiert Kontrollfluss und Schnittstellen
Gibt es eine Definition von Framework?
- Nein, da sie sehr unterschiedlich sind.
Nennen Sie 3 Gründe gegen den Einsatz von Frameworks
- Höher Komplexität
- Mehr Spezialwissen nötig
- Grundlagenwissen weiterhin benötigt
Nennen Sie 3 Gründe für den Einsatz von Frameworks
- Grundfunktionalitäten, oft CRUD müssen nicht neu implementiert werden
- Sparen Entwicklungszeit
- Können den Programmierstil verbessern
Sind Softwarearchitektur und Design klar trennbar?
- Nein, die Grenzen verlaufen fließend.
- Design ist der Prozess der Erstellung der Architektur
Dienen Sichten dazu möglichst viele Informationen in einem Diagramm darzustellen?
- Nein, Sichten sollen gefiltert Informationen verständlich darstellen, welche jeweils für verschiedene Betrachter interessant sind.
Sollte man sich an die 4 Sichten Kontext, Laufzeit, Baustein und Verteilungssicht halten?
- Ja, sie decken alles grundlegendes ab.
- Alle anderen Sichten sind nur Abänderungen dieser.
Dient die Bausteinsicht ausschlielich als Referenz für die Softwareentiwickler?
- Nein, auch Projektleiter und Auftrageber schauen auf die Bausteinsicht um das Projekt zu überwachen und Systeme zu verstehen
Sollte jede Sicht in etwas die gleiche Zeit in Anspruch nehmen zum Erstellen?
- Nein, die Baustein Sicht wird 60-80% der Zeit brauchen, da sie die meisten Details enthält.
Führt eine gute Softwarearchitektur automatisch zu guter Codequalität?
- Nein, denn egal wie gut etwas geplant vorbereit und durchdacht ist, steht und fällt es mit der konkreten Implementierung.
Definiert ein Architekturmuster den Kontext für die Anwendbarkeit der Lösung
*
Ist das MVC Architekturmuster ist eine spezielle Variante des Layers Architekturmuster?
- Ja
Ist das ARC42 Dokumentationsframework das Ergebnis des formalen Norm-Prozesses der IEEE?
- Nein, es ist jahrzente lange Erfahrung als Template und bietet Kapitel die man knapp beschreiben soll
Sollte man in zeitkritischen Projekten generell keine Frameworks einsetzen?
- Nein, nur wenn man sie nicht kennt und viel Zeit in das Lernen der Frameworks stecken würde. Ansonsten kann einem ein Framework auch viel abnehmen und Applikationen schneller realisieren.
Nennen Sie 3 Architekturmuster beim Namen
- Peer To Peer (Verteilte Systeme)
- Model View Controller (Interaktive System)
- Mikrokernel (Adaptive System)
- Layers (Architektur)
Nennen Sie 3 Architektur Anti-Pattern beim Namen!
- Spaghetti Code
- Blendwerk
- Zwiebel
Was waren die Gründe für Softwarearchitektur?
- In den 1960er Jahren wurde Software immer komplexer daher musste man Software in Teams entwickeln und besser planen
In welcher Beziehung stehen Architektur und Design?
- Design ist der Prozess der Entstehung des Designs
- Architektur ist Menge der Haupt und Designentscheidungen eines Systems
-
Grenze zwischen Design und Architektur ist fließend
*
Was besagt Conways Law?
- Für die Definition von Schnittstellen getrennter Module ist zwischenmenschliche Kommunikation notwendig.
- Kommunikation in der Organisation ist daher sehr wichtig für die Struktur der Schnittstellen.
Was besagt Brooks Law?
- Fügt man einem bereits späten Softwareprojekt Leute hinzu wird es noch später.
Nennen und erläutern Sie 3 Arten von Architekturmustern
-
Verteilte Systeme:
Diese Systeme laufen nicht zentralisiert ab und Ressourcen und Daten werden in einem Netzwerk verteilt. Man benötigt eine gute Infrastruktur und erhöhten Verwaltungsaufwand und bekommt Systeme mit schwereren Zensurmöglichkeiten und Ausfall.
Beispiel: Peer To Peer Muster in BitTorrent -
Interaktive Systeme:
Systeme für die Interaktion von Computer und Mensch. Man benötigt gute Schnittstellen für Menschen der das Kernsystem robust gegen Fehleingaben macht.
Beispiel: Model-View-Controller Muster in Ruby on Rails -
Adaptive Systeme:
System soll Erweiterung und Anpassungsfähigkeit bieten. Kernfunktionalität soll unangetastet werden.
Beispiel: Microkernel bei Betriebssystemen
Für welche Systeme wird MVC typischerweise verwendet?
- Für interaktive Systeme, welche Schnittstellen zwischen Mensch und Computer definieren.
- Für Systeme bei denen man es als Erweiterung für das Layer-Pattern benutzen möchte im Schichten System
- Systeme bei denen Informationen unterschiedlich dargestellt und Schnittstellen oft geändert werden.