Altklausuren Flashcards

1
Q

Erläutern Sie 2 wesentliche Funktionalitäten von Bootstrap?

A

Flexibles Grid-System fuer verschiedene Bildschirmgroesen
-> Mobile first

Vorgefertigte Komponenten fuer schnelle Frontend Entwicklung

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

Was sind Hooks in React ab Version 16.8.? !!!

A

Hooks ermoeglichen es State- und Lifecycle Funktionen in funktionale Komponenten zu packen. Davor konnte dies nur mithilfe von Klassenkomponenten verwendet werden

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

Was ist ein React Fragment im Zusammenhang mit Return? !!!

A

React Fragmente werden verwenden um Elemente zu Gruppieren und zusaetzliche DOM Knoten zu vermeiden. (zusaetzliche div oder span werden also nicht gebraucht)

Dies wird haeufig mit return Anweisungen verknuepft um Elemente in eine einzige return anweisung zu Gruppieren.

return <>

<p>Element 1</p>

<p>Element 2</p>

</>

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

Warum einen Dev Server Nutzen?

A

Durch einen Dev Server können laufende Anwendungen geändert werden ohne diese neu starten zu müssen. Der Vorteil liegt also in der schnelleren Entwicklung.

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

Warum in JSON Object mitgeben statt eines Arrays?

A

Da JSON Objekte eindeutige Schlüssel-Wert-Paare enthalten

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

Auf ASI verlassen oder nicht?

A

Es ist besser selber explizit Semikolons zu verwenden fuer strukturierteren und lesbareren Code und um Fehler und Missverständnisse zu vermeiden.

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

Validierung bei React !!!

A

Mit hilfe von PropTypes koennen Typen und Anwesenheiten von Props(properties), welche an Komponenten uebergeben werden, ueberprueft werden.

z.B PropTypes.string checkt auf String

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

Wie haben Sie Ihre “Aufwandsschätzung” mit AzureBoards oder Project Professional im eigenen Projekt (Semesterprojekt) realisiert?

A

Zunächst wurde eine User Story als Referenz-Story ausgewählt. Anschließend haben wir andere Aufgaben in Relation zur Referenz-Story gesetzt und den jeweiligen Aufwand geschätzt.

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

Skizzieren und erläutern Sie ein Zustandsdiagramm in Bezug auf das Semesterprojekt.

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

Was ist optional Chaining bei JavaScript? Erklären und Beispiel angeben. !!!

A

Verwendet den Operatior ‘?.’ und funktioniert wie beim normalen chaining mit ‘.’ mit der erweiterung, dass wenn eine Eigenschaft null oder undefined ist, die gesamte Kette nicht als Error z.B.
‘TypeError: Cannot read property’
sondern als undefined zurueckgegeben wird ohne eine Fehler zu werfen.

const adventurer = {
name: ‘Alice’,
cat: {
name: ‘Dinah’,
},
};

const dogName = adventurer.dog?.name;
console.log(dogName);
// Expected output: undefined

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

Was ist Nullish Coalescing? Erklären und Beispiel geben. !!!

A

Der Nullish Coalescing-Operator weist einen Standardwerte zu, falls der tatsaechliche Wert null oder undefined ist.

const foo = null ?? ‘default string’;
console.log(foo);
// Expected output: “default string”

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

Warum gibt es bei JavaScript im Gegensatz zu Java und Kotlin nur eine catch-Klausel?

A

In JavaScript gibt es keine verschiedenen Error-Typen. Somit kann es immer nur eine catch-Klausel geben, in der dann alle Errors gefangen werden.

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

Erklären Sie den Unterschied von “null” und “undefined” in JavaScript.

A

Undefined bedeutet, dass einer Variable noch kein Wert zugewiesen wurde. Bei null wurde einer Variable der Wert null zugewiesen.

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

Erläutern Sie den Unterschied zwischen const {foo} = bar und const foo ={bar}.

A

const {foo} = bar
Destructuring, dadurch kann man einzelne Elementen/Properties direkt aus einem Array/Objekt extrahieren und einer Variable zuweisen.

Const foo = {bar}
Beim rechten Beispiel nutzen wir dagegen shorthand properties, um folgenden Code abzukürzen: const foo = {bar: bar}

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

Nennen Sie drei Fehler die Eslint/ktlint im Code findet.

A

-imports müssen verwendet werden (unused imports)

-Imports müssen alphabetisch sortiert sein (imports should be sorted
alphabetically).

-Maximale Zeilenlänge überschritten (Max line length)

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

Was beschreibt ein 3-Way-merge?

A

3-Way-Merge:
Commit mit 2 Vorgängerknoten
und 1 Ergebnisknoten

Wenn zwei, voneinander abweichende Branches zusammengeführt werden.

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

Was ist ein Feature Request?

A

Ist eine Art von Ticket, welche eine Anwendung um ein Feature erweitern oder ändern soll.

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

Erklären Sie eine BOM in Maven.

A

BOM = Bill of Materials.
Eine Art von POM, welche Versionen und Abhängigkeiten definiert und aktualisiert. Einfachere handhabung der Softwareversionen.

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

Erklären Sie den Zusammenhang zwischen POM und BOM.

A

POM: Project Object Model enthält alle Infos über das Projekt, Dependencies und Konfigurationen. -> wie build.gradle.kts

BOM: Bill of Materials enthält Versionsnummern der Dependencies.

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

Warum sollte man OWASP einsetzten?

A

Der OWASP Dependency Check prüft, ob die importierte Fremdsoftware veröffentlichte Sicherheitslücken enthält. Somit wird die Anwendung sicherer.

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

Wie geht man vor, wenn man einen graphischen Prototyp/ Wireframe z.B. mit Pencil Project
anfertigt?

A
  1. Projekt anlegen
  2. Board anlegen
  3. Formen/UI-Elemente in Board platzieren
  4. Komponenten über UI-Elemente verbinden
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

Was versteht man unter Lazy Loading?

A

beim Routing werden Komponenten nachgeladen

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

Warum ist GraphQL eine echte Alternative gegenüber REST?

A

Nur benötigte Daten werden übergeben -> kein Over-/ Underfetching. Zusätzlich entscheidet der Empfänger welche Daten übergeben werden sollen.

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

Vergleich einer Testklasse mit Jest (vorgegeben) mit einer in JUnit?

A

Die Funktion test in Jest ist das Pendant zu der Annotation @Test in JUnit.

Das describe ist das Pendant zu der class in der die Tests definiert sind.

Die Funktion each stellt Werte bereit und ist das Pendant zu @parametrizedTest.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
Warum ist die Bezeichnung “Decorator” aus JavaScript besser als “Annotation” in Kotlin/Java?
Weil die Kernidee eines Decorators bzw. einer Annotation das sogenannte Decorator Pattern ist.
26
Nennen Sie 2 Sachen die ein Bundler für uns macht.
- Fasst JS-Dateien zu minifizierten Datei zusammen. - nicht genutzter Code mittels „Tree-Shaking“ eliminiert. Tree-Shaking: Beim Import von Fremdsoftware bleiben nur die Objekte, Funktionen und Klassen erhalten, die auch tatsächlich in unserem Code benutzt werden. Alles überflüssige wird „abgeschüttelt“. Bundler Beispiel: Vite
27
Warum gute Administratoren im RZ keinen Default tablespace verwenden?
Da ein guter Administrator für jeden Table einen seperaten Tablespace anlegt.
28
Agile Softwareentwicklung eigentlich nur mit CI und CD warum?
Weil Agile Softwareentwicklung auf schnelligkeit und flexibilitaet beruht und das nur mit CI/CD funktioniert CI = Continuous Integration CD = Continuous Deployment
29
Warum ist Agile Softwareentwicklung erst sinnvoll, wenn man DevOps nutzt?
Mit DevOps wird die Zusammenarbeit zwischen Entwicklung und ITOperationen optimiert. Dadurch ist eine schnellere Auslieferung möglich, was für die kurzen Release-Zyklen der agilen Softwareentwicklung essentiell ist.
30
Was macht eine Pipeline in Jenkins?
Eine Pipeline in Jenkins besteht aus Jobs die automatisch z.B. mit einem cron job oder bei einem Push ins Repository getriggert werden. Die Pipeline enthält Aufgaben z.B. für die Überprüfung der Codequalität (ESLint), bauen von Software (Maven, Gradle), Erstellung der Dokumentation (Asciidoc) oder ob die Tests erfolgreich durchlaufen (JUnit, Jest).
31
Was ist der Unterschied zwischen einem Relativen und nicht-relativen Pfad bei einem Import?
Bei Imports mit nicht-relativen Pfad handelt es sich um Fremdsoftware und bei Imports mir relativem Pfad um eigene Codefragmente.
32
Wer hat die Zuständigkeit über Grob- und Feinentwurf?
Softwarearchitekt-/in
33
Wie könnte man in Java das Singleton Pattern umsetzen?
über ein ENUM mit nur einem Attribut realisiert, da von einem ENUM-Attribut nur ein Instanz existieren kann.
34
Nenne zwei bekannte CI Produkte.
GitHub-Actions Jenkins
35
d.ts. in TypeScript. Was bedeutet das?
steht für Declaration File und ist eine TypeScript-Datei, welche informationen bereitstellt um JS-Code in TS-Projekten zu verwenden
36
Was versteht man unter Eager Loading?
alle Komponenten werden vorab geladen
37
Nennen sie zwei populäre produkte die in Nest gekapselt sind
Express und Fastify
38
Erklären sie dependency Injection anhand von Nest
Dependency Injection ermöglicht es, dass Klassen ihre Abhängigkeiten nicht selbst erstellen oder beschaffen muessen, sondern diese von außen bereitgestellt bekommen. In NestJS wird das mithilfe von @Injectable(), @Module(), und @Controller() gemacht Constructor Injection um zyklischen Abhängigkeiten zu vermeiden.
39
Erklären sie was ein schema bei graphql ist
Mit einem Schema beschreiben wir die Typen für unsere Daten.
40
Was ist Lazy routing
Ist ein Entwurfsmuster, dass Code bzw. Komponenten erst bei gezielter Anfrage/Gebrauch aus der Datenquelle holt. Somit sind Ladezeiten verkürzt.
41
Erklären sie Pipeline Syntax
42
Erläutern sie wie man als Entwickler das branching in Github nutzen kann
Man kann einen Branch erstellen und in diesem unanhaengig arbeiten, nachdem man fertig ist, kann man seinen Branch mit dem mit dem Main-Branch mergen.
43
Erläutere die 4 Phasen des UP-Vorgehensmodells.
Inception: Analysieren des Ist Zustands Elaboration: Entwurf des Soll Zustands Construction: Implementierung des Entwurfs Transition: Abnahme und Auslieferung des Produkts, evtl. Schulungen etc.
44
Warum koennen Kommentare bei zukuenftigen Releases kontraproduktiv sein
Kommentare koennen irrefuehrende oder veraltete Informationen enthalten was die Entwicklung verlangsamen kann
45
Nennen sie die verschiedenene Daten die in der Payload eines web tokens enthalten sind
-individuelle Client-Information, z.B. Email oder Benutzername (subject) – Ablaufdatum des Tokens in Sekunden (expiration date) exp = expired, iat + expirationTime iat = issuedAt, Anzahl Sekunden ab 01.01.1970 sub = subject, z.B. UUID oder E-Mail des Benutzers iss = issuer, normal eine URL
46
Was versteht man bei ES ab Version 2015 unter einem Modul?
Ein Modul in JavaScript ist eine eigenständige Einheit von Code, welche normalerweise eine spezifische Funktionalität enthealt. Das Modul kann Exports sowie Imports verwenden und so die wiederverwendbarkeit zwischen dateien ermoeglichen
47
Vergleichen sie Use cases und User stories hinsichtlich ihres Verwendungszwecks.
Use Cases beschreiben den konkreten Anwendungsfall und helfen dem fachlichen Verständnis für die Anforderungsanalyse. User Stories sind ein Mittel zur Projektplanung. Mit ihnen kann eine Aufwandsschätzung durchgeführt werden.
48
Unified Process Iterationen Bezug zu SCRUM?
Eine Iteration ist vergleichbar mit einem Sprint. Jedoch ist eine Iteration länger als 2 Wochen und steht nicht im Mittelpunkt der Vorgehensweise.
49
Ein UML-Klassendiagramm mit der Assoziation {ordered} soll in (i) Kotlin/Java oder (ii) JavaScript implementiert werden. Was müssen Sie beachten?
Man braucht eine Datenstruktur welche eine Reihenfolge einhaelt. In Java ist das die List In JavaScript ist das das Array
50
Beschreiben Sie anhand von 2 Beispielen, wozu man Refactoring in einer IDE benutzen kann.
Refactoring ist das umschreiben des codes ohne die funktion zu beeintraechtigen. zb das loeschen von whitespace, das loeschen von kommentaren oder das umbenennen von variablen.
51
Wer hat die Verantwortung ueber grob und feinentwurf bei SCRUM
Die Softwarearchitekt-/in.
52
Warum ist Continous Integration erst dann sinnvoll wenn man jenkins oder Github actions praktiziert
Continous Integration ist dazu da, Codeaenderungen kontinuierlich zu integrieren, zu testen und zu überprüfen. Ohne tools dafuer wie Jenkins oder Github actions waere es viel zu aufwendig
53
Next funktionen im Semesterprojekt
Next halt uns als React Framework gedient und war zustaendig fuer dinge wie data fetching, routing oder server rendering.
54
Vergleiche die standartisierte Struktur zwischen npm und maven
Maven: Standardisierte Verzeichnisstruktur (Convention over Configuration) mit pom.xml, target src -> main, test -> java, resssources npm: package.json
55
Was ist die GroupID und ArtefaktID in Maven
Die GroupID ist eine eindeutige ID fuer eine Gruppe oder Orga Eine ArtefaktID ist der Name eines Projekts oder Moduls einer Gruppe zusammen mit einer Versionsnummer kann man so Abhaengigkeiten eindeutig erkennen
56
var vs const vs let und deren scope
var: function scoped, kann innerhalb des scopes neu zugewiesen und neu deklariert werden. const: block scoped, kann innerhalb des scopes nicht neu zugewiesen und auch nicht neu deklariert werden. let: block scoped, kann innerhalb des scopes neu zugewiesen aber nicht neu deklariert werden. block scoped: nur im block also {} function scoped: innerhalb der function
57
Was ist IIFE
Eine Immediately Invoked Function Expression (IIFE) ist eine Funktion in JavaScript, die sofort nach ihrer Definition ausgeführt wird. (function() { var x = 10; console.log(x); // 10 })();
58
Was ist ein trailing comma.
Traling comma = das Komma wird z.B bei dem Aufzählen von properties auch beim letzten Wert Const foo = { a: 0, b: 'b', c: true, dies ist ein trailing comma }; Macht sinn, da werte noch hinzu kommen koennen
59
Erklaere async und await
async gibt ein Promise zurueck Das await Schlüsselwort kann nur innerhalb einer async Funktion verwendet werden. Es wird verwendet, um auf ein Promise zu warten. Der await Operator pausiert die Ausführung der async Funktion, bis das Promise aufgelöst (resolved) oder abgelehnt (rejected) wird, und gibt den aufgelösten Wert zurück.
60
Was ist der unterschied zwischen Assoziation und Aggregation und Komposition?
Assoziation: Allgemeine Beziehung zwischen zwei unabhängigen Klassen. Beispiel: Ein Student und ein Kurs. Aggregation: "Hat-eine"-Beziehung, in der die Teile unabhängig vom Ganzen existieren können. Beispiel: Eine Universität und ihre Abteilungen. Komposition: "Besteht-aus"-Beziehung, in der die Teile vom Ganzen abhängen und ohne das Ganze nicht existieren können. Beispiel: Ein Haus und seine Zimmer.
61
Welche Typen gibt es in Javascript:
Object, Array, Number, undefined, string, boolean
62
was ist der vorteil von ts gegenueber js
Typen
63
was passiert mit den ts typen zur laufzeit?
Die typen fallen weg da ts zur laufzeit zu js wird
64
Was ist ein planungspoker bei scrum und wie laeuft es ab
methode zur aufwandschaetzung: product owner
65
Erläutern Sie “Aufwandsschätzung” anhand der Phasen des Unified Process, geben Sie auch Schätzungen in Prozent an.
-Inception-Phase etwa 30% -Elaboration-Phase etwa 15% -Construction-Phase etwa 40% -Transition-Phase etwa 15%. % In Aufwand
66
Welche Use-Cases haben hohe Priorität?
Use Cases, die die Voraussetzung für andere Use Cases sind und welche für den MVP (Minimum Viable Product) bestimmt sind.
67
Begründe in max. 2 Sätzen, warum die Aufwandskalkulation nicht vor der Phase „Elaboration“ angewendet werden kann?
Vor der Elaborationphase gibt es nur die Inception Phase. Die Ergebnisse dieser Phase sind notwendig für die Aufwandsschätzung.
68
Was sind Wireframes und in welcher Phase werden sie eingesetzt?
Ein Wireframe ist ein Entwurf eines Benutzerinterfaces, das zeigt, wie UI-Elemente positioniert sind und wie im Interface navigiert werden kann. Es wird in der Entwurfsphase (Elaborationphase) eingesetzt.
69
Warum sind graphische Prototypen so wichtig?
Warum sind graphische Prototypen so wichtig?
70
Beschreiben sie die Realisierung von zwei Iterationen in der Construction Phase (Entwicklungsphase) innerhalb des Unified Process (UP).
Überarbeitung der UML-Diagramme und Implementierung von Code mit dazugehörige Tests.
71
Ein Element aus UP und Scrum erläutern.
A Ein Element aus SCRUM ist das Daily Scrum Meeting. Dieses ist ein kurzes, informelles, tägliches Meeting, dass immer zu gleichen Uhrzeit stattfindet und nicht länger als 15 Minuten dauert. Dabei wird besprochen was man gestern gemacht hat und heute vor hat. Ein Element aus dem UP wäre die Construction Phase in der Code und die zugehörigen Tests implementiert werden.
72
UP als Weiterentwicklung von Wasserfallmodell warum/ Zusammenhang?
UP ist Wasserfallmodell mit vielen Verfeinerungen. Da einzelne Phasen in UP mittels Iterationen durchgeführt werden. Im Wasserfallmodell gibt es keine Iterationen innerhalb einer Phase.
73
Unterschied zwischen Agilen SWE und Wasserfallmodell?
Nach der Analyse-/Entwurfsphase wird beim Wasserfallmodell mit der Implementierung- und Testphase weitergemacht, waehrend bei der agilen SWE ein Prototyp gebaut wird.
74
Wie findet man User Stories?
User Stories können durch Fragebögen, strukturierte Interviews oder Beobachten ermittelt werden.
75
Warum eignen sich UML-Diagramme besonders gut für die Agile Softwareentwicklung?
Direkt über Entwicklungswerkzeug integrierbar, somit ist kein separates Werkzeug notwendig. Wird automatisch durch Continuous Integration generiert und in Dokumentation integriert.
76
Was ist der Unterschied zwischen Arrow Functions und Functions in ES5?
Arrow Functions haben kein this.
77
Was macht man bei einem Merge-Konflikt?
Git baut bei einem Merge-Konflikt grobe Syntaxfehler ein, die von den Entwicklern behoben werden müssen. Somit müssen sich Entwickler für eine Lösung entscheiden.
78
Was ist ein Feature Request?
Ein Feature Request beschreibt eine Anfrage die Anwendung, um ein gewünschtes Feature zu erweitern oder zu ändern.
79
Warum sollte man als Entwickler die Default Konfiguration einer DB verwenden?
Es gibt sinnvolle, intelligente Defaultwerte und nur Ausnahmen sollten konfiguriert werden. Damit wird das Konzept Convention over Configuration (CoC) umgesetzt.
80
Wie geht man bei SQL vs. NoSQL Entwurf vor?
SQL Orientierung an ER-Diagrammen und Normalisierung. NoSQL Orientierung an Use-Cases und Domain Driven Design. Denormalisierung durch untergeordnete Entities. Schnelleres Lesen, da Joins beim Abspeichern statt beim Lesen durchgeführt werden.
81
SQL-basierte vs. NoSQL-Systeme
SQL - Sehr hohe Verfügbarkeit - ACID - Typsicherheit - Standard NoSQL - ggf. 100% Verfügbarkeit - diverse Konsistenzbegriffe z.B. eventually consistent - Flexibilität kein Schema - kein Standard
82
Vergleich einer Testklasse mit Jest (vorgegeben) mit einer in JUnit?
JUnit: -@Test (Annotation) -@parametrizedTest -class KundeServiceTest Jest: -describe (fasst mehrere Tests zusammen) -each (Funktion, die Werte bereitstellt) -test (Funktion mit zwei Parametern Name und Callbackfunktion)
83
Was ist der wesentliche Unterschied zwischen einem Callback und einem Promise?
-Ein Promise ist ein Objekt, welches eine asynchrone Operation darstellt. Das Objekt kann die Werte fulfilled, rejected und pending annehmen. -Callback Funktionen werden als Argumente an andere Funktionen übergeben. Sie werden nicht direkt ausgeführt. Die übergeordnete Funktion kann die Callback Funktion zu einem beliebigen Zeitpunkt ausführen.
84
Warum haben moderne Webcontainer keinen durchgängigen Thread?
Weil neue Webcontainer in der Regel. reactive programmiert sind und wir somit nicht mehr einen Thread pro Request haben, sondern einen Threadpool
85
Warum gute Administratoren im RZ keinen Default tablespace verwenden?
Gute Administratoren legen keine Tables in den Default-Tablespace, da jeder Table in einem separaten Tablespace liegen sollte. Liegt ein Table im Default-Tablespace, ist ein Fehler unterlaufen.
86
Erklären Sie die Funktionalität von Router und RequestHandler in Express.
Router nimmt eingehenden Request entgegen und leitet diesen, basierend auf HTTP-Methode und Pfad, an passenden RequestHandler weiter. Der RequestHandler verarbeitet das vom Router definierte Mapping und leitet diesen an Anwendungskern (Serviceklasse) weiter.
87
Für was steht npm und worin besteht der Zusammenhang mit node_modules ?
npm steht für node package manager. Mit npm installieren wir packages, aber die packages werden in das node-modules Verzeichnis installiert.
88
Wie werden Objekte gelöscht? (in Hinblick auf Klassendiagramme)?
Garbage Collector im Code, X im Klassendiagramm
89
Aus was besteht ein JSON Web Token?
Header Payload Signature
90
Was könnte bei einem JSON Web Token falsch sein?
er koennte abgelaufen sein.
91
Was ist ein Mock
ein Mock ist ein Platzhalterobjekt
92
Welche Tests gibt es
Unit Tests, testen eine funktionalitaet Integrationstests, testen das zusammenspiel mehrerer Module E2E (Tnd to End) Tests, testen Benutzerschnittstelle aus Sicht der Endbenutzer
93
Was ist ACID bei Datenbanken
-Atomar: Eine Transaktion muss als eine unteilbare Einheit betrachtet werden, die entweder vollständig ausgeführt wird oder gar nicht. -Consitency: Eine Transaktion muss die Datenbank von einem konsistenten Zustand in einen anderen konsistenten Zustand überführen. -Insolation: Die Ausführung jeder Transaktion muss so erfolgen, dass sie isoliert von anderen Transaktionen abläuft. -Durability: Sobald eine Transaktion abgeschlossen ist, bleiben die Änderungen dauerhaft erhalten, auch im Falle eines Systemausfalls.