Architecture and Design Flashcards
Benefits of proper AI Experimentation
- Decide when goals are reached
- Test for bias and assumption in data and hardware
- reproduce models, version experiment
- apply root-cause for false predicitons
Was sind Requirements für Experimentation?
3
Logging und Tracking von:
- all relevant data
- Code
- Decisions in the run
Runs must be reproducible or often repeated for averaging
Must be independent of environment
Was sind Guidelines für das Definieren einer Architektur?
2
- Verstehe die Anforderungen
- Verstehe die Domain-Grenzen (Fachliche Abgrenzung wie Sales / Support)
Für was steht das C4 Modell (Definition, Nennung der 4 C’s und deren Beschreibung)
- Context of Software System
- Container
- Component
- Code
In SW Entwicklung gibt es verschiedene Audiences (Nutzer, Management, Kunden, Tester, …) -> Benötigen verschiedene Stories
Context
Wie passt die Software in die Welt? Für Non-Technical Persons
Container
High Level Überblick über Container
Component
Komponenten / Modelle eines Containers
Code (Optional)
Zoomt in ein Komponent und zeigt ein UML Diagramm oder ähnliche Darstellungsform (nur für sehr komplexe Anwendungen)
Abstraktionen, warum sind sie wichtig in der SW Architektur und aus welchen essenziellen Bestandteile besteht sie?
Syntax und Notationen variieren von Architektur zur Architektur, aber die Bestandteile der Abstraktionen bleiben gleich:
- Interagierende Personen
- **Software System **
zB andere Systeme, welche eine Abhängigkeit darstellen - wie OpenAI -
Container
Application or Data Store as Deployable / runnable Unit -
Component
Gruppe von relevanten Funktionalitäten hinter einen gutdefinierten Interface
5 Gründe, warum gute Architektur ein Team Effort ist
- Mehrere Perspektiven
- Keine insulare Kenntnisse
- Es gibt keinen Experten für alles
- Domain Experten können Umgebung und Use Cases besser einschätzen
- Managers kennen Einschränkungen besser
Nenne die SOLID Prinzipien der traditionellen SE
Die SOLID-Prinzipien sind wichtige Software-Design-Prinzipien, die Entwicklern helfen, klare Konzepte für die ordnungsgemäße Entwicklung von Software zu haben. Die SOLID-Prinzipien umfassen folgende Prinzipien:
SRP: Single Responsibility Principle (Prinzip der eindeutigen Verantwortlichkeit)
OCP: Open Closed Principle (Prinzip der Offen- und Verschlossenheit)
LSP: Liskovsches Substitutionsprinzip (Ersetzbarkeitsprinzip)
ISP: Interface Segregation Principle (Schnittstellenaufteilungsprinzip)
DIP: Dependency Inversion Principle (Abhängigkeits-Umkehr-Prinzip)
SOLID
Benenne und beschreibe SRP
Single Responsibility Principle (SRP):
Definition: Eine Klasse sollte nur eine einzige Verantwortlichkeit haben, d.h., sie sollte nur einen Grund zur Änderung haben.
Beispiel: Eine Klasse, die sowohl für die Datenbankverbindung als auch für die Datenverarbeitung zuständig ist, verstößt gegen SRP. Besser wäre es, diese Verantwortlichkeiten auf zwei separate Klassen aufzuteilen.
SOLID
Benenne und beschreibe OCP
Open Closed Principle (OCP):
Definition: Softwaremodule sollten offen für Erweiterungen, aber geschlossen für Änderungen sein.
Beispiel: Anstatt eine bestehende Klasse zu ändern, um neue Funktionalitäten hinzuzufügen, sollte man die Klasse erweitern oder eine neue Klasse erstellen, die die bestehende Klasse nutzt.
SOLID
Benenne und beschreibe LSP
Liskov Substitution Principle (LSP):
Definition: Objekte einer Basisklasse sollten durch Objekte ihrer abgeleiteten Klassen ersetzt werden können, ohne dass das Verhalten des Programms verändert wird.
Beispiel: Wenn eine Klasse Vogel eine Methode fliegen() hat, sollte jede Unterklasse wie Spatz oder Adler diese Methode sinnvoll implementieren können, ohne das Programm zu stören.
SOLID
Benenne und beschreibe ISP
Interface Segregation Principle (ISP):
Definition: Viele spezifische Schnittstellen sind besser als eine allgemeine Schnittstelle.
Beispiel: Anstatt eine große Schnittstelle Fahrzeug mit Methoden wie fahren(), fliegen(), und schwimmen() zu haben, sollte man mehrere spezifische Schnittstellen wie Auto, Flugzeug, und Boot definieren.
SOLID
Benenne und beschreibe DIP
Dependency Inversion Principle (DIP):
Definition: Hochrangige Module sollten nicht von niederrangigen Modulen abhängen. Beide sollten von Abstraktionen abhängen. Abstraktionen sollten nicht von Details abhängen. Details sollten von Abstraktionen abhängen.
Beispiel: Anstatt dass eine Klasse direkt eine konkrete Implementierung einer Datenbankverbindung verwendet, sollte sie eine Schnittstelle verwenden, die von einer konkreten Implementierung implementiert wird.
Was sind Unterschiede zwischen traditioneller SE und SE4AI?
- Es gibt spezifische ML Design-Patterns
- DevOps -> MLOps
- Testing Unit, Integration, Acceptance + Ethics, Model, Data
- Align ML Heartbeat to SW Heartbeat
Was ist ein Heartbeat?
In der Computertechnik ist ein Heartbeat ein Programm, das bei jeder Initialisierung oder jedem Neustart eines Systems automatisch spezielle Skripte ausführt. In Systemen, die ein Heartbeat-Programm ausführen, kommunizieren zwei oder mehr Knoten miteinander, indem sie Pakete, sogenannte „Heartbeats“, mit einer Rate von ungefähr 2 Hertz (Hz) (zweimal pro Sekunde) austauschen.
Nenne die drei “Systematic Architectural Decisions” Regionen
- System Landscape
- Intelligence Location
- System Architecture