summaryrefslogtreecommitdiff
path: root/30-qualitaetsheft/sections/glossar.tex
blob: b664e5847b75a8788cc657b4676fb81167fe97b1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
\makeglossaries

\newglossaryentry{spa}
{
    name=Single-Page-Application,
    description={
        ist ein Webseiten-Modell, bei welchem dem Nutzer nur ein Webdokument
        bereitgestellt wird. Mit einem Skript wird der Inhalt der Seite
        dynamisch mit Daten einer API befüllt. Außerdem verwaltet die Seite
        (nicht der Server), welcher Inhalt bei welchem Pfad angezeigt wird. Dies
        erzeugt geringere Serverlast und eine bessere Nutzererfahrung, da die
        Seitenstruktur beim Laden von neuen Inhalten erhalten bleibt}
}

\newglossaryentry{packagemanager}
{
    name=Paketmanager,
    description={
        ist ein Programm, welches Pakete und dessen Abhängigkeiten verwaltet,
        installiert, entfernt und aktualisiert. Pakete können andere Programme,
        Plugins oder Software-Bibliotheken sein}
}

\newglossaryentry{bundler}
{
    name=Bundler,
    description={
        ist ein Programm, welches genutzte Teile von Abhängigkeiten eines
        Software-Projekts in passender Reihenfolge zusammensucht und daraus
        Dateien erstellt, die für den Nutzer bereitgestellt werden können. Dabei
        kann der Bundler mit zusätzlichen Modulen Dateien erzeugen, die
        rückwärtskompatibel oder für den Nutzer schwerer einsehbar sind}
}

\newglossaryentry{java}
{
    name=Java,
    description={
        ist eine objekt-orientierte interpretierte kompilierte
        Programmiersprache, welche plattformunabhängig auf einer virtuellen
        Maschine ausgeführt wird}
}

\newglossaryentry{db}
{
    name=Datenbank,
    plural=Datenbanken,
    description={
        ist ein System um Daten persistent zu speichern und effizient zu
        verwalten. Am meisten verbreitet sind relationale Datenbanken, welche
        Daten in Tabellen mit Referenzen zu Einträgen anderer Tabellen
        speichern. Programme können dann über eine Anfragesprache (Structured
        Query Language - \Gls{SQL}) komplexe Operationen auf den Daten ausführen}
}

\newglossaryentry{docker}
{
    name=Docker,
    description={
        ist ein Programm, das virtualisierte Container ausführt. Ein Programm in
        so einem Container läuft in seiner eigenen virtuellen Umgebung, wodurch
        das Host-System sicher bleibt. Zudem lassen sich die Container leicht
        auf andere Systeme verteilen}
}

% RESTfull-API, JSON, RSS-Feed, Salting and Hasing, OAuth, Cookie, Garbage
% Collection, DSGVO, Podcast, Podcatcher, Episode, Gpodder, 

\newglossaryentry{podcatcher}
{
    name=Podcatcher,
    plural=Podcatchern,
    description={
        ist ein Programm, über welches man Podcasts entdecken, abonnieren und
        Episoden von Podcasts hören kann. Mit einem Account auf einer Plattform,
        welche eine Gpodder-API zur Verfügung stellt, können Ereignisse, die von
        einem Nutzer ausgehen, auf anderen Podcatchern des Nutzers
        synchronisiert werden}
}

\newglossaryentry{podcast}
{
    name=Podcast,
    description={
        ist ein RSS-Feed, dessen Einträge die Episoden darstellen}
}

\newglossaryentry{episode}
{
    name=Episode,
    plural=Episoden,
    description={
        ist ein Eintrag in einem Podcast. Eine URL in dem Eintrag zeigt auf eine
        Medien-Datei, welche vom Podcatcher abgespielt werden kann}
}

\newglossaryentry{rest-api}
{
    name=RESTful-API,
    description={
        ist ein Schnittstellenentwurf über das Hypertext Transfer Protocol
        (HTTP), bei dem die Schnittstellen strukturiert als Pfad an einem
        Endpunkt erreichbar sind. Mittels verschiedener HTTP-Methoden können an
        der Schnittstelle Daten abgefragt (GET), gesendet (PUT), gelöscht
        (DELETE) oder geändert (POST) werden. Die Daten, die über die
        Schnittstelle gesendet werden liegen meist im JSON-Format vor}
}


\newglossaryentry{gpodder}
{
    name=Gpodder-API,
    description={
        wird von gpodder.net benutzt und entwickelt. Die API wird als
        Schnittstelle zwischen Podcatchern und Podcast Synchronisationsservern
        verwendet. Weitere Details sind unter
        "https://gpoddernet.readthedocs.io/en/latest/api/" zu finden}
}

\newglossaryentry{json}
{
    name=JSON,
    description={
        (JavaScript Object Notation) ist ein Datenformat und wird zur
        Übertragung von Strukturen und Daten eingesetzt. JSON besteht dabei aus
        grundlegenden Datentypen sowie Objekten mit Schlüssel-Wert Paaren und
        Listen}
}

\newglossaryentry{oauth}
{
    name=OAuth,
    description={
        (Open Authorization) ist ein offenes Protokoll, welches es Nutzern
        ermöglicht, sich mit bereits bestehenden Accounts bei anderen Diensten
        zu registrieren. Dabei werden benötigte Daten für die Registrierung über
        die bereitgestellte Schnittstelle zur Verfügung gestellt}
}

\newglossaryentry{garbage-collection}
{
    name=Garbage Collection,
    description={
        ist eine automatische Speicherbereinigung, welche nicht mehr benötigten
        Speicherplatz wieder freigibt. Die Bereinigung kann dabei in determinierten
        Zeitintervallen erfolgen oder durch bestimmte Ereignisse ausgelöst
        werden}
}

\newglossaryentry{salt-hash}
{
    name=Salting und Hashing,
    description={
        ist eine Methode um Passwörter so zu kodieren, dass sie nicht als
        Klartext gespeichert werden und auch sicher vor Hash-Wörterbüchern sind. 
        Dafür wird dem Passwort ein bekanntes Wort, der Salt, angefügt, bevor
        aus dem kompletten Wort eine Prüfsumme, ein Hash, generiert wird. Beim
        Anmelden wird die Prüfsumme der Anmeldung mit der bekannten
        Prüfsumme des Passworts verglichen}
}

\newglossaryentry{rss}
{
    name=RSS,
    description={
        (Really Simple Syndication) zeigt strukturiert Listen von Nachrichten
        an. Die Änderungen werden im XML-Format in sogenannte RSS-Dateien
        geschrieben, welche über einen Link abgerufen werden können}
}

\newglossaryentry{dsgvo}
{
    name=Datenschutz-Grundverordnung,
    description={
        (DSGVO) ist eine im europäischen Wirtschaftsraum
        geltende Verordnung. Sie sorgt für eine Reglementierung bei der
        Verarbeitung personenbezogener Daten. Unter anderem muss einsehbar sein,
        welche Daten von Nutzern erhoben werden. Außerdem muss für einen Nutzer
        die Möglichkeit bestehen, seine erhobenen Daten abrufen zu können}
}

\newglossaryentry{push-pull}
{
    name=Push und Pull,
    description={
        sind Methoden, um Daten auszutauschen. Bei der Pull-Methode
        stellt Akteur A einem Akteur B eine Anfrage auf Daten und erhält diese
        als Antwort. Damit Akteur A und B immer auf dem selben Stand sind, muss
        Akteur A chronisch Anfragen an Akteur B stellen. Im Gegensatz dazu steht
        die Push-Methode, bei der Akteur B den Akteuren mitteilt, dass er neue
        Änderungen hat. Dafür muss Akteur B allerdings wissen mit welchen
        anderen Akteuren er in Verbindung steht und diese Verbindung aufrecht
        erhalten}
}

\newglossaryentry{ui-lib}
{
    name=UI-Bibliothek,
    plural=UI-Bibliotheken,
    description={
        kümmert sich um das Layout einer Webseite. Dabei unterscheidet man
        zwischen Design-Bibliotheken (wie Bootstrap), welche fertige
        UI-Komponenten bereitstellen, und Layout-Bibliotheken (wie Vue oder
        React.js), welche die Komponenten basierend auf Daten dynamisch
        anzeigen}
}

\newglossaryentry{responsive}
{
    name=Responsive,
    description={
        Design ist ein Design-Prinzip für Webseiten, bei dem die selbe Webseite ihre
        Komponenten dynamisch der Bildschirmbreite anpasst}
}

\newglossaryentry{pseudoprotocol}
{
    name=Pseudoprotokoll,
    description={
        ist ein URL-Schema, auf das Webseiten hören können, wenn sie sich das
        URL-Schema im Browser anmelden. Bekannt Pseudoprotokolle sind:
        ,,mailto:'', ,,tel:'' oder ,,irc:''}
}

\newglossaryentry{dashboard}
{
    name=Dashboard,
    description={
        ist die erste Seite auf der man landet, wenn man angemeldet ist}
}

\newglossaryentry{abo}
{
    name=Abonnement,
    description={
        ist ein abonnierter Podcast}
}

\newglossaryentry{discovery}
{
    name=Discovery,
    description={
        ist ein Feature der Gpodder-API, welches dem Nutzer eine Reihe von
        Podcasts zum abonnieren anbietet}
}

\newglossaryentry{session-token}
{
    name=Session-Token,
    description={
        ist ein Wort, dass vom Client gespeichert wird solange der Nutzer
        eingeloggt ist und bei jeder Anfrage an den Server mitgeschickt wird. 
        Der Server kann den Session-Token einem Nutzer zuordnen und so mit
        nutzerspezifischen Daten antworten}
}

\newglossaryentry{cookie}
{
    name=Cookie,
    description={
        ist ein kleiner webseitenspezifischer Speicher im Browser, welcher vom
        Server und von der Webseite gesetzt werden kann und bei jeder weiteren
        Anfrage an den Server mitgesendet wird. Cookies bleiben entweder
        temporär im Browserspeicher, bis der Browser geschlossen wird oder
        permanent, bis ein optionales Verfallsdatum erreicht ist}
}

\newglossaryentry{uiComponent}
{
    name=UI-Komponente,
    plural=UI-Komponenten,
    description={
        In Vue.js werden die grafischen Elemente einer Webseite in einzelne
        Komponenten zerteilt. 
        Diese reagieren automatisch auf Änderungen und können ohne Neuladen
        der Seite ihr Aussehen verändern und somit Änderungen direkt anzeigen}
}

\newglossaryentry{spring}
{
	name=Spring,
	description={
		Ein Java-Framework, welches die Entwicklung von Web-Applikationen erleichtert.
		Dazu wird eine Reihe von Werkzeugsets zur Verfügung gestellt.
		Unter anderem sind das Spring Web für das Erstellen von Webanwendungen,
		Spring Security für die Verwaltung von Benutzerauthentifizierungen und
		Spring Data JPA für die Arbeit mit relationalen Datenbanken
    }
}

\newglossaryentry{api}
{
	name=API,
    plural=APIs,
	description={
		Eine Schnittstelle, welche es ermöglicht auf Funktionalitäten einer Anwendung
        zuzugreifen. APIs für Webanwendungen heißen WebAPIs.
        Ein Beispiel für eine WebAPI ist die REST-API
    }
}

\newglossaryentry{business}
{
	name=Geschäftslogik,
	description={
		Eine Schicht in der Anwendungsentwicklung, in der die Art und Weise, wie das
        Programm auf Eingaben reagiert, wie Daten verarbeitet und wie sie gespeichert
        werden sollen, festgelegt ist
    }
}

\newglossaryentry{solid}
{
	name=SOLID,
	description={
		Eine Sammlung an Prinzipien, welche zu gutem objektorientierten Design führen soll.
        Jedes Prinzip steht für einen Buchstaben in SOLID:
        \textbf{S}ingle-Responsibility Prinzip,
        \textbf{O}pen-Closed Prinzip,
        \textbf{L}iskovsches Substitutionsprinzip,
        \textbf{I}nterface Segregation Prinzip und
        \textbf{D}ependency Inversion Prinzip
    }
}

\newglossaryentry{crud}
{
	name=CRUD,
	description={
		CRUD steht für \textbf{C}reate, \textbf{R}ead, \textbf{U}pdate und \textbf{D}elete.
        Hierbei handelt es sich um die grundlegenden Funktionen einer Anwendung,
        die mit einer Datenbank arbeitet.
        Hierbei können Daten angelegt, abgerufen, aktualisiert und gelöscht werden.
        Auch in Web-Applikationen ist CRUD mit HTTP über die Anfragen POST, GET, PUT und DELETE
        vertreten
    }
}

\newglossaryentry{SQL}
{
    name=SQL,
    description={
        SQL (Structured Query Language) ist eine Sprache, die einen strukturierten Zugriff auf Datenbanken ermöglicht.
        Daten können hierbei hinzugefügt, abgefragt, geändert und gelöscht werden.
        Das besondere hierbei ist der strukturierte Zugriff auf Daten, indem explizit Daten mit bestimmten Kriterien und
        Relationen ausgewählt und bearbeitet werden können.
        SQL wird fast von allen verbreiteten Datenbanksystemen unterstützt
    }
}

\newglossaryentry{Base64}
{
    name=Base64,
    description={
        Mithilfe von Base64 können 8-Bit-Binärdaten in eine ASCII-Zeichenkette
        kodiert werden. So werden zum Beispiel E-Mail-Anhänge versendet
    }
}

\newglossaryentry{JSONP}
{
    name=JSONP,
    description={
        JSONP ermöglicht die Übertragung von JSON-Daten zwischen verschiedenen Domains.
        Dies wäre durch die Same-Origin-Policy nicht möglich.
        JSONP nutzt allerdings die Tatsache aus,
        dass sich Skripte domainübergreifend übertragen lassen.
        Dazu werden die JSON-Daten als Argument einer übergebenen Funktion über
        ein Skript-Element eingebunden
    }
}

\newglossaryentry{Apdex}
{
    name=Apdex,
    description={
        Der Application Performance Index ist eine Methode zur Bewertung der
        Benutzerfreundlichkeit von Anwendungen bezüglich ihrer Antwortszeiten. 
        Dabei gibt es die Stufen zufriedenstellend, tolerierbar und
        frustrierend, welche analog von 1 absteigend bis 0 angegeben werden.
    }
}

\newglossaryentry{Lasttest}
{
    name=Lasttest,
    description={
        ist ein Test, mit welchem man die Stabilität und Robustheit 
        eines Programms testen kann, indem man ihn einer großen Last aussetzt.
    }
}