AI Klausur Flashcards

1
Q

Woraus besteht Softwarearchitektur?

A
  • Strukturen wie Bausteinen, Beziehungen
  • Entwurfsentscheidungen wie Technologien oder Architektur
  • Sichten für Dokumentation über System
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Nennen Sie eine der Definitionen für den Begriff Softwarearchitektur

A
  • Softwarearchitektur ist der Teil der Software, die am schwersten zu ändern ist.
  • Menge der Haupt und Designentscheidungen eines Systemes
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Was ist Softwarearchitektur und wozu braucht man sie?

A
  • 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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Was muss ein Softwarearchitekt können?

A
  • Beraten
  • Dokumentieren
  • Abschätzen
  • Entwickeln
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Wie konzipiert man große Anwendungen?

A
  • Anhand von iterativen agilen Vorgehen
  • Mit Architekturmustern, welche Lösungenrichtungen für komplexe große Systeme bereitstellen
  • Anhand von Erfahrung und Ausprobieren
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Wie werden Architekturen entworfen, dokumentiert und bewertet?

A
  • Durch Architekten mit Erfahrung und Hilfsmittel, wie Muster, Templates und iteratives Vorgehen.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Nennen Sie stichwortartig 3 Gründe für den Einsatz von Sichten

A
  • 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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Was ist ein Architekturmuster?

A
  • Heuristik, welche die Erfahrung und Wissen anderer Projekte nutzt um eine abstrakte Hilfestellung zu geben, ohne konkret zu sein.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Nennen Sie jeweils einen Vor und Nachteil des Layer Architekturmusters

A
  • Vorteil:
    Wiederverwendung und Austauschbarkeit von Schichten
  • Nachteil:
    Unklar wie viele Schichten man braucht
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Was macht ein Framework?

A
  • Gibt Anwendungsarchitektur vor
  • Definiert Kontrollfluss und Schnittstellen
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Gibt es eine Definition von Framework?

A
  • Nein, da sie sehr unterschiedlich sind.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Nennen Sie 3 Gründe gegen den Einsatz von Frameworks

A
  • Höher Komplexität
  • Mehr Spezialwissen nötig
  • Grundlagenwissen weiterhin benötigt
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Nennen Sie 3 Gründe für den Einsatz von Frameworks

A
  • Grundfunktionalitäten, oft CRUD müssen nicht neu implementiert werden
  • Sparen Entwicklungszeit
  • Können den Programmierstil verbessern
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Sind Softwarearchitektur und Design klar trennbar?

A
  • Nein, die Grenzen verlaufen fließend.
  • Design ist der Prozess der Erstellung der Architektur
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Dienen Sichten dazu möglichst viele Informationen in einem Diagramm darzustellen?

A
  • Nein, Sichten sollen gefiltert Informationen verständlich darstellen, welche jeweils für verschiedene Betrachter interessant sind.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Sollte man sich an die 4 Sichten Kontext, Laufzeit, Baustein und Verteilungssicht halten?

A
  • Ja, sie decken alles grundlegendes ab.
  • Alle anderen Sichten sind nur Abänderungen dieser.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Dient die Bausteinsicht ausschlielich als Referenz für die Softwareentiwickler?

A
  • Nein, auch Projektleiter und Auftrageber schauen auf die Bausteinsicht um das Projekt zu überwachen und Systeme zu verstehen
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Sollte jede Sicht in etwas die gleiche Zeit in Anspruch nehmen zum Erstellen?

A
  • Nein, die Baustein Sicht wird 60-80% der Zeit brauchen, da sie die meisten Details enthält.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

Führt eine gute Softwarearchitektur automatisch zu guter Codequalität?

A
  • Nein, denn egal wie gut etwas geplant vorbereit und durchdacht ist, steht und fällt es mit der konkreten Implementierung.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

Definiert ein Architekturmuster den Kontext für die Anwendbarkeit der Lösung

A

*

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

Ist das MVC Architekturmuster ist eine spezielle Variante des Layers Architekturmuster?

A
  • Ja
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

Ist das ARC42 Dokumentationsframework das Ergebnis des formalen Norm-Prozesses der IEEE?

A
  • Nein, es ist jahrzente lange Erfahrung als Template und bietet Kapitel die man knapp beschreiben soll
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

Sollte man in zeitkritischen Projekten generell keine Frameworks einsetzen?

A
  • 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.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q

Nennen Sie 3 Architekturmuster beim Namen

A
  • Peer To Peer (Verteilte Systeme)
  • Model View Controller (Interaktive System)
  • Mikrokernel (Adaptive System)
  • Layers (Architektur)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
Q

Nennen Sie 3 Architektur Anti-Pattern beim Namen!

A
  • Spaghetti Code
  • Blendwerk
  • Zwiebel
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
26
Q

Was waren die Gründe für Softwarearchitektur?

A
  • In den 1960er Jahren wurde Software immer komplexer daher musste man Software in Teams entwickeln und besser planen
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
27
Q

In welcher Beziehung stehen Architektur und Design?

A
  • 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
    *
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
28
Q

Was besagt Conways Law?

A
  • 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.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
29
Q

Was besagt Brooks Law?

A
  • Fügt man einem bereits späten Softwareprojekt Leute hinzu wird es noch später.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
30
Q

Nennen und erläutern Sie 3 Arten von Architekturmustern

A
  • 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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
31
Q

Für welche Systeme wird MVC typischerweise verwendet?

A
  • 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.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
32
Q

Was sind 2 Grundprinzipien hinter Ruby on Rails?

A
  • Dont Repeat Yourself:
    Jede Info nur einmal vorhanden
  • Webserver Unterstützung:
    Für Apache etc
33
Q

Wann ist die Verwendung eine Frameworks nicht sinnvoll?

A
  • Wenn man nur einen kleinen Teil des Frameworks haben will
  • Hoher Zeitdruck und keine Ahnung von dem Framework, was zu noch mehr Zeitdruck führt
  • Wenn man denkt ein Framework löst jedes Problem
34
Q

Nennen Sie 3 Auswahlkriterien für Frameworks

A
  • Popularität:
    Finde ich Hilfe und Entwickler zum Framework?
  • Sicherheit:
    Wie schnell werden Lücken gepatcht?
  • Dokumentation:
    Wie brauchbar und aktuell ist die Dokumentation?
35
Q

Wie ist das ARC42 Template entstanden?

A
  • Durch die jahrzente lange Erfahrung von Softwareentwicklern, welche ein knappes Template mit Kapitelangaben geschrieben haben, um die Dokumentation abzuwickeln.
36
Q

Was ist Dependency Injection?

A
  • Ist ein Entwurfsmuster für adaptive Systeme, um Objekte mit Abhängigkeiten zur Laufzeit zusammenzustecken.
37
Q

Nennen Sie 3 Beispiele für Crosscutting Concerns

A
  • Crosscutting Concerns sind Dinge, welche die ganze Applikation betreffen.
  • Logging
  • Security
  • Datentransfer
38
Q

Wo wird NodeJS typischerweise eingesetzt?

A
  • Für Netzwerkanwendungen, welche mit besonders starker Performance laufen sollen.
  • Bei Echtzeitanwendungen im Netz
  • Bei JSON APIs
39
Q

Was ist das grundlegende Konzept einer NodeJS Anwendung?

A
  • Sehr schnelle Performance
  • Serverseitiges Javascript + Runtime Umgebung
  • Kein Buffering von Daten
  • Event Driven
40
Q

Wo sollte NodeJS nicht genutzt werden?

A
  • Bei CPU rechenintensiven Anwendungen
41
Q

Was sind Vor- und Nachteile von AngularJS?

A
  • Vorteile:
    Testbarkeit
    Fefaktorisieren
  • Nachteile:
    Nur Clientside
    Komplex
42
Q

Für welche Art von Anwendung wird AngularJS verwendet?

A
  • One Page Websites
  • Website mit Formularen (Validierung)
43
Q

Wie soll eine Architektur nicht enstehen?

A
  • Ohne Absprache mit Kunden, Auftraggeber, Entwicklern
  • Nur auf Powerpoint
  • Unflexibel nur zum gleichen Zeitpunkt
  • Über Buzzname Technologien
44
Q

Nennen Sie 3 typische Aufgaben von Softwarearchitekten

A
  • Projektleiter bei Risikenmanagement helfen
  • Entwicklerteam bei Umsetzung beraten
  • Qualittätssicherung bei Testbarkeit beraten
  • Auftraggeber zu Machbarkeit, Kosten etc beraten
  • Dokumentation der Architektur
  • Bewerten der nicht funktionalen Anforderungen
45
Q

Welche nicht funktionalen Aufgaben sollten man beim Architekturentwurf beachten?

A
  • Performance (Kosten, Zeit)
  • Änderbarkeit (Änderungen mit Auswirkungen verbunden?)
  • Übertragbarkeit (System leicht in neue Systeme übertragbar?)
  • Benutzbarkeit (Wie schwer zu bedienen/lernen?)
  • Zuverlässigkeit (Ist die Leistung immer abrufbar?)
46
Q

Welche Arten von Sichten gibt es?

A
  • Kontextsicht (System Black Box, Schnittstellen)
  • Bausteinsicht (System intern, Subsysteme, Komponenten Schnittstellen)
  • Laufzeitsicht (System zur Laufzeit, Beziehung zwischen Komponenten)
  • Verteilungssicht (System aus Betreibersicht, Hardware, Rechner, Prozessoren)
47
Q

Was sieht eine Kontextsicht aus?

A
48
Q

Was sollte eine Kontextsicht enthalten?

A
  • Wie ist das System in die Umgebung eingebettet
  • Blackbox aus Vogelperspektive
  • Schnittstellen zu Nachbarsysteme
  • Interaktionen mit Stakeholdern
  • Infrastruktur
49
Q

Was sieht eine Bausteinsicht aus?

A
50
Q

Was sieht eine Bausteinsicht hereingezoomt aus?

A
51
Q

Was sollte eine Bausteinsicht enthalten?

A
  • Statische Struktur von Bausteinen und den Zusammenahnd der Beziehungen
52
Q

Wie sieht die Laufzeitsicht aus?

A
53
Q

Was enthält die Laufzeitssicht?

A
  • Beschreibt das dynamische Zusammenspiel der Komponenten/Bausteine während der Ausführung
54
Q

Wie sieht die Verteilungssicht aus?

A
55
Q

Was enthält die Verteilungssicht?

A
  • Enthält Informationen in welcher Umgebung das System läuft
  • Hardware wie Rechner, Prozessoren
  • Netzwerke, Protokolle
  • Physische Systemumgebungen
56
Q

Welche Aufgaben haben Architekturmuster?

A
  • Eine bewährte Lösung für ein wiederholt auftretendes Entwurfsproblem bereitstellen
  • Sollen die Komplexität der verschiedenen Lösungswege für ein Problem minimieren und einen nicht in bereits als schlecht erkannte Lösungen laufen lassen.
57
Q

Nennen und erläutern Sie drei Antipatterns

A
  • Spaghetticode (Architektur):
    Spagehtticode entsteht bei unstrukturierten Code ohne erkennbaren Kontrollfluss. Das mache das Lesen, Verändern und Warten schwer.
  • Blendwerk(Projektmanagement):
    Nicht fertige Funktionen werden als fertig verkauft werden. Das wird irgendwann auffalllen.
  • Zwiebel (Code Smells):
    Wenn Code weiterentwickelt wird, welchen man nicht wirklich versteht und möglichst wenig anfassen möchte. Es werden einfach neue Funktionalitäten als Schichten um den alten gehüllt, wie eine Zwiebel. Code wird aufgeblähter, ineffizienter und undurchsichtiger.
58
Q

Für welche Systeme würde man eine Blackboard Architektur verwenden?

A
  • Blackboard wird genutzt bei Systemen ohne eindeutige Lösungsidee
  • Oftmals bei Spracheerkennenung, Bild, Ton etc
59
Q

Für welche Systeme wird das MVP Architekturmuster typischerweise verwendet?

A
  • Model View Presenter ist für große komplexe Systeme als Weiterentwicklung von Model View Controler gedacht
60
Q

Für welche Systeme wird das Microkernelmuster typischerweise verwendet?

A
  • Systeme, welche stark auf Erweiterungen setzen die Betriebssysteme
  • Skalierbarkeit, Sicherheit und Zuverlässigkeit ist im Vordergrund
61
Q

Was ist der Grundgedanke hinter dem Software Guidebook?

A
  • Ich bin Softwareentwickler komme in ein Projekt, was muss ich wissen?
  • Ich möchte über Geschichte, Landkarte, Strukturen wissen
  • Sehr viele praktische Informationen (fehlen in arc42)
  • Was muss man tun um Software zu benutzen/installieren, wie deployt man?
62
Q

Was ist ein Framework?

A
  • Kein fertiges Programm, sondern Orientierungsrahmen
  • Semi vollständige Applikation die in das eigene Programm integriert wird
  • Stellt wiederverwendbare Funktionen/Strukturen bereit
  • Liefert eine größere Strukturen, mehr als eine Klassenbibliothek
63
Q

Was ist Qualität?

A
  • Wenn der Kunde wiederkommt und nicht das Produkt
  • Nicht-funktionale Eigenschaften
  • Ein magisches Dreieck aus Kosten, Zeit, Umfang in der Mitte Qualität
64
Q

Ist Qualität immer direkt messbar?

A
  • Nein, nur indirekt
  • Qualität ist für jeden Betrachter subjektiv
  • Architekturqualität ist nicht gleich Codequalität
65
Q

Nenne und erläutere 3 Qualitätsmerkmale nach DIN/ISO 9126

A
  • Zuverlässigkeit (Ist die Leistung immer abrufbar?)
  • Benutzbarkeit (Wie schwer zu bedienen/lernen?)
  • Änderbarkeit (Änderungen mit Auswirkungen verbunden?)
66
Q

Was sind klassische Architekturmuster?

A
  • Horizontale Zerlegung: “In Scheiben schneiden”
  • Vertikale Zerlegung: “In Stücke schneiden”
67
Q

Welche Kategorien für Architekturmuster gibt es?

A
  • Chaos zu Struktur
  • Verteile Systeme
  • Interaktive Systeme
  • Adaptive Systeme
  • Domain-spezifische Architekturen
68
Q

Was ist eine Heuristik?

A
  • Eine Regel für komplexe Systeme für die es viele Lösungsansätze gibt.
  • Reduzieren Komplexität
69
Q

Was ist ein Anti-Pattern?

A
  • In der Praxis häufig vorhandener schlechter Lösungsansatz für Probleme
  • Gegenteil zu Mustern
70
Q

Warum ist Dokumentation wichtig?

A
71
Q

Was ist ein IEEE Standard?

A
  • Eine sehr akribisch festgehaltene Spezifikation
  • z.B. WLAN und LAN
  • IEEE 830-1998 für Software mir Pflichten und Lastenheft
72
Q

Wann enstanden die ersten Softwarearchitekturen?

A
  • Zerlegung, Entwurf:
    Mythical Man Month F. Brooks 1970
  • Schnittstellen:
    1990
  • Adoption von Softwarearchitektur:
    2000
73
Q

Was sind 3 wichtige Personen der Softwarearchitektur?

A
  • D. Parnas (Grundladen OOP)
  • F. Brooks (Brooks Law)
  • E. Dijkstra (Softwarekrise)
74
Q

Welche Fragen sollten bei einer Architekturdarstellung aufkommen?

A
  • Verantwortlichkeiten der Komponenten?
  • Warum existiert jede Beziehung?
  • Was wird wann zwischen Komponenten transportiert?
75
Q

Wie konstruieren und entwerfen Architekten?

A
  • Komponenten:
    Verantwortlichkeiten
  • Schnittstellen:
    Verträge die die Zusammenarbeit beschreiben
  • Strukturen:
    Komponenten und Beziehung (statisch, dynamisch)
76
Q

Wie entscheiden Architekten?

A
  • Bausteine?
  • Schnittstellen?
  • Welches Framework?
  • Kaufen oder selber bauen oder Mittelweg?
  • Namen für Komponenten?
77
Q

Was sind Werkzeuge von Architekten?

A
  • Modelle (Vereinfachung der Wirklichkeit)
  • Dokumentation (Kommunikation mit anderen)
  • Heuristiken (Erfahrungen, Regeln)
  • Muster (Vorlagen)
  • Partitionierung (Problemzerlegung)
  • Aggregation (Einzelsysteme zusammensetzen)
  • Iteration (Zyklisches Vorgehen mit Feedback)
  • Compiler, Debugger, Prototypen (Machbarkeit, Risiken testen)
78
Q

Woher stammt der Begriff Architektur?

A
  • Aus dem Mittelalter, benutzt beim Bauwesen
  • Sorgt für Ordnung in Struktur und Wissenvermittlung