52 Stunden Informatik: Was jeder über Informatik wissen sollte (German Edition) [2. Aufl. 2024] 3658418370, 9783658418373

Haben Sie in Ihrer Schulzeit keinen oder nur mangelhaften Informatikunterricht erhalten? Haben Sie Kinder und würden die

126 49 12MB

German Pages 471 [445] Year 2024

Report DMCA / Copyright

DOWNLOAD FILE

Polecaj historie

52 Stunden Informatik: Was jeder über Informatik wissen sollte (German Edition) [2. Aufl. 2024]
 3658418370, 9783658418373

Table of contents :
Vorwort
Danksagung
Inhaltsverzeichnis
1 Informatik lernen
2 Suchmaschinen
3 Wikis
4 HTML
5 Code
6 Webbrowser
7 JavaScript
8 Netzwerke und Protokolle
9 HTTP
10 Informationssicherheit
11 Authentifizierung
12 Webhosting
13 Datenschutz
14 Rechnerarchitektur
15 Betriebssysteme
16 Software
17 Tabellenkalkulation
18 Digitale Kommunikation
19 Binärsystem & Datentypen
20 „Hallo Welt“ (in Python)
21 Algorithmik (in Python)
22 Objektorientierung (in Python)
23 Datenstrukturen (in Python)
24 Modellierung
25 APIs (mit Python)
26 Virtualisierung
27 Cloud-Computing
28 IT-Betrieb
29 Agile Produktentwicklung
30 Versionsverwaltung
31 Open Source
32 Softwarelizenzierung
33 Testen
34 Qualitätsmanagement
35 Das relationale Modell
36 SQL
37 Bezahlsysteme
38 Datenformate
39 Computergrafik
40 3D-Druck
41 Statistik
42 Data Science (mit Jupyter)
43 Regressionsanalyse (mit Jupyter)
44 Künstliche Intelligenz
45 Computer Vision
46 Deep Learning
47 ChatGPT
48 Ethik in der Informatik
49 Internet der Dinge
50 User Experience
51 Augmented Reality
52 Rundum-sorglos-Paket im Heimnetzwerk
A Serviceteil
Schlusswort
Appendix
A.1 Installation eines HTML-Editors auf einem Android-Smartphone
A.2 Installation von Git
A.3 Installation von MySQL
Stichwortverzeichnis

Citation preview

Timm Eichstädt Stefan Spieker

52 Stunden Informatik Was jeder über Informatik wissen sollte 2. Auflage

52 Stunden Informatik

Ihr Bonus als Käufer dieses Buches Als Käufer dieses Buches können Sie kostenlos unsere Flashcard-App „SN Flashcards“ mit Fragen zur Wissensüberprüfung und zum Lernen von Buchinhalten nutzen. Für die Nutzung folgen Sie bitte den folgenden Anweisungen: 1. Gehen Sie auf https://flashcards.springernature.com/login 2. Erstellen Sie ein Benutzerkonto, indem Sie Ihre Mailadresse angeben und ein Passwort vergeben. 3. Verwenden Sie den Link aus einem der ersten Kapitel um Zugang zu Ihrem SN Flashcards Set zu erhalten.

Ihr persönlicher SN Flashards Link befindet sich innerhalb der ersten Kapitel.

Sollte der Link fehlen oder nicht funktionieren, senden Sie uns bitte eine E-Mail mit dem Betreff „SN Flashcards“ und dem Buchtitel an [email protected].

Timm Eichstädt · Stefan Spieker

52 Stunden Informatik Was jeder über Informatik wissen sollte 2. Auflage

Timm Eichstädt Herzogenaurach, Bayern, Deutschland

Stefan Spieker Herzogenrath Nordrhein-Westfalen, Deutschland

ISBN 978-3-658-41837-3 ISBN 978-3-658-41838-0  (eBook) https://doi.org/10.1007/978-3-658-41838-0 Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über 7 http://dnb.d-nb.de abrufbar. © Springer Fachmedien Wiesbaden GmbH, ein Teil von Springer Nature 2021, 2024 Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Jede Verwertung, die nicht ausdrücklich vom Urheberrechtsgesetz zugelassen ist, bedarf der vorherigen Zustimmung des Verlags. Das gilt insbesondere für Vervielfältigungen, Bearbeitungen, Übersetzungen, Mikroverfilmungen und die Einspeicherung und Verarbeitung in elektronischen Systemen. Die Wiedergabe von allgemein beschreibenden Bezeichnungen, Marken, Unternehmensnamen etc. in diesem Werk bedeutet nicht, dass diese frei durch jedermann benutzt werden dürfen. Die Berechtigung zur Benutzung unterliegt, auch ohne gesonderten Hinweis hierzu, den Regeln des Markenrechts. Die Rechte des jeweiligen Zeicheninhabers sind zu beachten. Der Verlag, die Autoren und die Herausgeber gehen davon aus, dass die Angaben und Informationen in diesem Werk zum Zeitpunkt der Veröffentlichung vollständig und korrekt sind. Weder der Verlag noch die Autoren oder die Herausgeber übernehmen, ausdrücklich oder implizit, Gewähr für den Inhalt des Werkes, etwaige Fehler oder Äußerungen. Der Verlag bleibt im Hinblick auf geografische Zuordnungen und Gebietsbezeichnungen in veröffentlichten Karten und Institutionsadressen neutral. Planung/Lektorat: David Imgrund Springer Vieweg ist ein Imprint der eingetragenen Gesellschaft Springer Fachmedien Wiesbaden GmbH und ist ein Teil von Springer Nature. Die Anschrift der Gesellschaft ist: Abraham-Lincoln-Str. 46, 65189 Wiesbaden, Germany

V

Vorwort Gefühlt ist es noch gar nicht so lange her, dass die 52 Stunden Informatik ihren Anfang nahmen. In dieser Zeit haben wir eine globale Pandemie erlebt, die unser Arbeits- und Privatleben auf den Kopf gestellt hat. Unsere Gesellschaft musste sich rasant an die digiale Kommunikation gewöhnen, um Kollegen und Familie auch während des Lockdowns sehen zu können. Das Home-Office und das kontaktlose Bezahlen gehören seitdem zur neuen Normalität. Ebenfalls dazugekommen ist ein neues KI-Tool namens ChatGPT, das viele begeistert, aber auch neue Unsicherheiten mit sich bringt. Schon in der ersten Auflage stand ein Zitat von Charles-Édouard Bouée, Vorstandsvorsitzende der Beratungsgesellschaft Roland Berger, dass zwei Drittel der Schüler einmal in Jobs arbeiten werden, die heute noch gar nicht erfunden sind. Das erscheint aktuell noch weitaus zutreffender als damals. Immer mehr Menschen ist mittlerweile klar, welch wichtige Rolle die Informatik für das gesellschaftliche Leben und die Arbeitswelt von Morgen spielt. Immer mehr Eltern wünschen sich deshalb auch einen umfangreicheren Informatikunterricht für ihre Kinder. Dieses Buch gibt in 52 Einheiten eine praktische Antwort auf die Frage, wie sich Informatik mit Spaß vermitteln lässt. Aufgrund der ständigen Weiterentwicklung der Technologiewelt kann dieses Buch nie ganz vollständig sein. Dennoch wurde eine stimmige Reihe an Themen zusammengestellt, die einen einfachen Einstieg in diese umfangreiche Thematik ermöglicht. Neben zahlreichen Aktualisierungen enthält das Buch auch zwei neue Kapitel, und zwar zu den Themen ChatGPT und 3D-Druck. Alle 52 Stunden sind mit konkreten Beispielen und Übungen verbunden, sodass sie helfen können, 5 nachzuholen, was in der Schule nicht oder nur unzureichend gelernt wurde, 5 Informatikunterricht besser und praxisnaher zu gestalten, 5 dass Eltern ihre Kinder auf eine angemessene Weise mit der Informatik vertraut machen, 5 auf einen Beruf mit Informatikanteil vorzubereiten, 5 für das Privatleben einen sicheren Umgang mit Informationstechnologien zu entwickeln und neue Möglichkeiten für deren Verwendung aufzuzeigen. Dieses Buch soll eine praktische Hilfe sein für jeden, der die Grundlagen der Informatik lernen oder anderen vermitteln möchte. Wir wünschen daher viel Spaß mit 52 spannenden Stunden der Informatik! Timm Eichstädt Stefan Spieker

Danksagung Dieses Buch wäre ohne unsere verständnisvollen Familien nicht möglich gewesen. Wir möchten uns auch bei den vielen Helfern bedanken, die uns zu den kleinen Leseproben gerne Feedback gegeben haben. Besonderer Dank gilt den vielen Anregungen und Verbesserungsvorschlägen unserer Ehefrauen, die immer noch einen weiteren Abschnitt etwas klarer formulieren wollten. Dem Verlag danken wir für die tolle Chance, dieses Buch zu schreiben und zu aktualisieren. Ein sehr großes Dankeschön hat sich auch Kevin Eschweiler für die Erstellung des Titelbildes verdient.

VII

Inhaltsverzeichnis 1

Informatik lernen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

2

Suchmaschinen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

3

Wikis. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

4

HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

5

Code. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

6

Webbrowser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

7

JavaScript. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

8

Netzwerke und Protokolle. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

9

HTTP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73

10

Informationssicherheit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83

11

Authentifizierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93

12

Webhosting. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99

13

Datenschutz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107

14

Rechnerarchitektur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115

15

Betriebssysteme. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123

16

Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133

17

Tabellenkalkulation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141

18

Digitale Kommunikation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151

19

Binärsystem & Datentypen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159

20

„Hallo Welt“ (in Python) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167

21

Algorithmik (in Python). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177

VIII

Inhaltsverzeichnis

22

Objektorientierung (in Python). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185

23

Datenstrukturen (in Python) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195

24

Modellierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203

25

APIs (mit Python). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211

26

Virtualisierung. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219

27

Cloud-Computing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227

28

IT-Betrieb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237

29

Agile Produktentwicklung. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245

30

Versionsverwaltung. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255

31

Open Source . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265

32

Softwarelizenzierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273

33

Testen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281

34

Qualitätsmanagement. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289

35

Das relationale Modell. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295

36

SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305

37

Bezahlsysteme. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315

38

Datenformate. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323

39

Computergrafik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331

40

 3D-Druck. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341

41

Statistik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349

42

Data Science (mit Jupyter). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357

43

Regressionsanalyse (mit Jupyter). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367

44

Künstliche Intelligenz. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373

IX Inhaltsverzeichnis



45

Computer Vision. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383

46

Deep Learning. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391

47

ChatGPT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399

48

Ethik in der Informatik. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407

49

Internet der Dinge. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415

50

User Experience . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423

51

Augmented Reality. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431

52

Rundum-sorglos-Paket im Heimnetzwerk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 441 Serviceteil Schlusswort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 450 Appendix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451 Stichwortverzeichnis. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457

1

Informatik lernen

© Springer Fachmedien Wiesbaden GmbH, ein Teil von Springer Nature 2024 T. Eichstädt und S. Spieker, 52 Stunden Informatik, https://doi.org/10.1007/978-3-658-41838-0_1

1

Kapitel 1 · Informatik lernen

2

1

Mit der kostenlosen Flashcard-App „SN Flashcards“ können Sie Ihr Wissen anhand von Fragen überprüfen und Themen vertiefen. Für die Nutzung folgen Sie bitte den folgenden Anweisungen: 1. 2. 3.

Gehen Sie die auf 7 https://flashcards.springernature.com/login Erstellen Sie ein Benutzerkonto, indem Sie Ihre Mailadresse angeben und ein Passwort vergeben. Verwenden Sie den folgenden Link, um Zugang zu Ihrem SN Flashcards Set zu erhalten: 7 https://sn.pub/az6stq

Sollte der Link fehlen oder nicht funktionieren, senden Sie uns bitte eine E-Mail mit dem Betreff „SN Flashcards“ und dem Buchtitel an [email protected].

Die Informatik ist heute nicht mehr wegzudenken. Als integraler Bestandteil durchzieht sie sämtliche Bereiche des alltäglichen Lebens. Das Erlernen des Umgangs mit Informatik ist damit zu einer lebenslangen Aufgabe geworden. Besonders wichtig ist es, Grundlagen zu kennen, um neue Technologien und Trends einordnen zu können. Die 52 Stunden Informatik sollen hier ansetzen. Das Buch ist als Einstieg und Hilfe zum Lernen gedacht. Es vermittelt zentrale Begriffe der Informatik ebenso wie spezifische Konzepte, darunter Open Source oder Gamification. Die Kapitel sind nach einem einheitlichen Muster aufgebaut, das in dieser Stunde erläutert wird, und so ganz nebenbei gibt es direkt noch viel Wissenswertes dazu. Informatik nimmt im Berufs- wie im Privatleben eine immer wichtigere Rolle ein. Gleichzeitig steigen damit die Ansprüche an die Menschen. Informationstechnologien sind mittlerweile omnipräsent. Schon heute bestimmen sie einen Großteil unseres Lebens und werden dies in Zukunft noch viel stärker tun, als sich heute erahnen lässt. Nur wenige derzeit Erwachsene werden von sich sagen können, zur Schulzeit die nötigen Grundlagen für den Umgang mit Informatik vermittelt bekommen zu haben. Schlimmer noch, selbst Kinder, die gerade erst am Beginn ihrer Schullaufbahn stehen, werden nicht ausreichend auf das Leben in dieser Informationsgesellschaft vorbereitet. Mittlerweile wünschen sich vier von fünf Eltern Informatik als Pflichtfach an den Schulen. Das hat eine am 22. März 2023 veröffentlichte Umfrage des deutschen Digitalwirtschaftsverbandes Bitkom ergeben.  https://www.bitkom.org/Presse/Presseinformation/Bildung-Eltern-wollen-Informatik-Pflichtfach Der immer lauter werdenden Forderung nach mehr Informatik in den Schulen halten Kritiker entgegen, dass Inhalte, die heute gelehrt werden, in wenigen Jahren bereits wieder veraltet sind. Und damit haben sie nicht ganz unrecht. Umso wichtiger erscheint also ein nachhaltiger Zugang zur Informatik, gepaart mit einem breit gefächerten Grundlagenwissen. Zumindest einige grundlegende Konzepte der Informatik sollten jedem Kind zur Schulzeit vermittelt werden, damit neue Technologien und Trends eingeordnet werden können. Solange dies nicht der Fall ist,

3 Kapitel 1 · Informatik lernen

1

kann man nur jedem empfohlen, sich selbst zu behelfen. Das gilt für Eltern, die ihre Kinder auf ein Leben in der Informationsgesellschaft vorbereiten wollen, aber auch für die Generation der Eltern selbst. Informatikwissen wird heute größtenteils durch eigene Anwendung oder durch Lernen im direkten persönlichen Umfeld erlangt. Dadurch bleiben unsere Kenntnisse auf einige wenige Themen beschränkt, die uns besonders interessieren oder mit denen wir gezwungenermaßen in Berührung kommen. Meist fehlt die Zeit und Disziplin, sich mit den Grundlagen der Informatik in der Breite auseinanderzusetzen. Genau an dieser Stelle setzt dieses Buch mit „52 Stunden Informatik“ an. Jede Informatikstunde dieses Buches bildet eine eigenständige, leicht zu verstehende Einheit. Sie gibt Einblicke in neue Themen und wird ebenfalls neue wichtige Aspekte der Informatik aufzeigen. Jede dieser Stunden soll Spaß machen, Interesse wecken und aufzeigen, welche Inhalte sich hinter den jeweiligen Themen verbergen. Eine Vertiefung kann anschließend eigenständig vorgenommen werden. Insbesondere zu diesem Zweck finden sich im Verlauf des Buches eine Vielzahl von Links. Dieses Buch tritt nicht in Konkurrenz zu Onlinekursen und YouTubeAnleitungen. Vielmehr soll es eine ausgewogene Sammlung an Grundlagen sein und den nachhaltigen Aufbau von Informatikwissen ermöglichen. Natürlich ist das Internet eine riesige Quelle von Informationen, die man als Ergänzung zu diesem Buch nutzen kann. Die Links dienen als Anregung, wo sich die Reise durch die Informatik fortsetzen lässt. Zum Thema einer jeden Stunde werden zentrale Begriffe eingeführt, die durch Fettdruck gekennzeichnet sind. Diese Begriffe werden erklärt und im Glossar gelistet. Im Fließtext finden sich weitere Erläuterungen, Beispiele, offen formulierte Fragen und Denkanregungen. Insgesamt deckt das vorliegende Buch damit eine große Breite von wichtigen Inhalten der Informatik ab. Im Ergebnis lässt sich somit in nur einer Stunde pro Woche innerhalb eines Jahres mühelos ein solides Grundlagenwissen der Informatik aufbauen. Die Stunden enthalten außerdem Verweise untereinander und sind ansonsten weitgehend in sich geschlossen. Man muss nicht zwangsläufig alle vorangegangenen Kapitel lesen, um spätere Kapitel nachvollziehen zu können. Da aber teilweise Grundlagen aus vorherigen Stunden verwendet werden, empfiehlt es sich, die Reihenfolge im Allgemeinen einzuhalten. Jede der 52 Informatikstunden ist jeweils so konzipiert, dass sie in einem überschaubaren Zeitraum von etwa einer Stunde behandelt werden kann. Wir empfehlen, eine Stunde am Stück durchzunehmen und danach eine Pause einzulegen. Viele der gestellten Fragen eignen sich auch zur Diskussion zwischen Lehrer und Schüler. Die Stunden variieren, was die Schwierigkeit und Aufteilung zwischen Theorie und Praxis angeht. Dies ist auf die verschiedenartigen Inhalte zurückzuführen. Ein Beispiel für ein wichtiges Konzept der Informatik, auf das dieses Buch eingeht, ist Open Source. Tatsächlich widmet sich diesem Thema ein eigenes Kapitel (siehe 7 Kap. 31 Open Source). In den meisten Lehrplänen der Schulen sucht man dieses Thema dagegen vergeblich. Wenn die Digitalisierung und das Internet auch nur ansatzweise etwas gezeigt haben, dann dies: Es ist besser, Wissen zu teilen, als für sich zu behalten. Vernetzung, Zusammenarbeit und Wissensmehrung werden dadurch gefördert.

Kapitel 1 · Informatik lernen

4

1

Gerade auf hochdynamischen Forschungsfeldern, wie beispielsweise dem Gebiet der künstlichen Intelligenz, hat die konsequente Offenlegung viele Vorteile. Die Open-Source-Community hat eindrucksvoll bewiesen, dass sie sogar den TopTechnologieunternehmen Paroli bieten kann. Ein gutes Beispiel dafür ist die für alle kostenlos nutzbare Bürosoftware LibreOffice, die in Konkurrenz zu Microsofts kostenpflichtiger Office-Software steht. Auch der Nutzen für interessierte Lehrer und Lernende ist erheblich. Jeglicher Quellcode und alle Dokumente, die in Verbindung mit diesem Buch entstanden sind, wurden öffentlich zur Verfügung gestellt. Die Bereitstellung erfolgt über den Onlinedienst GitHub. Eine detaillierte Anleitung zur Verwendung von Git bzw. GitHub folgt in 7 Kap. 30 Versionsverwaltung. An dieser Stelle ist die Kenntnis von Git noch nicht von Bedeutung. Wer dennoch bereits jetzt Interesse daran hat, hier ein Link als Teaser. >

Weiterführende Informationen zur Vertiefung werden wie hier als Link angegeben. 7 https://t3n.de/news/eigentlich-github-erklaerung-472886

Für den Verweis auf wichtige Dokumente oder Beispiellösungen sind die konkreten Dateien auf GitHub an der betreffenden Stelle direkt verlinkt. Ein Teil der Kapitel beschäftigt sich mit Programmierung bzw. Programmiercode. Ist ein Code nicht zu lang und zentral für die Stunde, wird er nicht über GitHub bereitgestellt, sondern direkt im Text angegeben. Das sieht dann wie folgt aus:

Codebeispiele sind grau hinterlegt und in der Schrift „Courier New“ dargestellt. Längere Codebeispiele werden auch als Screenshots eingebunden. In dieser ersten Stunde kommt allerdings noch kein solcher Code vor.

Die meisten erfolgreichen Informatiker haben viel Zeit im Selbststudium verbracht. Darüber hinaus ist es ungemein wertvoll, einen Mentor zu haben. Er beantwortet Fragen, korrigiert, gibt Anregungen und Tipps und ist Wegweiser für einen verantwortungsvollen Umgang mit Informationstechnologien. Er ist jemand, der Basiswissen vermittelt und gleichzeitig auch Kompass für das weitere Lernen ist. Diese Rolle kann ein Kollege, ein Lehrer oder auch Elternteil einnehmen. Dieses Buch richtet sich sowohl an Lernende der Informatik als auch an die lehrende Person, also jemanden, der die Rolle des Mentors einnimmt. Die sich dynamisch weiterentwickelnde Informationstechnologie zu verfolgen, ist ein lebenslanger Lernprozess. Es kann lohnenswert sein, wenn das Lernen generationsübergreifend stattfindet. Der Wissensgewinn wird sich dann nicht nur auf die Schüler beschränken, sondern beidseitig sein. Vielfach werden junge Lernende andere Ansätze verfolgen als die Lehrenden. Dies ist nicht verwunderlich, da Lehrer und Eltern selbst mit anderen Technologien aufgewachsen sind als die jüngeren Generationen. Man sollte sich dringend von der Vorstellung verabschieden, nur solche Lösungen zu probieren und zu honorieren, die Lehrende vorab vermittelt haben.

5 Kapitel 1 · Informatik lernen

1

Unabhängig davon, ob sich ein kompetenter Lehrer findet, ist es wertvoll eine Partnerin oder einen Partner zu haben. Viele Informatikerinnen und Informatiker machen die Erfahrung, wie wichtig es ist, zumindest gelegentlich, zu zweit zu arbeiten. Das gilt sowohl für die Motivation als auch für die fortlaufende Weiterbildung, die nun mal notwendiger Bestandteil ist, um in der Informatik immer auf dem aktuellen Stand zu sein. Selbst erfahrene Softwareentwicklerinnen und Entwickler suchen sich deshalb gerne eine Partnerin oder einen Partner und praktizieren das sogenannte Pair Programming. Dabei arbeiten zwei Personen gemeinsam an einem Arbeitsplatz. Einer führt die aktive Tätigkeit aus, meist das Schreiben von Code, während der andere die Arbeit kontrolliert, über Problemstellungen nachdenkt und bestehende Probleme anspricht. Beide Personen tauschen ihrer Rollen nach einer bestimmten Zeit, oft nach einer halben Stunde. Leider findet sich in vielen Fällen keine geeignete Partnerin oder kein geeigneter Partner. Selbst Informatiklehrerinnen und Informatiker in den Schulen müssen sich ihr Wissen oft im Selbststudium aneignen. Übung Überlege dir, wer eine geeignete Mentorin/Mentor oder Partnerin/Partner für dich sein kann, um Informatik zu lernen. Nimm dir vor, ihr/ihm von deinem Vorhaben zu berichten. Hinweis: Praktische Übungen werden in diesem Buch eingerahmt dargestellt. Hier werden die Lesenden mit „du“ angesprochen. Die Übungen sind nicht als verpflichtende Hausaufgabe zu verstehen, sondern als Anregung etwas auszuprobieren. Am besten machst du die Übungen gemeinsam mit deiner Lernpartnerin/deinem Lernpartner und diskutierst sie mit ihr/ihm.

Neben den theoretischen Inhalten ist es für den Lernerfolg entscheidend, sich auch praktisch mit der Informatik auseinanderzusetzen. Dazu beinhaltet jede der 52 Stunden eine oder mehrere Übungen. Alle Fragen und praktischen Übungen sind so formuliert, dass sie den Lernenden direkt ansprechen. Wann immer möglich, wird auf einschränkende Angaben und Anweisungen verzichtet. Ganz allgemein kann es sich lohnen, das Lernen der Informatik nicht allzu ernst zu nehmen. Es gibt wichtige Konzepte in der Informatik, die klassisch gelehrt und in einem Buch beschrieben werden können. In deren Anwendung zeigen sich dann aber diverse Möglichkeiten. Meist ist eben die Lösung nicht eindeutig, sondern verschiedene Wege führen zum Ziel. Es darf ausprobiert, kontrovers diskutiert und natürlich auch gelacht werden. Ein weiteres Konzept, das beim Lernen von Informatik helfen kann, ist Gamification (Spielifizierung). So bezeichnet man die Übertragung von spieltypischen Elementen in einen spielfremden Zusammenhang. Ziel der Gamification ist die Steigerung der Motivation beim Anwendenden, etwa um bestimmte Aktionen durchzuführen oder einen Vorgang bis zum Ende zu verfolgen, anstatt ihn abzubrechen. Beispiele dafür sind unterhaltsame Ladebalken oder auch Belohnungssysteme auf Onlineportalen, etwa bei Tripadvisor, vergleiche . Abb. 1.1. Damit wer-

6

Kapitel 1 · Informatik lernen

1

. Abb. 1.1 Bewerter-Badges bei Tripadvisor

den Nutzende animiert, Bewertungen zu veröffentlichen. Die Badges (Abzeichen) sind, ähnlich wie Stufenanstiege in einem Computerspiel, die Belohnung für eine bestimmte Anzahl von Bewertungen. Diese haben eine ähnliche motivierende Funktion wie eine Medaille in einem Wettbewerb. Spiele sind der natürlichste Weg zu lernen. Bei vielen Erwachsenen haben (Computer-) Spiele keinen guten Ruf, da sie vermeintlich Zeitverschwendung sind oder, schlimmer noch, süchtig machen können. Richtig ist, dass Spiele unser Belohnungssystem ansprechen und dadurch motivieren können, besser zu werden und weiterzuspielen. Genauso kann ein Spiel oder eben die Gamification eines Sachthemas stark motivierend sein. Warum sollte man sich das nicht auch beim Lernen zunutze machen? Möglichkeiten dazu bieten sich viele. Naheliegend ist es deshalb, Gelerntes in einem Quiz spielerisch zu prüfen und zu festigen. Genau diesen Weg gehen die „52 Stunden Informatik“ mit den Springer Nature Flashcards, die als zusätzliche Lernhilfe zur Druckversion dieses Buches verfügbar sind. Im Bucheinband finden sich die nötigen Informationen, um das digitale Karteikartensystem nutzen zu können. Damit lassen sich die Lernziele spielerisch kontrollieren. Im Buch werden des Öfteren englische Begriffe verwendet. Das ist vor allem dann der Fall, wenn die Verwendung des englischen Begriffs in der Informatik allgemein üblich ist. So geschehen bei Gamification in diesem Text. Dieses Phänomen ist in dem schnelllebigen und relativ jungen Fachgebiet der Informatik weit verbreitet. Für einige Begriffe gibt es einfach keine entsprechende deutsche Übersetzung oder es existiert ein deutscher Begriff, der aber in der Praxis kaum verwendet wird. An Stellen, an denen einen Übersetzung hilfreich erscheint, wird diese in Klammern angegeben. Im Buch werden immer wieder Personen, Berufsbezeichnungen und Tätigkeitsfelder thematisiert. Der geschriebene Ausdruck erfolgt hier im Maskulinum. Dies ist lediglich der besseren Lesbarkeit geschuldet. Dieses Buch richtet sich ausdrücklich sowohl an Frauen als auch an Männer. Das Buch setzt voraus, dass dem Leser ein Windows-PC für das Nachvollziehen und die Bearbeitung der Übungen zur Verfügung steht. Soweit möglich, sind die einzelnen Stunden aber so ausgelegt, dass auch Mobilgeräte wie Smartphones oder Tablets ausreichen.

7 Kapitel 1 · Informatik lernen

1

Alles, was es jetzt noch braucht, ist ein Commitment (Selbstverpflichtung)! Mit einem konkreten Ziel vor Augen lernt es sich einfach besser. Übung Triff jetzt die bewusste Entscheidung, dein Informatikwissen zu erweitern. Du benötigst nicht mehr als eine Stunde pro Woche, um innerhalb eines Jahres alles Wichtige über Informatik zu lernen. Der erste Schritt ist mit Stunde Eins bereits getan. Wähle einen festen Tag und eine feste Uhrzeit, an denen die weiteren 51 Stunden stattfinden sollen, beispielsweise Sonntagnachmittag um 15 Uhr. Verabrede dich am besten mit deiner Lernpartnerin/deinem Lernpartner. Wir als Autoren wünschen viel Spaß bei dem folgenden Ausflug quer durch die Informatik!

Wie bereits erwähnt, ist beim Lernen eine Wiederholung der neuen Inhalte in einem kurzen Test sehr zu empfehlen. Daher sind am Ende jeder Stunde mindestens fünf Fragen aufgelistet, die aufzeigen, was in der Stunde vermittelt wurde. Die Fragen stimmen mit denen der Springer Nature Flashcards überein. ? Warum ist der Umgang mit Informatik eine lebenslange Aufgabe? Wieso kann es problematisch sein, Wissen zu Informatik aus dem direkten persönlichen Umfeld zu erlangen? Wie ist dieses Buch aufgebaut? An wen richten sich die „52 Stunden Informatik“? Was bedeutet Gamification?

9

Suchmaschinen

© Springer Fachmedien Wiesbaden GmbH, ein Teil von Springer Nature 2024 T. Eichstädt und S. Spieker, 52 Stunden Informatik, https://doi.org/10.1007/978-3-658-41838-0_2

2

10

2

Kapitel 2 · Suchmaschinen

In dieser Informatikstunde geht es um das Aufspüren von Informationen im Internet. Am häufigsten wird dazu die Google-Suchmaschine verwendet. Es gibt aber auch Alternativen zur Google-Suche. Mithilfe von Optionen lassen sich die Ergebnisse einer Suche zusätzlich einschränken. Suchmaschinen erlauben es, in einer enormen Menge von Webseiten sehr schnell relevante Informationen zu finden. Dabei setzt der Betreiber der Suchmaschine raffinierte Mechanismen ein, um nicht bei jeder neuen Suchanfrage das komplette Internet durchsuchen zu müssen. Die Reihenfolge, in der die Ergebnisse angezeigt werden, und die Autovervollständigung der Sucheingabe sind sehr entscheidende Eigenschaften einer Suchmaschine. Neben der Sucheingabe bestimmen zahlreiche weitere Faktoren das Resultat der Suche. Dabei spielt auch Personalisierung eine wichtige Rolle. Es ist wichtig, sich der Personalisierung bewusst zu sein, um Filterblasen zu vermeiden. Informationen beziehen wir heute in allererster Linie aus dem Internet. Wie finden wir eine ganz bestimmte Information, wenn wir danach suchen? Wie finden wir neue Webseiten oder bekannte Webseiten, von denen uns die Adresse entfallen ist? Um sich im Internet zurechtzufinden, spielen Suchmaschinen eine elementare Rolle. Die folgende Definition erscheint bei google.de nach Eingabe von „was ist eine Suchmaschine“:

»

„Eine Suchmaschine ist ein auf einen bestimmten Namen lautendes Programm im Internet, das mithilfe umfangreicher, aus Internetadressen bestehender Datenbanken die gezielte Suche nach Informationen im Internet ermöglicht.“

Google ist heute für viele zum ersten Anlaufpunkt für jede Art von Informationsbedarf geworden. Sei es Sprache, Urlaub, Haushalt oder Gesundheit. Auf fast jede Frage bietet Google eine Antwort. Auch im Beruf ist die Nutzung der GoogleSuche weit verbreitet. Selbst hoch dotierte technische Berater, deren Arbeit auf ihrem Grundlagenwissen basiert, tun oft nichts anderes, als Handlungsempfehlungen von Google-Suchergebnissen zu befolgen. Es scheint also lohnenswert, sich mit den Mechanismen der Google-Suche zu befassen. Google ist weltweit, wie auch im deutschsprachigen Raum, die mit großem Abstand beliebteste Suchmaschine. Auf dem zweiten Platz folgt Bing von Microsoft. Es gibt zahlreiche kleinere Alternativen. Aus verschiedenen Gründen, allem voran aus Überlegungen zum Datenschutz, kann es durchaus sinnvoll sein, Alternativen zu verwenden. Jedoch liefern kleinere Suchmaschinen in der Regel schlechtere Ergebnisse. Die Qualität der Suchergebnisse hängt unter anderem von der Menge der Nutzungsdaten ab. Der Erfolg von Google verstärkt sich also selbst. In den nachfolgenden Beispielen nutzen wir die Suchmaschine „Google“, wenn nichts anderes genannt ist. Übung Welche Suchmaschinen kennst und nutzt du? Welche Gefahr könnte davon ausgehen, wenn ein einzelner Konzern fast alle Websuchen kontrolliert?

11 Kapitel 2 · Suchmaschinen

2

Übrigens, zum Zeitpunkt des Erscheinens dieses Buches sind die beiden meistgenutzten deutschen Websuchen t-online und web.de. Die Ergebnisse werden jedoch in beiden Fällen durch Google bereitgestellt. Weitere bekannte Suchmaschinen sind Produktsuchmaschinen (z. B. idealo) und Jobsuchmaschinen (z. B. StepStone). Bei Suchfunktionen innerhalb einer Webseite oder eines Webportals wird von einem Suchdienst gesprochen und nicht von einer Suchmaschine. Die Suche innerhalb von Amazon oder Facebook sind bekannte Beispiele. Ohnehin suchen Kinder und Jugendliche Informationen wesentlich häufiger auf Videoportalen wie YouTube oder TikTok als über eine Suchmaschine. Übung Ein einfaches Experiment ist die Suche nach einem Namen. Suche wie in . Abb. 2.1 nach deinem Vor- und Nachnamen. Was ist der erste Treffer? Probiere verschiedene Suchmaschinen aus und vergleiche das Ergebnis.

Wenn du einen PC verwendest, erscheint über den Suchergebnissen auch die Anzahl der Treffer. Auf einem Smartphone oder Tablet ist das nicht der Fall. Google erkennt automatisch, von welcher Art Gerät die Suche angefragt wurde. Wenn ein PC verfügbar ist, kann man beispielsweise vergleichen, wer laut Suchmaschine den häufigsten Namen hat. Übung Eine Variante ist die speziellere Suche mithilfe von intitle: „Vorname Nachname“. Suche jetzt mit diesem Zusatz wie in . Abb. 2.2. Es werden nur noch solche Seiten angezeigt, die den Namen im Titel tragen. Zum Beispiel Profilseiten in sozialen Medien.

Die Suche mit der Option intitle ist nur eine von vielen Möglichkeiten der erweiterten Suchanfrage. Generell können mehrere Wörter in einer bestimmten Reihenfolge gesucht werden, indem diese in Anführungszeichen gesetzt werden, also „Wort1 Wort2 Wort3“. Weitere Optionen sind die Verwendung von *, -, site:, filetype:, etc.

. Abb. 2.1 Google-Eingabe

12

Kapitel 2 · Suchmaschinen

2

. Abb. 2.2 Google-Eingabe mit intitle

Übung Wirf doch einmal einen Blick in die Hilfeseiten von Google oder verwende die Oberfläche zur erweiterten Suche.

>

Oberfläche zur erweiterten Google-Suche 7 https://www.google.com/advanced_ search Beispielhaft ein Artikel, der die erweiterten Suchoptionen erklärt https:// motherboard.vice.com/de/article/9k895y/google-suche-elf-profi-tricks-bessere -suchergebnisse-operatoren-maximalfunktion

Um zu verstehen, wie eine Suchmaschine funktioniert, hilft es, sich vor Augen zu führen, was das Internet ist. Das Internet kann man sich als ein riesiges globales Netzwerk vorstellten, dessen einzelne Teile über verschiedene Dienste miteinander verbunden sind. Ein bekannter Internetdienst ist die E-Mail. Ein weiterer Dienst ist das World Wide Web (www), oft auch kurz nur mit „Web“ bezeichnet. Das World Wide Web besteht aus der Gesamtheit aller Hypertextdokumente, den Webseiten. Zum Beispiel  google.com oder spiegel.de. Insgesamt gibt es weit mehr als eine Milliarde solcher Webseiten. Eine Suchmaschine ermöglicht es, gezielt Webseiten oder Inhalte auf Webseiten zu finden. Für eine einzelne Suchanfrage wird nicht wirklich das gesamte World Wide Web durchsucht. Stattdessen setzt der Betreiber einer Suchmaschine Webcrawler (oder auch „Suchroboter“) ein, die fortlaufend das Internet durchkämmen. Die so gewonnenen Inhalte werden bewertet und indiziert. Auf Grundlage dieses Index wird eine Liste von Treffern bereitgestellt. Dieser Index ist ähnlich einem Telefonbuch, in dem die Suchanfragen mit einer Trefferliste abgelegt sind. Eine einfache Verständnisfrage: Warum setzt man Webcrawler ein, anstatt das Internet bei einer Suchanfrage direkt zu durchsuchen? – Es wäre viel zu aufwendig und würde auch zu lange dauern, bei jeder Suchanfrage das Web von Grund auf nach Inhalten zu durchkämmen. Deshalb müssen die Ergebnisse vorab erstellt werden. Eine Suchanfrage findet trotzdem statt, allerdings nur auf dem Index. Wie solche Suchanfragen ablaufen, erfahren wir in 7 Kap. 36 SQL.

13 Kapitel 2 · Suchmaschinen

2

. Abb. 2.3 Autovervollständigung bei Google auf dem PC

Sowohl für Nutzer als auch für die Webseitenbetreiber ist entscheidend, in welcher Reihenfolge die Treffer für eine Suchanfrage angezeigt werden. Ein ganzes Berufsfeld ist allein rund um die Optimierung von Webseiten für ein besseres Ranking entstanden. Das Ranking ist dabei die Reihenfolge, in der die Ergebnisse der Suchanfrage angezeigt werden. Bei der Search Engine Optimization (Suchmaschinenoptimierung, kurz SEO) geht es darum, Aufbau und Inhalt von Webseiten so anzupassen, dass diese möglichst gut durch Suchmaschinen gefunden werden können. Neben Aufbau und Inhalt der Webseiten spielen aber auch die Daten von Nutzern und deren Nutzungsverhalten beim Umgang mit Suchmaschinen eine große Rolle für die Ergebnisse. Je eher bei Suchergebnissen die eigene Seite erscheint, umso größer ist die potenzielle Nutzerzahl. Sehr deutlich wird das bei einer komfortablen Hilfe, die viele Suchmaschinen anbieten, der Autovervollständigung. Dabei macht die Suchmaschine einen Vorschlag aufgrund von bekannten Anfragen, also aufgrund von Nutzungsdaten. Das funktioniert sowohl auf dem Smartphone als auch auf dem PC (siehe . Abb. 2.3 und 2.4). Das Ergebnis kann identisch sein oder variieren. Ein anderer Suchanbieter wird fast immer andere Ergebnisse liefern (vergleiche . Abb. 2.5). Übung Denke dir eine Suchanfrage aus. Gib den Anfang der Suche ein und sieh nach, welche Autovervollständigung Google anbietet. Daraus lässt sich ein Ratespiel ableiten: Eine Person denkt sich den Anfang einer Suche aus und prüft, welche Autovervollständigungen Google anbietet. Die Mitspieler müssen diese erraten.

14

Kapitel 2 · Suchmaschinen

2

. Abb. 2.4 Autovervollständigung Mobil

. Abb. 2.5 Autovervollständigung bei Bing

>

Eine Erklärung zur Autovervollständigung von Google 7 https://t3n.de/news/ google-autocomplete-automatisch-vervollstaendigen-suche-mobil-1065667/

Welche Faktoren und Gewichtung über das Ranking der Suchergebnisse entscheiden, weiß nur der Betreiber einer Suchmaschine. Dabei spielen auch Daten zur eigenen Person und zum eigenen Nutzungsverhalten eine Rolle. Das nennt man Personalisierung. Eine Personalisierung ist an sich nichts Schlimmes. Allerdings steigt dadurch die Gefahr einer einseitigen Wahrnehmung von Informationen. In diesem Zusammenhang spricht man bildlich auch von einer Filterblase. Gemeint ist eine Situation, in der nur noch solche Informationen wahrgenommen werden,

15 Kapitel 2 · Suchmaschinen

2

die dem Standpunkt des Benutzers entsprechen. Es gibt andere Medien, bei denen diese Gefahr noch größer ist als bei Suchmaschinen. Besonders gilt dies bei sozialen Netzwerken wie Instagram oder Facebook. Die Faktoren, die zu Filterblasen führen können, sind dabei ähnlich. Es ist daher sehr interessant und aufschlussreich, sich bewusst zu machen, welche Faktoren eine Websuche beeinflussen. Übung Was beeinflusst das Resultat einer Google-Suchanfrage? Sammle alle Punkte, die dir einfallen. Bewerte jeweils, ob der Einfluss immer vorhanden ist oder ob er je nach Einstellungen deaktiviert werden kann.

Einige Beispiele von Faktoren für das Resultat der Websuche inklusive der Gültigkeit sind in . Tab. 2.1 gelistet. Man sollte nicht vergessen, dass Google beziehungsweise die Muttergesellschaft Alphabet sehr viel Geld mit Werbung verdient. Neben der Anzeige der „echten“ Suchergebnisse schaltet Google auch Werbeanzeigen. Diese Werbung ist ebenfalls oder sogar noch viel stärker von der Personalisierung betroffen. Personalisierung bietet Vor- und Nachteile. Bist du dir dieser bewusst? Bist du bei deinem Suchmaschinenanbieter regelmäßig angemeldet? Welche Datenschutzeinstellungen verwendest du? . Tab. 2.1 Faktoren für das Resultat einer Suche Faktoren für das Resultat

Gültigkeit (Häufigkeit)

Sucheingabe

Immer

Aufbau und Inhalt der betreffenden Webseiten

Immer

Browserverlauf, insbesondere Navigation, Suchverlauf und Klicken auf Suchergebnisse

Abhängig von den Einstellungen (z. B. eingeloggt oder anderweitig identifiziert)

Suchanfragen und Klicks anderer Benutzer mit ähnlichem Profil, Standort oder Suchverhalten

Häufig

Google Login Status

Wenn eingeloggt

Spracheinstellungen

Immer

Standort

Nur, wenn in den Einstellungen aktiviert, IPbasiert immer (siehe 7 Kap. 8 Netzwerke und Protokolle)

Aktivitäten in sozialen Netzwerken

Abhängig von den Einstellungen (z. B. eingeloggt oder anderweitig identifiziert)

Art des Endgeräts

Immer

16

Kapitel 2 · Suchmaschinen

Übung

2

Navigiere zu 7 www.google.de und klicke auf das Anmeldesymbol oben rechts beziehungsweise auf euer Account-Symbol, wenn du bereits angemeldet bist. Hier finden sich die Kontenverwaltung und die Einstellungen zum Datenschutz, siehe . Abb. 2.6. Die genaue Ansicht variiert je nachdem, welches Gerät du verwendest. Eine weitere Möglichkeit für mehr Privatsphäre bietet der Inkognitomodus. Öffne dazu ein entsprechendes neues Fenster in deinem Browser, siehe . Abb. 2.7. Sieh dir die Ergebnisse der Autovervollständigung zu „Klimawandel ist“ im Inkognitofenter an und vergleiche sie mit den vorherigen Ergebnissen.

. Abb. 2.6 Google-Kontoeinstellungen

. Abb. 2.7 Öffnen eines Inkognitofensters

17 Kapitel 2 · Suchmaschinen

2

. Abb. 2.8 ChatGPT integriert in die Suchmaschine Bing

Privat surfen bedeutet, dass auf dem eigenen Gerät keine Daten zur Navigation gespeichert werden. Google kann trotz Inkognitomodus über die IP-Adresse verfolgen, von wo aus die Anfrage gesendet wurde. Dazu kommt, dass circa 50–80 % aller Webseiten die Software Google Analytics verwenden (vergleiche 7 https://de. wikipedia.org/wiki/Google_Analytics). Dadurch sammelt Google auch Daten von Personen, die keinen Google-Account besitzen und keine Google-Software verwenden. Aus den genannten Gründen kann man davon ausgehen, dass das Resultat jeder Google-Suche zu einem gewissen Grad personalisiert ist. Übung Wähle eine Suchmaschine und eine Sucheingabe. Führe dieselbe Suche unter verschiedenen Bedingungen durch und vergleiche die Resultate. Beschreibe die Bedingungen (Gerät, verwendeter Webbrowser, regulär oder „inkognito“, Nutzer des Geräts, aktiver Account, Ort, etc.) und Unterschiede im Resultat. Wie erklärst du dir die Unterschiede?

Lange Zeit galt Google als unumstrittener Monopolist für die Informationssuche im Internet. Es wurde angezweifelt, ob eine andere Suchmaschine jemals wieder zu einem ernsthaften Konkurrenten aufsteigen könne. Mit den rasanten Entwicklungen im Bereich KI werden die Karten nun wieder neu gemischt. Die zweite Auflage dieses Buches wurde kurz nach der Integration von ChatGPT in Bing verfasst, siehe . Abb. 2.8. Mehr dazu in der separaten Stunde über ChatGPT. Niemand kann mit Sicherheit sagen, wie die Informationssuche der Zukunft aussehen wird. ? Was wird von einer Suchmaschine durchsucht? Wie kann man eine Suche auf Seitentitel einschränken? Wofür steht SEO? Wofür nutzt man SEO? Was ist eine Filterblase? Was bedeutet es, wenn das Resultat einer Suche personalisiert ist?

19

Wikis

© Springer Fachmedien Wiesbaden GmbH, ein Teil von Springer Nature 2024 T. Eichstädt und S. Spieker, 52 Stunden Informatik, https://doi.org/10.1007/978-3-658-41838-0_3

3

20

3

Kapitel 3 · Wikis

Wikis sind eine moderne Art der Wissenssammlung. Das bekannteste Wiki ist die Wikipedia. Das Ziel von Wikipedia ist der Aufbau einer Enzyklopädie durch freiwillige und ehrenamtliche Autoren. Die Wikipedia ist wesentlich umfangreicher als alle gedruckten Enzyklopädien. Jeder kann an der Wikipedia mitarbeiten. Dabei hilft eine spezielle Sprache – der Wikitext. Das Editieren eines Wikipedia-Artikels funktioniert ganz einfach über den Webbrowser. Anfänger benutzen zunächst die Spielwiese. Die Wikipedia besteht ausschlielich aus freien Inhalten und bemüht sich um Neutralität. Es existieren verschiedene Korrekturmechanismen, durch die eine hohe Qualität der Artikel sichergestellt werden soll. Neben der Wikipedia gibt es noch zahlreiche andere Wikis. Durch Wiki-Software ist es sogar möglich, selbst ein Wiki aufzubauen. Wikis eignen sich besonders für das dynamische Teilen von Inhalten zwischen mehreren Personen. Das Internet enthält riesige Mengen an Informationen. In der vorangegangenen Stunde haben wir gelernt, wie wir bestimmte Informationen im Internet finden können. Häufig trifft man dabei auf Wikis, das sind Wissenssammlungen zu bestimmten Themenbereichen, bei denen oft mehrere Verfasser an einem Artikel zusammengearbeitet haben. Aber wie zuverlässig sind die gefundenen Informationen? Angenommen, wir haben etwas über „Chemtrails“ aufgeschnappt und möchten uns nun genauer darüber informieren. Eine Google-Suche ergibt die in . Abb. 3.1 dargestellten drei obersten Treffer. Übung Als wie aussagekräftig bewertest du die drei Webseiten? Bei welcher Seite erwartest du am ehesten eine neutrale Information und welche Seite hältst du für die seriöseste? Wie begründest du deine Wahl?

. Abb. 3.1 Suchergebnisse zu Chemtrails

21 Kapitel 3 · Wikis

3

Die Fragen müssen hier nicht abschließend beantwortet werden. Zumindest hilft es, sich grundsätzlich bewusst zu machen, wer oder was die Quelle einer Information ist. Der Spiegel als (relativ) seriöses Nachrichtenmagazin ist vielleicht einigen ein Begriff. Hier kann man davon ausgehen, dass eine gewisse Qualitätskontrolle stattfindet, was Autor und Inhalt angeht. Dennoch kommt es bei jedem Artikel natürlich stark auf Kompetenz und Zielrichtung des jeweiligen Autors an. Die Webseite 7 www.chemtrail.de stammt womöglich nur von einer Einzelperson. Handelt es sich um eine Privatperson oder ein Unternehmen? Welches Ziel verfolgt die Webseite? Wir haben keine Möglichkeit, diese Fragen zu klären, zumindest nicht ohne eine aufwendige Recherche. Auch Wikipedia ist dir vermutlich ein Begriff. Unabhängig vom Unterhaltungswert kann man hier in der Regel neutrale und sehr gut recherchierte Informationen erwarten. Aber weißt du denn überhaupt, was Wikipedia ist? Wer ist der Autor bzw. sind die Autoren? Findet eine Qualitätskontrolle statt? Wer betreibt die Webseite? Wem gehören die Inhalte? Ziel von Wikipedia ist der Aufbau einer Enzyklopädie durch freiwillige und ehrenamtliche Autoren. Der Name Wikipedia setzt sich zusammen aus Wiki (dem hawaiischen Wort für „schnell“) und encyclopedia (dem englischen Wort für „Enzyklopädie“). Wie sich Wikipedia selbst beschreibt, siehst du in . Abb. 3.2. Das Wort Enzyklopädie ist heute nicht mehr allzu gebräuchlich. Es meint aber nichts anderes als eine umfangreiche Wissenssammlung. Sie enthält Informationen zu so gut wie jedem Themengebiet. Sehr wichtig ist auch der Aspekt, dass die Wikipedia-Artikel durch freiwillige Autoren erstellt werden. Nur so war der vergleichsweise rasante Aufbau einer solch umfangreichen Wissenssammlung möglich. Wikipedia existiert in mehr als 300 verschiedenen Sprachversionen. Allein die deutsche Version ist in nur 18 Jahren auf über zwei Millionen Artikel angewachsen (siehe . Abb. 3.3). Diese Artikel umfassen rund eine Milliarde Wörter. Sie stehen jedem Menschen kostenlos zur Verfügung. Zum Vergleich: Die größte und bis dato bekannteste deutschsprachige Enzyklopädie war die Brockhaus Enzyklopädie. Im Jahr 2006 erschien in einer über 200-jährigen Tradition die 21. Auflage für 2820 e. Sie zählte 300 000 Artikel oder 33 Mio. Wörter.

. Abb. 3.2 Selbstbeschreibung von Wikipedia

22

Kapitel 3 · Wikis

3

. Abb. 3.3 Willkommensseite der Wikipedia

. Abb. 3.4 Quelltext bearbeiten

. Abb. 3.5 Änderungen veröffentlichen

Übung Sehen wir uns an, wie man Wikipedia-Seiten bearbeitet. Öffne einen beliebigen Webbrowser und navigiere zu 7 https://de.wikipedia.org/wiki/Wikipedia:Spielwiese. Alternativ kannst du auch zu 7 www.wikipedia.de navigieren und nach „Wikipedia:Spielwiese“ suchen, um auf dieselbe Seite zu gelangen. Wechsle nun in den Editiermodus durch Klicken auf den Reiter „Quelltext bearbeiten“ (. Abb. 3.4). Entferne einen Textabschnitt im Editor oder füge neuen Text ein. Dann verwende den Button „Änderungen veröffentlichen“ (. Abb. 3.5) ganz unten auf der Seite. Du hast soeben eine neue Version der Webseite 7 https://de.wikipedia.org/wiki/Wikipedia:Spielwiese erstellt und diese für andere veröffentlicht!

Jetzt wird uns klar, warum Wikis nach dem hawaiischen Wort für „schnell“ benannt wurden. Die Veröffentlichung von Webseiten mit zwei Klicks ist phänomenal schnell. Aber was bedeuten die vielen kryptischen Symbole, die wir eben im Editor gesehen haben?

23 Kapitel 3 · Wikis

3

. Abb. 3.6 Wikipedia-Quelltext

Wiki-Artikel sind formatiert im Wikitext (. Abb. 3.6). Die Auszeichnungssymbole (Gleichheitszeichen, Klammern, Anführungszeichen etc.), auch Tags genannt, sorgen dafür, dass betreffende Stellen mit Attributen und Formatierungen (beispielsweise kursiv, unterstrichen, eingerückt oder verlinkt) versehen werden. Zum Beispiel erzeugen die drei Anführungszeichen einen „fetten“ Schriftzug, die beiden eckigen Klammern um das Wort [[Hyperlink]] eine Verlinkung zu dem Wikipedia-Artikel mit dem Titel „Hyperlink“. Übung Erzeuge durch die Spielwiese einen Artikel, der aussieht, wie in . Abb. 3.7 dargestellt. Er soll also den folgenden Text enthalten: Es folgt ein Link [fettgedruckt] zum Artikel Chemtrail [Verlinkung auf Chemtrail-Artikel]. Dazu kann man auf „mit leerer Spielwiese starten“ klicken oder einfach den Text im Editor löschen. Füge dann den unterstrichenen Satz inklusive Tags ein und verwende „Änderungen veröffentlichen“.

Auch das war einfach. Nachdem wir verstanden haben, wie man Artikel editiert, sehen wir uns nun doch einmal den Aufbau eines bereits existierenden Artikels genauer an. In diesem Fall betrachten wir den Artikel zum Thema Chemtrail (siehe . Abb. 3.8). Alle Wikipedia-Artikel sind grundsätzlich ähnlich aufgebaut. Der Titel bezeichnet den beschriebenen Begriff oder manchmal einen kurzen Satz. Als Erstes erscheint dann eine kurze Begriffsklärung. Meistens gibt es in diesem Abschnitt auch eine oder mehrere Abbildungen. Dann folgt das Inhaltsverzeichnis. Im Hauptteil steht dann die inhaltliche Beschreibung. Je nach Umfang des Themas kann diese sehr lang sein oder sogar auf weitere Seiten ausgelagert sein. Am Ende folgen Verweise auf Literatur, Weblinks oder andere Quellen. Wie sieht es mit dem Inhalt aus? Wie sollte ein Wikipedia-Artikel geschrieben sein und, vor allem, wer kontrolliert die Inhalte? Besonders bei politischen Artikeln

24

Kapitel 3 · Wikis

3

. Abb. 3.7 Beispielartikel

. Abb. 3.8 Chemtrail-Artikel

sind oft mehrere konkurrierende Autoren im Widerstreit um die Sichtweisen auf Personen oder Ereignisse. Übung Lies bitte den Artikel 7 https://de.wikipedia.org/wiki/Wikipedia:Grundprinzipien. Welche vier zentralen Grundprinzipien gelten für die Wikipedia? Welche Korrektur- bzw. Eingriffsmöglichkeiten gibt es bei Verstößen gegen die Richtlinien?

25 Kapitel 3 · Wikis

3

Wir haben gesehen, wie das Schreiben und die Korrektur von Wikipedia-Artikeln abläuft. Möglicherweise ist es an dieser Stelle sinnvoll, die Diskussion vom Beginn der Stunde noch einmal aufleben zu lassen. Ist Wikipedia mehr oder weniger vertrauenswürdig als andere Quellen? Wichtig zu erwähnen ist, von wem Wikipedia betrieben wird. Die Wikimedia Foundation ist eine gemeinnützige Organisation, die überwiegend durch Einzelspenden finanziert wird. Wikipedia wird also sowohl finanziell als auch inhaltlich von Privatpersonen getragen. >

Hilfreiche Informationen für Wikipedia-Einsteiger finden sich auf der StarthilfeSeite. 7 https://de.wikipedia.org/wiki/Wikipedia:Starthilfe Unter anderem gibt es auch ein Mentorenprogramm, um direkten Kontakt mit erfahrenen Wikipedia-Editoren herzustellen.  https://de.wikipedia.org/wiki/ Wikipedia:Mentorenprogramm Wikimedia Foundation ist die Organisation hinter Wikipedia. 7 https://de.wikipedia. org/wiki/Wikimedia_Foundation

Am Beispiel von Wikipedia haben wir das Wiki-Prinzip kennengelernt. Wikipedia ist das bekannteste und größte Wiki, aber bei Weitem nicht das einzige. Ein Wiki ist eine Anwendung im Internet, die eine variable Menge an Webseiten bereitstellt. Diese Seiten können leicht und ohne technische Vorkenntnisse direkt im Webbrowser (siehe auch 7 Kap. 6 Webbrowser) bearbeitet werden. Übung Welche anderen Wikis kennst du? Wusstest du, dass Wikis oft auch zur Zusammenarbeit verwendet werden? Oder dass man sie auch verwendet, um Informationen zu einem bestimmten Themengebiet, etwa einem Computerspiel, darzustellen?

>

Beispiel Fortnite 7 https://fortnite-de.gamepedia.com/Fortnite_Wiki Plattform für Lehrinhalte und Lernprozesse 7 https://wiki.zum.de/wiki/Wiki Wikipedia-Artikel zu Wikis 7 https://de.wikipedia.org/wiki/Wiki Wikipedia Seite mit Auflistung vieler anderer Wikis 7 https://de.wikipedia.org/ wiki/Wikipedia:WikiProjekt_Andere_Wikis/Liste_Andere_Wikis Erklärung der Wiki-Software 7 https://www.pixsoftware.de/was-ist-eine-wikisoftware YouTube-Video zur Erklärung eines Wikis 7 https://www.youtube.com/watch? v=Kl87tJcB4Io

Der obige YouTube-Link führt auf eine gute Erklärung, wie ein Wiki funktioniert. Eventuell ist es eine hilfreiche Ergänzung zur bereits behandelten Einführung anhand von Wikipedia. Um kurz zusammenzufassen: Wikis eignen sich gut, um dynamisch Informationen zwischen mehreren Personen zu teilen. Eine Person bearbeitet einen Wiki-Artikel und speichert diesen. Beim Speichern wird eine neue Version der Artikelwebseite veröffentlicht. Diese können sich dann andere Perso-

26

3

Kapitel 3 · Wikis

nen ansehen und ebenfalls bearbeiten. Beim Speichern wird der Artikel wiederum aktualisiert, und so geht es dann immer weiter. Wikis sind mittlerweile sowohl im Internet als auch im Unternehmensumfeld ein Standardwerkzeug. Sie werden beispielsweise als Austauschplattform für Arbeitsgruppen verwendet oder auch zur Dokumentation von Produkten oder Verfahren. Ein Wiki und dessen Funktionalität beruht immer auf einer Wiki-Software. Wikipedia setzt hierfür MediaWiki ein. Es existiert eine Reihe weiterer kommerzieller und frei verfügbarer Wiki-Software. Diese Software erlaubt es Organisationen, Wikis zu erzeugen und für sich zu nutzen. >

Wikibooks-Artikel über den Einsatz von Wikis in Organisationen 7 https://de. wikibooks.org/wiki/Wikis_in_Organisationen:_Software Webseite von MediaWiki 7 https://www.mediawiki.org/wiki/MediaWiki/de Webseite von DokuWiki 7 https://www.dokuwiki.org/start?id=de:dokuwiki

Übung Wir haben gesehen, dass die Texterstellung für Wiki-Artikel durch die Zusammenarbeit mehrerer Autoren möglich ist. Welche Vor- und Nachteile siehst du darin? Wann würdest du ein Wiki verwenden, anstatt per Messenger oder E-Mail zu kommunizieren?

Wikis sind eine wunderbare Erfindung. Für Nutzer bieten sie eine schnelle und unkomplizierte Möglichkeit, zum Editor von Webseiten zu werden. Das Erzeugen eines eigenen Wikis kann sehr lehrreich sein und ist mit keinen oder nur geringen Kosten verbunden. Dennoch erfordert es deutlich mehr an Aufwand als die reine Nutzung. Das ist insbesondere dann der Fall, wenn Nutzer von verschiedenen Geräten aus (in einem Netzwerk bzw. im Internet) darauf zugreifen können sollen. Wer diesen Aufwand nicht scheut, kann an dieser Stelle darüber nachdenken, ob er als Projektarbeit ein Wiki aufbauen möchte. Die Schüler könnten in einem solchen Projekt verschiedene Rollen einnehmen. Etwa als Administrator, als Autoren mit verschiedenen inhaltlichen Schwerpunkten, als Korrektoren etc. Denkbar ist auch, den Fortschritt dieses Buches mithilfe eines Wikis zu beschreiben – ein neuer Artikel für jede Informatikstunde. ? Woher stammt die Bezeichnung „Wiki“? Wie editiert man einen Wikipedia-Artikel? Was bedeutet es, wenn ein Begriff im Wikitext mit doppelten eckigen Klammern versehen wird? Wie lauten die Grundprinzipien der Wikipedia? Wieso ist ein WikipediaArtikel in der Regel vertrauenswürdiger als eine private Webseite? Was ist eine WikiSoftware und wofür wird diese eingesetzt?

27

HTML

© Springer Fachmedien Wiesbaden GmbH, ein Teil von Springer Nature 2024 T. Eichstädt und S. Spieker, 52 Stunden Informatik, https://doi.org/10.1007/978-3-658-41838-0_4

4

28

4

Kapitel 4 · HTML

Webseiten basieren auf HTML. HTML ist eine Auszeichnungssprache mit dem Zweck, Text und andere Inhalte von Webseiten zu gliedern und zu formatieren. Dazu verwendet man Tags. HTML wird seit Langem eingesetzt und fortlaufend weiterentwickelt. Der grundlegende Aufbau eines HTML-Dokuments ist immer gleich. Weitere Inhalte können eingefügt und ineinander verschachtelt werden. HTML-Dokumente lassen sich mit einem beliebigen Texteditor erstellen und mit dem Webbrowser öffnen. Die Struktur eines HTML-Dokuments kann als DOM-Baum dargestellt werden. Auch im Entwicklermodus des Webbrowsers ist diese Darstellung üblich. Für die Gestaltung eines HTML-Dokuments kann CSS verwendet werden. Es wird empfohlen, den Inhalt von der Gestaltung einer HTML-Seite zu trennen. Das passiert, indem eine separate CSS-Datei erstellt und im HTML-Dokument verlinkt wird. In der letzten Stunde haben wir eine einfache Möglichkeit kennengelernt, Webseiten innerhalb eines Wikis zu editieren. Nebenbei haben wir auch Wikitext verwendet. Dadurch wird es dem Wiki-Autor einfach gemacht, Inhalte zu erstellen, die ansprechend formatiert sind. Technisch gesehen basieren Webseiten aber auf HTML. Als Nächstes geht es darum, wie Webseiten grundsätzlich aufgebaut sind. Wir erstellen auch selbst eine neue Webseite von Grund auf. Für die praktischen Übungen in dieser Lektion wollen wir diesmal einen PC verwenden. Neben HTML lernen wir dabei auch das Erstellen und Editieren von Dateien in verschiedenen Formaten. Alternativ wird aber auch auf die Verwendung einer Smartphone-App verwiesen. HTML ist die Kernsprache des World Wide Web. HTML steht für Hyper text Markup Language. Eine Markup Language (Auszeichnungssprache) hat den Zweck, Text zu gliedern und zu formatieren. Hypertext bezeichnet den elektronischen Inhalt, der aus Text, aber beispielsweise auch aus Bildern und Verlinkungen bestehen kann. HTML erlaubt es, Webseiten zu strukturieren und untereinander zu verlinken. Jede einzelne Webseite besteht aus HTML-Code, der durch einen Webbrowser (siehe 7 Kap. 6 Webbrowser) dargestellt werden kann. Darüber hinaus werden auch Webanwendungen und sogar E-Mails über HTML dargestellt. Auszeichnungssprachen bestehen aus Elementen, deren Inhalt von Tags eingerahmt wird. In aller Regel beginnt ein Element mit einem Starttag und wird durch das entsprechende Endtag mit einem zusätzlichen ,,/‘‘ beendet. Tags werden dabei von spitzen Klammern eingerahmt.

Inhalt

Ein HTML-Dokument beschreibt durch seine Elemente die Struktur des Hypertexts. Die Formatierung des HTML-Dokuments selbst spielt dabei keine Rolle. Zeilenumbrüche und Einrückungen werden ignoriert.

29 Kapitel 4 · HTML

4

. Tab. 4.1 Grundlegende HTML-Elemente

Gibt an, dass es sich um ein HTML-Dokument handelt. !DOCTYPE besitzt kein schließendes Endtag.

Definiert den Start oder auch Wurzelknoten (Erklärung folgt später) eines HTML-Dokuments. Alle weiteren Elemente sind diesem Element untergeordnet.

Definiert eine Sammlung von Metadaten des Dokuments.

Definiert den Hauptinhalt eines HTML-Dokuments. Jedes Dokument kann nur ein -Element enthalten.

Die oben dargestellte Eingabe ist also identisch mit der folgenden Eingabe:

Inhalt

HTML wird seit dem Beginn des World Wide Web in den 90er-Jahren eingesetzt und seither fortlaufend weiterentwickelt. Die aktuelle Version ist HTML 5.2. Darin wird insbesondere spezifiziert, welche Elemente wie verwendet werden dürfen. Beispielsweise können viele, aber nicht alle Elemente ineinander verschachtelt sein. Der grundlegende Aufbau eines HTML-Dokuments ist wie folgt:





Die Erklärung zu den entsprechenden Elementen findest du in . Tab. 4.1.

30

Kapitel 4 · HTML



Beschreibung der Seite (erscheint in der Titelzeile des Browsers)

Inhalt der Seite.



4

Übung Wir wollen jetzt eine neue HTML-Seite anlegen. Erstelle dazu ein neues Textdokument mit einem Rechtsklick auf den Windows Desktop und „Neu“ > „Textdokument“. Der Desktop ist der Schirm, der sich nach der Anmeldung darstellt. Mit einem Doppelklick auf die Datei öffnest du diese in dem eingestellten Standardprogramm für Textdokumente. Wenn du noch keinen anderen Texteditor installiert hast, ist auch das bei Windows bereits vorinstallierte Notepad für diesen Zweck ausreichend. Wir verwenden es lediglich zum Kopieren eines einfachen HTML-Beispiels in die Datei. Natürlich können die Beispiele auch an einem Smartphone umgesetzt werden. Dort benötigst du lediglich einen HTML-Editor. Eine gute Anwendung ist: „anWriter free HTML editor“. Eine Installationsanleitung findet sich im Appendix. Kopiere nun den obenstehenden HTML-Code in das Textdokument.

Du kannst den Code auch abtippen. Dabei musst du aber sehr genau vorgehen. Ein Fehler im Inhalt ist nicht so schlimm. Ist aber nur ein einziges Tag nicht korrekt angegeben, kann das komplette HTML-Dokument nicht korrekt angezeigt werden. >

Du findest die Datei auch auf GitHub. 7 https://github.com/StefanSpieker/ 52Stunden/blob/master/html/test.html

Übung Jetzt speichere und schließe das Dokument. Benenne die Datei nun um in „test.html“. Bei der Umbenennung erscheint eine Warnung, die mit „Ja“ bestätigt werden muss (siehe . Abb. 4.1). Im HTML-Editor für Smartphones muss die html-Endung nicht extra angegeben werden. Das ist dort die normale Einstellung.

31 Kapitel 4 · HTML

4

. Abb. 4.1 Dateiumbenennung

Selbstverständlich wird die Datei dadurch nicht unbrauchbar. Allerdings wird durch die Änderung der Endung das Standardprogramm zum Öffnen geändert. Das heißt, beim nächsten Doppelklick wird die Datei nicht mehr im Texteditor angezeigt. Stattdessen – weil es sich jetzt um ein HTML-Dokument handelt – wird sie in deinem standardmäßig verwendeten Webbrowser geöffnet (siehe . Abb. 4.2). Verwende in der Smartphone-Version einfach den Knopf Preview (Vorschau) oder den Knopf Play (abspielen), siehe . Abb. 4.3. Einige weitere wichtige HTML-Elemente sind in . Tab. 4.2 beschrieben.

. Abb. 4.2 HTML-Dokument am PC

. Abb. 4.3 HTML-Dokument am Mobilgerät

Kapitel 4 · HTML

32

. Tab. 4.2 Wichtige HTML-Elemente

Definiert den Titel eines Dokuments, das im Browser angezeigt wird. Dieser darf ausschließlich Text enthalten.

,,,,,

Definiert Überschriften auf sechs verschiedenen Hierarchieebenen, wobei die oberste und die unterste Ebene ist.



Definiert einen Absatz.

, ,

Text wird fett, kursiv, unterstrichen dargestellt.

Definiert einen Hyperlink.

4

Elemente können neben einem Inhalt auch Attribute besitzen. Als Attribut wird ein charakteristisches Merkmal bezeichnet. Dieses wird innerhalb des Starttags angegeben. In unserem Beispiel ist die Sprache Deutsch als Attribut des HTML-Tags angegeben (lang=“de“). Auch Formatierungen wie Größe oder Farbe können als Attribut angegeben werden. Das kann wie folgt aussehen:

Dies ist ein blau dargestellter Text.



>

Eine gute Lern- und Nachschlageseite über HTML ist 7 https://wiki.selfhtml. org/wiki/HTML

Übung Modifiziere jetzt das HTML-Dokument so, dass die Webseite aussieht wie in . Abb. 4.4 bzw. . Abb. 4.5 dargestellt. Der Inhalt besteht dann aus einer Überschrift und zwei Absätzen. Denke daran: Wenn du das HTML-Dokument nochmals editieren möchtest, musst du es jetzt explizit im Texteditor öffnen. Das geht entweder mit einem Rechtsklick und „Öffnen mit“ oder durch Öffnen des Texteditors. Dann kannst du die Datei hineinziehen. Am besten lässt du das Dokument jetzt sowohl im Texteditor als auch im Webbrowser offen. Wenn du etwas geändert hast, speicherst du das HTML-Dokument ab und aktualisierst dann die Ansicht im Webbrowser (durch Drücken der Taste F5).

33 Kapitel 4 · HTML

4

. Abb. 4.4 HTML-Dokument mit Überschrift PC

. Abb. 4.5 HTML-Dokument mit Überschrift Mobilgerät

Du kannst dir ein HTML-Dokument auch als umgekehrten Baum vorstellen. Denn wie bei einem Baum verzweigen sich, von der Wurzel (dem Root-Element) html ausgehend, die weiteren HTML-Elemente. Das heißt, die Elemente head und body sind die untergeordneten Elemente (die Kindelemente) von html und so weiter. Die Baumdarstellung für unser erstes HTML-Dokument zeigt . Abb. 4.6.

. Abb. 4.6 Baumdarstellung des HTML-Dokuments

34

4

Kapitel 4 · HTML

Diese Art der Darstellung eines HTML-Dokuments wird als DOM-Baum bezeichnet. DOM (Document Object Model) ist die Schnittstelle für den Zugriff auf Tags, Attribute und Inhalte von HTML-Seiten. Übung Zeichne den DOM-Baum für das modifizierte HTML-Dokument aus der letzten Übung mit Überschrift und zwei Absätzen.

DOM ist ein sehr wichtiger Aspekt von HTML und, nebenbei bemerkt, auch von weiteren Dokumenttypen. Es erlaubt nämlich den strukturierten Zugriff auf HTML-Seiten und damit auch deren Erstellung, Interpretation oder Modifikation. Mit anderen Worten: Erst durch das DOM wird HTML für Programme verwendbar. Tatsächlich bieten Webbrowser (zumindest bei PC-Installationen) neben der HTML-Ansicht auch eine interaktive Darstellung des DOM. Übung Hast du die HTML-Seite noch im Browser geöffnet? Drücke jetzt F12 (oder STRG + SHIFT + I), um in den Entwicklermodus zu gelangen. Je nach Browser und Einstellungen kann die Ansicht variieren. Hier ist das HTML-Dokument wiederum im DOM-Baum mit aufklappbaren Knoten dargestellt (vergleiche . Abb. 4.7). Sieh dir doch einmal den DOM-Baum von anderen Webseiten an. Aber nicht erschrecken, er kann sehr groß und unübersichtlich werden. So, wie du den Entwicklermodus geöffnet hast, kannst du ihn auch wieder verlassen, also mittels F12 (oder STRG + SHIFT + I).

Wie du dir vielleicht schon denken kannst, ist das DOM nicht nur für die Darstellung von HTML-Seiten von zentraler Bedeutung, sondern auch für deren Erstellung. Die Erstellung und Bearbeitung wird Webentwicklung genannt. Mehr dazu lernst du in 7 Kap. 7 JavaScript.

. Abb. 4.7 DOM-Baum im Webbrowser

35 Kapitel 4 · HTML

4

Ein weiteres wichtiges Konzept bei der Entwicklung von Webseiten ist die Trennung von Inhalt und Gestaltung. Es wird allgemein empfohlen, sich bei der Erstellung von HTML-Dokumenten auf Inhalte und deren Gliederung zu beschränken. Für die Gestaltung sind Cascading Style Sheets (CSS) zuständig. Das heißt, alle Anweisungen für die Darstellung, wie zum Beispiel Layout, Farben und Schriftarten, sind in separaten CSS-Dateien enthalten. Diese CSS-Dateien können wiederum in HTML-Dateien verlinkt werden. Ein minimales Beispiel für eine CSS-Datei sieht wie folgt aus:

h1 { color: red; }

Für einfache Webseiten kann es sinnvoll sein, die Gestaltung direkt im HTMLCode anzugeben, so wie wir es oben getan haben. In den meisten Fällen ist es aber übersichtlicher, die vorgeschlagene Auslagerung in CSS vorzunehmen. Übung Erstelle eine neue Datei an der gleichen Stelle, an der auch die html-Datei liegt. Benenne sie mit styles.css. Füge den obigen Inhalt ein. Öffne die HTML-Datei aus der vorherigen Übung. Entferne das Style-Attribut aus dem h1-Element. Verlinke stattdessen zu der eben erstellten externen CSS-Datei. Füge dazu in das head-Element die folgende Zeile ein . Wenn du das HTML-Dokument im Browser aktualisierst, ändert sich die Farbe der Überschrift von Blau zu Rot. Verändere mithilfe von Anweisungen in der CSS-Datei die Schriftart, die Schriftgröße sowie die Einrückung und Hintergrundfarbe. Die HTML-Datei muss dazu nicht verändert werden. Die genauen Befehle findest du auf  wiki.selfhtml.org oder über eine Google-Suche. Jetzt sieht die Webseite aus wie in . Abb. 4.8.

Die Separation of Concerns (Trennung von Belangen) ist ein wichtiges Konzept in der Informatik. Sie besagt, dass in einem Computerprogramm voneinander abgegrenzte Teile eine eigenständige Verantwortlichkeit übernehmen. Sind in der formatierten Webseite nun Inhalt und Gestaltung komplett voneinander getrennt? Nicht ganz. Die kursive Schrift ist immer noch im HTML-Dokument definiert. Auch diese Angabe könnte man in das CSS verlagern. Dazu ist die Definition von zwei unterschiedlich gestalteten Absätzen notwendig. Jeder Absatz im HTML muss dann einer Gestaltung im CSS zugeordnet werden. Auch das ist selbstverständlich möglich, beispielsweise über einen Identifikator, kurz ID.

36

Kapitel 4 · HTML

4

. Abb. 4.8 Formatiertes HTML-Dokument

Übung Wenn du noch Zeit und Lust hast, schließe die Trennung von Inhalt und Gestaltung ab.

? Wofür steht HTML? Was ist HTML? Wie erstelle ich einen Absatz innerhalb einer HTML-Seite? Wofür wird das DOM verwendet? Welche Vorteile bietet die Verwendung eines CSS?

37

Code

© Springer Fachmedien Wiesbaden GmbH, ein Teil von Springer Nature 2024 T. Eichstädt und S. Spieker, 52 Stunden Informatik, https://doi.org/10.1007/978-3-658-41838-0_5

5

38

5

Kapitel 5 · Code

In der Informatik spricht man oft von Code. Gemeint ist damit ein maschinenlesbarer Text, meistens ein Quelltext, also ein Code, der in einer Programmiersprache formuliert ist. Code ist so wichtig, weil dadurch Befehle und andere Informationen an eine Maschine übermittelt werden können. Auch Dateiformate basieren auf Code. Ein einfaches Dateiformat ist CSV. CSV beschreibt den Aufbau einer Textdatei zur Speicherung oder zum Austausch einfacher strukturierter Daten. Sind Daten erst einmal in maschinenlesbarer Form erfasst, können sie in andere Formate konvertiert werden. Jede Programmiersprache und jedes Dateiformat folgen einem Regelwerk, der sogenannten Syntax. Um das Schreiben von Code und die Einhaltung der Regeln einfacher zu machen, wird in der Regel ein Quelltexteditor verwendet. Die Syntax einer maschinenlesbaren Sprache wird durch eine formale Grammatik beschrieben. Bisher haben wir viel mit Informationen in Form von Texten gearbeitet. Wir haben gelernt, wie diese im Internet bereitgestellt und gefunden werden können. Wir haben selbst Text in HTML-Dokumenten verfasst, allerdings nicht von Text gesprochen, sondern von „HTML-Code“. Es soll erklärt werden, was Code eigentlich ist und weshalb er eine so wichtige Bedeutung in der Informatik hat. Ein Code vermittelt eine Botschaft mittels eines vereinbarten Satzes von Symbolen. Aber worin unterscheidet er sich von einem „normalen“ Text? Wenn wir von Text sprechen, ist in der Regel ein Text gemeint, der für Menschen geschrieben wurde. Deshalb nennt man ihn auch einen menschenlesbaren Text. Ein Code kann ebenfalls an andere Menschen adressiert sein, beispielsweise ein Morsecode. Wenn wir allerdings in der Informatik von Code sprechen, meinen wir in der Regel einen Code, der von einer Maschine/einem Computer gelesen und verarbeitet werden soll. In diesem Fall spricht man von maschinenlesbarem Text. Es gibt auch Text, der sowohl menschen- als auch maschinenlesbar ist. Wie etwa der HTML-Code, den wir bereits in der vorherigen Stunde behandelt haben. Er kann von Menschen geschrieben und gelesen werden. Er wird aber auch von Maschinen gelesen und weiterverarbeitet. Der in einer Programmiersprache formulierte Code (siehe z. B. 7 Kap. 7 JavaScript) wird als Quelltext (engl. source code) oder Quellcode bezeichnet. Umgangssprachlich wird das Wort Code oft verwendet, wenn Quelltext gemeint ist. Tatsächlich gibt es auch noch andere wichtige Ausprägungen von Code. So wird der Quelltext in der Regel noch in nicht menschenlesbare Codevarianten übersetzt, bevor er angezeigt beziehungsweise ausgeführt wird. Durch Code können Befehle und andere Informationen an eine Maschine übermittelt werden. Er spielt daher in der Informatik eine besondere Rolle. Große Teile dieses und vieler anderer Bücher beschäftigen sich mit der Erstellung, der Verwaltung und der Verarbeitung von Quelltext. Wirtschaftliche Aspekte, etwa zur Lizenzierung von Code, aber auch rechtliche Fragestellungen wie das Urheberrecht haben heute eine große Bedeutung. 7 Kap. 32 Softwarelizenzierung und 7 Kap. 31 Open Source behandeln diese Thematik ausführlicher.

39 Kapitel 5 · Code

5

Die hohe Bedeutung von Code wird noch deutlicher, wenn wir uns mit den Programmiersprachen beschäftigen. Dabei haben wir die einfachen Grundlagen einer Programmiersprache mit Wikitext und HTML bereits kennengelernt. Wir sehen, Code verwendet auch Daten wie menschenlesbaren Text, um Text maschinenlesbar zu formatieren. Dateiformaten liegt ebenfalls Code zugrunde, wie beispielsweise den bereits behandelten HTML- oder CSS-Dateien aus der letzten Stunde. Ein Dateiformat ist eine standardisierte Art, wie Informationen in einer Datei gespeichert werden. Übung Überlege, wie du eine Tabelle maschinenlesbar darstellen kannst. Mache einen Vorschlag zur Erfassung des Stundenplans aus . Abb. 5.1 (wenn du einen eigenen Stundenplan hast, kannst du auch diesen verwenden). Tippe deine Lösung in einem Texteditor ab.

Eine mögliche Lösung ist die zeilenweise Darstellung als Text. Dabei wird jede Tabellenzeile als neue Zeile angegeben und jede Tabellenspalte mit einem Komma getrennt. Das Ergebnis ist dann wie folgt. Stunde,Montag,Dienstag,Mittwoch,Donnerstag,Freitag 1.+2.,Sport,Englisch,Physik,Englisch,Erdkunde 3.+4.,Mathe,Bio/Chemie,Ethik/Reli,Geschichte,Kunst 5.+6.,Deutsch,-,Deutsch,Mathe,IT

Das Dateiformat CSV (kurz für comma-separated values) beschreibt den Aufbau einer Textdatei zur Speicherung oder zum Austausch einfacher strukturierter Daten. Dabei werden Zeilenumbrüche zum Trennen von Datensätzen und ein Trennzeichen (oftmals ein Komma) zum Trennen von Datenfeldern verwendet. Was meinst du: Welche Vorteile bietet das Erfassen von Daten in einem maschinenlesbaren Dateiformat? Es lohnt sich, einen Moment darüber nachzudenken. Vertiefen werden wir diese Überlegungen in 7 Kap. 35 Das relationale Modell. Wie wir eben gesehen haben, müssen Dateiformate nicht kompliziert sein. CSV ist nicht zuletzt wegen seiner Einfachheit ein beliebtes und weit verbreitetes Format.

. Abb. 5.1 Handschriftlicher Stundenplan

40

Kapitel 5 · Code

5

. Abb. 5.2 Textkonvertierungsassistent in Excel

Eine gute Übung ist an dieser Stelle das Speichern in eine CSV-Datei (etwa „stundenplan.csv“). Interessant kann es auch sein, zu prüfen, mit welchen Programmen sich diese Datei öffnen lässt. Heiße Kandidaten dafür sind Office-Programme wie zum Beispiel Microsoft Excel (vergleiche . Abb. 5.2) oder Google Tabellen. Dort wird der Text in Tabellenform dargestellt (vergleiche . Abb. 5.3). Von einem solchen Programm aus lässt sich die Datei wiederum in andere Formate exportieren. Vielleicht ist die Darstellung des Stundenplans aber auf einer Webseite gewünscht. Falls noch niemand auf die Idee gekommen ist: Wir hätten den Stundenplan auch von Anfang an als HTML-Code erfassen können. Nun, da wir den Stundenplan bereits als CSV-Datei erfasst haben, ist eine Konvertierung aber einfacher.

. Abb. 5.3 Stundenplan in Microsoft Excel

41 Kapitel 5 · Code

5

Übung Konvertiere die Datei stundenplan.csv nach HTML.

>

Beispiel für eine Webseite zum Konvertieren von CSV-Dateien in HTML-Dateien 7 https://convertio.co/de/csv-html/ Beispiel für eine Webseite zum Konvertieren von CSV in HTML-Code 7 https:// www.beautifyconverter.com/csv-to-html-converter.php

Sind die Daten erst einmal maschinenlesbar erfasst, stehen viele Möglichkeiten der Weiterverarbeitung offen. Wie euch vielleicht aufgefallen ist, gibt es noch viele weitere Dateiformate. Jedes einzelne hat seine besonderen Eigenschaften und Vorteile. Um ein interessantes Format zu nennen: PDF (portables Dokumentenformat – engl. Portable Document Format). Dies ist ein weit verbreitetes Dokumentenformat, das für den Ausdruck optimiert und gegen Veränderungen geschützt wurde. Jede Programmiersprache und jedes Dateiformat ist nach einem speziellen Regelsystem aufgebaut. Ein solches System an Regeln wird auch Syntax genannt. Bei der Erstellung von Quelltext nach einer bestimmten Syntax kann die Wahl eines geeigneten Texteditors viele Vorteile bieten. Darunter fallen zum Beispiel Suchfunktionen, Syntaxhervorhebungen und automatische Codevervollständigung. Lasst uns nun den Stundenplan in ein HTML-Dokument einfügen. Dazu wollen wir nicht Notepad verwenden, wie in 7 Kap. 4 HTML geschehen, sondern ein professionelles Programm für das „Coden“ (die Erstellung von Quelltext) installieren. >

Freier Quelltexteditor von Microsoft 7 https://code.visualstudio.com/ Erweiterbarer Open-Source-Texteditor 7 https://atom.io/

Übung Installiere einen geeigneten HTML-Editor oder verwende eine entsprechende App. Füge den HTML-Code für den Stundenplan in ein neues HTML-Dokument ein (vergleiche . Abb. 5.4). Speichere das Dokument und schau dir den Stundenplan im Browser an (vergleiche . Abb. 5.5). Wenn du möchtest, nimm noch optische Veränderungen vor, beispielsweise das Einfügen von Trennlinien durch den entsprechenden Style im Table-Tag.

>

Eine mögliche Lösung findest du wiederum bei GitHub.  https://github.com/StefanSpieker/52Stunden/blob/master/code/stundenplan. html

Es ist sehr wichtig zu verstehen, warum Dateiformate und Programmiersprachen in der Informatik eine so große Bedeutung haben. Beide sind Code, den Maschinen

42

Kapitel 5 · Code

5

. Abb. 5.4 HTML-Dokument in Visual Studio Code

. Abb. 5.5 Stundenplan im Webbrowser

verstehen. Das funktioniert aber nur, wenn sie konsequent bestimmten Regeln folgen. Ähnlich unserer menschlichen Sprache, die ebenfalls Regeln unterliegt, ist für die Kommunikation mit Maschinen die Einhaltung dieser Regeln verpflichtend. Maschinen sind „dumm“ – sie verstehen einen Code nur dann, wenn er zuvor in seiner Form eindeutig beschrieben wurde. Mit dem Verständnis, was Code ist und wie er eingesetzt wird, haben wir eine wichtige Lektion gelernt. Außerdem wissen wir nun, wie wir Daten maschinenlesbar erfassen können. Wie wäre es damit, zu erfassen, wie wir die 52 Lektionen dieses Buches erleben?

43 Kapitel 5 · Code

5

Übung Erzeuge eine neue CSV-Datei. Trage darin für jede Informatikstunde das Datum, die Dauer der Bearbeitung und die Bewertung für die Stunde ein. Wenn du mit mehreren Personen an dem Buch arbeitest, erfasse sie einzeln mit der jeweiligen Bewertung. Vielleicht fallen dir noch weitere interessante Einträge ein, die du zusätzlich erfassen möchtest.

Wir werden jetzt noch tiefer in die Funktionsweise von Code und seiner Syntax eintauchen. Wenn das Verständnis des folgenden theoretischen Teils schwerfällt, ist das überhaupt nicht schlimm. Man kann ihn auch problemlos auslassen. Wer allerdings bis hierhin bereits Schwierigkeiten hatte, sollte sich unbedingt die Zeit nehmen, die bisher gelernten Begriffe und Übungen zu wiederholen. Wir werden später darauf zurückkommen. Eine formale Sprache besteht aus einer Vielzahl von Symbolen, die nach einer Syntax aufgebaut sind. Die Definition der Syntax kann durch eine formale Grammatik erfolgen. Hier die formale Grammatik am Beispiel des oben beschriebenen CSV-Dateiformats: Datei : Zeile (NEWLINE Zeile)* EOF ; Zeile : Eintrag (COMMA Eintrag)* ; Eintrag : (CHAR)* ;

Die Bedeutungen der Sprachelemente der Grammatik sind in . Tab. 5.1 erklärt.

. Tab. 5.1 Bedeutungen der Grammatik-Sprachelemente :;

Der Doppelpunkt bezeichnet eine Definition, die mit dem Semikolon abgeschlossen wird.

NEWLINE

Zeilenumbruch

EOF

EOF (End of File) ist ein spezielles Zeichen, das das Ende einer Datei oder ähnlichen Datenquelle signalisiert.

COMMA

Kommazeichen „,“

CHAR

Beliebiges Zeichen, also ein Buchstabe oder eine Zahl oder ein Sonderzeichen („!“, „?“, „/“ usw.)

(x)*

Das Element x kann beliebig oft auftreten.

44

5

Kapitel 5 · Code

Insgesamt liest sich die Grammatik folgendermaßen: Die beschriebene Datei besteht aus einer oder beliebig vielen Zeilen, die durch Zeilenumbrüche voneinander getrennt sind, so lange, bis die Datei endet. Jede Zeile kann einen oder beliebig viele Einträge enthalten, die durch Kommata voneinander getrennt sind. Jeder Eintrag besteht aus einer beliebigen Anzahl von Zeichen. Was wir hier sehen, ist ein Code (die formale Grammatik), der beschreibt, wie eine Maschine einen anderen Code, in diesem Fall das Dateiformat CSV, interpretieren kann. Das mag vielleicht etwas umständlich erscheinen. Tatsächlich sind Grammatiken aber notwendig, damit der Computer einen Text interpretieren kann. CSV ist eines der einfachsten Dateiformate, und selbst dieses haben wir hier grob vereinfacht. Beispielsweise heißt das Format weiterhin CSV, selbst wenn anstelle der Kommata andere Trennzeichen verwendet werden. Eine erweiterte Definition von CSV ist wie folgt: Datei : Zeile (NEWLINE Zeile)* EOF ; Zeile : Eintrag ((COMMA | SEMICOLON) Eintrag)* ; Eintrag : (CHAR)* ;

Dabei bezeichnet das Pipe-Zeichen „|“ eine Oder-Verknüpfung. (COMMA | SEMICOLON) bedeutet, dass an dieser Stelle entweder ein Komma „,“ oder ein Semikolon „;“ steht. Übung Korrigiere die Grammatik so, dass Komma oder Semikolon als Trennzeichen erlaubt sind. Es darf allerdings nicht gemischt werden. Das heißt, es ist nur ein Trennzeichen für die gesamte Datei erlaubt.

Es ist daher klar ersichtlich, weshalb bei der Erstellung von Quelltext so genau auf korrekte Zeichensetzung geachtet werden muss. Denn sobald eine Regel nicht eingehalten wird, ist oft das komplette Dokument nicht mehr funktionsfähig. Formale Grammatiken können noch sehr viel komplexer werden als das, was wir bisher gesehen haben. Das gilt insbesondere für die Programmiersprache HTML. Jede HTML-Version ist unterschiedlich und besitzt ihre eigene Grammatik. Doch damit nicht genug, denn es gibt noch viele weitere Computersprachen. Bald werden wir die Sprache JavaScript kennenlernen und auch dieser liegt natürlich eine formale Grammatik zugrunde. ? Was ist Quelltext? Wofür steht CSV? Welche Vorteile bietet das Dateiformat CSV? Was ist eine Syntax? Was bedeutet EOF?

45

Webbrowser

© Springer Fachmedien Wiesbaden GmbH, ein Teil von Springer Nature 2024 T. Eichstädt und S. Spieker, 52 Stunden Informatik, https://doi.org/10.1007/978-3-658-41838-0_6

6

46

6

Kapitel 6 · Webbrowser

Webbrowser werden dazu verwendet, um HTML-Seiten anzuzeigen. Darüber hinaus erfüllen Webbrowser noch viele weitere Aufgaben. Eine wichtige Funktion ist der Download von Daten aus dem Internet. Webbrowser beinhalten auch Tools, die für Webentwickler relevante Informationen zum Datenverkehr bereitstellen. Auerdem verwalten Webbrowser mit dem Cache einen Zwischenspeicher, der verhindert, dass dieselben Daten immer wieder heruntergeladen werden müssen. Liegen dem Webbrowser die Daten einer Webseite vor, erzeugt er einen Darstellungsbaum. Darin wird die Struktur eines HTML-Dokuments mit den Informationen zur grafischen Darstellung kombiniert. Neben den angezeigten Daten speichern Webbrowser auch Nutzerdaten. Solche Cookies helfen dabei, dass du dich auf einer Webseite nur einmal anmelden musst. Viele Applikationen setzen heute alleine auf Browsertechnologien und lassen sich so geräteunabhängig verwenden. Wie selbstverständlich haben wir in den bisherigen Stunden Webbrowser verwendet. Bevor wir uns mit Webentwicklung und anderen technisch komplexen Anwendungen im Internet beschäftigen, wollen wir zunächst besser verstehen, was ein Webbrowser ist und wie er funktioniert. Beginnen wir zunächst damit, uns zu überlegen, welche Aufgaben ein Webbrowser erfüllt. Übung Nenne alle Aufgaben, die du kennst, die ein Webbrowser erfüllt. Du kannst dich dabei an den vorangegangenen Stunden orientieren. Wann verwendest du einen Webbrowser und welche Funktion übernimmt dieser dabei?

Hier eine Auflistung möglicher Antworten: 5 Eingabe einer Internetadresse in der Adressleiste 5 Abrufen von Informationen aus dem Internet 5 Anzeige von Webseiten 5 Anzeige von audiovisuellen Medien wie Bildern, Musik, Videos usw. 5 Speichern von Favoriten Die Liste ist bei Weitem nicht vollständig. Im Laufe dieser Stunde werden wir deshalb einige weitere Funktionen kennenlernen. Der Name Webbrowser oder auch einfach kurz Browser kommt aus dem Englischen (to browse – stöbern, schmökern, umsehen). Es handelt sich dabei um Computerprogramme, die zur Darstellung von Inhalten im Internet und im Besonderen von Webseiten verwendet werden. Das Durchstöbern des Internets funktioniert dabei vor allem mittels Hyperlinks, wie sie auch schon innerhalb 7 Kap. 4 HTML verwendet wurden. Browser können nicht nur HTML-Seiten anzeigen, sondern beherrschen verschiedenste Bild- und Videoformate, aber auch andere Dokumentenformate wie z. B. PDF. Heutzutage funktionieren auch komplexere Anwendungen innerhalb eines Browsers. Diese werden auch oft Webanwendungen genannt und zeichnen sich durch einen hohen dynamischen Anteil aus. Die

47 Kapitel 6 · Webbrowser

6

HTML- und CSS-Dateien werden als statische Anteile bezeichnet. Wohingegen der JavaScript-Code dynamisch funktioniert, weil er abhängig von Logik oder Ereignissen (z. B. Mausklicks oder Tastatureingaben) Elemente beeinflussen kann. Die nachfolgende 7 Kap. 7 JavaScript wird diesen Teil genauer erläutern. Übung Jetzt haben wir schon viel über Browser gehört und sie in den vorherigen Stunden auch schon verwendet. Welche Browser kennst du?

. Tab. 6.1 listet gängige Browser und ihre jeweilige Verbreitung auf. Die Marktdominanz von Google Chrome ist sehr deutlich abzulesen. Für dieses Buch eignen sich eigentlich alle genannten Browser, jedoch bietet Google Chrome die besten Hilfsmöglichkeiten bei der Webseitenentwicklung. Firefox und Edge sind aber ebenfalls gut geeignet. Seit 2021 nutzt der Edge ebenfalls die Chromium Engine, wodurch die Unterschiede zwischen Chrome und Edge praktisch nur noch die Oberfläche betreffen. Auf Apple-Geräten gibt es dagegen nur den Safari-Browser und selbst ein installierter Google Chrome verwendet zur Anzeige Safari. Für Webanwendungen muss der Browser HTML anzeigen und darauf das JavaScript anwenden. Anschließend noch mittels CSS die vorberechneten Objekte modifizieren, hierbei vor allem die Darstellung (z. B. Layout, Farben und Schriften). Wie so etwas passiert, ist zwar definiert, jedoch unterscheiden sich die einzelnen Browser zum Teil deutlich in der Funktionsumsetzung. Dies führt unter anderem zu unterschiedlicher Darstellung und gelegentlich auch zu Fehlern in bestimmten Browsern. . Tab. 6.1 Verbreitung von Browsern (netmarketshare 2022) Browser

Desktop/Laptop (Platz, Marktanteil)

Mobile (Platz, Marktanteil)

Google Chrome

1 (74 %)

1 (63 %)

Safari

3 (3 %)

2 (31 %)

Samsung Browser

13 (< 0,1 %)

3 (5 %)

Opera

6 (1 %)

4 (1 %)

Edge

2 (14 %)

13 (

Um mehr über JavaScript zu lernen, können wir auf die Webseite SelfHTML zurückgreifen 7 https://wiki.selfhtml.org/wiki/JavaScript.

Ein weiteres einfaches Beispiel ist das Schreiben oder Loggen in die Konsole des Webbrowsers:

console.log(“Hallo Konsole“);

Übung Logge eine Nachricht in die Konsole deines Browsers und sieh dir das Ergebnis an. Falls du nicht weißt, wo du die Konsole findest, wirf einen Blick auf die Tools für Webentwickler in 7 Kap. 6 Webbrowser.

Beachte, dass dem Aufruf von log() diesmal noch das Objekt console vorangestellt werden muss. Das JavaScript-Objekt ist eine Sammlung von Daten und Funktionalitäten. In diesem Fall repräsentiert das Objekt console die Konsole des Browsers. Das Objekt console besitzt die Funktionalität zu loggen. Eine Funktion, die einem Objekt zugeordnet ist, wird Methode genannt. Das Objekt console besitzt also die Methode log(). In 7 Kap. 4 HTML haben wir gelernt, wie das DOM und seine Elemente im Browser dargestellt werden. Es gibt ein JavaScript-Objekt mit dem Namen document. Das document-Objekt repräsentiert das im Browser geladene HTMLDokument. Über dieses kann nun auf das DOM und seine Elemente zugegriffen werden. Das funktioniert über eine ID:

document.getElementById(“BeispielId“);

Mit diesem Befehl können wir das HTML-Element mit der ID „BeispielId“ aus dem DOM abrufen. Das funktioniert natürlich nur, wenn ein entsprechendes Element auch innerhalb des HTML-Dokumentes vorhanden ist. Zum Beispiel:

Beispieltext



60

7

Kapitel 7 · JavaScript

Das HTML-Element, durch das wir auf getElementById() zugreifen können, ist ebenfalls ein Objekt und besitzt eigene Daten und Methoden. Ein Beispiel dafür ist die Variable innerHTML, über die auf den Inhalt des Elements zugegriffen werden kann. In unserem Beispiel ist die Variable mit dem Inhalt „Beispieltext“ belegt. Wir können die Variable nun im JS-Code auslesen oder auch überschreiben. So lässt sich das HTML-Dokument dynamisch verändern. Es gibt viele Gründe, weshalb dynamisches Verhalten auf einer Webseite erforderlich ist. Denken wir nur an die Anzeige von Google-Suchergebnissen oder an die Aktualisierung einer Wikipediaseite. Ein konkretes Beispiel ist die Anzeige eines Wochentags. Erinnern wir uns kurz zurück an das Beispiel des Stundenplans aus 7 Kap. 5 Code. Wir haben dort ein HTML-Dokument verfasst, das einen Stundenplan in Form einer Tabelle enthält. Siehe auch: 7 https://github.com/StefanSpieker/52Stunden/ blob/master/code/stundenplan.html Eventuell möchten wir auf einer Webseite zusammen mit dem Stundenplan auch noch den heutigen Wochentag anzeigen. Da der Inhalt der Webseite je nach Wochentag variiert, handelt es sich um ein dynamisches Verhalten. Dieses Verhalten können wir mithilfe von JavaScript abbilden. Hier der dazu nötige JS-Code:

Übung Sieh dir den JS-Code genau an. Versuche anhand der Kommentare zu verstehen, was in jeder einzelnen Zeile passiert. Sieh dir die letzte Zeile im Script genau an. Kannst du dir vorstellen, was in dem HTML-Dokument verändert werden muss, damit dieses Skript ausgeführt werden kann?

61 Kapitel 7 · JavaScript

7

Wenn du den JS-Code noch nicht verstehst, ist das nicht schlimm. Wir werden im späteren Verlauf des Buches noch mehr über Programmierung und insbesondere auch über Datentypen sprechen (siehe 7 Kap. 19 Binärsystem & Datentypen). Dann sollte es einfacher sein, den Code zu verstehen. Jetzt ist für uns aber nur wichtig, dass wir den aktuellen Wochentag ermitteln. Wir setzen deshalb nun die Variable wochentag ein. In der letzten Zeile wird der Tag dann in ein HTML-Element mit der ID „Wochentag“ geschrieben. Nun können wir das Skript in eine beliebige Webseite einfügen, beispielsweise nach dem body-Endtag. Damit der Wochentag dann tatsächlich angezeigt wird, benötigen wir nur noch ein HTML-Element mit der ID „Wochentag“ innerhalb des bodyElements. Übung Erweitere die Stundenplanwebseite, sodass der aktuelle Wochentag angezeigt wird. Solltest du Schwierigkeiten bei der Darstellung der HTML-Seite oder der Ausführung des JS-Codes haben, erinnere dich daran, was du in 7 Kap. 4 HTML und 7 Kap. 6 Webbrowser gelernt hast. Wenn du nicht auf Anhieb weißt, was zu tun ist, versuche es trotzdem. Mit ein bisschen Übung wird es viel einfacher. Eine mögliche Lösung findest du hier: 7 https://github.com/StefanSpieker/52Stunden/blob/ master/javascript/Stundenplan_mit_Wochentag.html

Wir haben nun gelernt, was JavaScript ist, und ein erstes sinnvolles Beispiel erzeugt. Wen das Fieber einmal gepackt hat, der wird womöglich noch lange und viel experimentieren. >

Mittlerweile gibt es auch viele gute Apps zum Lernen von Programmiersprachen für Mobilgeräte, beispielsweise „Learn JavaScript“ 7 https://play.google. com/store/apps/details?id=com.sololearn.javascript&hl=de (Android) beziehungsweise 7 https://apps.apple.com/de/app/learn-javascript/id952738987 (Apple).

Ein letzter Hinweis: Der JS-Code kann, wie hier erläutert, im Texteditor erstellt und in einem Browser ausgeführt werden. Alternativ können HTML, CSS und JavaScript auch direkt im Webbrowser editiert, angezeigt und mit anderen geteilt werden. >

Browserbasierte Entwicklungsumgebung JSFiddle (vergleiche . Abb. 7.2) 7 https://jsfiddle.net/

62

Kapitel 7 · JavaScript

7

. Abb. 7.2 JSFiddle

? Was ist der hauptsächliche Zweck von JavaScript? Was ist der Unterschied zwischen einer Skriptsprache und einer Compilersprache? Was sind häufige Bestandteile des Quellcodes? Wann spricht man von einer Methode anstatt von einer Funktion? Wie verändert JS-Code eine HTML-Seite?

63

Netzwerke und Protokolle

© Springer Fachmedien Wiesbaden GmbH, ein Teil von Springer Nature 2024 T. Eichstädt und S. Spieker, 52 Stunden Informatik, https://doi.org/10.1007/978-3-658-41838-0_8

8

64

8

Kapitel 8 · Netzwerke und Protokolle

Zum Austausch von Informationen benötigen Computer ein Netzwerk. Das bekannteste Computernetzwerk ist das Internet. Auch lokale Netzwerke spielen eine wichtige Rolle, um Computer und andere Geräte zu verbinden. Geräte innerhalb eines Netzwerks können mithilfe von Protokollen kommunizieren. Die Netzwerkarchitektur hilft zu verstehen, wie der Informationsaustausch zustande kommt. Ein Router stellt die Verbindung zwischen den Endgeräten und dem Internet her. Das DNS wandelt Domainnamen in anzusprechende Adressen um. Adressen werden durch das Internet Protocol beschrieben. Mithilfe von Konsolenbefehlen lassen sich die IP-Konfiguration und die Erreichbarkeit von Adressen überprüfen. Das Gateway vermittelt zwischen dem lokalen Netzwerk und dem Internet, mit jeweils unterschiedlichen Adressräumen. Es macht auerdem einen Unterschied, ob eine IP-Adresse dynamisch oder statisch vergeben wurde. In den ersten Stunden haben wir ein Verständnis davon gewonnen, was das Internet ist und wie dort Informationen gefunden werden. Wir haben uns mit HTML und JavaScript beschäftigt und sogar selbst Webseiten aufgebaut. Doch wie funktioniert das Internet eigentlich? Wie kommen die Daten aus dem Internet zu uns und wie senden wir Daten an das Internet? Kurz gefragt: Wie tauschen zwei Geräte Informationen miteinander aus? Zum Austausch braucht es zunächst ein Netzwerk. Ein Netzwerk oder Computernetzwerk ist der Zusammenschluss mehrerer elektronischer Systeme. Damit sind alle möglichen Arten von Computern gemeint. Dazu zählen auch Smartphones oder Drucker, aber auch kleinere Systeme wie beispielsweise intelligente Lautsprecher. Übung Fallen dir weitere Beispiele für Netzwerke ein? Kennst du den Unterschied zwischen einem LAN und einem WLAN?

Das bekannteste Netzwerk ist das Internet selbst. Aber es gibt auch viele kleinere, sogenannte lokale Netzwerke. Beispiele dafür sind LAN (Local Area Network) oder WLAN (Wireless Local Area Network). Auch eine Bluetooth-Verbindung ist eine Art von Netzwerk, aber auch Mobilfunknetze zählen dazu. Es gibt aber noch zahlreiche weniger bekannte Beispiele. Bei einem LAN handelt es sich um ein lokales Netzwerk, das mittels Netzwerkkabeln alle Teilnehmer (Computer, Drucker etc., aber keine Smartphones) verbindet. In einem kleinen Netzwerk gibt es meist eine sternförmige Verkabelung vom Router ausgehend. Jedes angeschlossene Gerät hat dabei die volle Bandbreite zur Verfügung. Bei WLAN reden alle Geräte ebenfalls mit dem Router, nur kabellos. Deshalb kann auch das Smartphone mit den anderen Geräten kommunizieren. Im WLAN teilen sich alle Geräte jedoch die Gesamtgeschwindigkeit, sodass die Bandbreite der anderen Teilnehmer abnimmt, wenn ein Teilnehmer viele Daten überträgt. Befinden sich zwei Geräte, welcher Art auch immer, im selben Netzwerk, können sie miteinander kommunizieren. Dazu benötigen sie ein Netzwerkprotokoll. Ein Netzwerkprotokoll, meistens abgekürzt als Protokoll, ist eine Vereinbarung

65 Kapitel 8 · Netzwerke und Protokolle

8

von Regeln und Formaten, die das Kommunikationsverhalten von zwei Geräten bestimmt. Ein Protokoll bezeichnet also eine Syntax, die speziell dem Austausch von Informationen dient. In der Regel sind bei der Übertragung von Informationen eine ganze Reihe verschiedener Protokolle beteiligt. Aber der Reihe nach. Sehen wir uns doch einmal ein einfaches Beispiel an: Wir möchten die Webseite 7 www.youtube.de aufrufen. Wie funktioniert das? Dazu müssen wir zunächst die Netzwerkarchitektur verdeutlichen. Die Architektur bezeichnet den Aufbau eines Systems. Ihr kennt bestimmt den Beruf des Architekten, der für die Beratung, die Planung und die Überwachung eines Bauvorhabens zuständig ist. So ähnlich ist es auch in der Informatik. Für die verschiedenen Tätigkeiten ist es deshalb wichtig, die Architektur eines IT-Systems zu verstehen. Eine einfache Architektur für den Aufruf der Webseite ist in . Abb. 8.1 dargestellt. Werden Informationen aus dem Internet abgerufen, wird fast immer ein sogenanntes Client-Server-Modell genutzt. Dieses sieht wie folgt aus: Ein Server stellt einen Dienst bereit. PCs und Smartphones werden als Clients (Endgeräte) bezeichnet. Das bedeutet nichts anderes, als dass es sich um ein Endgerät handelt, das die zur Verfügung gestellten Dienste, in diesem Falle YouTube, nutzt. Genau genommen handelt es sich um Webclients, die über Protokolle mit einem Webserver kommunizieren. Zum besseren Verständnis: Angenommen ein Smartphone und ein Laptop sind über ein LAN oder WLAN mit einen Router verbunden. Der Router ist ein Gerät, das Datenpakete zwischen mehreren Netzwerken transportieren kann. Er stellt die Verbindung zwischen unseren Geräten und dem Internet her. Das heißt, wir kontaktieren den von uns genutzten Provider (Internetdienstanbieter), beispielsweise Telekom, mit der Anfrage, uns zu der Adresse „ 7 www.youtube.de“ zu verbinden. Um diese Adresse zu kontaktieren, ist das Domain Name System, kurz DNS, von elementarer Bedeutung. Denn „ 7 www.youtube.de“ ist eigentlich gar keine Adresse, sondern ein Name, ein Domainname oder auch ein DNS-Name, um genau zu sein. Erst das DNS wandelt den Namen in eine anzusprechende Adresse um. Dieser Dienst kann also als eine Art Auskunft für das Erreichen von Adressen in IP-basierten Netzwerken verstanden werden.

. Abb. 8.1 Einfaches Netzwerk mit Internetzugriff

66

Kapitel 8 · Netzwerke und Protokolle

Aber was ist denn ein IP-basiertes Netzwerk? Das Internet Protocol, kurz IP, ist das erste Netzwerkprotokoll, das wir uns hier genauer ansehen wollen. Es bildet die Grundlage für die Kommunikation im Internet. Jeder Teilnehmer in einem Netzwerk erhält eine eindeutige IP-Adresse. Lasst uns an dieser Stelle unsere eigene IP-Adresse herausfinden.

8

Übung Öffne die Webseite 7 https://www.wieistmeineip.de/ und finde deine IP-Adresse heraus. Wenn möglich, versuche es auch auf verschiedenen Geräten.

In . Abb. 8.2 und 8.3 sind Beispiele von einem PC und einem Smartphone dargestellt, wie die eigenen IP-Adressen aussehen können.

. Abb. 8.2 Screenshot von wieistmeineip.de auf einem PC

. Abb. 8.3 Screenshot von wieistmeineip.de auf einem Smartphone

67 Kapitel 8 · Netzwerke und Protokolle

8

Übung Finde nun die lokale IP-Adresse deiner Geräte heraus: Auf einem Android-Gerät findet sie sich unter Einstellungen → Telefoninfo → Status (vergleiche . Abb. 8.4). Auf einem Windows-PC benötigst du den Befehl „ipconfig“ in der Eingabeaufforderung (vergleiche . Abb. 8.5 und . 8.6).

Die Umgebung zur Eingabe und Ausführung von Befehlen unter Windows wird mit Eingabeaufforderung bezeichnet. Es handelt sich dabei um ein Konsolenprogramm, im Sprachgebrauch der Informatiker ist meist nur von einer Konsole die Rede (vergleiche 7 Kap. 7 JavaScript). Du erreichst die Eingabeaufforderung über Windows-Taste + R. Öffnen von „cmd“. Bestätigen. Der Befehl „ipconfig“ in . Abb. 8.6 erzeugt eine Ausgabe mit zahlreichen Informationen über die IP-Konfiguration.

. Abb. 8.4 IP-Adressen-Information auf einem Android-Telefon

. Abb. 8.5 Ausführen-Dialog

68

Kapitel 8 · Netzwerke und Protokolle

8

. Abb. 8.6 Ipconfig in der Konsole

Wir sehen nun, dass die lokale IP-Adresse eines PCs ( . Abb. 8.6) von der eines Smartphones ( . Abb. 8.4) abweicht. Das ist so, weil es sich um eindeutige Adressen im selben Netzwerk handelt. Die angezeigte Internetadresse ist natürlich dieselbe, wenn beide Geräte die gleiche Internetverbindung verwenden. Es handelt sich dabei nicht um die IP-Adressen der Endgeräte, sondern um die Adresse des Routers im Internet. Der Router fungiert dabei als Gateway (Tor). Ein Gateway ist ein Vermittler zwischen mehreren Netzwerken. Das heißt, er stellt die Verbindung zwischen dem (W)LAN und dem Internet her. Innerhalb des (W)LAN gelten die lokalen IP-Adressen. Außerhalb gelten die IP-Adressen des Internets. Wie groß das lokale Netzwerk ist, lässt sich anhand der Subnetzmaske ablesen. Die Subnetzmaske definiert die mögliche Anzahl an Endgeräten innerhalb des Netzwerks. In diesem Fall ist sie 255.255.255.0 und damit sind alle IP-Adressen, die auf 192.168.2.x lauten, innerhalb unseres Netzwerks. Andere Beispiele findet ihr auch in 7 Kap. 19 Binärsystem & Datentypen. Der ipconfig-Befehl liefert uns aber noch weitere Informationen, beispielsweise den Namen des Routers. In diesem Fall „speedport.ip“. Um zu sehen, ob wir das Gerät erreichen, können wir den „ping“ Befehl verwenden. Die Angabe in . Abb. 8.7 in den eckigen Klammern ist die lokale IP-Adresse des Routers. Die Antworten zeigen, dass wir das Gerät erreichen können. Tatsächlich können wir dasselbe auch mit einer Internetadresse tun, wie in . Abb. 8.8 ersichtlich. Schalten wir die Internetverbindung aus, ist die Adresse nicht mehr erreichbar. Das heißt, wir erreichen nicht einmal mehr den DNS. Der Name „youtube.de“ hat demnach keine Bedeutung mehr. Aber auch die IP-Adresse des Webservers ist nicht mehr erreichbar (siehe . Abb. 8.9).

69 Kapitel 8 · Netzwerke und Protokolle

8

Noch einmal zusammengefasst: Unser Endgerät, der Client, befindet sich in einem lokalen Netzwerk. Über den Router erlangt er Zugriff auf das Internet. Dabei wandelt der DNS-Server den Namen, beispielsweise 7 www.youtube.de, in eine IP-Adresse um. Diese wird dann direkt angesprochen und erreicht so den Webserver. All das gelingt mithilfe von IP-Adressen, den eindeutigen Zuordnungen innerhalb eines Netzwerks. Zunächst ist wichtig festzustellen, dass es verschiedene Versionen des Internetprotokolls gibt. Bis 2020 war IPv4 die meistgenutzte Version. Diese besteht aus 32 Bits oder anders ausgedrückt aus vier Zahlen zwischen 0 und 255. (Ausführliche Erklärungen dazu finden sich in 7 Kap. 19 Binärsystem & Datentypen.) In . Abb. 8.2 ist die angezeigte IPv4-Adresse: 93.254.38.103

Die neuere Version IPv6 verwendet 128 Bit und Doppelpunkte anstelle von Punkten zur Trennung. Ebenfalls in . Abb. 8.2 ersichtlich:

. Abb. 8.7 Ping-Befehl in der Konsole im lokalen Netzwerk

. Abb. 8.8 Ping-Befehl in der Konsole mit Internetverbindung

70

Kapitel 8 · Netzwerke und Protokolle

8

. Abb. 8.9 Ping in der Konsole ohne Internetverbindung

2003:6:51F9:9257:6D02:E622:56C2:8D2C

Der Hauptgrund für die Umstellung auf IPv6 ist simpel. Jedes mit dem Internet verbundene Gerät besitzt eine IP-Adresse. Diese ist zum Nutzungszeitpunkt weltweit einzigartig. Bereits vor einiger Zeit wurden die IPv4-Adressen knapp. Da jedoch die Zahl der mit dem Internet verbundenen Geräte immer weiter ansteigt, wurde auch eine größere Anzahl an Adressen notwendig. Mit IPv4 lassen sich theoretisch knapp 4,3 Mrd. unterschiedliche Internetadressen erzeugen. IPv6 bietet nun bis zu 340 Sextillionen (eine Sextillion entspricht einer eins mit 36 Nullen) Adressen. Lange Zeit ließ sich das Problem der IP-Knappheit mit Network Address Translation (Netzwerkadressübersetzung) oder kurz NAT und dynamischen IPAdressen umgehen. Die Netzwerkadressübersetzung findet auch innerhalb unseres lokalen Netzwerks statt. Dort wird sie normalerweise innerhalb eines Routers vorgenommen. Alle in diesem Netzwerk angeschlossenen Geräte, wie beispielsweise das Smartphone, der PC oder der Smart-TV, nutzen dieselbe Internetadresse. Genau diese Adresse wird dynamisch vergeben. Das bedeutet, dass IP-Adressen nicht dauerhaft einem Gerät zugeordnet bleiben, sondern kontinuierlich neu zugewiesen werden. Die Adressen nicht verbundener Geräte werden dann anderweitig genutzt. Die Zuweisung neuer dynamischer IP-Adressen passiert in der Regel nach 24 Stunden durch den Provider. Dabei wird die Internetverbindung des Routers kurzzeitig getrennt. Übung Kontrolliert doch eure IP-Adresse nach einem Tag erneut. Vermutlich hat sie sich geändert. Ändert sich die IP-Adresse von YouTube ebenfalls?

Vielleicht ist das so, denn schließlich handelt es sich um eine große Plattform, die nicht nur einen Server verwendet. Vielleicht aber auch nicht, denn viel besuchte

71 Kapitel 8 · Netzwerke und Protokolle

8

Webseiten verwenden meist statische IP-Adressen, also solche, die sich nicht ändern und somit in der Regel schneller erreichbar sind. Dynamische IP-Adressen haben für den Nutzer zu Hause aber einen anderen Vorteil: Sie schützen die Privatsphäre vor Datensammlern im Internet. Die sich kontinuierlich ändernden dynamischen IP-Adressen einem bestimmten Anschluss zuzuordnen, ist viel schwerer, als es bei statischen IP-Adressen der Fall ist. Weiterführende Überlegungen zur Relevanz von Anonymität im Internet finden sich in 7 Kap. 13 Datenschutz. In dieser Stunde haben wir viele neue Begriffe kennengelernt und ein gewisses Verständnis für Netzwerkarchitektur und die Identifizierung von Geräten in Netzwerken erlangt. Für jeden, der in einem IT-Beruf arbeitet, sind diese Dinge Bestandteil der täglichen Arbeit. Selbst für Laien ist ein grundsätzliches Verständnis für Netzwerke hilfreich, beispielsweise bei der Einrichtung eines neuen Netzwerkdruckers oder eines Smart-Home-Geräts. Aber was ist nun mit den Protokollen? Welche sollten bekannt sein? Welche Protokolle sind besonders wichtig? Tatsächlich haben wir bereits zahlreiche Protokolle verwendet, ohne diese zu benennen. Der von uns verwendete ping-Befehl beispielsweise verwendet das Internet Control Message Protocol (ICMP). Dann ist da noch das Transmission Control Protocol (TCP), auf dem unter anderem das HTTP aufbaut. TCP bildet die Grundlage für große Anteile der Kommunikation im World Wide Web. Allerdings lohnt es sich kaum, die Details der verschiedenen Protokolle zu ergründen. Zusätzlich sind es keine überschneidungsfreien Alternativen. In vielen Fällen bauen sie aufeinander auf und lösen diverse Aufgaben auf verschiedenen Abstraktionsebenen. Wie das genau funktioniert, würde jedoch an dieser Stelle zu weit führen. Ein Protokoll, das aber durchaus eine Vertiefung verdient, ist HTTP. Mehr dazu in der folgenden Stunde. ? Was bedeutet Architektur im Kontext der Informatik? Welche Rolle spielen Protokolle für den Informationsaustausch innerhalb von Computernetzwerken? Was macht der ping-Befehl? Was ist der Unterschied zwischen einer lokalen und einer Internet-IP-Adresse? Welche Begriffe beschreiben wichtige Funktionen für die Kommunikation über das Internet?

73

HTTP

© Springer Fachmedien Wiesbaden GmbH, ein Teil von Springer Nature 2024 T. Eichstädt und S. Spieker, 52 Stunden Informatik, https://doi.org/10.1007/978-3-658-41838-0_9

9

74

9

Kapitel 9 · HTTP

HTTP wird verwendet, um Webseiten aus dem Internet in einen Webbrowser zu übertragen. Dabei werden zwei Arten von Nachrichten ausgetauscht: Requests und Responses. Jede Nachricht besteht aus einem Header und einem Body. Die Antwort auf eine Anfrage enthält verschiedene Informationen. Besonders wichtig, um den Nachrichtenaustausch nachzuvollziehen, sind die StatusCodes. Auerdem gibt es verschiedene Methoden für HTTP-Anfragen. Die gebräuchlichste Methode ist GET. Mithilfe einer GET-Anfrage werden Daten von einer URL bei einem Server angefragt. HTTP ist zustandslos. Jede Anfrage ist unabhängig und ein Server wei nicht, ob er vorher bereits angesprochen wurde. Cookies sind wichtig für die HTTP-Kommunikation, um Anmeldungen aufrechtzuerhalten. Der Cache spart überflüssigen Datenverkehr. Bei einer HTTP-Anfrage können mithilfe von Query-Strings zusätzliche Daten mitgegeben werden. HTTPS ist eine Erweiterung von HTTP, die dafür sorgt, dass die Kommunikation verschlüsselt stattfindet. Im Browser wird so eine sichere Verbindung mit dem Schlosssymbol gekennzeichnet. In der letzten Stunde haben wir uns mit den Protokollen im Allgemeinen beschäftigt. An dieser Stelle werden wir nun das HTTP-Protokoll genauer kennenlernen. HTTP steht für Hypertext Transfer Protocol (Hypertextübertragungsprotokoll). Es findet vor allem Verwendung in der Übertragung von Webseiten aus dem Internet in einen Webbrowser. Es ist jedoch nicht darauf beschränkt, sondern findet sich ebenfalls noch an vielen weiteren Stellen. Die Einheiten der Kommunikation werden als Nachrichten bezeichnet. Diese werden zwischen Client und Server ausgetauscht. Es gibt zwei Arten von Nachrichten, die Requests (Anfragen) und die Responses (Antworten). Auf eine Anfrage erfolgt maximal eine Antwort. Es ist nicht möglich, dass auf eine Anfrage mehrere Antworten folgen. Es handelt sich hier um eine sehr formale Definition, wie eine Kommunikation abläuft. Eine Nachricht besteht immer aus zwei Teilen: 5 Header (Kopf), der Informationen über den Nachrichtenrumpf enthält, und 5 Body (Körper), der die Nutzdaten beinhaltet. Bei HTTP sind keine maximalen Größen definiert, jedoch haben die Webserver üblicherweise Beschränkungen. Die maximale Header-Größe erlaubt in der Regel nur vier bis acht KByte. Der Body darf meist deutlich größer sein. Die Größenangaben werden in 7 Kap. 19 Binärsystem & Datentypen genauer erklärt. Übung Aber was passiert denn nun genau, wenn ein Server angesprochen wird? Teste es doch einmal aus. Öffne dazu eine Powershell über Windows-Taste + R. Den Befehl „powershell“ eintragen und mit Enter bestätigen. In der sich öffnenden Powershell den folgenden Befehl eintragen, um eine Abfrage vorzubereiten (ebenfalls mit Enter bestätigen): $HTTP_Request = [System.Net.WebRequest]: :Create(’https://google.com’)

75 Kapitel 9 · HTTP

9

Um die Abfrage tatsächlich abzusenden, gib folgenden Befehl ein und bestätige diesen mit Enter: $HTTP_Request.GetResponse()

In dem eben geöffneten Fenster sollten jetzt etliche Zeilen als Antwort zu sehen sein, beispielsweise darüber, welche Header-Information, welche Protocol-Version und, ganz wichtig, welchen StatusCode die Antwort enthält (vergleiche . Abb. 9.1). Da der StatusCode als Zahl definiert ist und die Powershell schon durch den Klarnamen ersetzt, soll der Zahlenwert ausgegeben werden. Dies ist mit dem folgenden Befehl zu erreichen:

[int]$HTTP_Request.GetResponse().StatusCode

Und am Ende wird noch mithilfe des folgenden Befehls das Beispiel beendet:

$HTTP_Response.Close()

Dies ist notwendig, damit der Rechner keine Verbindung zum Server offenhält und Ressourcen auf dem Server und unserem Rechner wieder freigegeben werden können (vergleiche . Abb. 9.2).

. Abb. 9.1 Powershell mit einem HTTP-Request und der Serverantwort

76

Kapitel 9 · HTTP

. Abb. 9.2 Powershell mit StatusCode-Ausgabe und Beenden der Verbindung

9

Die Antwort des Servers enthält aber nicht nur den StatusCode, sondern auch noch viele andere Informationen. Hier ein kurzer Auszug aus . Abb. 9.1 mit den jeweiligen Erklärungen: 5 IsMutallyAuthenticated gibt an, ob der Server und unser Computer sich untereinander identifiziert haben. Da dort ein False (falsch) steht, ist das nicht der Fall. 5 Cookies sind kleine Informationspakete, die zum Wiedererkennen des Nutzers verwendet werden. 5 Header entält zusätzliche Informationen, die dem Browser sagen, welchen Funktionsumfang der Server zur Verfügung stellt. 5 ContentType gibt an, um welche Daten es sich handelt (in unserem Beispiel text/html). 5 LastModified zeigt das Datum, an dem die Webseite das letzte Mal aktualisiert wurde. 5 ProtocolVersion gibt die HTTP-Protocol-Version an. 5 Method gibt die HTTP-Methode an, hier GET. Es gibt folgende Methoden für HTTP-Anfragen: 5 GET (bekommen) ist mit Abstand die gebräuchlichste Methode, mit deren Hilfe Daten von einer URL bei einem Server angefragt werden (wie im obigen Beispiel mit der Powershell). 5 HEAD (Kopf) zeigt eine Kurzfassung der Daten, ohne den kompletten Inhalt (Body) zu senden. (Wird oft verwendet, um zu prüfen, ob es Änderungen an der Webseite gab und ob der Browser Daten aus dem Cache verwenden kann.) 5 POST (Post) schickt Daten an den Server, beispielsweise werden mehrere Formulareingaben oft in einer Nachricht gebündelt versendet. 5 PUT (anlegen) versendet ebenfalls Daten an den Server, wird normalerweise bei größeren Daten oder Dateiuploads verwendet, beispielsweise zum Bilderupload. 5 DELETE (löschen) löscht Daten auf dem Server. 5 OPTIONS (Möglichkeiten) zeigt die vom Server unterstützen HTTP-Methoden. 5 CONNECT (verbinden) ist Ausnahme, die vor allem bei Proxyservern Anwendung findet. 5 TRACE (verfolgen) wird vor allem zur Fehlersuche verwendet, sendet die Anfrage des Clients so zurück, wie dieser sie gesendet hat.

77 Kapitel 9 · HTTP

9

. Abb. 9.3 Browseranfrage für google.de

Übung Wenn du sehen möchtest, welche Kommandos dein Browser beim Surfen sendet, öffne die Entwicklertools und lass dir die Methoden anzeigen. In 7 Kap. 6 Webbrowser wird erklärt, wie das gemacht wird. Mit einem Rechtsklick auf die Spalten kannst du auswählen, welche davon angezeigt werden.

Ein Beispiel für google.de ist im Bildschirmfoto aus . Abb. 9.3 zu sehen. Es gibt viele GET-, aber auch POST-Anfragen. Der Status wechselt zwischen 200 und 204. Es gibt verschiedene Kategorien von Antworten: 5 1xx: Informationen 5 2xx: Erfolgreiche Operationen 5 3xx: Umleitungen 5 4xx: Clientfehler 5 5xx: Serverfehler In . Tab. 9.1 findet sich eine kurze Übersicht der häufigsten StatusCodes und deren Bedeutung. HTTP hat eine wichtige Eigenschaft, die sowohl Vor- als auch Nachteile mit sich bringt. HTTP ist zustandslos. Das bedeutet, dass jede HTTP-Anfrage isoliert behandelt wird. Das erleichtert den Umgang mit Fehlern und macht es sehr viel einfacher einen zuverlässigen und skalierbaren Service bereitzustellen. Andererseits gibt es keinen Informationsaustausch zwischen zwei HTTP-Anfragen. Der Server weiß nicht, ob er schon zuvor angesprochen wurde. Der Client muss sich also jedes Mal identifizieren, falls das für die Kommunikation wichtig ist. Bei der GoogleSuche wäre das für den Nutzer nicht schlimm, da sie auch ohne Login funktioniert. Bei einem Webshop, wie beispielsweise eBay oder Amazon, will man sich aber nicht

Kapitel 9 · HTTP

78

. Tab. 9.1 Bedeutung häufiger StatusCodes

9

Code

Bedeutung

200

OK

204

Kein Inhalt

308

Umleitung

400

Fehlerhafte Anfrage

403

Verboten

404

Nicht gefunden

500

Interner Serverfehler

immer wieder anmelden müssen. Genau dafür gibt es eine Technik, die sich Cookies (Kekse) nennt, wie sie auch schon in 7 Kap. 6 Webbrowser beschrieben wurde. Der Standard unterstützt nicht nur die einfache Übertragung, sondern bietet die Möglichkeit, Daten zu cachen oder bei der Übertragung zu komprimieren. Der Cache in HTTP verfügt über drei grundlegende Mechanismen, um die Gültigkeit zu kontrollieren: 1. Freshness (Frische) gibt ein Ablaufdatum an, ab dem der Client von abgelaufenen Daten ausgehen soll. 2. Validation (Gültigkeit) kann verwendet werden, um zu überprüfen, ob eine zwischengespeicherte Antwort noch aktuell ist, nachdem sie schon abgelaufen ist. 3. Invalidation (Entwertung) folgt normalerweise nach einem UPDATE oder DELETE automatisch. Um Bandbreite zu sparen, kann mittels HTTP auch ein Kompressionsalgorithmus vom Client angefordert werden. So können Endgeräte, die über eine langsame Verbindung, aber eine schnelle Hardware verfügen die Daten etwas schneller bekommen. Dies funktioniert bei Textdokumenten wie HTML-Seiten sehr gut, bringt aber wenig bei schon stark komprimierten Daten wie Bildern oder Videos. Zusätzlich können auch noch Daten gesammelt übertragen werden. Mehrere Anfragen können also auch zu einer Antwort gebündelt werden. Um einer Webseite zusätzliche Daten mitzugeben, gibt es die sogenannten Query-Strings (Abfragezeichenketten). Mit benannten Parametern, die an einen Webserver gesendet werden können, kann dieser die Antwort auf die Abfrage zugeschnitten erzeugen. Ein Query-String wird durch ein Fragezeichen eingeleitet. Er besteht aus einem oder mehreren Parametern, die oft mit einem Und-Zeichen (&) voneinander getrennt werden. Parametername und -wert werden meist durch ein Gleichheitszeichen (=) getrennt. Um beispielsweise die Google-Suchmaschine nach „http“ suchen zu lassen, genügt es, die folgende URL zu öffnen: 7 https://www.google.de/search?q=http

79 Kapitel 9 · HTTP

9

Für die Bing-Suchmaschine sieht es fast genauso aus: 7 https://www.bing.com/search?q=http Der Query-String, der hier zum Einsatz kommt, ist für die Suche der Parametername „q“ mit dem Wert „http“. Um bei Amazon nach Büchern über http zu suchen, verwendet Amazon jedoch einen anderen Parameter, nämlich k. Damit sieht die Suchanfrage dort wie folgt aus: 7 https://www.amazon.de/s?k=http Um weiter Parameter mit anzugeben, kann beispielsweise die Suche bei Google auf deutsche Seiten beschränkt werden, der Parameter lautet „lr“ und der Wert für deutsche Seiten „lang_de“. Übung Wie sieht der Suchstring bei Google aus? Weitere Parameter werden mit dem UndZeichen angehängt. Teste auch, ob es bei Bing ähnlich funktioniert. Du kannst dazu auf der Bing-Seite die Sprache Deutsch auswählen und die Adresszeile „scharf ansehen“, ob du den Parameter entdeckst.

Bei Bing und Google unterscheidet sich die Suche etwas. Um die Suche auf deutsche Webseiten zu beschränken, sehen die Suchanfragen wie folgt aus: 7 https://www.bing.com/search?q=http&cc=de&lf=1 7 https://www.google.de/search?q=http&lr=lang_de Was alles noch mit Query-Strings gemacht werden kann, wird intensiver in 7 Kap. 25 APIs (mit Python) beschrieben. Dort wird auch dargestellt, wie man selbst Anwendungen schreiben kann, die sich über Query-Strings steuern lassen. HTTP wird aber nicht nur zum Herunterladen von Webseiten verwendet, sondern auch, um Daten auszutauschen oder verteilte Anwendungen zu erstellen. Das Programmiermuster nennt sich REST (Representational State Transfer). Da HTTP-Verbindungen so verbreitet sind, gibt es spezielle Produkte zum Sichern dieser Verbindungen. Oft ist das eine sogenannte Web Application Firewall (WAF), die dazu dient, HTTP-Anfragen zu durchsuchen und nur erlaubte durchzulassen. In 7 Kap. 10 Informationssicherheit gehen wir unter anderem auch auf das Thema Firewall etwas detaillierter ein. Außerdem gibt es eine Erweiterung von HTTP selbst, die den Zweck hat, die Verbindung abzusichern. Eine sichere, also verschlüsselte, Verbindung ist wie in . Abb. 9.4 an dem Schlosssymbol neben der Adresszeile ersichtlich. Der Browser zeigt durch das Schlosssymbol an, dass eine HTTPS-Verbindung besteht. HTTPS ist die Abkürzung für Hyper Text Transfer Protocol Secure (siche-

. Abb. 9.4 Verschlüsselte Verbindung im Browser

80

9

Kapitel 9 · HTTP

res Hypertextübertragungsprotokoll). HTTPS stellt sicher, dass niemand zwischen Sender (Webseite) und Empfänger (Browser) Daten mitlesen kann. Damit ist der Aspekt der Vertraulichkeit erfüllt, der in der nächsten Stunde noch genauer beleuchtet wird. Wenn eine Webseite kein Schloss, ein durchgestrichenes Schloss oder eine Warnung auf dem Schloss anzeigt, ist grundsätzlich Vorsicht geboten. Das kann zum Beispiel passieren, wenn man sich beim Eintippen einer Webadresse vertippt (siehe . Abb. 9.5). Der Webbrowser warnt uns damit, dass die Verbindung nicht sicher ist. Das Schlosssymbol zeigt außerdem das Vorhandensein eines Zertifikats an. Ein digitales Zertifikat ist ein Datensatz, der bestimmte prüfbare Eigenschaften zum Inhaber einer Webseite enthält. Meistens nutzt man nicht das Wort „digital“, sondern spricht nur von einem „Zertifikat“. Das Schlosssymbol neben der Webadresse zeigt an, dass der Browser die Identität des Webservers anhand seines Zertifikats überprüfen konnte. Damit ist außerdem die Integrität sichergestellt. Wie die Prüfung der Integrität erfolgt, wird später noch erklärt. Zunächst wollen wir uns damit beschäftigen, wie ein Zertifikat entsteht und warum eine Webseite damit sicherer ist als eine Webseite ohne Zertifikat. Übung Nutze einen Browser deiner Wahl. Schau nach, ob du das Schloss bei deinem Browser und auf deinen meistbesuchten Webseiten finden kannst. Klicke auf das Schloss und versuche herauszufinden, wer die Zertifikate dieser Seiten ausgestellt hat.

Besitzer einer Webadresse können Zertifikate erwerben. Wir sehen, es gibt verschiedene Zertifizierungsstellen, also Anbieter von Zertifikaten. Ein paar sind in . Tab. 9.2 aufgeführt. Auf unterschiedliche Weise überprüft der Anbieter, ob der Käufer eines Zertifikats auch wirklich der Inhaber der Webadresse ist. Wie so oft, gibt es sowohl kostenfreie als auch kostenpflichtige Anbieter. Der kostenfreie Zertifikatsanbieter Let’s Encrypt ist sehr beliebt. Bei Let’s Encrypt haben die Zertifikate nur eine relativ kurze Gültigkeitsdauer (90 Tage) und müssen deshalb öfter erneuert werden. Im Gegensatz dazu sind kostenpflichtige Zertifikate meistens ein Jahr gültig. Zum Zeitpunkt des Drucks dieses Buches könnte sich die Zertifizierungsstelle der Webseiten auch schon wieder geändert haben.

. Abb. 9.5 Anzeige einer unsicheren Verbindung

81 Kapitel 9 · HTTP

. Tab. 9.2 Zertifizierungsstellen bekannter Webseiten Webseite

Zertifizierungsstelle

7 www.google.de

Google Trust Services

 de-de.facebook.com

DigiCert Inc

7 www.amazon.de

DigiCert Inc

7 www.heise.de

Let’s Encrypt

 de.libreoffice.org

Let’s Encrypt

 de.wikipedia.org

DigiCert Inc

? Wofür steht HTTP? Was ist der Unterschied zwischen Header und Body einer Nachricht? Wie lauten wichtige Methoden für HTTP-Anfragen? Welches sind wichtige HTTP-StatusCodes? Wie funktionieren Query-Strings? Was ist ein digitales Zertifikat?

9

83

Informationssicherheit

© Springer Fachmedien Wiesbaden GmbH, ein Teil von Springer Nature 2024 T. Eichstädt und S. Spieker, 52 Stunden Informatik, https://doi.org/10.1007/978-3-658-41838-0_10

10

84

10

Kapitel 10 · Informationssicherheit

Informationssicherheit ist notwendig, um Vertrauen in IT-Anwendungen zu schaffen. Verbreitete Gefahren sind Phishing und Malware. Suspekte Nachrichten sollten nicht geöffnet werden, besonders dann nicht, wenn der Absender nicht vertrauenswürdig ist. In Deutschland ist das BSI für die Informationssicherheit verantwortlich. Viele Menschen machen sich Sorgen um die eigene Sicherheit oder waren bereits Opfer von Kriminalität im Internet. Der einfachste Weg, die Sicherheit zu erhöhen, ist, die eigenen Systeme aktuell zu halten. Auerdem sollte ein Virenscanner verwendet werden. Aber auch mit Virenscanner ist Vorsicht geboten. Generell sollte Software nur von vertrauenswürdigen Seiten heruntergeladen und installiert werden. Die zu erreichenden Ziele in der Informationssicherheit lassen sich zusammenfassen als Vertraulichkeit, Integrität und Verfügbarkeit. Verschlüsselung ist ein wichtiger Sicherheitsmechanismus, mit dem Vertraulichkeit und Integrität sichergestellt werden können. Verschlüsselung wird im Webbrowser mit einem Schlosssymbol dargestellt. In einer Zeit, in der immer mehr und immer schneller Daten und Informationen digitalisiert und über das Internet ausgetauscht werden, ist die Frage nach Informationssicherheit besonders wichtig. Sie ist zwingender Bestandteil, um Vertrauen zu schaffen in einer schier unendlichen Weite des World Wide Web. Verbreitete Gefahren für die Informationssicherheit sind zum Beispiel Phishing und Malware. Unter Phishing (von engl. fishing, Angeln) werden betrügerische Versuche verstanden, an persönliche Daten von Internetnutzern zu gelangen, um danach Identitätsdiebstahl zu begehen. Oft werden dazu gefälschte Webseiten oder Spam-E-Mails verwendet. Malware (Schadsoftware) ist ein Überbegriff für schadhafte Software. Im Sprachgebrauch am weitesten verbreitet ist die Kategorie Computervirus. Ein Computervirus ist ein Programm, das sich in Dateien oder Bootsektoren einschleust und bei Ausführung selbstständig repliziert. Viren können zu Datenverlust führen oder andere Schäden an Hardware oder Software verursachen. In jedem Fall sind Viren unangenehm, da sich ihre Ausbreitung nicht oder nur schwer kontrollieren lässt. Übung Wann hast du das letzte Mal einen Phishing-Versuch wahrgenommen? Wie hast du ihn erkannt? Hast du bereits Erfahrung mit Malware gemacht oder kennst du jemanden, der sich bereits einen Computervirus eingefangen hat?

Sowohl auf dem Smartphone als auch auf dem PC sollte grundsätzlich beim Öffnen von E-Mails oder Nachrichten aus dem Messenger Vorsicht geboten sein, sofern der Absender nicht bekannt ist. Es ist wichtig, zu prüfen, dass es sich um eine vertrauenswürdige Quelle handelt, bevor auf einen Link geklickt oder ein Anhang geöffnet wird. Dieser könnte nämlich einen Virus enthalten oder nur dazu dienen, festzustellen, ob die E-Mail-Adresse oder die Telefonnummer jemandem gehört. Oft tarnen sich solche Attacken als vermeintliche Gewinne einer Verlosung oder als Geldgeschenke, was schon unglaubwürdig genug ist. Beispiele sind in . Abb. 10.1 und . 10.2 dargestellt.

85 Kapitel 10 · Informationssicherheit

10

. Abb. 10.1 Phishing-E-Mail

. Abb. 10.2 Suspekte E-Mail mit Anhang

Wenn die Nachricht suspekt ist und von einer vertrauenswürdigen Quelle zu kommen scheint, ist dennoch Vorsicht geboten. Möglicherweise wurde der Absender nur vorgetäuscht oder die Person ist zwar an sich vertrauenswürdig, wurde aber selbst Opfer eines Angriffes und verschickt nun unwissentlich verseuchte Nachrichten. Das Bundesamt für Sicherheit in der Informationstechnik (kurz: BSI), das in Deutschland für Informationssicherheit zuständig ist, hat eine ganze Liste an Ratschlägen für Bürger zusammengestellt. Seinen Aufgabenbereich sieht das BSI wie folgt: „Mit der rasanten Fortentwicklung der Informationstechnik entstehen in fast allen Bereichen des Alltags neue IT-Anwendungen – und damit auch immer neue Sicherheitslücken. Je abhängiger der Mensch von der Informationstechnik wird, desto mehr stellt sich die Frage nach deren Sicherheit. Unsere Gesellschaft ist stärker als zuvor durch Computerversagen, -missbrauch oder -sabotage bedroht. Bisher kann nicht ausreichend sichergestellt werden, dass die Informationstechnik das tut, was sie soll, und nichts tut, was sie nicht soll. Weil die Probleme in der Informationstechnik so vielschichtig sind, ist auch das Aufgabenspektrum des BSI sehr komplex.“ (Quelle: 7 https://www.bsi.bund.de/DE/DasBSI/Aufgaben/ aufgaben_node.html) Wie wichtig Sicherheit ist, zeigt die Studie des BSI und der polizeilichen Kriminalprävention der Länder und des Bundes (ProPK) mit dem Namen Digitalbarometer 2022: Bürgerbefragung zur Cyber-Sicherheit 2022.

86

10

Kapitel 10 · Informationssicherheit

Acht von zehn Betroffenen (79 %) in Deutschland waren bereits Opfer von Kriminalität im Internet. Schutzmaßnahmen wie ein aktuelle Antivirenprogramme (53 %), sichere Passwörter (52 %) und eine aktuelle Firewall (44 %) sind zwar verbreitet, werden aber längst nicht umfassend genutzt. Was ein sicheres Passwort ist und wie ein solches erzeugt werden kann, wird in 7 Kap. 11 Authentifizierung detailliert behandelt. Eine sehr interessante Aussage ist deshalb: „Zu den häufigsten berichteten Vorfällen zählen Betrug beim Onlineshopping (25 %), der Fremdzugriff auf einen Online-Account (25 %) sowie das Einschleusen von Schadsoftware wie Viren oder Trojaner (24 %). Viele der Befragten wurden immer wieder auch mit diversen Online-Betrugsarten konfrontiert, darunter betrügerische E-Mails (19 %), gefälschte Nachrichten über einen Messenger (11 %) oder per SMS (10 %) und nicht zuletzt durch Anrufe vermeintlicher Support- Mitarbeiter (9 %).“ (Quelle:  https://www.bsi.bund.de/SharedDocs/Downloads/DE/BSI/Digitalbarometer/Digitalbarometer-ProPK-BSI_2022.html ) Übung Besuche die Webseite des BSI (7 https://www.bsi.bund.de) und schau dir an, welche Themen es dort gibt. Kennst du Sicherheitswerkzeuge auf deinem PC oder Smartphone? Sind dein PC oder dein Smartphone mit den neuesten Sicherheitsupdates versorgt? Und sind diese Sicherheitswerkzeuge auch auf dem aktuellsten Stand?

Der denkbar einfachste Weg, die Sicherheit zu erhöhen, ist, die Systeme aktuell zu halten. Es ist sehr wichtig, das Betriebssystem ständig zu aktualisieren, denn nur so werden bekannte Sicherheitslücken geschlossen. Vor allem die Sicherheitsupdates sollten immer zeitnah installiert werden! Bei Windows übernimmt diese Aufgabe das Windows-Update. Dies wird am einfachsten erreicht mit: Rechtsklick auf das Windows Symbol -> Ausführen -> ms-settings:windowsupdate einfügen und mit Enter bestätigen (siehe auch . Abb. 10.3). Falls es dort noch zu installierende Updates wie beispielsweise „Kumulatives Update für Windows 11“ gibt, sollten diese umgehend installiert werden.

. Abb. 10.3 Ausführen des Windows-Updates

87 Kapitel 10 · Informationssicherheit

10

. Abb. 10.4 System-Updates für Android

Bei mobilen Geräten werden Updates normalerweise als Push-Benachrichtigung angezeigt. Falls diese ausbleiben, kann man aber auch selbst überprüfen, ob ein Sicherheitsupdate vorliegt. Bei Android befinden sich diese unter: Einstellungen -> System -> System Update (siehe auch . Abb. 10.4). Bei iOS ist es an ähnlicher Stelle unter: Einstellungen -> Allgemein -> Software-Update. Auch die genutzten Apps sollten im App-Store regelmäßig auf den neuesten Stand gebracht werden, um von Sicherheitsverbesserungen profitieren zu können. Unter Android sind sie im Play Store unter „Meine Apps und Spiele“ und dort unter dem Punkt „Updates“ zu finden. Bei iOS sind diese im App Store. Dort gibt es direkt beim eigenen Account (das Profilicon) im unteren Bereich die „anstehenden automatischen Updates“. iOS kümmert sich normalerweise also selbst darum, die Updates einzuspielen, überlässt es aber auch dem Nutzer, sie manuell upzudaten. Um auch den eigenen PC weiter abzusichern, sollte für Windows oder MAC auf jeden Fall ein Virenscanner verwendet werden. Bei Windows 10 oder 11 ist der Windows Defender schon vorinstalliert und gilt auch als sehr gut und sicher. Bei macOS gibt es ebenfalls einen integrierten Virenschutz, den XProtect. Natürlich können auch andere kommerzielle Virenscanner verwendet werden, man sollte aber darauf achten, dass diese regelmäßig Signatur-Updates bekommen. Bei Signatur-Updates handelt es sich um Muster von Viren, nach denen der Virenscanner sucht, und im Zweifel wird das Schadprogramm blockiert. Auch mit einem Virenscanner ist es sinnvoll, nicht jede Software, die im Internet oder in einer E-Mail gefunden wurde, zu installieren. Generell sollte Software nur von vertrauenswürdigen Seiten heruntergeladen und installiert werden. Webseiten von Softwareherstellern oder auch großen PC-Zeitschriften gelten dabei als durchaus vertrauenswürdig. Bei Links aus Foren ist aber Vorsicht geboten, ob das vermeintlich tolle Softwareangebot wirklich

88

10

Kapitel 10 · Informationssicherheit

kostenfrei herunterzuladen ist. Gerade bei Office-Versionen und auch Computerspielen, die sonst teuer gekauft werden müssen, ist die Wahrscheinlichkeit hoch, dass die Software mit Viren verseucht ist. Bei Smartphones wird nicht zwingend ein Virenscanner benötigt, solange man nur Programme aus dem offiziellen Store installiert. Bei Android ist das der Play Store, der mit dem Dienst Play Protect regelmäßig die installierten Applikationen überprüft. Im App Store von iOS sind die Anforderungen, die Apps vor dem Hinzufügen in den Store erfüllen müssen, erheblich höher. Deshalb braucht es keinen vergleichbaren Dienst bei Apple. Übung Wann hast du das letzte Mal dein Smartphone oder den PC auf den aktuellen Stand gebracht? Wie sieht es in deinem direkten Umfeld aus? Wer ist bei dir zu Hause oder in der Schule für Fragen der Sicherheit zuständig und wer kümmert sich darum?

Aber auch bei anderen Gelegenheiten sollte besondere Vorsicht gelten, beispielsweise beim Verbinden mit einem offenen WLAN. Der Besitzer des WLANs kann alle Nachrichten, sofern sie nicht verschlüsselt sind, einfach mitlesen. Daher ist es wichtig, sich nicht einfach mit einem offenen WLAN der Nachbarschaft oder unterwegs zu verbinden. Besonders kritisch ist es, wenn Onlinebanking oder ein Webshop (wie Amazon oder eBay) verwendet werden sollen. Sollen diese Dienste innerhalb eines unsicheren WLANs verwendet werden, so ist eine Verschlüsselung besonders wichtig. Man sollte daher immer auf das Schlosssymbol im Browser achten, bevor man Zugangsdaten eingibt. Die zu erreichenden Ziele in der Informationssicherheit lassen sich zu drei Punkten zusammenfassen: 1. Vertraulichkeit – das bedeutet, dass nur erlaubte Personen Zugriff haben sollen und kein unbefugter Dritter. 2. Integrität – es soll keine Möglichkeit geben, Daten unautorisiert zu verändern. 3. Verfügbarkeit – die Dienste oder Programme sollen zu nutzen sein. Die Verfügbarkeit ist im privaten Umfeld meist weniger wichtig als es Integrität und Vertraulichkeit sind. Das Internet soll natürlich immer funktionieren, doch sind kurze Ausfälle für eine Privatperson durchaus zu verschmerzen. Wer jedoch einen Shop im Internet betreibt, kann natürlich nichts verkaufen, wenn die Seite nicht verfügbar ist. Dafür gibt es von Sicherheitsfirmen Lösungen, die eine stetige Verfügbarkeit sicherstellen. Dies wird üblicherweise durch vorgeschaltete Server erreicht, die auch einen groß angelegten Angriff abwehren können. Ein Angriff zielt oft darauf ab, eine zeitweilige Nichtverfügbarkeit einer Webseite zu erreichen. Trotzdem ist es nicht ganz einfach zu erkennen, ob eine Webseite tatsächlich angegriffen wird. Das Erkennen, ob bloß gerade ein hohes „Verkehrsaufkommen“ auf einer Webseite herrscht (wie etwa beim Black Friday im Onlinehandel) oder ob es ein Angriff durch gezieltes Überlasten eines Servers durch Abermillionen von

89 Kapitel 10 · Informationssicherheit

10

Anfragen gibt, ist schwierig. Diese Art der Attacke wird Denial of Service (DoS, Verweigerung des Dienstes) genannt. Es gibt noch ein anderes Instrument, die Sicherheit zu erhöhen, die sogenannten Firewalls. Eine Firewall (Brandschutzmauer) ist ein System, das die Netzwerkkommunikation überwacht und nur vorher genau definierte Arten der Kommunikation erlaubt. Alle anderen Anfragen werden geblockt. Von zu Hause kennt wahrscheinlich jeder den DSL- oder auch den Kabelrouter. In diesen Geräten steckt bereits eine einfache Firewall, die normalerweise den Verkehr vom Rechner ins Internet erlaubt, aber den Verkehr vom Internet ins eigene Netzwerk stark einschränkt. Dies schützt die Rechner innerhalb des Netzwerks vor vielen möglichen Angriffen. Gerade deshalb ist es so wichtig, dass der Router immer eine aktuelle Firmware enthält und die neuesten Sicherheitspatches installiert sind. Mit Firmware ist das Betriebssystem des Routers gemeint. Eine Firewall hat oft auch noch andere Funktionen, wie beispielsweise den Quality of Service (QoS, Dienstgüte). Dieser ist unter anderem dafür zuständig, das Echtzeitfunktionen unterbrechungsfrei funktionieren, unabhängig davon, was andere Teilnehmer im Netzwerk tun. So wird beispielsweise sichergestellt, dass eine gewisse Bandbreite für das Telefonieren erhalten bleibt, auch wenn gerade ein großer Download durch einen anderen Netzwerkteilnehmer durchgeführt wird. Ein weiterer wichtiger Mechanismus beim Thema Sicherheit ist die sogenannte Verschlüsselung. Verschlüsselung bedeutet, dass Daten geheim gehalten werden, indem sie chiffriert bzw. in eine unleserliche Form umgewandelt werden. Die Fachrichtung der Informatik, die sich mit diesem Thema beschäftigt, heißt Kryptografie. Verschlüsselung ist so wichtig, da sie es uns erlaubt, die Ziele der Vertraulichkeit und Integrität zu erfüllen. Wir kommen an einigen Stellen mit ihr in Berührung. Zu nennen sind da verschlüsselte Dateien, beispielsweise die Passwortdatei des Browsers, damit nicht jeder die gespeicherten Passwörter lesen kann. Des Weiteren gibt es verschlüsselte Festplatten, die vor allem im Unternehmensbereich zu finden sind. Natürlich können aber auch USB-Sticks oder andere Datenträger verschlüsselt werden. Die uns allen bekannteste Verschlüsselungsart treffen wir beim Surfen im Internet an, wie in der Stunde HTTP erläutert. Neben der Auswahl der Zertifizierungsstelle ist auch die Wahl des Verschlüsselungsprotokolls entscheidend für eine sichere Datenübertragung. Eine der wichtigsten Aufgaben des Verschlüsselungsprotokolls ist es, den Schlüsselaustausch über das öffentliche Internet zu organisieren. Um beispielsweise einen Schlüssel für eine Ferienwohnung zu bekommen, wird ein sicheres Verfahren benötigt. Eine Lösung ist das Versenden des Schlüssels per Post, die dafür garantiert, dass das Briefgeheimnis gewahrt bleibt. Diese Möglichkeit gibt es im Internet leider nicht. Daher werden dort verschiedene Stufen umgesetzt. Aber wie läuft so eine Kommunikation im Detail ab? Ein Blick auf . Abb. 10.5 trägt zum besseren Verständnis des automatisierten Vorgangs bei.

90

Kapitel 10 · Informationssicherheit

10

. Abb. 10.5 Aufbau einer verschlüsselten Verbindung

1.

2. 3.

4.

Der Aufbau der verschlüsselten Verbindung findet in fünf Phasen statt: Der Client verbindet sich mit dem Server und fragt nach dem Serverzertifikat. Dieser beantwortet die Anfrage durch Senden seines Zertifikats und des public key (öffentlicher Schlüssel). Im zweiten Schritt überprüft der Client die Gültigkeit des Zertifikats und somit dessen Vertrauenswürdigkeit. Ist dies erfolgt, wird ein neuer Schlüssel, der sogenannte Sessionkey, erzeugt, der nur für diese Verbindung Gültigkeit besitzt. Dieser Sessionkey wird nun mithilfe des öffentlichen Serverschlüssels nachverschlüsselt. Ab jetzt kann diese Nachricht nur noch vom Server gelesen werden. Zum Lesen des gesendeten Sessionkeys nutzt der Server einen weiteren Schlüssel, den sogenannten private key (privater Schlüssel). Dieser ist das Gegenstück des öffentlichen Schlüssels. Er verbleibt immer beim Server und ist die einzige Möglichkeit, durch den öffentlichen Schlüssel gesicherte Nachrichten wieder zu entschlüsseln. Dadurch erhält nur der Server Zugriff auf den vom Client bereitgestellten Sessionkey.

91 Kapitel 10 · Informationssicherheit

10

5. Ab jetzt können Server und Client durch den Sessionkey sicher miteinander kommunizieren. Einem Dritten ist es somit nicht möglich, den Inhalt der Nachrichten nachzuvollziehen. Das Zertifikat wird also nur am Anfang der Kommunikation benötigt, wenn eine neue Verbindung aufgebaut wird. Dann prüft der Client, dass es sich nur um den angefragten Server und keinen anderen handelt. Somit wird die Integrität, also der Schutz vor Manipulation durch Dritte, sichergestellt. Außerdem bildet es die Grundlage, auf der für die anschließende Kommunikation der Sessionkey ausgehandelt wird. Üblich nach heutigem Verschlüsselungsstandard sind 128 Bit, 256 Bit oder sogar 512 Bit Schlüssellängen. Die Schlüssellängen beeinflussen die Sicherheit nämlich zusätzlich. Sowohl Schlüssellängen als auch die eingesetzten Verschlüsselungsverfahren haben sich über die Jahre immer weiterentwickelt, da die Rechenleistung von Computern immer größer geworden ist. Das wichtigste Verschlüsselungsprotokoll im Internet ist heute TLS, was für Transport Layer Security steht. TLS basiert auf TCP. Es ist das Nachfolgeprotokoll von SSL, was für Secure Sockets Layer steht. Nur TLS. 1.3, das zehn Jahre nach TLS. 1.2 entwickelt wurde, gilt heute als einigermaßen zukunftssicher. Es ist also für den Webseitenbetreiber wichtig, bei der Zertifikatsauswahl auf die aktuellste Version zu achten. Dasselbe gilt für jeden Dienst und jedes Gerät, das über das Internet kommuniziert. Es gibt mehrere Arten zu verschlüsseln, einfache und komplizierte. Je länger ein Schlüssel ist, umso höher ist auch die Sicherheit. Man unterscheidet hierbei zwischen symmetrischen und asymmetrischen Verfahren. Das symmetrische Verfahren ist außerhalb der IT am häufigsten anzutreffen. Symmetrisch heißt es deshalb, weil derselbe Schlüssel zum Abschließen und Öffnen verwendet wird. (Am Beispiel der Haustür gesehen, ist es also ein und derselbe Schlüssel, der zum Öffnen und Schließen verwendet wird.) Die Informatik nutzt aber oft das asymmetrische Verfahren, bei dem es unterschiedliche Schlüssel gibt. Der Schlüssel, der zum Verschlüsseln verwendet wird, oder um wieder am Beispiel der Haustür zu bleiben, abschließen kann, ist nicht derselbe, mit dem die Tür wieder geöffnet wird. Dabei ist der Schlüssel zur Verschlüsselung nicht geheim. Man spricht daher hier von einem öffentlichen Schlüssel (engl. public key). Nur der Schlüssel zum Entschlüsseln ist geheim, denn damit lassen sich die Daten wieder lesbar machen. Dieser wird daher auch privater Schlüssel (engl. private key) genannt. Bei HTTPS- beziehungsweise TLS-Verbindungen kommen sowohl symmetrische als auch asymmetrische Verfahren zur Anwendung. Um nun die Integrität zu überwachen, kommen verschiedene Hashing-Verfahren zum Einsatz. Beim Hashing wird eine kürzere Repräsentation der Daten erzeugt, die sich schon bei einer kleinen Abweichung verändert. Ein einfaches Beispiel ist die Quersumme einer Zahl. Es werden dabei alle Ziffern einzeln addiert. Die Quersumme von 1234 ist also 1 + 2 + 3 + 4 = 10. Wenn sich aufgrund eines Übertragungsfehlers nur eine Ziffer in dieser Zahl ändert, so ändert sich natürlich auch die Quersumme. Ein Nachteil dieses Verfahrens ist jedoch, dass sich mit der Länge der Zahl auch oft deren Quersumme vergrößert. Die verwendete Prüfsumme benötigt so auch viel mehr zusätzlichen Platz. Eine Vereinfachung könnte darin bestehen,

92

10

Kapitel 10 · Informationssicherheit

die Quersumme mehrmals zu berechnen, bis sie nur noch eine bestimmte Länge hat. Dies hätte jedoch mehrere Berechnungen zur Folge, was den Aufwand deutlich erhöht. Die auf den ersten Blick komplizierter wirkende Methodik lässt sich jedoch auf einem Computer deutlich effizienter berechnen. Der bekannteste Vertreter der Hashing-Algorithmen ist CRC, der Cyclic Redundancy Check (zyklische Redundanzprüfung). Um es vereinfacht zu erklären, wird dabei durch ein vorher definiertes Polynom dividiert und der Divisionsrest wird an die eigentlichen Daten angehängt. Auf der Empfängerseite passiert das Gleiche. Es wird überprüft, ob derselbe Wert errechnet wurde. Dieser recht einfache Algorithmus ist gut geeignet, um Fehler beim Speichern auf Datenträgern oder Übertragungsfehler feststellen zu können. Er ist aber nicht geeignet, um Angreifer daran zu hindern, Daten so zu modifizieren, dass wir andere Daten, aber dieselbe CRC-Summe bekommen. Für mehr Sicherheit gibt es SHA, den Secure Hash Algorithm (sicherer Hash-Algorithmus), der auch bei Git zur Anwendung kommt (siehe auch 7 Kap. 30 Versionsverwaltung). Das Ziel ist hier, dass zwei Nachrichten niemals denselben Hash-Wert haben. Dieses Verfahren findet auch bei der Signaturberechnung von Zertifikaten Anwendung. Durch Anklicken der Zertifikatsdetails einer Webseite ist es möglich, sich den verwendeten SignaturHash-Algorithmus anzuschauen. Oft ist dieser ein SHA256. Das bedeutet, dass ein sicherer Hash-Algorithmus mit einer Länge von 256 Bit verwendet wurde. Eine weitere wichtige Anwendung für diese Techniken ist das Virtual Private Network (virtuelles privates Netzwerk), abgekürzt VPN. Das VPN ist eine Technik, die sämtlichen Datenverkehr in eine verschlüsselte Verbindung einpackt und unter den Teilnehmern dieses VPN ein neues virtuelles Netzwerk schafft, unabhängig davon, wo sie sich befinden. Durch die starke Verschlüsselung, mit der das virtuelle Netzwerk aufgebaut wird, kann innerhalb des Netzes auf viele Sicherheitsfunktionen verzichtet werden. Diese Technik wird ganz oft für das Homeoffice verwendet, um auf das Firmennetz über das private Internet zuzugreifen. ? Wie kann man die eigene Sicherheit erhöhen? Wann sollte man vorsichtig beim Öffnen von Nachrichten und Links sein? Was ist eine Firewall? Wer benutzt den public key und wer den private key und wozu? Was unterscheidet die symmetrische von der asymmetrischen Verschlüsselung?

93

Authentifizierung

© Springer Fachmedien Wiesbaden GmbH, ein Teil von Springer Nature 2024 T. Eichstädt und S. Spieker, 52 Stunden Informatik, https://doi.org/10.1007/978-3-658-41838-0_11

11

94

11

Kapitel 11 · Authentifizierung

Um Vertraulichkeit zu gewährleisten, ist auerdem Authentifizierung notwendig. Bei der Nutzung von Webdiensten erfolgt die Authentifizierung meistens durch die Eingabe von Benutzernamen und Passwort. Das BSI erteilt hilfreiche Ratschläge zur Erstellung von Passwörtern. Auerdem wird die Verwendung eines Passwortmanagers empfohlen. Anstatt für jeden Webdienst ein neues Passwort zu vergeben, wird oft auch die Authentifizierung durch einen Plattformanbieter angeboten. Dadurch entsteht eine Abhängigkeit von dem Anbieter, der mit der Kenntnis der eigenen Nutzungsdaten bezahlt wird. Besonders sicher ist eine Zwei-Faktor-Authentifizierung, die beim Onlinebanking vorgeschrieben ist. Eine neue Art der Authentifizierung stellt der FIDO2-Standard dar, der bereits als Nachfolger des Passworts gehandelt wird. Der Identitätsnachweis erfolgt dabei mit einem Authenticator, beispielsweise einem USB-Stick. Das Ziel der Vertraulichkeit beinhaltet auch, dass der Zugriff auf authentische Nutzer eingeschränkt wird. Authentisch ist, wer seine Echtheit und Glaubwürdigkeit anhand einer eindeutigen Identität nachweisen kann. Der Nachweis der Identität wird mit Authentifizierung bezeichnet. Im Prinzip ist das mit dem Vorzeigen des Personalausweises vergleichbar. Die Relevanz der Authentifizierung wird schnell klar, wenn wir an die Nutzung von Webdiensten denken. Zum Beispiel rufen wir die Webadresse von Amazon auf (Verfügbarkeit). Der Webbrowser stellt eine HTTPS-Verbindung her (Vertraulichkeit und Integrität). Damit sind die Identität und der sichere Datenaustausch mit Amazon erfüllt. Aber woher weiß Amazon, wer wir sind? Bevor wir auf unser Profil oder sogar hinterlegte Zahlungsmöglichkeiten zugreifen können, müssen wir uns durch die Eingabe des Benutzernamens oder der E-Mail-Adresse und eines Passworts authentifizieren. Es wird dabei davon ausgegangen, dass nur der jeweilige Benutzer selbst über die entsprechenden Zugangsdaten verfügt. Übung Was ist ein sicheres Passwort? Wir kennen bereits das BSI (siehe 7 Kap. 10 Informationssicherheit) als Informationsquelle rund um IT-Sicherheit. Es gibt noch eine weitere Webseite des BSI, die noch mehr praxisnahe Informationen für Bürger enthält. Sie lautet 7 https://www.bsi-fuer-buerger.de. Recherchiere dort Tipps für das Erstellen von sicheren Passwörtern.

Passwörter sollten stets eine besondere Vielfalt aufweisen und natürlich gut geschützt werden. Konkrete Tipps für das Erstellen von Passwörtern sind: 1. Bei der Wahl eines Passworts sind Ihrer Kreativität keine Grenzen gesetzt. Wichtig ist, dass Sie sich das Passwort gut merken können. 2. Grundsätzlich gilt: Je länger, desto besser. Ein gutes Passwort sollte mindestens acht Zeichen lang sein. 3. Für ein Passwort können in der Regel alle verfügbaren Zeichen genutzt werden, beispielsweise Groß- und Kleinbuchstaben, Ziffern und Sonderzeichen wie zum Beispiel $ ! ? #.

95 Kapitel 11 · Authentifizierung

11

4. Nicht als Passwörter geeignet sind Namen von Familienmitgliedern, des Haustiers, des besten Freundes, des Lieblingsstars, Geburtsdaten und so weiter. Das vollständige Passwort sollte möglichst nicht in Wörterbüchern vorkommen. 5. Einfache Ziffern am Ende des Passworts anzuhängen oder eines der üblichen Sonderzeichen $ ! ? # am Anfang oder Ende eines ansonsten simplen Passworts zu ergänzen, ist nicht empfehlenswert. Außerdem empfiehlt das BSI, einen Passwortmanager zu verwenden. Wer tatsächlich überall verschiedene Passwörter verwendet und sich an die obigen Tipps hält, wird um einen Passwortmanager kaum herumkommen. Ein Passwortmanager ist ein Programm, das alle Passwörter sicher speichern und verwalten kann. Übung In Browsern gibt es eingebaute Passwortmanager. Um dir anzuschauen, wie viele Passwörter in deinem Browser gespeichert sind, klickst du bei Firefox: Einstellungen → Datenschutz & Sicherheit → Gespeicherte Zugangsdaten, bei Google Chrome: Einstellungen → Passwörter und bei Edge: Einstellungen → Kennwörter & AutoAusfüllen → Kennwörter verwalten.

Diese haben jedoch den Nachteil, dass sie nur Passwörter für Webseiten speichern können. Im Desktopbereich gibt es ebenfalls Programme, die sowohl Passwörter für Browser als auch Zugangsdaten für andere Programme speichern können. Ein bekanntes und kostenloses Beispiel ist Keepass. Dieses Programm gibt es für viele Betriebssysteme und Smartphone-Plattformen und erlaubt ständigen Zugriff auf alle Passwörter. Als Alternative zu einer eigenen Passwortverwaltung bieten die großen Internetdienstanbieter (Google, Apple, Microsoft, Facebook) aber auch an, sich mit dem Account der jeweiligen Plattform anzumelden. Technisch wird die Anmeldung in solchen Fällen mithilfe des OAuth-2.0-Protokolls gelöst. Bei diesem Protokoll werden nur speziell gesicherte Token verwendet und über ähnliche Mechanismen ausgetauscht wie in 7 Kap. 10 Informationssicherheit vorgestellt. Das OAuth-Protokoll dient dazu, verschiedene Dienstanbieter im Namen des Nutzers sicher miteinander kommunizieren zu lassen. Außerdem gibt es die Möglichkeit, mittels OAuth Rechte für einzelne Dienste einzuschränken, sodass sie beispielsweise nur auf die E-MailAdresse Zugriff haben. Es können aber auch besonders viele Rechte zugewiesen werden, sodass beispielsweise von einer Webseite aus auf den Google-Speicherplatz zugegriffen werden kann.

96

Kapitel 11 · Authentifizierung

11 . Abb. 11.1 Anmeldemöglichkeiten auf der Expedia-Webseite

Optionen zur Anmeldung über einen Plattformanbieter sehen beispielsweise aus wie in . Abb. 11.1. Auf den ersten Blick erscheint diese Art der Anwendung sehr nützlich und sinnvoll. Schließlich muss für eine Anmeldung nicht mehr ein neues Passwort hinterlegt und sich gemerkt werden. Dieselben Daten können anwendungsübergreifend verwendet werden. Ein enormer Nachteil ist jedoch die besondere Abhängigkeit von einem dieser Anbieter, von der Menge der überlassenen persönlichen Informationen mal ganz abgesehen. Der Anbieter weiß somit genau, welche Dienste genutzt werden und zu welchen Zeiten. Gerade bei Google und Facebook mit ihren großen Werbenetzwerken sind das äußerst interessante Informationen. Denn dadurch kennen sie ihre Nutzer um einiges besser. Die Bequemlichkeit wird also mit den eigenen Daten bezahlt. Ein weiterer Nachteil entsteht, wenn jemand das persönliche Passwort zu diesem Dienst herausfindet. Diese Person hat damit direkt Zugriff auf alle anderen Dienste, die über diesen Account verwendet werden. Entscheidet man sich also dafür, einen dieser Dienste zur Authentifizierung von anderen Diensten zu nutzen, ist besondere Vorsicht geboten. Auch andere Anmeldungen wie Zugriffe auf Vermögen oder medizinische Anwendungen sind besonders sicherheitsrelevant. Es bietet sich dann an, einen zusätzlichen Faktor für die Authentifizierung zu verwenden. Dies nennt man Zwei-Faktor-Authentifizierung (2FA). Das bedeutet, dass zwei voneinander unabhängige Nachweise für die Identität erbracht werden müssen. Übung Weißt du, wie kritische Dienste wie Onlinebanking gesichert sind? Kennst du Faktoren, mit denen Überweisungen zusätzlich geschützt werden?

Prinzipiell unterscheidet man drei Arten von Authentifizierungsfaktoren: 1. Geheimes Wissen, beispielsweise Passwörter, PIN oder Muster 2. Physische Besitzobjekte, beispielsweise ein Token, eine Magnetkarte oder ein TAN-Generator 3. Eindeutige physische Merkmale oder biometrische Daten, beispielsweise Fingerabdrücke, Stimme oder Gesicht

97 Kapitel 11 · Authentifizierung

11

Im europäischen Bankwesen hat die EU die Zwei-Faktor-Authentifizierung 2018 verpflichtend eingeführt. Das Einloggen geschieht mit geheimem Wissen in Form eines Passworts oder einer PIN und anschließend ist noch ein physisches Besitzobjekt nötig, wenn eine Transaktion ausgeführt wird. Dies kann eine App auf dem Handy sein, die speziell mit dem Banking gekoppelt ist, oder aber ein TAN-Generator, der in Verbindung mit einer Bankkarte funktioniert. Dies hat den Vorteil, dass unberechtigte Personen sowohl Zugriff auf das Passwort als auch auf die Karte haben müssen, um das Onlinebanking nutzen zu können. Eine Attacke auf den Rechner, der zum Onlinebanking verwendet wird, reicht somit nicht aus. Wird allerdings ein Handy zum Banking genutzt und eine dort installierte App zur Verifikation verwendet, handelt es sich nicht mehr um eine Zwei-Faktor-Variante. Eine Infektion des Smartphones reicht aus, um alle relevanten Sicherheitsmerkmale auszuspähen. Um mit dem Handy trotzdem Überweisungen sicher tätigen zu können, sind TAN-Generatoren über physische Merkmale zusätzlich geschützt. Ein Fingerabdruckscan oder ein weiteres zusätzliches Passwort wird benötigt, um eine TAN zu generieren. Dies ist zwar umständlicher, bietet aber deutlich erhöhte Sicherheit. Auf Smartphones setzen sich biometrische Daten immer mehr durch. Selbst mittelpreisige Smartphones haben oft einen Fingerabdruckscanner und bieten damit eine deutlich angenehmere Art zur Displayentsperrung als die PIN-Eingabe oder das Zeichnen eines Musters. Die aktuellen Modelle aus dem hochpreisigen Segment bieten allerdings auch schon die Entsperrung mittels Gesichtserkennung an. Der große Vorteil daran ist, dass keine Passwörter oder Muster gemerkt werden müssen. Eine weitere neue Art sich zu authentifizieren ist FIDO2 (Abkürzung für Fast IDentity Online 2). Dahinter verbergen sich die Onlineschwergewichte wie Microsoft, Facebook, Google und die weltweit größten Finanzdienstleister Visa, Mastercard und PayPal. Verschiedene Medien bezeichnen den FIDO2-Standard bereits als Passwortnachfolger, wie unter anderem im Spiegel und in der c’t geschrieben wurde. Generell handelt es sich aber dabei um ein neues Verfahren, mit dem man sich bei Webdiensten registrieren und auch anmelden kann. FIDO2 kann sowohl als Passwortersatz als auch als zweiter Faktor verwendet werden. Benötigt wird ein Authenticator (Echtheitsbestätiger), beispielsweise ein USB-Stick. Dieser funktioniert dann ähnlich wie ein Haustürschlüssel, nur eben für das Internet. Falls bei Internethändlern ein Authenticator nicht gefunden wird, helfen auch die Schlagwörter Token oder auch Sicherheitsschlüssel bei der Suche. Ein (Security-) Token ist eine Hardwarekomponente zur Identifizierung und Authentifizierung von Benutzern und nicht zwingend nur auf FIDO2 beschränkt. Das sichere Einloggen ohne Passwort funktioniert damit bereits bei einigen wenigen großen Diensten wie beispielsweise 7 https://www.outlook.com, Office 365 oder OneDrive. Als zweiter Faktor dagegen lässt er sich schon bei vielen weiteren Diensten verwenden, beispielsweise Dropbox, Google, GitHub oder auch Twitter. Ein großer Vorteil von FIDO2 ist, dass für jeden Anbieter ein anderer interner Sicherheitsschlüssel verwendet wird, sodass für Anbieter nicht ersichtlich ist, dass eine Person mit ihrem Schlüssel mehrere Dienste nutzt. Besondere Umsicht gilt dann natürlich für diesen USB-Stick. Ein Diebstahl erlaubt dann nämlich den Zugriff auf alle verwendeten Dienste. Es sollte in diesem Fall der Zugang aller mit diesem Stick gesicherten Dienste gesperrt werden. Auch um einem Verlust oder Versagen des Sticks und

98

11

Kapitel 11 · Authentifizierung

dem Verlust des Account-Zugriffs vorzubeugen, sollte es einen Reserveschlüssel geben. Dies kann auch ein virtueller Schlüssel sein, der beispielsweise auf einem Android-Smartphone hinterlegt werden kann. Auch wenn dieses Verfahren noch jung ist, wird es trotzdem wegweisend für die Zukunft sein. Wir haben in dieser und in der vorangegangenen Stunde die wichtigsten Mechanismen der Informationssicherheit kennengelernt. Darüber hinaus gibt es noch viele weitere, die an dieser Stelle nicht vertieft werden können, unter anderem Backups, Logging, Monitoring (siehe 7 Kap. 28 IT-Betrieb) und Autorisierung. Autorisierung bezeichnet die Zuweisung von Rechten, etwa Zugriffsrechte auf bestimmte Daten oder Funktionen einer Software. Authentifizierung sollte nicht mit Autorisierung verwechselt werden. Es gibt allerdings einen Zusammenhang, da nur authentifizierte Personen auch autorisiert werden können. Authentifizierung und Autorisierung sind nicht nur für Personen, sondern auch für Programme relevant. Wir haben in dieser Stunde bereits über Autorisierung gesprochen, ohne diesen Begriff zu verwenden. Nämlich als die Möglichkeit beschrieben wurde, Zugriffsrechte von Diensten mittels OAuth zu steuern. Ein weiteres bekanntes Beispiel für die Autorisierung von Programmen ist die Berechtigungssteuerung auf dem Smartphone, wie in . Abb. 11.2 dargestellt. ? Wieso wird Authentifizierung benötigt, um Vertraulichkeit zu gewährleisten? Welche Ratschläge erteilt das BSI für die Erstellung von Passwörtern? Welche Vor- und Nachteile bringt die Authentifizierung durch einen Plattformanbieter mit sich? Was sind konkrete Beispiele für eine Zwei-Faktor-Authentifizierung? Wie erfolgt eine Authentifizierung nach dem FIDO2-Standard?

. Abb. 11.2 Berechtigungsanfrage für Kamerafunktion

99

Webhosting

© Springer Fachmedien Wiesbaden GmbH, ein Teil von Springer Nature 2024 T. Eichstädt und S. Spieker, 52 Stunden Informatik, https://doi.org/10.1007/978-3-658-41838-0_12

12

100

12

Kapitel 12 · Webhosting

Die Bereitstellung von Webseiten wird Webhosting genannt. Eine Webseite kann auf dem eigenen Computer bereitgestellt werden, in der Regel übernimmt das aber ein Webhoster. Um eine neue Webseite einzurichten, wird zunächst eine Domain benötigt. Gebräuchlich ist auerdem der Begriff der URL für eine Webadresse. Die URL hat verschiedene Bestandteile. Auf höchster Ebene der Namensauflösung steht die Top-Level-Domain. Die Top-Level-Domain weist auf einen Staat oder eine spezielle Verwendung von Webadressen hin. Es gibt diverse Kriterien bei der Auswahl des Webhosting-Anbieters und eines der angebotenen Pakete. Viele Privatpersonen und Unternehmen verwenden ein CMS zur Erstellung und Pflege von Webseiten. Jede im Internet bereitgestellte Webseite muss ein Impressum und eine Datenschutzerklärung beinhalten. In vorangegangenen Stunden haben wir gelernt, wie Webseiten aufgebaut sind, wie sie erstellt und angezeigt werden. An dieser Stelle soll aber behandelt werden, wer eine solche Webseite zur Nutzung zur Verfügung stellt und wie das genau abläuft. Die Bereitstellung von Webseiten wird Webhosting genannt. Webhoster sind Unternehmen, die Speicherplatz, Übertragung und Erreichbarkeit der Daten auf einem unternehmenseigenen Webserver als Service gegen Entgelt anbieten. Alternativ kann eine Webseite auch privat bereitgestellt, also „gehostet“ werden. Der Computer, der die Webseite anbietet, wird dann zum Webserver (vergleiche . Abb. 8.1). Wer das eigenständig tut, muss einiges beachten. Zunächst ist eine statische IP-Adresse notwendig, unter der die Webseite erreichbar sein soll. Außerdem ist eine schnelle und stabile Internetverbindung wichtig, um die Verfügbarkeit zu gewährleisten. Natürlich muss der Zugriff vom Internet auf den eigenen Rechner netzwerktechnisch durch entsprechende Firewall-Einstellungen erlaubt werden, damit die Seite überhaupt aufrufbar ist. Das bringt wiederum einige Gefahren mit sich. Um sich gegen Angriffe zu schützen, ist es sehr wichtig, das System aktuell zu halten und Sicherheitsmechanismen wie Zertifikate (vergleiche 7 Kap. 10 Informationssicherheit) einzurichten. Auch sollte man sich über ein Backup, also eine Sicherung der Daten, Gedanken machen. Das gilt nicht nur, aber insbesondere für Webseiten. Denn es kann leicht passieren, dass durch einen Angriff, einen Hardwareausfall oder eine Unachtsamkeit Daten verloren gehen. Idealerweise passiert das Backup automatisch und auf einem separaten System, das im Schadensfall unbetroffen ist und zur Wiederherstellung dienen kann. Das beschriebene Vorgehen ist komplex und kann auch schnell teuer werden. Deshalb kommt es für Privatpersonen, aber auch für viele kleine und mittelgroße Unternehmen nicht infrage, eigene Webserver zu betreiben. Wer also eine Webseite veröffentlichen möchte, vertraut in der Regel auf einen Webhoster. In beiden Fällen wird zum Bereitstellen der Webseite eine Domain benötigt. Eine Domain (Bereich) ist ein Teilbereich des DNS. Ganz einfach ausgedrückt, ist die Domain nichts anderes als der Name, unter dem eine oder mehrere Webseiten im Internet zu finden sind. Gäbe es keine Domain, müssten alle Besucher die IP-Adresse des Webservers kennen! Für Webadressen ist auch der Begriff URL gebräuchlich. Ein Uniform Resource Locator (einheitlicher Ressourcenzeiger) identifiziert eine Webadresse, beispielsweise 7 https://www.google.com/maps/place/München.

101 Kapitel 12 · Webhosting

12

Übung Versuchen wir doch einmal, die Begrifflichkeiten anhand eines Beispiels in die Komponenten zu zerlegen: Ordne die Bestandteile der URL 7 https://www.google.com/ maps/place/München, also 1. 2. 3. 4. 5.

https:// www. google .com /maps/place/München

den folgenden Begriffen zu: A. B. C. D. E.

Top-Level-Domain Domain Pfad Verwendetes Protokoll Subdomain

Wenn du die Antwort nicht kennst, rate.

Der erste Teil der URL bezeichnet das verwendete Protokoll (https). Die Subdomain (www.) und die Domain (google) werden nachrangig, also nach der TopLevel-Domain (.com), ausgewertet. Die Top-Level-Domain stellt demzufolge die höchste Ebene der Namensauflösung im Internet dar. Gelesen werden die URLBestandteile also von rechts nach links, beginnend mit der Top-Level-Domain. Alles, was rechts der Top-Level-Domain steht, ist der Pfad auf eine Unterseite oder einen speziellen Inhalt. In . Abb. 12.1 sind die verwendeten Komponenten zum besseren Verständnis einzeln aufgeschlüsselt. Um eine neue Webseite erreichbar zu machen, wird zunächst eine eigene Domain innerhalb einer Top-Level-Domain benötigt.

. Abb. 12.1 Komponentenaufschlüsselung einer Adresse

102

Kapitel 12 · Webhosting

Übung Welche Top-Level-Domains kennst du und hast du dir eigentlich schon einmal Gedanken über deren Bedeutung gemacht? Liste die dir bekannten Top-Level-Domains auf. Wofür stehen die Buchstaben?

12

In . Tab. 12.1 sind wichtige Top-Level-Domains aufgelistet. Manche Top-Level-Domains weisen darauf hin, dass eine Webadresse einem bestimmten Staat zugeordnet ist. Andere wiederum deuten auf eine spezielle Verwendung hin, beispielsweise war früher „.org“ nur nichtkommerziellen Organisationen vorbehalten. Mittlerweile sind die meisten Top-Level-Domains frei verfügbar. Das heißt, die Endung hat nicht immer eine Bedeutung, sie kann aber einen Hinweis auf die Herkunft oder den Zweck einer Domain geben. In der logischen Ordnung einer Webadresse folgt nach der Top-Level-Domain die Domain, die den Namen eines Webauftritts angibt. Zuletzt können noch eine oder mehrere Subdomains folgen. Eine Subdomain ist eine weitere logische Untergliederung des Adressraums. Es gibt Konventionen für die Verwendung von Subdomains. Am gebräuchlichsten ist die Subdomain „www.“ die anzeigt, dass es sich um einen Auftritt im World Wide Web handelt. Häufig beobachtet man auch die Subdomain „m.“, was darauf hinweist, dass die mobile Variante einer Webseite vorliegt. Die tatsächliche Verwendung von Subdomains obliegt aber dem Eigentümer der Domain. Das heißt, es gibt keine festen Regeln, die eingehalten werden müssen. Wird eine Domain registriert, passiert das über eine zentrale Registrierungsstelle. Wer wissen möchte, ob eine Domain noch verfügbar ist, kann einen speziellen Dienst verwenden, der über alle Top-Level-Domains Auskunft gibt: 7 https:// www.checkdomain.de/. . Tab. 12.1 Auflistung wichtiger Top-Level-Domains Top-Level-Domain

Bedeutung

Staat

Registry

.com

Commercial

-

VeriSign

.de

-

Deutschland

DENIC

.net

Network

-

VeriSign

.cn

-

Volksrepublik China

CNNIC

.org

Organization

-

PIR

.uk

-

Vereinigtes reich

König-

Nominet

103 Kapitel 12 · Webhosting

12

Übung Denke dir einen Namen für eine Domain aus. Rufe die Webseite 7 https://www. checkdomain.de/ auf und überprüfe, ob die Domain bereits vergeben ist.

Der Preis variiert bei den Top-Level-Domains. Es gibt günstige, aber auch teure. Technisch gesehen ist die Wahl der Domain vollkommen irrelevant. Große Unterschiede gibt es aber bei den Webhostern und den von ihnen angebotenen Dienstleistungen. In der Regel werden die Dienstleistungen in Paketen angeboten, die oft bereits eine oder sogar mehrere Domains enthalten. Kriterien bei der Auswahl des Webhosters können sein: 5 Hosting-Modelle (bedeutende Unterschiede kann es in der Organisation der verwendeten Server geben, zum Beispiel, ob diese von mehreren Kunden geteilt werden oder nicht) 5 Zusatzservices (auch solche, die Sicherheitsaspekte betreffen, wie automatische Updates, Verschlüsselung oder Backups) 5 Support 5 Preis 5 Zuverlässigkeit 5 Ausfallzeiten in der Vergangenheit Abb. 12.2 zeigt eine Übersicht über die meistgenutzten Webhoster Deutschlands. Wer schließlich einen Webhoster gefunden und eine Domain registriert hat, kann eine selbst programmierte Webseite im Internet bereitstellen. In der Praxis ist es sehr aufwendig, eine Webseite von Grund auf selbst zu erstellen. Auch die manuelle Pflege von Eigenentwicklungen ist sehr zeitintensiv. Daher verwenden Privatpersonen und auch Unternehmen in vielen Fällen ein CMS, ein sogenanntes Content-Management-System (Inhaltsverwaltungssystem). Das CMS ist eine Software zur Erstellung und Pflege von Webseiten. Mithilfe einer derartigen Software können komplexe Webseiten ohne oder mit nur wenig Programmierkenntnissen erstellt und bearbeitet werden. In . Tab. 12.2 ist eine Übersicht über die Marktanteile von CMS-Software aus dem Jahr 2019 dargestellt. Die Quelle ist 7 https://www.hostpress.de/wordpressmarktanteil/. WordPress ist der derzeitige Marktführer für die Erstellung von Webseiten. Die anderen CMS fallen in der Beliebtheit deutlich ab. Es gibt aber noch weitere sehr erfolgreiche CMS, die in der dargestellten Tabelle nicht aufgelistet sind. Die Webseite zu diesem Buch wurde mit WordPress erstellt und durch den Webhoster Hetzner bereitgestellt. 5 Webseite zu diesem Buch 7 https://www.52-stunden-informatik.de/

104

Kapitel 12 · Webhosting

12

. Abb. 12.2 Übersicht der bekanntesten Webhoster in Deutschland

. Tab. 12.2 Marktanteil von CMS-Software Alle Webseiten

CMS-Markt

WordPress

34,0 %

61,0 %

Joomla

3,0 %

5,4 %

Drupal

1,9 %

3,5 %

Squarespace

1,5 %

2,7 %

Wix

1,0 %

1,8 %

105 Kapitel 12 · Webhosting

12

Die tatsächliche Erstellung einer Webseite mit einem CMS und deren Veröffentlichung bei einem Webhoster soll in diesem Buch nicht näher beschrieben werden. Anstelle einer langwierigen Klickanleitung sei hier auf diverse Quellen im Internet verwiesen. Es gibt dazu zahlreiche Tutorials. Manche sind kurz, andere wiederum sehr ausführlich. Es ist nicht schwierig, eine eigene Webseite zu erstellen und diese ins Internet zu bringen. >

Kostenloses Erstellen einer Webseite mit Joomla 7 https://launch.joomla.org/ Webhosting mit Hetzner 7 https://www.hetzner.de Alternative für kostenloses Webhosting 7 https://de.000webhost.com/ (wer sparen möchte, darf sich über Werbung und Einschränkungen nicht beklagen) Beispielhaft ein Blog mit Infos zur Erstellung von Webseiten 7 https://www. blogmojo.de/website-erstellen/ Beispielhaft ein YouTube-Tutorial zur Erstellung von Webseiten mit WordPress 7 https://www.youtube.com/watch?v=kj20n1Np8v0

Neben dem Erstellen der Inhalte einer Webseite ist auch das Erstellen von Konzept und Design ein nicht zu unterschätzender Aufwand. Wir wenden uns diesen Aspekten verstärkt in 7 Kap. 50 User Experience zu. Unabhängig vom Zweck der Webseite gibt es Inhalte, die auf keiner Webseite fehlen dürfen. Gemeint sind in erster Linie die Anbieterkennzeichnung, besser bekannt als Impressum, und die Datenschutzerklärung. Das Impressum soll sicherstellen, dass Nutzer wissen, mit wem sie es zu tun haben. Diese Richtlinien sind im Telemediengesetz und im Rundfunkstaatsvertrag verankert. Jeder, der eine Webseite im Internet betreibt, sollte sich auch um ein adäquates Impressum kümmern, allein um Abmahnungen vorzubeugen. Bei der Datenschutzerklärung verhält es sich ähnlich. Dazu mehr in der folgenden Stunde. >

Beispielhaft eine Erklärung zu Impressum und Datenschutzerklärung inklusive kostenlosem Generator 7 https://www.e-recht24.de/artikel/datenschutz/209. html

? Was ist bei der Bereitstellung einer Webseite zu beachten? Was sind Bestandteile einer URL? Welche Bedeutung hat die Top-Level-Domain „.com“? Welche Gründe gibt es für die Verwendung eines CMS? Was darf/sollte auf keiner Webseite fehlen?

107

Datenschutz

© Springer Fachmedien Wiesbaden GmbH, ein Teil von Springer Nature 2024 T. Eichstädt und S. Spieker, 52 Stunden Informatik, https://doi.org/10.1007/978-3-658-41838-0_13

13

108

13

Kapitel 13 · Datenschutz

Der Datenschutz nimmt in der Informatik und dementsprechend auch in diesem Buch einen hohen Stellenwert ein. Datenschutz spielt dann eine Rolle, wenn personenbezogene Daten gespeichert oder verarbeitet werden. Magebliche Bedeutung hat in diesem Zusammenhang die DSGVO, eine Verordnung der Europäischen Union. In Deutschland galt zuvor bereits das Bundesdatenschutzgesetz. Dadurch werden unter anderem Betreiber von Webseiten gegenüber dem Datenschutz verpflichtet. Betroffene Personen erhalten durch die DSGVO ein Auskunftsrecht. Bei Verstöen kann gegen Unternehmen ein Bugeld verhängt werden. In vielen Fällen sammeln Unternehmen Daten, um das Verhalten von Nutzern auszuwerten. Wenn solche Auswertungen anonymisiert stattfinden, stellen sie in der Regel keinen Konflikt zum Datenschutz dar. Datenschutzbeauftragte beraten und kontrollieren die Einhaltung des Datenschutzes. Das Thema Datenschutz wurde in den vorangegangenen Stunden bereits mehrfach erwähnt. Unter anderem in  Kap. 2 Suchmaschinen wurde erklärt, welche Personendaten große Technologieunternehmen speichern. Die  Kap. 8 Netzwerke und Protokolle hat aufgezeigt, dass es wichtig ist, ob und wie IP-Adressen im Internet zurückzuverfolgen sind. Auch in  Kap. 10 Informationssicherheit ging es darum, Daten zu schützen. In  Kap. 12 Webhosting fiel der Begriff Datenschutzerklärung. Der Datenschutz ist also ein zentrales Thema und besitzt im digitalen Zeitalter einen immensen Stellenwert. Maßgebliche Bedeutung hat in diesem Zusammenhang die DSGVO (Datenschutz-Grundverordnung). >

7 https://www.datenschutz-grundverordnung.eu/ 7 https://de.wikipedia.org/wiki/Datenschutz-Grundverordnung

Zunächst empfiehlt es sich, sich mit den Grundsätzen der DSGVO vertraut zu machen. Doch ebenso wichtig ist es, zu verstehen, wofür die DSGVO überhaupt da ist. Im ersten Artikel der Datenschutz-Grundverordnung heißt es: „Diese Verordnung schützt die Grundrechte und Grundfreiheiten natürlicher Personen und insbesondere deren Recht auf Schutz personenbezogener Daten.“ Datenschutz spielt also immer dann eine Rolle, wenn personenbezogene Daten gespeichert oder verarbeitet werden. Übung Welche personenbezogenen Daten kennst du? Nenne Beispiele.

Nach Artikel vier der DSGVO sind personenbezogene Daten alle Informationen, die sich auf eine identifizierbare natürliche Person beziehen. Es handelt sich also um Daten, die einen direkten Personenbezug erlauben. Beispiele dafür sind 5 Name, 5 Geburtsdatum, Alter, 5 Adresse, E-Mail-Adresse, 5 Telefonnummer, 5 Biometrische Daten (Fotos, Fingerabdrücke), 5 Krankendaten,

109 Kapitel 13 · Datenschutz

5 5 5 5 5 5

13

Kfz-Kennzeichen, Bankdaten, IP-Adressen, Cookies, Personalausweisnummer und Vorstrafen.

Der Schutz der Privatsphäre ist dem Menschen schon immer ein Anliegen gewesen. Es gibt daher eine lange Tradition von Bestimmungen zum Schutz personenbezogener Daten, wie beispielsweise das Beichtgeheimnis, die ärztliche Schweigepflicht, das Steuergeheimnis oder die Verschwiegenheitspflicht von Anwälten. Demgegenüber steht das Phänomen, dass riesige Mengen an Daten global gespeichert und maschinell verarbeitet werden. Die DSGVO findet erst seit dem 25. Mai 2018 Anwendung. Hier muss allerdings angemerkt werden, dass es sich bei der DSGVO um eine Verordnung der Europäischen Union handelt. Auf nationaler Ebene gab es bereits vielfach entsprechende Gesetze. In Deutschland gilt das Bundesdatenschutzgesetz (BDSG), das ebenfalls den Umgang mit personenbezogenen Daten regelt. Es existiert bereits seit 1977, wurde aber zeitgleich mit der DSGVO aktualisiert. In der DSGVO und dem BDSG sind eine Vielzahl an Informationspflichten enthalten. Ein Beispiel dafür ist die bereits angesprochene Angabe der Datenschutzerklärung. Außerdem folgen sowohl DSGVO als auch BDSG dem Prinzip des Verbots mit Erlaubnisvorbehalt. Das bedeutet, dass jede Verarbeitung personenbezogener Daten zunächst grundsätzlich verboten ist. Es sei denn, es wird ausdrücklich eine Erlaubnis ausgesprochen, die Datenverarbeitung für zulässig erklärt. Ein bekanntes Beispiel sind Cookies. Sicherlich sind jedem die diversen CookieBenachrichtigungen auf Webseiten bekannt. Damit holt sich der Webseitenbetreiber die Erlaubnis, personenbezogene Daten speichern zu dürfen. In der Benachrichtigung wird darüber informiert, dass für eine uneingeschränkte Nutzung der Webseite Cookies notwendig sind. Dann folgen die Buttons „Akzeptieren“ oder „Ablehnen“. Manchmal gibt es auch mehrere Auswahlmöglichkeiten oder auch nur einen einzigen „Ok“-Button. Manche Seiten unterbinden die Anzeige, wenn man der Cookie-Nutzung nicht zustimmt. Übung Besuche die Webseite 7 https://schokoladenseite.net/blog/dsgvo-cookie-hinweisnach-eu-richtlinie/. Sieh dir die Cookie-Benachrichtigung genau an (vergleiche . Abb. 13.1). Liest du dir derartige Benachrichtigungen in der Regel durch oder klickst du diese sofort weg? Nach welchen Kriterien entscheidest du, ob du Cookies zulässt?

110

Kapitel 13 · Datenschutz

13

. Abb. 13.1 Datenschutzeinstellungen beim Besuch einer Webseite

Betreiber von Webseiten haben also eine Verpflichtung dem Datenschutz gegenüber. Doch für wen spielt Datenschutz noch eine Rolle? Auch viele Behörden und andere private Stellen (wie beispielsweise Ärzte oder Vereine) kommen häufig mit privaten Daten in Kontakt. Oft ist uns das gar nicht wirklich bewusst. Übung Wer verfügt über personenbezogene Daten von dir? Liste fünf Beispiele auf. Hast du der Speicherung und Verwendung deiner Daten zugestimmt?

Hier ein paar mögliche Beispiele: 1. Werden Messenger, soziale Netzwerke, Streaminganbieter oder Spieleplattformen genutzt, hat man sich zuvor registriert und den Nutzungsbedingungen zugestimmt. Teilweise kann der Aufzeichnung und Verwendung persönlicher Daten im Nachhinein in den Einstellungen widersprochen werden. So oder so entstehen oft umfangreiche Aufzeichnungen zu dem Profil und dem Verhalten des Kunden. Diese können vom Anbieter selbst verwendet oder auch an Dritte weitergegeben werden. Die Nutzungsbedingungen enthalten nicht selten Regelungen, die der DSGVO widersprechen. Zumindest in der Theorie gilt die DSGVO zwar auch für Unternehmen außerhalb Europas, sobald diese ihre Dienstleistungen in Europa anbieten und das Nutzungsverhalten von Personen der EU beobachten. In der Praxis ist die Wirksamkeit der Datenschutzbestimmungen ein juristischer Streitpunkt zwischen nationalen und internationalen Behörden und ausländischen Unternehmen.

111 Kapitel 13 · Datenschutz

13

2. Onlineshops benötigen zur Abwicklung eines Kaufs persönliche Daten. Spätestens beim Kauf, aber oft bereits bei der Registrierung wird den Nutzungsbedingungen zugestimmt. In  Kap. 32 Softwarelizenzierung behandeln wir mehr zum Thema Nutzungsbedingungen. 3. Ämter und Behörden nutzen oft große Mengen personenbezogener Daten, häufig ohne, dass dem zugestimmt wurde. Für den Staat sind diese Daten sehr wichtig. So weiß etwa das Einwohnermeldeamt, welche Personen unter welcher Adresse gemeldet sind. Es gibt also ein öffentliches Interesse und sogar gesetzliche Vorschriften zur Speicherung personenbezogener Daten. Dennoch müssen sich natürlich auch staatliche Behörden und Institutionen an die geltenden Regelungen zum Datenschutz halten, wenn Ausnahmen nicht explizit gesetzlich geregelt sind. 4. Jede Verbindung ins Internet wird von einem Telekommunikations-/ Internetdienstleister vermittelt. Auch hier muss man per Vertrag den Bedingungen des Anbieters zustimmen. Dazu kommt, dass diese Anbieter nach aktuell rechtlicher Lage durch die sogenannte Vorratsdatenspeicherung verpflichtet sind, bestimmte Verbindungen zu speichern und diese auf richterlichen Beschluss an Behörden weiterzugeben. Allerdings hat jede Person ein Recht darauf, zu erfahren, wer welche persönlichen Daten zur eigenen Person gespeichert hat. Die DSGVO beinhaltet nämlich nicht nur Regeln für die Datenverarbeiter, sondern auch explizite Rechte für die betreffenden Personen. Insbesondere gilt hier das Auskunftsrecht. Dieses stellt sicher, dass auf Anfrage Auskunft darüber erteilt werden muss, ob personenbezogene Daten einer Person verarbeitet wurden und zu welchem Zweck. Auch eine Weitergabe dieser an Dritte bedarf der vorherigen Zustimmung. Doch was passiert, wenn sich Unternehmen nicht an die geltenden Datenschutzbestimmungen halten? Es gibt Anwaltskanzleien, die sich auf Abmahnungen den Datenschutz betreffend spezialisiert haben. Deshalb ist es so wichtig, sich bei jeder Webseite, gerade bei selbst erstellten, an die Informationspflichten zu halten. Denn im schlechtesten Fall kann eine Nachlässigkeit angezeigt und mit erheblichen Geldbußen geahndet werden. Bei schwerwiegenden Rechtsverstößen eines Unternehmens kann die zuständige Aufsichtsbehörde ein Bußgeld von bis zu 4 % des weltweiten Jahresumsatzes verhängen. Ein Beispiel für ein in Deutschland rechtskräftig verhängtes Bußgeld waren die Datenschutzverstöße von Delivery Hero im September 2019. Der Lieferdienst hatte unerlaubterweise massenhaft personenbezogene Daten gespeichert und verarbeitet. Zudem wurden Anfragen von Betroffenen nicht oder nur unzureichend beantwortet.  https://netzpolitik.org/2019/berliner-datenschutzbehoerde-verhaengt-bisherhoechstes-dsgvo-bussgeld-gegen-lieferdienst/ Um die Problematik des Datenschutzes etwas greifbarer zu machen, hier ein kleines Beispielszenario:

112

Kapitel 13 · Datenschutz

Übung

13

Stell dir vor, du arbeitest für das Unternehmen SchoolAid. SchoolAid stellt Software für Schüler bereit. Du hast eine App entwickelt, die Stundenpläne im Webbrowser anzeigen kann. Jeder Schüler, der die App nutzen möchte, muss dafür einen Euro im Monat bezahlen. Du erfasst also persönliche Daten der Nutzer, um die Finanzierung der App zu ermöglichen. Eines Tages kommt der Chef von SchoolAid zu dir und sagt: „Für unsere Geschäftsstrategie muss ich genau wissen, in welchem Alter und zu welchem Zeitpunkt die Schüler unsere App nutzen. Bitte exportiere die Daten aller Nutzer und stelle diese zur Nutzung bereit. Die Analyse der Nutzerdaten wird durch ein externes Unternehmen erstellt.“ Bei diesem Szenario konzentrieren wir uns nur auf den Aspekt des Datenschutzes. Annahme ist, dass die App SchoolAid rechtlich einwandfrei entwickelt, lizenziert und betrieben wird. Es geht hier ausschließlich um die Frage der Bereitstellung von Nutzerdaten. Wie antwortest du deinem Vorgesetzten? Stellst du Nutzerdaten bereit? Kannst du diese Daten ohne Weiteres zur Verfügung stellen? Überlege genau, was du tun darfst und was nicht. Mit welcher Begründung argumentierst du?

Wie anfangs erwähnt, gibt es gesetzliche Verpflichtungen, aufgrund derer Behörden und Unternehmen personalisierte Daten speichern. In anderen Fällen sind bestimmte Daten zwingend notwendig für ein Geschäftsmodell oder die Erfüllung von Lizenzverträgen. Immer mehr Unternehmen haben aber auch ein eigenes Interesse an Daten und deren Auswertung. Wie im Beispielszenario beschrieben, erlauben Daten und deren Analyse die Optimierung von Geschäftsprozessen (beispielsweise personenbezogene Werbung). In einigen Fällen ist dafür eine individualisierte Nutzungsauswertung notwendig, die zu Verstößen beim Datenschutz führen kann. Meist ist aber eine anonymisierte Analyse bereits ausreichend, die in aller Regel keinen Konflikt mit dem Datenschutz darstellt. Anonymisierung bedeutet, dass personenbezogene Daten derart verändert werden, dass die Identifikation einer Person nicht mehr möglich ist. Beispielsweise durch das Ersetzen des Namens durch eine ID oder ein Pseudonym. Eine weitere Möglichkeit ist das Zusammenfassen mehrerer Personen zu einer Gruppe. In Datenschutzerklärungen und Nutzungsbedingungen wird oft auf die Praxis der Anonymisierung hingewiesen. Unter solchen Einschränkungen ist es denkbar und erlaubt, dass im beschriebenen Beispielszenario eine Datenanalyse oder sogar eine Weitergabe der Daten an Dritte stattfindet. Kommt es zu einem Konflikt mit dem Datenschutz, wird das „berechtigte Interesse“ des Verantwortlichen abgewogen. Berechtigtes Interesse bedeutet, dass gute Gründe vorliegen, die das Handeln nachvollziehbar erklären. Beispiele in diesem Kontext wären: 5 Die Administration einer Software erfordert es, Nutzerdaten zu erfassen, um lizenzrechtliche Bedingungen erfüllen zu können. 5 Das Monitoring einer zentralen Unternehmens-Firewall ist sicherheitskritisch. Hier sind personalisierte Logs notwendig, um bei einem sicherheitskritischen Vorfall schnell und gezielt handeln zu können.

113 Kapitel 13 · Datenschutz

13

Beim berechtigten Interesse handelt es sich nicht um strikte gesetzliche Regelungen. Sollte es zu einer Beschwerde kommen, würden Verstoß und Begründung des Handelns gegeneinander aufgewogen. Obige Beispiele würden wahrscheinlich als legitim beurteilt, außer zum Beispiel, personalisierte Logs würden jahrelang aufbewahrt, was vermutlich schlecht mit einem berechtigten Interesse zu begründen wäre. Es ist nicht immer einfach zu beurteilen, wo beim Datenschutz moralische und rechtliche Grenzen verlaufen. Im Zweifelsfall hilft der zuständige Datenschutzbeauftragte weiter. Ein Datenschutzbeauftragter ist eine fachkundige Person, die innerhalb einer Organisation auf die Einhaltung des Datenschutzes hinwirkt. Diese Person kann der Organisation selbst angehören oder aber extern bestellt werden. Laut Bundesdatenschutzgesetz muss jedes Unternehmen, in dem mindestens zehn Personen ständig mit der automatisierten Verarbeitung personenbezogener Daten beschäftigt sind, einen Datenschutzbeauftragten benennen. Die Einhaltung des Datenschutzes erfordert vielerlei Abwägungen, zusätzlichen Aufwand, teils erhebliche Einschränkungen und Kosten. Es ist also nur folgerichtig, dafür auch Personen dediziert auszubilden und zu benennen. Kritiker der geltenden Datenschutzbestimmungen in Europa führen ins Feld, dass die Regelungen in anderen Regionen der Welt deutlich weniger streng sind und einen maßgeblichen Wettbewerbsnachteil darstellen. Regelmäßige Kontroversen gibt es auch bezüglich der Speicherung und Verwendung personenbezogener Daten zur Kriminalitätsbekämpfung. Dem gegenüber steht die Überzeugung, dass in einer zunehmend digitalisierten Welt die informationelle Selbstbestimmung immense Bedeutung erlangt und strenger Datenschutz notwendig ist, um Überwachung und Kontrolle durch Staaten und Wirtschaft zu verhindern. Infolge der DSGVO diskutieren auch Staaten außerhalb Europas, ähnliche Konstrukte einzuführen, um ebenfalls die Rechte ihrer Bürger zu stärken. Übung Diskutiere mit Freunden, Familie, Schülern und Lehrern die Vor- und Nachteile strenger Datenschutzbestimmungen.

? Wofür steht DSGVO? Was sind Beispiele für personenbezogene Daten? Wie unterscheiden sich das Bundesdatenschutzgesetz und die DSGVO? Was sind Beispiele, bei denen personenbezogene Daten erfasst werden? Wann und aus welchem Grund wird Anonymisierung angewendet?

115

Rechnerarchitektur

© Springer Fachmedien Wiesbaden GmbH, ein Teil von Springer Nature 2024 T. Eichstädt und S. Spieker, 52 Stunden Informatik, https://doi.org/10.1007/978-3-658-41838-0_14

14

116

14

Kapitel 14 · Rechnerarchitektur

Eine stark vereinfachte Beschreibung eines Computers ist die Von-NeumannArchitektur, die bereits 1945 entwickelt wurde. Sie enthält die CPU, einen Bus, eine Zwischenablage von Daten und die Ein-/Ausgabe. In der Praxis sind die zentralen Hardwarekomponenten eines Computers: Mainboard, Prozessor, Grafikkarte, RAM, Netzteil und ein permanentes Speichermedium. Auerdem werden Ausgabe- und Eingabegeräte benötigt. Diese sind häufig per USB angeschlossen. Bei einem Desktop-PC kann man die Hardware gefahrlos ansehen, indem man den Netzstecker zieht und das Gehäuse öffnet. Bei einem Smartphone lassen sich diverse Informationen zur Hardware in einer App anzeigen. Entscheidend für die Geschwindigkeit ist die Taktfrequenz, die angibt, wie oft Befehle von der CPU innerhalb einer Sekunde verarbeitet werden können. Wichtig ist auerdem die GPU, ein spezieller Prozessor, der für grafische Berechnungen optimiert ist. Viele Menschen verwenden jeden Tag einen Computer, ohne zu wissen, wie ein Computer aufgebaut ist. Um den Aufbau von etwas zu beschreiben, verwendet man auch den Begriff Architektur, wie bereits in  Kap. 8 Netzwerke und Protokolle erwähnt. Eine stark vereinfachte Beschreibung des Computers ist die Von-Neumann-Architektur, vom ungarischen Mathematiker John von Neumann im Jahre 1945 entwickelt. In . Abb. 14.1 ist diese schematisch abgebildet. Die Architektur setzt sich aus den folgenden Teilen zusammen: 5 Rechenwerk (ALU, Arithmetical Logical Unit) 5 Steuerwerk (CU, Control Unit) 5 Speicherwerk (Memory) 5 Ein-/Ausgabewerk (I/O-Unit) 5 Bus

. Abb. 14.1 Von-Neumann-Architektur

117 Kapitel 14 · Rechnerarchitektur

14

Die Central Processing Unit, kurz CPU (Zentralprozessor), ist das zentrale Element eines Computers. Es beinhaltet das Rechen- und das Steuerwerk. Das Rechenwerk, oft auch als ALU bezeichnet, ist für Berechnungen wie beispielsweise Additionen und Multiplikationen zuständig. Das Steuerwerk, abgekürzt mit CU, ist die eigentliche Verarbeitungseinheit. Diese führt die Programmlogik aus, unter anderem das Heranziehen von Daten aus dem Arbeitsspeicher. Die beiden Werke kommunizieren mithilfe eines Bussystems mit den angeschlossenen Komponenten (Ein-/Ausgabe- und Speicherwerk). Ein Bus ist ein System zur Datenübertragung zwischen verschiedenen Teilnehmern. Eine Besonderheit dabei ist, dass immer nur eine Komponente Daten senden kann, während alle anderen in derselben Zeit nur empfangen können. Dies ist dann oft der sogenannte Flaschenhals innerhalb eines Rechners. Der Bus limitiert also als Erster die Gesamtleistung des Systems und ist damit die schmalste Stelle, wie bei einer Flasche. Wie der Name schon sagt, ist das Ein-/Ausgabewerk für sämtliche Ein- und Ausgaben zuständig. Das kann ein angeschlossener Bildschirm (Ausgabegerät) sein oder auch eine Tastatur (Eingabegerät). Das Speicherwerk ist für die Zwischenablage beziehungsweise die temporäre Speicherung von Daten zuständig. Es ist aber nicht für die Speicherung auf den Festplatten zuständig, sondern es verwaltet tatsächlich nur den Arbeitsspeicher. Obwohl die Von-Neumann-Architektur ein sehr einfaches Modell ist, basieren auch heute noch die meisten Computer auf diesem Prinzip. Nach diesem theoretischen Einstieg in den Aufbau der Rechnerarchitektur liegt das weitere Augenmerk nun auf der praktischen Zusammensetzung eines Computers, der sogenannten Hardware. Als Hardware bezeichnet man die physikalischen Bestandteile eines Computers. Die Hardware eines PCs lässt sich relativ frei zusammenstellen. Die folgenden Komponenten spielen eine zentrale Rolle: 5 Mainboard (Hauptplatine): bietet Anschlussmöglichkeiten für weitere Hardware, beispielsweise einen Sockel für Prozessor oder Arbeitsspeicher 5 CPU/Prozessor: Kernrecheneinheit 5 Grafikkarte: entweder in der CPU integriert oder eine zusätzliche Komponente, die vor allem zur Video-/Bildverarbeitung oder für Computerspiele nötig ist 5 RAM/Arbeitsspeicher: Random Access Memory (Speicher für zufälligen Zugriff), nötig zum Zwischenspeichern von Programmcode und Daten für schnellen Zugriff 5 Netzteil: zur Stromversorgung 5 HDD: Hard disk drive (Festplattenlaufwerk) zur permanenten Speicherung von Daten und Programmen, aus magnetischen drehenden Platten aufgebaut, auf denen über einen beweglichen Schreib-Lese-Kopf Daten gelesen und geschrieben werden 5 SSD: Solid state drive (Halbleiterlaufwerk) ebenfalls zur permanenten Speicherung von Daten und Programmen, Zugriff jedoch um ein Vielfaches schneller

118

Kapitel 14 · Rechnerarchitektur

14

. Abb. 14.2 Übersicht über einen Desktop-PC

. Abb. 14.2 zeigt ein Foto eines geöffneten PCs. Die eigentliche CPU ist nicht zu sehen, da ein CPU-Kühler auf dieser montiert ist. Das DVD-Laufwerk ist von der Seite nur zu erahnen. Im Mainboard sind CPU, Arbeitsspeicher und Grafikkarte eingesteckt. Die Festplatte ist gut zu sehen, die eingebaute SSD ist deutlich kleiner und verschwindet im Gehäuse. Seit einiger Zeit gibt es auch SSD-Module, die direkt auf das Mainboard gesteckt werden können. Dies sind SSDs mit sogenanntem M.2Anschluss. Übung Vielleicht hast auch du einen Desktop-PC, den du dir einmal von innen ansehen kannst. ACHTUNG: Der Netzstecker muss vor dem Öffnen auf jeden Fall aus der Steckdose gezogen werden. Das Gerät darf keine Stromzufuhr mehr haben und sich nicht mehr einschalten lassen. Erst dann darfst du das Gehäuse öffnen. Zur Sicherheit fasst du besser nichts innerhalb des Rechners an, wenn du dich nicht gut auskennst.

Ein PC hat aber auch diverse weitere Komponenten, die an diesem angeschlossen werden können. Um mit einem PC arbeiten zu können, wird mindestens ein Ausgabegerät benötigt. Am wichtigsten ist wohl der Monitor. Es gibt noch eine Vielzahl weiterer Ausgabegeräte. Zum Beispiel können Lautsprecher angeschlossen werden, um Musik oder andere Audiodateien auszugeben. Mögliche Ausgabegeräte sind

119 Kapitel 14 · Rechnerarchitektur

14

5 5 5 5

Monitor, Lautsprecher, Drucker, Braillezeile zur Ausgabe von Zeichen in Brailleschrift (so ist es auch Blinden möglich, am Computer zu arbeiten), 5 Leuchtdioden am Gehäuse (z. B. Power-LED) und 5 Gamepad oder Joystick (Vibration oder Force-Feedback). Auch Eingabegeräte sind zwingend notwendig. In der Regel sind das Tastatur und Maus. Natürlich gibt es weitere Möglichkeiten, mit einem Computer zu interagieren. Z den Eingabegeräten gehören 5 Tastatur, 5 Maus oder Touchpad, 5 Joystick oder Gamepad, 5 Mikrofon, 5 Kamera und 5 Flachbettscanner oder Fingerabdruckscanner. Die meisten Ein- und Ausgabegeräte werden heute per USB, Universal Serial Bus (universeller serieller Bus), angeschlossen. Dieser Standard wurde 1996 in der Version 1.0 entwickelt und hat viele vorhergehende Verbindungsmöglichkeiten abgelöst. Die Datenrate, aber auch die übertragbare elektrische Energie hat sich mit jeder neuen USB-Version deutlich gesteigert, und zwar von ursprünglich 0,5 Watt, die zum Betrieb einer Tastatur oder einer Maus ausreichen, auf heute bis zu 100 Watt, mit denen eine größere Bandbreite an Geräten versorgt werden kann. Viele Mobilgeräte, wie Smartphones, nutzen USB heute auch zum reinen Aufladen des Akkus. Die Komponenten eines Smartphones sind denen eines Rechners sehr ähnlich, mit Ausnahme der Festplatte oder des DVD-Laufwerks, die dort nicht vorkommen. In mobilen Geräten stecken aber noch weitere zusätzliche Dinge, die durchaus variieren können. Eine schöne App, mit der sich diverse verbaute Komponenten und Sensoren samt ihren aktuellen Messwerten ansehen lassen, ist CPU-Z. . Abb. 14.3 zeigt zwei Screenshots der App auf dem Smartphone „Google Pixel 6“. Der erste Tab zeigt Informationen des System-on-Chip (Ein-Chip-System), abgekürzt mit SoC. Damit ist der Prozessor gemeint, der noch viele weitere elektronische Komponenten in sich vereint. Der verbaute Chip besitzt acht CPU-Kerne, sogenannte Cores. Er kann also acht Operationen parallel verarbeiten. Die Information, wie schnell jeder einzelne Prozessor rechnen kann, versteckt sich in der Angabe Clock Speed (Taktfrequenz). Die Taktfrequenz gibt an, wie oft Befehle von der CPU innerhalb einer Sekunde verarbeitet werden können. Bei dem ARM Cortex X-1 kann also die Taktfrequenz bis zu 2,8 GHz betragen, das sind 2,8 Mrd. Takte in einer Sekunde. Die meisten Berechnungen sind aber nicht innerhalb eines Taktes fertig berechnet. Es verhält sich wie bei einer schriftlichen Multiplikation, die einzelne Zwischenschritte erfordert, bis das Endergebnis feststeht. Der Nachteil des höheren Taktes besteht darin, dass der Strombedarf größer ist. Hat das Smartphone also viel zu berechnen, wird sich die Akkulaufzeit dementsprechend verkürzen. Aus diesem Grund haben manche

120

14

Kapitel 14 · Rechnerarchitektur

Smartphones, wie auch das hier gezeigte, verschiedene Arten von Kernen. Damit kann immer einer gewählt werden, der für die spezifische Aufgabe am wenigsten Akkulaufzeit kostet. Ein entscheidender Bestandteil der Grafikkarte ist die GPU, Graphics Processing Unit (Grafikprozessor). Dieser spezielle Prozessor ist für grafische Berechnungen optimiert. Er berechnet Operationen, die für die Videoverarbeitung notwendig sind. Besonders für die Darstellung von Spielen auf Smartphones ist dies eine wesentliche Komponente. Auf dem zweiten Tab der CPU-Z-App in . Abb. 14.3 sind Eigenschaften des Geräts dargestellt, wie beispielsweise die Screen-Resolution (Bildschirmauflösung) oder der RAM. Auch Informationen über den Speicher zur Ablage von Daten und Programmen werden hier zur Verfügung gestellt. Spannend ist aber auch die Sensorik, die in einem Smartphone verbaut ist. . Abb. 14.4 zeigt einen Teil dieser Sensorik, beispielsweise das Barometer, ein Sensor für den Luftdruck, oder das Magnetometer, das die magnetische Feldstärke anzeigt. Die Anzahl der Sensoren variiert je nach Handymodell. Unabhängig von der eigentlichen Hardware, stellt das Betriebssystem dabei all diese Daten den verschiedenen Anwendungen zur Verfügung. Darauf gehen wir in  Kap. 15 Betriebssysteme näher ein.

. Abb. 14.3 Screenshots der App CPU-Z für SoC und Device (Tab. 1 und 2)

121 Kapitel 14 · Rechnerarchitektur

. Abb. 14.4 Screenshot der App CPU-Z für Sensoren

Übung Vielleicht interessiert dich nun auch, was in deinem Smartphone alles verbaut ist. Installiere die App CPU-Z auf deinem Smartphone und sieh dir an, welche CPU darin verbaut ist und wie viel Arbeitsspeicher es hat. Schau auch auf den SensorenTab, wie sich die Sensordaten verändern, wenn du das Smartphone drehst oder den Lichtsensor abdeckst.

14

122

Kapitel 14 · Rechnerarchitektur

Sowohl in Rechnern als auch in einem Smartphone gibt es oft ein kleines Programm, das nur die Aufgabe hat, das Betriebssystem zu starten. Diese Komponente nennt sich Bootloader (Startprogramm). Bei PCs ist dieser Bestandteil eines UEFI, des Unified Extensible Firmware Interface (vereinheitlichte erweiterbare Firmwareschnittstelle). In diesem minimalen Betriebssystem können diverse Feineinstellungen für die verbauten Komponenten vorgenommen werden. Besonders interessant ist dies für jemanden, der seinen Rechner übertakten will, also den Taktgeber schneller betreibt, als es vom Hersteller vorgesehen ist. Das Übertakten des Rechners ist dabei mit dem Tuning an Autos vergleichbar. Für den normalen Anwender sind die Standardeinstellungen aber völlig ausreichend.

14

? Was ist eine Von-Neumann-Architektur? Was ist eine CPU? Welche Aufgabe hat ein Netzteil? Was sind Beispiele für Ein-/Ausgabegeräte beim PC? Was ist der Unterschied zwischen einer SSD und einer HDD? Was ist eine GPU und wozu wird diese verwendet?

123

Betriebssysteme

© Springer Fachmedien Wiesbaden GmbH, ein Teil von Springer Nature 2024 T. Eichstädt und S. Spieker, 52 Stunden Informatik, https://doi.org/10.1007/978-3-658-41838-0_15

15

124

15

Kapitel 15 · Betriebssysteme

Moderne Betriebssysteme ermöglichen die mühelose Bedienung der Benutzeroberfläche eines PC oder Smartphones. Die Beliebtheit der verschiedenen Betriebssysteme kann sich in wenigen Jahren stark verschieben. Es gibt auch einfache Betriebssysteme, die Mikrocontroller steuern. Meistens sind aber höher entwickelte Betriebssysteme gemeint. Ein Betriebssystem stellt eine Zwischenschicht zwischen Anwendungen und der darunterliegenden Hardware dar. Diese Aufgabe ist sicherheitsrelevant. Besonders wichtig ist das Scheduling, das festlegt, wann und wie viel CPU-Zeit die laufenden Prozesse zugeteilt bekommen. Bei Windows kann mit dem Task-Manager eine Übersicht aller laufenden Prozesse angezeigt werden. Auerdem verwaltet das Betriebssystem den Arbeitsspeicher und erlaubt Zugriff auf das Dateisystem. Es beinhaltet auch etliche Programme, die für die Nutzung eines Rechners notwendig oder zumindest nützlich sind. Das Betriebssystem bietet die Anzeige diverser Informationen und ermöglicht Anpassungen. Wenn heutzutage ein PC oder Smartphone verwendet wird, dann erfolgt die Bedienung der Benutzeroberfläche oft ganz selbstverständlich und mühelos. Dies war aber nicht immer so. Ein Blick in die Anfänge der Computer zeigt, dass es früher keine Betriebssysteme im heutigen Sinne gab. Dies lag einerseits an deren Bauweise, aber auch an deren eingeschränktem Einsatzgebiet. Doch mit der Erfindung und dem Einsatz des Transistors (1947) sowie der Erfindung der Mikroprogrammierung 1955 durch Maurice Wilkes wurden in der Folge nicht mehr nur Einzelmaschinen, sondern ganze Modellreihen eingesetzt. Zu dieser Zeit lieferte jeder Hersteller für die verschiedene Modellreihen seiner Produkte verschiedene Betriebssysteme. Bedingt dadurch liefen Programme nur auf bestimmten Modellreihen und mussten erst aufwendig auf eine andere Modellreihe portiert werden. Diesem Umstand war es geschuldet, dass Betriebssysteme als Zwischenschicht zwischen Anwendungen und den sich schnell weiterentwickelnden Rechnern etabliert werden mussten. Programme mussten dann bei einer Portierung kaum bis gar nicht mehr angepasst werden. An verschiedenen Stellen dieses Buches wurden Betriebssysteme bereits erwähnt. In  Kap. 10 Informationssicherheit wurden verschiedene Sicherheitsaspekte bei Betriebssystemen näher betrachtet und in der  Kap. 14 Rechnerarchitektur wurden bereits kleinere im PC verbaute Betriebssysteme erwähnt. Wenn allgemein von Betriebssystemen gesprochen wird, sind jedoch aber meist höher entwickelte Betriebssysteme gemeint. Übung Welche Betriebssysteme kennst du? Welche verwendest du regelmäßig?

Seit Einführung des Smartphones findet eine teilweise Verschiebung des Betriebssystems vom Desktop-PC zum mobilen Betriebssystem des Smartphones statt. Statistiken zum Surfen im Internet belegen dies sehr eindrucksvoll (vergleiche . Tab. 15.1).

15

125 Kapitel 15 · Betriebssysteme

. Tab. 15.1 Verbreitung der Betriebssysteme Betriebssystem

2020 (in %)

2021 (in %)

2022 (in %)

Veränderung in 2 Jahren

Android

38,8

40,7

42,7

+3,9 %

Windows

35,1

31,6

29,8

−5,3 %

iOS

15,2

16,5

17,4

+2,2 %

OS X

8,1

6,8

6,0

−2,1 %

Linux

0,8

0,9

1,0

+0,2 %

Nicht identifiziert

1,2

2,2

1,8

+0,6 %

Andere

0,8

1,3

1,3

+0,5 %

Quelle: 7 https://gs.statcounter.com/os-market-share

Windows und Android sind sicherlich die bekanntesten Vertreter, weniger bekannt ist das Linux-Betriebssystem, das aber die Basis von sehr vielen Geräten ist, so z. B. auch von Android-Smartphones und -Tablets oder Netzwerkkomponenten wie Routern. Sogar im Auto findet man in vielen Komponenten Linux, wie bei vielen Herstellern im Entertainmentsystem oder bei der Navigationssoftware. Bei den schnellsten Supercomputern kommt fast nur Linux zur Anwendung. Es ist schon erstaunlich, dass dasselbe Betriebssystem von der Smartwatch bis zum Supercomputer alles abdecken kann. Aber was genau macht denn nun ein Betriebssystem? Wie bereits erwähnt, ist das Betriebssystem eine Zwischenschicht, die es den Anwendungen erlaubt, auf darunterliegende Systemressourcen zuzugreifen. Gemeint ist damit in erster Linie der Zugriff auf alle Hardwarekomponenten, etwa die Festplatte, um Daten zu lesen und zu schreiben. Besonders wichtig ist der Zugriff auf die CPU, da dieser überhaupt erst ermöglicht, Programmcode auszuführen. Das Betriebssystem trägt auch Sorge, dass Anwendungen die Hardware im Rechner nicht beschädigen können, indem es unerlaubte Zugriffe blockiert. Die Zusammenhänge lassen sich gut als Schichten darstellen (siehe . Abb. 15.1). Ganz oben steht der Systembenutzer (der Mensch). Dieser arbeitet normalerweise nicht direkt mit dem Betriebssystem, sondern mit den verschiedenen Anwendungen, wie Browsern, Spielen oder Office-Programmen. Diese nutzen die Funktionen des Betriebssystems, um auf diverse Datenträger oder die Internetverbindung zuzugreifen, natürlich aber auch, um eine Anzeige auf dem Bildschirm darzustellen.

126

Kapitel 15 · Betriebssysteme

15

. Abb. 15.1 Zusammenhang zwischen den einzelnen Schichten

Betriebssysteme sind aber nicht nur auf Smartphones und PCs, sondern auch auf Mikrocontrollern zu finden. Ein Mikrocontroller ist ein Ein-Chip-Computersystem. Jeder Mensch agiert unzählige Male am Tag mit Mikrocontrollern, ohne sich dessen immer bewusst zu sein. Dies ist beispielsweise in einer einfachen Digitaluhr der Fall, aber auch in Autos gibt es einige Hundert Mikrocontroller mit ganz unterschiedlichen Aufgaben. Beginnend mit der Multimediazentrale des Autos über den Mikrocontroller im Airbag bis hin zur Motorsteuerung oder der komplexen Ladeelektronik bei Elektroautos erfüllen Mikrocontroller eine Vielzahl unterschiedlicher Funktionen. Doch was tut ein Betriebssystem denn nun genau? Ein wichtiger Aspekt ist das sogenannte Scheduling (Zeitplanerstellung). Dies bezeichnet die Festlegung, wann die Prozesse CPU-Zeit zugeteilt bekommen und wie viel. Der Scheduler ist also eine Steuerung innerhalb des Betriebssystems, die sich darum kümmert, dass alle Programme einen Teil der Rechenleistung bekommen. Die Kriterien für einen Scheduler sind 5 Durchsatz: Es soll die größtmögliche Anzahl von Prozessen möglichst schnell bedient werden. 5 Effizienz: Es soll die größtmögliche Anzahl von Prozessen in der kürzestmöglichen Zeit abgearbeitet werden. 5 Fairness: Die Ressourcen werden gerecht verteilt. 5 Transparenz: Es ist klar ersichtlich, wann jedem Rechenprozess die nächste Rechenzeit zugeteilt wird.

127 Kapitel 15 · Betriebssysteme

15

5 Termineinhaltung: Prozesse, die zu einem bestimmten Termin beendet sein müssen, werden so geplant, dass der Termin eingehalten wird. Die Termineinhaltung ist dabei besonders bei eingebetteten Systemen wichtig, wie etwa bei dem schon erwähnten Mikrocontroller im Airbag, der innerhalb einer definierten Zeit auslösen muss. Ein zu spätes Auslösen hat nämlich fatale Folgen. Bei einem PC gibt es allerdings meist keine kritischen Prozesse, sodass die Termineinhaltung dort selten zum Tragen kommt. Es ist auch insgesamt mehr Rechenleistung vorhanden, sodass Durchsatz und Fairness angestrebt werden können. Bei einem Smartphone ist das oberste Ziel die Effizienz, damit Akkuleistung gespart wird. Die CPU wird nur dann hoch getaktet, wenn etwas Rechenintensives zu erledigen ist. Ansonsten versucht das Betriebssystem sogar, die CPU in den Schlafmodus zu schicken, denn dann wird die wenigste Akkuleistung verbraucht und das Smartphone ist länger betriebsbereit. Sehr ähnlich verhält es sich auch beim Notebook. Auch hier soll das mobile Arbeiten möglichst lange ohne Netzteil funktionieren. Bei Windows gibt es ein Programm, das für Transparenz sorgt und dem Anwender übersichtlich alle laufenden Prozesse darstellt. Es heißt Task-Manager. In . Abb. 15.2 ist ein Screenshot des Task-Managers zu sehen. Es ist leicht zu erkennen, dass der Scheduler ein sehr wichtiges Element des Betriebssystems ist, denn er verteilt die CPU-Zeit auf die vielen laufenden Prozesse. In der gezeigten Abbildung sind es 104 Hintergrundprozesse und fünf Apps.

. Abb. 15.2 Task-Manager: Übersicht der Apps und Prozesse

128

Kapitel 15 · Betriebssysteme

Übung Wie viele CPU-Kerne besitzt dein Rechner? Finde im Task-Manager heraus, wie die derzeitige Auslastung deines Systems ist. Zum Task-Manager kommst du mit einem Rechtsklick auf die Task-Leiste und im Kontextmenü findest du ihn im unteren Bereich.

15

Die Anzahl der CPU-Kerne und andere interessante Eigenschaften eines PCs mit Windows-Betriebssystem lassen sich unter dem Reiter Leistung ablesen. In . Abb. 15.3 ist die Ansicht eines 6-Kern-Notebook-Prozessors zu sehen. Noch beeindruckender als die Anzahl der Prozesse im Bild ist jedoch die Anzahl der Threads, die sich zum Zeitpunkt des Screenshots auf 3437 beläuft. Als Thread wird eine kleine Arbeitseinheit bezeichnet, die von einer App oder einem Hintergrundprozess gestartet wird. Diese Arbeitseinheiten sind kleine Rechenoperationen, die unabhängig von dem startenden Programm ablaufen, wie beispielsweise das Laden einer Datei. Der Scheduler kümmert sich darum, dass alle diese Threads genügend Zeit von der CPU erhalten, aber gleichzeitig den Prozessor möglichst wenig belasten. Das Betriebssystem kümmert sich natürlich nicht nur um die CPU. Generell verwaltet es alle Ressourcen, die sich die Anwendungen teilen. Im Task-Manager kann auch die Auslastung des Arbeitsspeichers oder der Datenträger beobachtet werden. Reagiert der PC sehr langsam, lässt sich mit diesem Programm meist recht schnell erkennen, welche der Komponenten ausgelastet ist.

. Abb. 15.3 Task-Manager: Leistungsübersicht

129 Kapitel 15 · Betriebssysteme

15

Das Betriebssystem beinhaltet aber auch selbst etliche Programme, bei denen von Dienstprogrammen gesprochen wird. Einige sind für die Nutzung eines Rechners zwingend notwendig, beispielsweise der Dateiexplorer oder die Eingabeaufforderung. Andere nützliche Programme wie die PowerShell oder die Bildvorschau dienen eher dem Komfort. Eine Vielzahl von Dienstprogrammen sind in der Systemsteuerung und den Einstellungen zusammengefasst. Mit Windows 8 wurde begonnen, die alte Aufteilung der Dienstprogramme unter der Systemsteuerung in eine neu strukturierte Ansicht der Einstellungen zu überführen. Die Einstellungen sind damit deutlich übersichtlicher und leichter zu finden (vergleiche . Abb. 15.4). Verschiedene Informationen zu den Einstellungen lassen sich auch direkt in der Suche eintippen. So gibt die Suche nach „Info“ auch ein Ergebnis „PC-Infos“ aus, unter dem sich diverse Informationen zum PC und zum Betriebssystem finden. Das Betriebssystem lässt aber auch eigene Anpassungen zu. Eine sehr einfache Einstellung ist die Änderung des Hintergrundbildes, ebenfalls über „Einstellungen“ in der Rubrik „Personalisierung“. Dort findet sich das Menü „Hintergrund“. In diesem kann aus verschiedenen bereits vorhandenen Hintergründen ausgewählt werden, man kann aber auch ein Hintergrundbild aus einer anderen Quelle, wie beispielsweise Fotos, verwenden. In . Abb. 15.5 ist gezeigt, wie ein kleineres Bild zentriert angezeigt werden kann. Auch die Auswahl der Hintergrundfarbe ist bei kleineren Bildern möglich. Es lassen sich noch diverse andere Dinge anpassen, die ebenfalls alle innerhalb der Einstellungen zu finden sind.

. Abb. 15.4 Einstellungen im Betriebssystem Windows 10

130

Kapitel 15 · Betriebssysteme

15

. Abb. 15.5 Einstellung des Hintergrunds

Übung Öffne die Einstellungen und sieh dir an, wie sich diese verändern lassen. Klicke auf den Startbutton unten links und wähle die Einstellungen aus. Versuche nun deine Windows-Version herauszufinden. Falls dir dein Hintergrundbild zu langweilig ist, versuche es zu ändern.

Aber auch mobile Betriebssysteme lassen Modifikationen der Einstellungen zu. Bei Android sieht das dann aus wie in . Abb. 15.6. Auch dort lassen sich die Hintergründe anpassen, hier jedoch unter dem Menüpunkt „Display“. Je nach Hersteller sehen die Apps auch etwas unterschiedlich aus. Die Einstellungen auf einem Smartphone sind ähnlich umfangreich wie bei einem Windows-PC. Oft heißen sie jedoch anders, sodass Bezeichnungen nicht direkt übertragbar sind. ? Welche Aufgaben hat ein Betriebssystem? Was ist ein Scheduler? Welche Informationen zeigt der Task-Manager an? Wofür wird ein Scheduler benötigt? Welche Dienstprogramme sind üblicherweise in einem Betriebssystem enthalten?

131 Kapitel 15 · Betriebssysteme

. Abb. 15.6 Einstellungs-App auf einem Android-Smartphone

15

133

Software

© Springer Fachmedien Wiesbaden GmbH, ein Teil von Springer Nature 2024 T. Eichstädt und S. Spieker, 52 Stunden Informatik, https://doi.org/10.1007/978-3-658-41838-0_16

16

134

16

Kapitel 16 · Software

Software ist ein Sammelbegriff, der alles am Computer umfasst, was nicht zur Hardware zählt. Software befindet sich auf PCs und Smartphones, aber auch auf Computern, die in einen speziellen technischen Kontext eingebunden sind. Programme werden in Anwendungssoftware und Systemsoftware unterteilt. Wenn von Software die Rede ist, denken die meisten Menschen an Anwendungen. Auch Daten sind Software. Programme und Daten sind manchmal schwierig voneinander zu trennen. Software bringt oft Systemanforderungen mit sich. Die Entstehung einer neuen Software unterteilt sich in die Phasen Analyse, Design, Implementierung, Test und Betrieb. Der gröte Teil der Kosten entsteht während des Betriebs. Aus dieser Problemstellung heraus ist das Konzept des DevOps entstanden, das Entwicklung und Betrieb von vorneherein miteinander verbindet. Egal, ob eine Individualsoftware neu entwickelt wird oder eine Standardsoftware eingeführt werden soll, es müssen zunächst die funktionalen und nichtfunktionalen Anforderungen analysiert werden. Software ist ein Sammelbegriff für Programme und Daten. Am besten lässt sich Software in Abgrenzung zur Hardware definieren. Wir kennen den Begriff bereits aus  Kap. 14 Rechnerarchitektur. Vereinfacht ausgedrückt, ist das, was sich an einem Computer berühren lässt, Hardware. Der ganze Rest fällt unter die Bezeichnung Software. Ohne Hardware gäbe es keine Informatik. Andererseits ist jede Hardware ohne entsprechende Software nutzlos. Wir beschäftigen uns viel mehr und intensiver mit Soft- als mit Hardware. In der Regel interessiert die Hardware hauptsächlich dann, wenn ein neues Gerät angeschafft werden soll oder es ein Problem mit der Hardware gibt. Mit Software hingegen beschäftigen sich Informatiker und Anwender täglich in vielfältiger Weise. Übung Wir verwenden andauernd verschiedenste Arten von Software. Welche Software verwendest du regelmäßig? Auf welchen Geräten verwendest du sie? Erstelle eine Liste.

In erster Linie befindet sich Software natürlich auf PCs, Smartphones oder Tablets. Diese Geräte erfüllen vielerlei Aufgaben mithilfe von Software. Es gibt aber auch Computer, die in einen ganz speziellen technischen Kontext eingebunden sind. Solche Computer werden embedded systems (eingebettete Systeme) genannt. Oft dienen diese zur Steuerung von Maschinen, beispielsweise einer Waschmaschine oder einer Heizungsanlage. Wie wir aus der letzten Stunde wissen, werden in solchen Fällen häufig Mikrocontroller eingesetzt, die über ein eigenes Betriebssystem verfügen können. Manche embedded systems verwenden auch mehrere Mikrocontroller und zusätzliche Software, um diese zu steuern. Ein weiteres Beispiel für ein eingebettetes System ist ein Router. Bei näherer Betrachtung finden sich im Alltag eine Vielzahl solcher Systeme.

135 Kapitel 16 · Software

16

Übung Wie viele eingebettete Systeme stehen auf deiner Liste? Falls sich noch keines darauf befindet, fällt dir eines ein, dass du regelmäßig verwendest?

Ein eingebettetes System kann aber auch Anwendungssoftware beinhalten. Anwendungssoftware bezeichnet eine Art von Programmen, die einen direkten Nutzen für den Anwender haben. Der englische Begriff hierfür ist application software. Daher kommt die Kurzform „Apps“. Anwendungssoftware kann unterschiedlichsten Nutzen haben. So gibt es Office-Software wie Word, Excel und PowerPoint, es gibt Unterhaltungssoftware wie Spiele und Musikprogramme oder auch Onlinedienste, die über einen Webbrowser aufgerufen werden, wie eine Suchmaschine oder ein Wiki. Der Webbrowser selbst ist natürlich ebenfalls eine Anwendungssoftware. Dem gegenüber steht die Systemsoftware, das sind alle Programme, die keinen direkten Anwendungsbezug haben, sondern die Abläufe des Computers und der Hardware beeinflussen. Klassischerweise ist das ein Betriebssystem. Eine Vielzahl weiterer Programme arbeiten im Hintergrund, während der Computer verwendet wird. Der Begriff Software bezeichnet aber auch Daten. So wird beispielsweise die Anwendung Microsoft Excel, aber auch der Inhalt einer CSV-Datei als Software bezeichnet. Der Begriff Daten wiederum ist sehr vielfältig und wird im späteren Verlauf dieses Buches noch eingehend behandelt. Die Trennung zwischen Programmen und Daten ist also gar nicht so einfach. Kann eine Quelltextdatei als Daten bezeichnet werden oder ist die Datei eher Teil der Anwendung, für die sie geschrieben wurde? Wie verhält es sich mit den Favoriten im Webbrowser? Dieser speichert Daten, um sie gleichzeitig als Teil seiner Oberfläche zu verwenden. . Abb. 16.1 dient als Hilfe, um die Zusammenhänge besser zu verdeutlichen. Sie zeigt eine teilweise Überlappung der einzelnen Bereiche, aber mindestens gemeinsame Berührungspunkte. Wenn von Software die Rede ist, denken die meisten Menschen in erster Linie an Anwendungen. Das Wort „App“ ist übrigens erst mit der Verbreitung von Smartphones und Tablets verstärkt in den Sprachgebrauch übergegangen. Deshalb sprechen viele Menschen nur dann von einer App, wenn sie eine Anwendung auf ihrem Smartphone oder Tablet meinen. Software bringt oft spezifische Anforderungen an das Betriebssystem und die Hardware mit, sogenannte Systemanforderungen. Speziell die heutigen PC-Spiele stellen oft komplexe Anforderungen an das ausführende System. Um diese besser verstehen zu können, hier eine Übersicht zum aktuellen Spielehit Fortnite für den PC. Der Entwickler des Spiels zeigt oftmals zwei Optionen für ein mögliches Spielerlebnis an: 1. Mindestsystemanforderungen: 5 Grafikkarte: Intel HD 4000 für PC, AMD Radeon Vega 8 5 Prozessor: Core i3-3225 3,3 GHz 5 Arbeitsspeicher: 8 GB RAM 5 Betriebssystem: Windows 10/11 (64 Bit) oder Mac OS Mojave 10.14.6

136

Kapitel 16 · Software

2. Empfohlene Systemanforderungen: 5 Grafikkarte: Nvidia GTX 960, AMD R9 280 oder gleichwertige DX11fähige Grafikkarte 5 Grafikspeicher: 2 GB VRAM 5 Prozessor: Core i5-7300U 3,5 GHz, AMD Ryzen 3 3300U oder gleichwertig 5 Arbeitsspeicher: Mindestens 16 GB RAM 5 Festplatte: NVMe Solid State Drive (SSD) 5 Betriebssystem: Windows 10/11 (64 Bit)

16

Das Spiel oder besser gesagt die Software Fortnite lässt sich je nach vorhandener Hardware konfigurieren, sodass sich das Aussehen innerhalb des Spiels an die Leistungsfähigkeit der Hardware anpassen lässt. Dies ist über die absoluten Mindestanforderungen abgedeckt. Wirklich Spaß kommt aber oft erst bei den empfohlenen Systemanforderungen auf. Es wird eine Mindestversion des Betriebssystems vorausgesetzt und es werden diverse Parameter für die Hardware gefordert. Die CPU muss eine gewisse Taktrate haben und sollte in einer nicht zu alten Generation vorhanden sein. Der Arbeitsspeicher darf ebenfalls nicht zu klein sein. Die Grafikkarte muss DX-11 fähig sein, was eine Schnittstelle beschreibt, mit der Spiele auf diese direkt zugreifen können. Die Größe des Grafikspeichers, also des Speichers auf der Grafikkarte, ist für die hochauflösenden Bilder innerhalb des Spiels wichtig. Im Vergleich haben die Office-Programme deutlich weniger Anforderungen an das genutzte System. So braucht es lediglich einen Dual-Core-Prozessor, um eine reibungslose Anwendung des Programms zu gewährleisten.

. Abb. 16.1 Software: Begriffsabgrenzung

137 Kapitel 16 · Software

16

Nach diesen Betrachtungen stellt sich unweigerlich auch die Frage, wie Software entsteht. In erster Linie denkt man dabei an Informatiker aus dem Bereich der Softwareprogrammierung, die in einer Programmiersprache die Software „produzieren“. Dieser Teil wird Implementierung genannt. Tatsächlich ist dies jedoch nur einer, wenngleich ein sehr spannender, von mehreren Schritten bis zur fertigen Software. . Abb. 16.2 gibt einen Überblick über die weiteren wichtigen Phasen in der Entstehung von Software. Um den Entstehungsprozess besser zu verstehen, hilft die genauere Betrachtung der einzelnen Phasen. Da eine Software einen bestimmten Nutzen haben soll, steht an erster Stelle immer die Analyse. Die Art der Analyse ist oft von der Art der Problemstellung, dem Kontext und den beteiligten Personen abhängig. Ziel der Analyse ist es, zu ermitteln, wie und zu welchem genauen Zweck die Software eingesetzt werden soll. Als Nächstes folgt das Design (Entwurf) der Software. Man überlegt, wie die Anforderungen an die Software erfüllt werden können und wie diese optisch aussehen soll. Da die Softwareentstehung in der Regel ein sehr aufwendiger Prozess ist, gehört zum Design oft eine entsprechende Planung des Zeitrahmens und des Ressourceneinsatzes. Erst dann beginnt die Implementierung, also die Phase, bei der die Programmierer die tatsächliche Software schreiben. Ist das Softwareprodukt dann entwickelt, muss getestet werden (siehe  Kap. 33 Testen), erst dann kann es ausgeliefert und in Betrieb genommen werden.

. Abb. 16.2 Softwareentstehung

138

Kapitel 16 · Software

Übung Überlege, welche Probleme nach der Auslieferung eines Softwareprodukts noch auftauchen können. Welche Probleme sollte der Herausgeber der Software einkalkulieren?

16

In der Regel wird Software über Jahre hinweg genutzt. Wie lange genau, das ist zu Beginn der Entwicklung meist nicht abzusehen. Während dieser Laufzeit treten Fehler und Probleme auf, die behoben werden müssen. Durch Veränderungen bei Hardware, Betriebssystemen, Datenformaten oder neue gesetzliche Regelungen muss Software entsprechend angepasst werden. Auch die Erwartungen an die Software selbst entwickeln sich somit weiter. Hierbei wird auch von Softwarealterung gesprochen und damit verbunden von der Notwendigkeit der Softwarewartung. Updates sind deshalb essenziell, nicht nur um die Sicherheit der Software zu gewährleisten, sondern auch für Systemanpassungen oder Funktionserweiterungen. Neben der Entwicklung neuer Programmversionen gibt es noch weitere Aspekte, die unter den Betrieb von Software fallen. Dazu zählen etwa die Administration von Benutzern und der Support (mehr dazu in  Kap. 28 IT-Betrieb). Für viele Informatiker wird früher oder später der Betrieb von Software zur Hauptbeschäftigung. Die entsprechenden Aufwendungen und Kosten werden regelmäßig unterschätzt. Das gilt besonders dann, wenn eine Software sehr lange im Einsatz ist. Im Durchschnitt fallen circa 80 % der Kosten einer Software während der Nutzungsdauer an. Erschwerend kommt hinzu, dass die Entwickler einer Software oft nicht auch für deren Betrieb eingeplant werden. Dadurch müssen andere Personen, die diese Software und deren Code nicht kennen, die schwierige Aufgabe übernehmen, Fehler zu finden und Änderungen an fremdem Code vorzunehmen. Aus diesen Problemen heraus ist das Konzept des DevOps entstanden. Das Wort DevOps bezieht sich auf die Verbindung von Development (Entwicklung) und Operations (Betrieb). Dabei werden die Tätigkeiten von Implementierung, Test und Betrieb von Anfang an miteinander verbunden. Idealerweise gibt es nur ein Team, das sowohl für die Entwicklung als auch für den Betrieb verantwortlich ist. Dieses Team liefert die Software also nicht nur einmalig, sondern fortlaufend aus. Aufgrund von kontinuierlichem Feedback und automatisierten Prozessen ist es somit sehr viel einfacher und schneller möglich, Änderungen vorzunehmen. Die Nutzung der Software wird dadurch wesentlich attraktiver und in der Regel auch günstiger. Das Konzept von DevOps wird schematisch oft als liegende Acht dargestellt (siehe . Abb. 16.3). Unter Software Development (Entwicklung) fallen dabei 5 Planen, 5 Codieren, 5 Bauen und 5 Testen.

139 Kapitel 16 · Software

16

. Abb. 16.3 Darstellung DevOps

Und unter Software Operation (Betrieb) fallen dann 5 Freigeben, 5 Verteilen und 5 Betreiben. Der DevOps-Gedanke ist eng mit der agilen Softwareentwicklung verbunden, die eine besonders hohe Flexibilität ermöglicht (siehe  Kap. 29 Agile Produktentwicklung). Dennoch bleiben Entwicklung und Betrieb von Software selbst unter Berücksichtigung moderner Ansätze und aktueller Technologien ein langwieriges und sehr teures Unterfangen. Anstatt selbst neue Software zu entwickeln, greift man deshalb in den meisten Fällen auf Standardsoftware zurück. Standardsoftware bezeichnet Programme, die durch viele Anwender erworben und eingesetzt werden können. Es kommt niemand auf die Idee, ein Betriebssystem oder ein Office-Programm selbst zu entwickeln. Stattdessen wird dieses selbstverständlich bei Bedarf gekauft. Die Auswahl ist nicht immer einfach, denn Kauf und Einführung neuer Software in Unternehmen oder öffentlichen Einrichtungen hat viele Auswirkungen. Ist die verfügbare Standardsoftware nicht in der Lage, alle Anforderungen abzudecken, müssen Anpassungen vorgenommen werden. Bei solchen Anpassungen wird oft von Customizing (Anpassung) gesprochen. Insbesondere bei Unternehmenssoftware ist dies ein gängiges Vorgehen. Manchmal ist es aber notwendig, eine neue, speziell angepasste Software zu entwickeln, beispielsweise wenn es die Geschäftsprozesse eines Unternehmens erfordern. Dann spricht man von Individualsoftware. Doch welche Faktoren sprechen für eine Softwareneuentwicklung oder den Kauf einer Standardsoftware? Die Entwicklung einer Individualsoftware bringt oft weitreichende Konsequenzen mit sich. Meistens wird die Entscheidung dafür nur dann getroffen, wenn noch keine vergleichbare Software existiert. Egal ob Kauf oder Neuentwicklung – in beiden Fällen müssen die Anforderungen an eine Software analysiert werden. Man unterscheidet dabei zwischen funktionalen und nichtfunktionalen Anforderungen. Funktionale Anforderungen beschreiben die Funktionalität einer Software, also das, was die Software können soll. Bei Fortnite wäre das beispielsweise die Spielsteuerung, Spielmodi und alles, was im Spiel angezeigt

140

Kapitel 16 · Software

wird. Mindestens ebenso umfangreich sind jedoch die nichtfunktionalen Anforderungen. Diese beinhalten alles, was nicht die Funktionalität betrifft, unter anderem Kosten (vergleiche  Kap. 32 Softwarelizenzierung), technische Randbedingungen und Qualität. Insbesondere sind auch Anforderungen an Hardware und Systemsoftware gemeint. Die weiter oben genannten Systemanforderungen für Fortnite sind typische nichtfunktionale Anforderungen. Auch Sicherheitsaspekte tauchen hier häufig auf, bis hin zu Anforderungen an die Abläufe der Softwareentstehung. Übung

16

Warum hast du dich für die jeweilige Software deines PCs entschieden? Welche Kriterien spielten bei der Entscheidung eine Rolle? Hast du dir schon jemals Gedanken über Softwareanforderungen gemacht? Oder verwendest du bisher Software nur aufgrund von Vorschlägen, Empfehlungen oder aus Gewohnheit?

Die meisten Menschen machen sich nicht viele Gedanken über die Auswahl von Software und noch weniger über deren nichtfunktionale Anforderungen. Das ist allerdings auch nicht nötig. Denn im privaten Bereich fällt die Wahl und, wenn nötig, der Wechsel zu einer besseren Alternative in der Regel leicht. Ganz anders ist es jedoch im professionellen Unternehmensumfeld. Die Ermittlung der Anforderungen ist dort eine komplexe Aufgabe. Es ist umso schwieriger, je größer der Nutzerkreis und der Funktionsumfang der Software ist. In gleichem Maße steigen aber auch die Kosten. Deshalb ist der Entscheidungsprozess, ob Neuentwicklung oder Kauf von bestehender Software, oft langwierig und muss gut durchdacht werden. Einmal getroffene Entscheidungen wieder rückgängig zu machen, ist oft mit hohen Folgekosten und enormem Aufwand verbunden. ? Welche Arten von Software gibt es? Welche Phasen umfasst die Softwareentstehung? Was ist DevOps? Warum ist die Softwareentstehung häufig aufwendiger als vermutet? Was sind Beispiele für nichtfunktionale Anforderungen einer Software?

141

Tabellenkalkulation

© Springer Fachmedien Wiesbaden GmbH, ein Teil von Springer Nature 2024 T. Eichstädt und S. Spieker, 52 Stunden Informatik, https://doi.org/10.1007/978-3-658-41838-0_17

17

142

17

Kapitel 17 · Tabellenkalkulation

Tabellenkalkulation ist vielseitig einsetzbare Software zur interaktiven Eingabe und Verarbeitung von Daten in Tabellenform. Tabellenkalkulation ist oft Bestandteil von Office-Suiten zur Büroanwendung. Am bekanntesten ist Excel als Teil von Microsoft Office. Es gibt auch Open-Source- und webbasierte Alternativen. Eine Tabelle besteht aus Zellen, die durch die Angabe von Spalte und Zeile referenziert werden können. Mithilfe von Formeln und Funktionen können Berechnungen über mehrere Zellen hinweg ausgeführt werden. Mit einem Makro kann eine Folge an Befehlen aufgezeichnet und wiederholt ausgeführt werden. Moderne Office-Programme unterstützen gemeinschaftliches Arbeiten in geteilten Dateien. Müssen Dateien ausgetauscht werden, wird meist das XLSX-Format verwendet. Tabellenkalkulation enthält zahlreiche Formatierungs- und Darstellungsmöglichkeiten für Daten. Ihr Einsatz ist besonders für einfache und schnelle, aber nicht so sehr für komplexe Lösungen zu empfehlen. Tabellenkalkulation bezeichnet Software zur interaktiven Eingabe und Verarbeitung von Daten in Form von Tabellen. Sie kann sehr vielseitig eingesetzt werden. Vor allem im beruflichen Kontext ist Tabellenkalkulation nicht mehr wegzudenken. Viele Menschen setzen sie standardmäßig zur Datenerfassung, zur Speicherung und Darstellung von Daten, für Auswertungen und Berichte ein. Um nur einige Beispiele zur Vielseitigkeit der Tabellenkalkulation aufzuzeigen, seien To-do-Listen, Kostenkalkulationen und Bilanzen, Kalender oder auch Projektpläne genannt. Doch das Repertoire umfasst natürlich noch wesentlich mehr Einsatzmöglichkeiten. Oft findet sich die Tabellenkalkulation im Paket mit weiteren Büroanwendungen, den sogenannten Office-Suiten. Die bekannteste ihrer Art ist sicherlich Microsoft Office mit der Tabellenkalkulation Excel. Doch es gibt auch Open-SourceAlternativen wie LibreOffice mit der Tabellenkalkulation Calc, die allerdings deutlich weniger weit verbreitet ist. In dieser Stunde verwenden wir für die praktischen Teile Google-Tabellen. Google-Tabellen ist ebenfalls Teil einer Office-Suite, die kostenlos und webbasiert im Rahmen des Google-Drive-Dienstes angeboten wird. Die einzige Voraussetzung für die Nutzung ist ein Google-Account. Übung Falls noch nicht vorhanden, erstelle einen Google-Account: 7 https://accounts. google.com/signup Sieh dir die Google-Suite an: 7 https://www.google.de/intl/de/sheets/about/ Öffne eine Google-Tabelle und lege eine neue Tabelle an: 7 https://docs.google. com/spreadsheets/ Lege eine Einkaufsliste für deinen nächsten Einkauf an (siehe . Abb. 17.1 für ein Beispiel).

Neben der Vielseitigkeit ist die intuitive Bedienung der größte Vorteil der Tabellenkalkulation. Im Hauptbereich der Applikation steht die Tabelle, in der Daten eingegeben werden können. Das können Zahlenwerte oder Text sein, aber auch andere Datenformate wie etwa das Symbol einer Checkbox. Die Spalten der Tabelle sind alphabetisch betitelt (A, B, C, . . .) und die Zeilen numerisch (1, 2, 3, . . .). Ein

143 Kapitel 17 · Tabellenkalkulation

17

Feld der Tabelle wird als Zelle bezeichnet. Durch die Angabe von Spalte und Zeile lässt sich jede Zelle und damit jeder Eintrag der Tabelle eindeutig identifizieren. In . Abb. 17.1 steht in der Zelle A9 der Eintrag „Frischhaltefolie“. Nicht nur einzelne Zellen können so in Beziehung zueinander gesetzt werden, sondern auch Zellbereiche. Anfang und Ende des Zellbereichs werden dabei mit einem Doppelpunkt getrennt. In . Abb. 17.1 befinden sich Zahlenwerte im Zellbereich „B2:B10“. Wie im Lauf der Stunde gezeigt wird, ist der Verweis auf Zellen und Zellbereiche sehr wichtig, denn er erlaubt es, Bezüge herzustellen und Formeln zu berechnen. Direkt oberhalb der Tabelle ist die Formelleiste platziert. Wenn in einer markierten Zelle Daten eingetragen sind, werden diese Daten in der Formelleiste angezeigt. In . Abb. 17.1 ist die Zelle A6 markiert und das Formel-Feld zeigt „Salami in g“. Oberhalb der Formelleiste befindet sich, wie in sehr vielen Programmen üblich, das Menü mit zahlreichen weiteren Optionen. Auch das Kontextmenü, das mit einem Rechtsklick aufgerufen wird, und Tastenkombinationen erleichtern das schnelle interaktive Arbeiten. Unterhalb der Tabelle sind die Tabellenblätter aufgeführt.

. Abb. 17.1 Einkaufsliste in Google-Tabellen

144

Kapitel 17 · Tabellenkalkulation

Übung

17

Lege mit dem Plus-Symbol (+) ein neues Tabellenblatt an. Erstelle eine zweite Einkaufsliste für den Einkauf in einem Möbelhaus. Du brauchst ein Bettgestell, ein Regal, drei Aufbewahrungsboxen, einen Beistelltisch und eine Schreibtischlampe. Zusätzlich sollen auch Preisinformationen enthalten sein. Beachte, dass Datenformate (Text, Zahl, Datum etc.) bei der Eingabe automatisch erkannt werden. Sollte das einmal nicht korrekt funktionieren, kann das Datenformat über den Menüpunkt „Format“ auch manuell gesetzt werden. Das neue Tabellenblatt und die Auswahl des Datenformats für die Preisinformationen könnte aussehen wie in . Abb. 17.2 dargestellt. Zum Vergleich oder zur Übernahme kann die Datei hier abgerufen werden:  https://docs.google.com/spreadsheets/d/1gD0r48Qp0HoMvThwl4iPQ8R7SGbiYN Qa3n_IPEpO3ec/edit?usp=sharing Als Kurzlink zum Abtippen: 7 https://kurzelinks.de/3sjw

Mit den in der Tabelle vorhandenen Daten können Berechnungen durchgeführt werden. Das funktioniert über die Eingabe von Formeln. Formeln beginnen mit einem Gleichheitszeichen. Innerhalb von Formeln können andere Zellen in Beziehung zueinander gesetzt werden. Ein Beispiel ist „=C2+C3“. Die Zelle, in der diese Formel eingegeben wird, zeigt dann den Inhalt der Zelle C2 addiert zum Inhalt der Zelle C3 an. Dasselbe funktioniert mit anderen gängigen Rechenoperationen.

. Abb. 17.2 Einkaufsliste mit Preisinformationen

145 Kapitel 17 · Tabellenkalkulation

17

Übung Füge in die Einkaufsliste hinter dem Einzelpreis eine weitere Spalte ein. Diese soll den Preis der Artikel unter Berücksichtigung der Anzahl beinhalten.

Über einfache Formeln hinaus, gibt es auch die Möglichkeit, Funktionen zu verwenden. Funktionen können über das Menü „Einfügen“ eingefügt werden. Alternativ kann eine Funktion direkt als Formel eingegeben werden. Ein Beispiel ist die Formel „=SUMME(Zellbereich)“. Wie bei Rechenoperationen auch, wird die Funktion in der Formelleiste angezeigt. In der Tabelle selbst wird das Ergebnis der Berechnung angezeigt (siehe . Abb. 17.3). Außerdem wurden in . Abb. 17.3 noch Informationen über den Lagerort im Möbelhaus (Regal und Fach) hinzugefügt, an dem der jeweilige Artikel zu finden ist. Beachte, dass diese Spalten grau hinterlegt sind. Google-Tabellen bietet zahlreiche Formatierungsmöglichkeiten für Texte, Zahlenwerte, einzelne Zellen, Zellbereiche und auch die gesamte Tabelle. Davon wollen wir zwei genauer betrachten. Dabei handelt es sich erstens um die Sortierung der Tabelle anhand einer bestimmten Spalte und zweitens um eine bedingte Formatierung. Die Sortierung ist über ein zusätzliches Menü verfügbar, das erscheint, wenn sich der Mauszeiger auf den Buchstaben der Tabelle bewegt. Die Sortierung gilt für das gesamte Tabellenblatt, außer ein Teilbereich wurde zuvor fixiert. Das geschieht, indem man den graue Balken oberhalb der ersten Zeile nach unten schiebt. In . Abb. 17.1 gibt es keinen fixierten Teilbereich. In . Abb. 17.3 dagegen wurde die erste Zeile mit den Spaltentiteln fixiert.

. Abb. 17.3 Ermittlung Gesamtpreis durch die SUMME-Formel

146

Kapitel 17 · Tabellenkalkulation

Formatierungen wie beispielsweise fette, kursive oder unterstrichene Schrift, verschiedene Schriftarten oder -größen, Text- oder Hintergrundfarben können direkt für eine markierte Zelle oder einen markierten Zellbereich ausgewählt werden. Etwas komplexer sind bedingte Markierungen. Dabei wird ebenfalls eine Zelle oder ein Zellbereich markiert. Im Menü „Format“ wird dann die Option „Bedingte Formatierung“ ausgewählt. Hier kann eine Bedingung „Zellen formatieren, wenn … “ und die „Art der Formatierung“ ausgewählt werden. Die Formatierung wird nur dann angewendet, wenn genau diese Bedingung erfüllt ist. Übung

17

Du hast alle Artikel, die du aus dem Möbelhaus brauchst, aufgelistet. Der kalkulierte Preis liegt in deinem Budget. Dein Vater hat angeboten, den Einkauf für dich zu erledigen. Allerdings hatte er eine Bedingung. Er möchte bei der Warenausgabe nicht ziellos umherirren, sondern ohne Umwege vom ersten Regal zum letzten laufen und dabei alle Artikel einsammeln. Dazu soll das Tabellenblatt nach Spalte E sortiert werden. Eine zweite Angelegenheit ist dir selbst wichtig. Du möchtest auf keinen Fall, dass dein Vater vergisst, die richtige Anzahl an Artikeln mitzubringen. Dazu soll jede Zelle, in der eine Menge steht, die größer ist als eins, rot eingefärbt werden. Sortiere die Tabelle nach der Regal-Spalte. Füge eine bedingte Formatierung für den Bereich mit der Artikelanzahl ein. Dir fällt ein, dass du doch noch zwei Schreibtischlampen benötigst. Jetzt sollte sich die Formatierung ändern, wenn du die Anzahl von 1 auf 2 erhöhst. Das Ergebnis sollte aussehen wie in . Abb. 17.4. Eine Lösung kann hier abgerufen werden: 7 https://docs.google.com/spreadsheets/ d/1xcUqQX5IPdWofeNx8Fu5qieGwtOrxxSIwUwP4XGkVRs/edit?usp=sharing Als Kurzlink zum Abtippen: 7 https://kurzelinks.de/c0z9

. Abb. 17.4 Sortierte Einkaufsliste mit bedingter Formatierung

147 Kapitel 17 · Tabellenkalkulation

17

Mit der bedingten Formatierung enthält das Tabellenblatt nun ein Entscheidungskriterium und eine bedingte Anweisung, die abhängig von der Entscheidung ausgeführt wird. Entscheidungen und bedingte Anweisungen sind ein sehr gängiges Mittel in der Programmierung, das in  Kap. 21 Algorithmik (in Python) vorgestellt und angewendet wird. Tatsächlich ist es in Tabellenkalkulationen mithilfe von Formeln und Makros auch möglich, explizit zu programmieren. Ein Makro ist eine Folge von Befehlen, die ein Programm ausführen kann, ähnlich einem Skript. In Office-Programmen werden Makros üblicherweise vom Anwender aufgezeichnet, um eine Folge von Arbeitsschritten wiederholt ausführen zu können. Die Makros können auch manuell verändert werden. So entsteht eine einfach zugängliche Art der angepassten Automatisierung. Eine weitere Stärke von modernen Office-Programmen ist die Möglichkeit des kollaborativen Arbeitens. Dateien können geteilt und mehreren Personen zugänglich gemacht werden. Die verschiedenen Links in dieser Stunde sind durch einen Klick auf „Freigeben“ erstellt worden, in diesem Fall jedoch nur zum Lesen freigegeben, ohne eine Möglichkeit der Veränderung. Ein Screenshot der Ansicht in Google Drive zur Ablage und Freigabe von Dateien ist in . Abb. 17.5 zu sehen. Dateien können aber auch zur Mitarbeit freigegeben werden. So können mehrere Personen gleichzeitig an derselben synchronisierten Datei arbeiten. Unter anderem ist es möglich, Kommentare zu hinterlassen und nachzuverfolgen (siehe . Abb. 17.6). Auf diese Weise kann gemeinschaftliches Arbeiten größtenteils innerhalb einer geteilten Datei stattfinden. Sollte es dennoch notwendig sein, eine Tabelle als Datei auszutauschen, erfolgt das normalerweise über das XLSX-Format. Neben den Tabelleneinträgen enthält eine XLSX-Datei auch weitere Informationen, unter anderem alle gewählten Formatierungen. Eine Tabellenkalkulation kann auch CSV-Dateien öffnen beziehungsweise Tabellen nach CSV exportieren, wenn nur die Tabelleneinträge selbst von Belang sind.

. Abb. 17.5 Dateiübersicht in Google Drive

148

Kapitel 17 · Tabellenkalkulation

. Abb. 17.6 Synchronisierte Datei in Google Drive mit eingefügtem Kommentar

17

Übung In  Kap. 5 Code wurde eine CSV-Datei erstellt, um Daten zu Informatikstunden zu erfassen. Lade diese Daten in eine Tabellenkalkulation. Überlege, welche Vorteile es bietet, diese Datei in einer Tabellenkalkulation zu erfassen, anstatt sie in einem Texteditor fortzuführen.

Eine letzte Funktionalität von Tabellenkalkulationen, auf die in dieser Stunde hingewiesen werden soll, ist die Möglichkeit, Visualisierungen zu erstellen. Ein Diagramm wie in . Abb. 17.7 lässt sich mithilfe nur weniger Klicks einfügen. Zusammengefasst bietet die Tabellenkalkulation einfache und schnelle Lösungen für sehr viele Aufgaben. Dabei reicht der Einsatz von sehr kleinen Listen, wie in dieser Stunde gesehen, bis hin zu umfangreichen Datensammlungen mit komplexen Verarbeitungsschritten, die mit Makros abgebildet werden können. Darin liegt jedoch auch eine Gefahr. Denn je größer eine Anwendung wird und je höher deren Anforderungen sind, desto weniger geeignet ist die Tabellenkalkulation. Als typische Nachteile sind zu nennen: 5 zunehmende Fehleranfälligkeit, Verlust der Intuitivität, langsam und wartungsintensiv bei komplexen Anwendungen, 5 geringe Stabilität über Programmversionen und verschiedene lokale Einstellungen hinweg, 5 geringe Einstiegshürde verleitet zu Nutzung durch ungeschulte Personen, 5 Einschränkungen und limitierte Performanz bei großen Datenmengen, 5 Sicherheitsmängel, insbesondere Gefahr des Datenverlusts, 5 Zusammenarbeit ist möglich, aber oft kann der Austausch von lokalen Kopien nicht vermieden werden. Das wiederum führt häufig zu Fehlern und nicht nachzuvollziehenden Änderungen.

149 Kapitel 17 · Tabellenkalkulation

. Abb. 17.7 Diagramm zur Darstellung von Artikel und Preis

? Aus welchen Gründen wird Tabellenkalkulation so vielseitig eingesetzt? Wie sieht eine Formel aus, die die Summe aus den Zellen D2, D3, D4, D5 und D6 berechnet? Was ist ein Makro? Wie können Tabellen ausgetauscht werden? Warum ist die Tabellenkalkulation für komplexe Lösungen eher nicht zu empfehlen?

17

151

Digitale Kommunikation

© Springer Fachmedien Wiesbaden GmbH, ein Teil von Springer Nature 2024 T. Eichstädt und S. Spieker, 52 Stunden Informatik, https://doi.org/10.1007/978-3-658-41838-0_18

18

152

18

Kapitel 18 · Digitale Kommunikation

Digitale Kommunikation kann zwischen Menschen oder zwischen Mensch und Maschine stattfinden. Die computervermittelte Kommunikation ist heute aus dem Alltag nicht mehr wegzudenken: E-Mails, Instant Messaging, Videotelefonie, Blogs und Vlogs, Wikis, Internetforen und soziale Netzwerke. Für einen Informatiker ist entscheidend, ob eine Kommunikation synchron oder asynchron abläuft. Bei der computervermittelten Kommunikation gibt es einige Risiken zu beachten. Da ein Teil der nonverbalen Kommunikation verloren geht, kommt es häufiger zu Missverständnissen, es kann ein verzerrtes Bild der Realität entstehen und die Gefahr der Onlinesucht steigt. Auch Fake News werden leichter verbreitet. Die Mensch-Maschine-Kommunikation bietet die Möglichkeit, Maschinen zu steuern. Dadurch bekommen digitale Assistenten praktische Funktionen wie das Abspielen von Musik, das Anlegen von Timern oder das Abrufen von Informationen mit natürlicher Sprache. Kommunikation war schon immer und ist auch heute ein unverzichtbarer Bestandteil des menschlichen Miteinanders. Genau wie der Mensch hat sich auch die Kommunikation immer weiterentwickelt, von Lauten und Gesten zu Wort und Schrift. Sie unterliegt heute wie alles andere der Digitalisierung. Im Wesentlichen unterscheidet man zwischen zwei Formen der digitalen Kommunikation: 5 Die computervermittelte Kommunikation ist der Informationsaustausch zwischen zwei oder mehr Menschen mithilfe von Computern beziehungsweise digitalen Medien. 5 Die Mensch-Maschine-Kommunikation beschreibt, wie Menschen mit einer Maschine kommunizieren können, beispielsweise um sie zu steuern. Es gibt ein sehr umfangreiches Spektrum an computervermittelter Kommunikation. So sind aus dem heutigen Alltag die folgenden Formen nicht mehr wegzudenken: 5 Die E-Mail ist ein Mittel, innerhalb weniger Sekunden Textnachrichten und Dokumente in der ganzen Welt zu verschicken. Wegen ihres formalen Charakters sind E-Mails gerade im geschäftlichen Umfeld extrem beliebt. E-Mails helfen aufwendigere und ressourcenintensive Kommunikation in Papierform zu vermeiden. 5 SMS steht für Short Message Service (Kurznachrichtendienst). Etwas später als die E-Mail kam der SMS in den 90er-Jahren auf und erfreute sich mit zunehmender Verbreitung von Mobiltelefonen großer Beliebtheit. In Deutschland erreichte der Versand von SMS-Nachrichten im Jahr 2012 mit 59,8 Mrd. SMS seinen Höhepunkt. Seither ist der Versand aufgrund Instant-Messaging-Alternativen stark rückläufig. 5 Instant Messaging ist der Nachfolger der SMS. Dieser ist deutlich flexibler. Unter Anderem kann man Bilder, Sprachnachrichten und Videos versenden. Der meistengenutzte Instant-Messenger-Dienst ist WhatsApp. Laut Statista wurden im Oktober 2020 täglich etwa 100 Mrd. WhatsApp-Nachrichten verschickt. Die meisten Nutzer hat WhatsApp übrigens in Indien. Der weltweit zweitbeliebteste Messenger ist WeChat aus China. Auf Platz drei folgt der Facebook Messenger (Quelle 7 https://www.statista.com/statistics/258749/mostpopular-global-mobile-messenger-apps/). 5 Videotelefonie und Videokonferenzen sind Anwendungen, bei denen zwei oder mehrere Leute gleichzeitig mit Bild und Ton kommunizieren können. Viel

153 Kapitel 18 · Digitale Kommunikation

5

5

5 5

5

18

genutzte Anwendungen sind Zoom, Google Meet und Microsoft Teams. Besonders während der Coronakrise hat diese Kommunikationsform, sowohl im privaten als auch im geschäftlichen Bereich, sehr stark an Bedeutung gewonnen. Der Blog ist eine Wortkreuzung aus Web und Log (was in etwa Webtagebuch bedeutet). Sowohl Privatpersonen als auch Personen des öffentlichen Lebens nutzen Blogs, um über für sie wichtige Inhalte zu berichten. Das kann alles vom Kochhobby bis zum aktuellen Zeitgeschehen beinhalten. Der Blog kam Ende der 90er-Jahre auf und erfreut sich bis heute wachsender Beliebtheit. Oft ist er in eine Plattform oder Webseite integriert. Blogs, bei denen Videos veröffentlicht werden, werden auch Videoblog oder Vlog genannt. Twittern ist eine spezielle Form des Bloggens, in der kurze Texte und Bilder verschickt werden können. Eine Twitter-Nachricht wird als „Tweet“ (zwitschern) bezeichnet. Über Hashtags und das Teilen von Nachrichten, das sogenannte „Retweeten“, kann ein breites Publikum erreicht werden. Das Wiki ist eine Informationsplattform, die von vielen Nutzern auch selbst bearbeitet werden kann. Details dazu finden sich in  Kap. 3 Wikis. Das Internetforum ist ein virtueller Ort, an dem Menschen diskutieren und Meinungen oder Erfahrungen austauschen können. So gibt es auch hier eine breite Palette an Themengebieten von Problemlösungen bis hin zu Hobbys jedweder Art. Soziale Netzwerke sind Onlineplattformen, auf denen Menschen Beziehungen zueinander aufbauen und Informationen austauschen können. Jeder Nutzer verfügt über ein eigenes Profil, kann einen Blog oder eine Timeline pflegen und auf Beiträge reagieren. Je nach Plattform und Community stehen entweder die Inhalte oder persönlichen Profile und Beziehungen im Vordergrund. Bekannte Funktionalitäten von sozialen Netzwerken sind das „Posten“ eines Beitrags (gemeint ist die Veröffentlichung des Beitrags) und das Vergeben von „Likes“ an einen Beitrag (also der Ausdruck, dass einem etwas gefällt). Um immer auf dem neuesten Stand zu sein, ist es möglich, Profilen zu folgen. Die Anzahl der Follower entscheidet oft über die Popularität eines Profils. Die heute wichtigsten Plattformen sind Facebook, YouTube, Instagram und im beruflichen Umfeld LinkedIn.

Viele Systeme bieten heute eine Mischform der aufgelisteten Konzepte an. WhatsApp, ursprünglich gestartet als Instant-Messaging-Dienst, bietet heute auch Videotelefonie, den Versand von Bildern, Videos und anderen Dateien an. Neuere Kommunikationsplattformen erscheinen von vornherein mit einer Vielzahl verschiedener Funktionen zum Informationsaustausch. Gerade im beruflichen Umfeld sind diese nicht mehr wegzudenken. Die populärste dieser Plattformen ist Microsoft Teams. Sie beinhaltet unter anderem Funktionen zum Instant Messaging, Dateimanagement, Videokonferenzen und Desktop-Übertragungen. Microsoft Teams startete in 2017 und wuchs von Beginn an rasant, auch wegen der guten Integration mit anderen bereits weit verbreiteten Microsoft-Produkten wie beispielsweise der Microsoft-Office-Suite. Besonders während der Coronakrise, die das Arbeiten und Lernen von zu Hause aus notwendig machte, erlebten die neuen Kommunikationsplattformen einen

154

18

Kapitel 18 · Digitale Kommunikation

enormen Zulauf. Viele Schulen, die durch Corona plötzlich gezwungen waren, auf digitalen Unterricht umzustellen, nutzten diese Dienste. Darüber hinaus sind digitale Lernplattformen entstanden, die nun mehr oder weniger stark im Schulalltag genutzt werden. Sie bieten viele Vorteile. So können beispielsweise Schüler, die in Unterrichtsstunden fehlen, auch später noch auf die Aufzeichnungen zugreifen. Doch die neuen Techniken stellen Schüler wie Lehrkräfte natürlich auch vor Herausforderungen. Ein wichtiger Aspekt ist, wie diese Form der Kommunikation sinnvoll, aber auch datenschutzkonform verwendet werden kann. Auch im Privaten hat die Nutzung von Videotelefonie stark zugenommen. Viele vor allem ältere Menschen sind während der Pandemie zum ersten Mal damit in Berührung gekommen. Zum Beispiel, um regelmäßig ihre Enkelkinder sehen zu können. Die wohl größte Veränderung hat die digitale Kommunikation jedoch im Geschäftsleben hinterlassen. Viele Arbeitnehmer haben sich daran gewöhnt, ihren Arbeitsalltag im Homeoffice zu verbringen. Microsoft Teams oder alternative Dienste wie Slack sind dabei ein ständiger Begleiter. Diverse Stellen werden mittlerweile mit Remote Option ausgeschrieben, da Arbeitgeber gar nicht mehr davon ausgehen, qualifizierte Bewerber zu finden, die bereit sind, täglich in ein Büro zu fahren. Übung Welche Kommunikationsplattformen und Anbieter von Videotelefonie kennst du oder hast du bereits verwendet? Zu welchem Zweck benutzt du Videotelefonate in der Regel?

Für Informatiker ist die digitale Kommunikation nicht nur aus der Perspektive des Benutzers interessant. Die schnelle und sichere Übermittlung von Nachrichten stellt eine Herausforderung dar, die je nach konkretem Fall unterschiedliche Konzepte erfordert. Eine wichtige Unterscheidung ist der Modus, in dem Daten versandt und empfangen werden. Man unterscheidet dabei synchrone und asynchrone Kommunikation. 5 Synchron bedeutet zeitgleichen Empfang und Versand von Daten. Das persönliche Gespräch ist ein gutes Beispiel für eine synchrone Kommunikation. 5 Asynchron bedeutet hier, dass die Daten zeitlich versetzt gesendet und empfangen werden. Dabei entstehen keine Blockaden, das heißt, man muss nicht auf die Antwort des Kommunikationspartners warten. Die bisher erwähnten Kommunikationsformen sind in . Tab. 18.1 in synchron und asynchron unterteilt. Die Unterscheidung in synchron und asynchron ist bei Weitem nicht der einzig relevante Aspekt in der Konzeption eines Kommunikationskanals. Entscheidend können auch die Wahl der Verschlüsselung (siehe  Kap. 10 Informationssicherheit) sowie die Wahl der verwendeten Protokolle sein. Die technischen Details sind sehr komplex und sollen an dieser Stelle nicht vertieft werden.

155 Kapitel 18 · Digitale Kommunikation

18

. Tab. 18.1 Vergleich zwischen synchroner und asynchroner Kommunikation Synchron

persönliches Gespräch, Telefonie, Videokonferenz, Chat

Asynchron

E-Mail, SMS, Instant Messaging, Bloggen, Webseite, Webforum, soziale Netzwerke

Unabhängig von der verwendeten Technologie gilt es, sich weitere wichtige Aspekte der computervermittelten Kommunikation bewusst zu machen. Denn neben der Vielzahl an Vorteilen existieren auch nicht zu unterschätzende Nachteile: 5 Im Normalfall haben Gestik, Mimik und Tonlage einen hohen Stellenwert in der menschlichen Kommunikation. Durch Einsatz von digitalen Medien geht ein großer Teil der nonverbalen Kommunikation verloren. Dadurch wird es schwieriger, sich zu verständigen, und die Gefahr von Missverständnissen steigt. Dies soll durch die Verwendung von sogenannten Emojis kompensiert werden. Diese dienen der bildlichen Darstellung von Emotionen oder Gegebenheiten. 5 Profile und Kommentare in sozialen Netzwerken spiegeln oft ein verzerrtes Bild der Wirklichkeit wider, beispielsweise in Form bearbeiteter Fotos (vergleiche  Kap. 39 Computergrafik). So werden ein unvorteilhaftes Äußeres, Probleme oder andere negative Aspekte gar nicht erst sichtbar. Es wird eine heile Welt dargestellt, die mit dem realen Leben nur wenig zu tun hat. Durch diese Erwartungen kommt es immer wieder zu großen Enttäuschungen. Beispielsweise dann, wenn unterschiedliche Meinungen aufeinandertreffen und dann wesentlich stärker eskalieren als im persönlichen Kontakt. So eine Eskalation wird auch Shitstorm genannt und kann dazu führen, dass objektive Kritik nicht mehr möglich ist. 5 Die Möglichkeit der ständigen Erreichbarkeit und der übermäßigen Teilnahme am virtuellen sozialen Leben kann zu psychischen Erkrankungen führen. Dies wird auch Onlinesucht genannt. Bei Jugendlichen tritt dies meist in Verbindung mit dem exzessiven Konsum von sozialen Netzwerken oder Computerspielen auf. Die Weltgesundheitsorganisation WHO führt die Onlinespielsucht seit 2018 als Krankheit. Auch der Zusammenhang zwischen der exzessiven Nutzung sozialer Medien und Depressionen ist wissenschaftlich belegt. Bei berufstätigen Personen tritt häufig das Phänomen auf, dass die Erreichbarkeit über digitale Medien die psychische Belastung steigert. Dadurch steigt die Gefahr eines Burn-outs. 5 Als Fake News (Falschmeldungen) bezeichnet man Lügen und irreführende Darstellungen. Durch Blogs und soziale Netzwerke können diese Nachrichten aber besonders schnell und mit einer großen Reichweite verbreitet werden. Es besteht die Gefahr, dass sich diese Nachrichten und die mit ihnen in Verbindung stehenden Personen (also sowohl Autoren als auch Konsumenten durch Klicks, Likes, Retweets oder ähnliches) gegenseitig bestärken und keine tatsächliche Prüfung des Wahrheitsgehalts stattfindet. Besonders politisch wichtige Themen wie Wahlen, Kriege oder Klimadebatten sind so äußerst anfällig für Verschwörungstheorien.

156

Kapitel 18 · Digitale Kommunikation

Übung Welche Nachteile von computervermittelter Kommunikation hast du selbst bereits erlebt? Fallen dir Beispiele für ein Missverständnis, einen Shitstorm, einen Fall von Onlinesucht oder von Fake News aus deinem direkten Umfeld ein?

18

Die Mensch-Maschine-Kommunikation kennt diese Probleme nicht. Während die Kommunikationsmöglichkeiten mit Maschinen lange Zeit eher beschränkt waren, kommen in den letzten Jahren einige gänzlich neue Errungenschaften auf den Markt. Manche dieser Formen stecken zwar noch in den Kinderschuhen, entwickeln sich aber permanent weiter. Heute ist für jeden die Benutzung von Maus und Tastatur eines PCs Alltag. Auch der klassische Notaus-Schalter gehört bei Rolltreppen und Maschinen mit gefährlichen Arbeitsweisen mittlerweile zum Standard. Servicechat-Fenster finden sich dagegen auf immer mehr Webseiten, besonders im Onlinehandel. Immer häufiger wird der Chat direkt von einer künstlichen Intelligenz geführt, so sparen sich Unternehmen Personalkosten. Bei einfachen Fragen, die auch eine Suche auf der jeweiligen Webseite lösen würde, funktionieren die Servicechats oft sehr gut, stoßen aber bei komplexeren Sachverhalten noch an ihre Grenzen. Einige Anbieter verwenden auch ein zweistufiges Vorgehen, sodass erst bei einem erkannten komplexeren Fall an menschliche Mitarbeiter weitergeleitet wird. Aber auch die Zukunft hält so einiges an Innovation in diesem Bereich bereit. So gibt es Forschungen für Gehirn-Computer-Schnittstellen, die vor allem für körperlich behinderte oder körperlich eingeschränkte Menschen ein enormes Potenzial bieten. Messungen auf der Kopfhaut bieten prinzipiell bisher nur eine eingeschränkte Genauigkeit und Funktionalität. Es gibt aber viele Forschungsprojekte, die sich mit der Implantation von Sensoren beschäftigen, um auch komplexe Vorgänge wie die Bewegung von Gliedmaßen zu ermöglichen. Die tatsächliche Umsetzung solcher Vorhaben dürfte noch etliche Jahre in der Zukunft liegen. Aber es sind Innovationen, die Mut machen. Die natürliche Sprache zur Steuerung von Maschinen hält heute an immer mehr Stellen Einzug. So ist es in einem Auto heute oft schon möglich, die Multimediaeinheit per Sprache zu steuern, beispielsweise das Anrufen einer diktierten Telefonnummer oder der Kontakte aus dem Telefonbuch des Smartphones. Digitale Assistenten, wie Alexa, Siri oder Google Assistant, bieten einige praktische Funktionen. Das sind zum einen einfache Funktionen wie 5 Informationen über Wetter, Sehenswürdigkeiten, Routenplanung etc. zur Verfügung stellen, 5 das Abspielen von Musik und 5 das Anlegen von Timern oder Erinnerungen. Und zum anderen komplexere Dienste wie 5 das neue Anlegen von Terminen oder die Information über aktuelle Termine, sodass bei der derzeitigen Verkehrslage pünktlich das Ziel erreicht wird,

157 Kapitel 18 · Digitale Kommunikation

18

5 die Steuerung des smarten Gebäudes, wie Lichtschalter, Rollladen oder Heizung sowie 5 die Erkennung des gerade laufenden Musiktitels, z. B. im Kaufhaus. Demnächst soll es Assistenten möglich sein, Termine selbst zu vereinbaren, wie beispielsweise die Reservierung in einem Lokal. Dabei ruft die künstliche Intelligenz beim Lieblingsitaliener an und reserviert einen Tisch. Dieses Feld entwickelt sich gerade jetzt sehr dynamisch, in dem immer neue Funktionen dazukommen. Sowohl die Kommunikation mit Servicechats als auch digitale Assistenten sind eine Ausprägung von künstlicher Intelligenz (mehr dazu in  Kap. 44 Künstliche Intelligenz). Gerade die natürliche Sprache führt dazu, dass auch schon Kleinkinder mit einem Tablet interagieren können, noch bevor sie überhaupt lesen und schreiben können. Was für Kinder intuitiv ist, fällt älteren Menschen oft besonders schwer. Dabei ist es gerade für im Alter körperlich eingeschränkte Menschen ein großer Komfortgewinn, wenn digitale Assistenten sich beispielsweise um das Ein- und Ausschalten des Lichts kümmern und kontrollieren, ob die Herdplatte aus ist. Dies führt aber unweigerlich auch zu einem großen Nachteil. Wenn alles von einer zentralen Einheit gesteuert wird, so ist deren Ausfall besonders kritisch. Smarte Lautsprecher wie Alexa brauchen zum Funktionieren zwingend eine Internetverbindung (genauere Erklärungen zu der Funktion solcher Geräte finden sich in  Kap. 49 Internet der Dinge). Die Spracherkennung selbst läuft nicht im Lautsprecher, sondern innerhalb des Datencenters eines Anbieters ab. Bei einem Internetausfall ist also auch die Funktion des Lautsprechers nicht mehr gegeben. Neben diesem wichtigen Aspekt gibt es aber weitere Bedenken. So ist ein Eindringen von Dritten in das eigene WLAN plötzlich um ein Vielfaches schlimmer. Dem Angreifer ist es dann eventuell möglich, die Geräte und Funktionen innerhalb des Haushalts zu manipulieren. Smarte Geräte müssen also auch immer auf dem neuesten Stand und verwendete Passwörter absolut sicher sein. Die angesprochene Zielgruppe älterer Menschen kann dies aber eher nur schwierig umsetzen. Es muss also sichergestellt sein, dass Updates vollautomatisch eingespielt werden. Die Einrichtung sollte dementsprechend mit besonderer Sorgfalt durchgeführt werden, sodass die smarten Helfer dann auch tatsächlich zuverlässig funktionieren. Weitere Kritikpunkte an digitalen Assistenten finden sich auch im Bereich der Privatsphäre und des Datenschutzes. Da alle Daten ins Internet hochgeladen werden, liegen Aufzeichnungen nicht etwa auf dem smarten Gerät, sondern in der jeweiligen Cloud des Betreibers. Im Jahr 2019 riet Stiftung Warentest beispielsweise: „Wem Privatsphäre und Datenschutz wichtig sind, der lässt lieber die Finger von den digitalen Helfern. Wer das dagegen nicht so kritisch sieht, bekommt mit den folgenden Geräten gute Sprachbedienung und ordentlichen Klang bei der Musikwiedergabe.“ Die Anbieter dieser Technologien zeigen nämlich nicht transparent auf, was gespeichert und ausgewertet wird. Es muss also jedem bewusst sein, dass nicht nur die Sprachbefehle ausgewertet werden, sondern dass permanent Gespräche und Geräusche mitgeschnitten werden. So ist denkbar, dass Gespräche allgemein ausgewertet und für zielgerichtete Werbung verwendet werden können.

158

Kapitel 18 · Digitale Kommunikation

Die vielen Möglichkeiten, die sich durch die heute verfügbaren digitalen Kommunikationsformen bieten, bringen zwei grundlegende Herausforderungen mit sich: 1. Die aktive Nutzung ist zunächst ungewohnt. Ähnlich wie beim Kommunizieren mit einer Person, die einen ungewohnten Dialekt spricht, erfordert es Zeit, miteinander vertraut zu werden. Erst dann funktioniert der Informationsfluss reibungslos. 2. Die schnelle Verbreitung von Informationen über verschiedene digitale Kanäle hat insgesamt zu einer massiven Zunahme von Informationen geführt. Dies wiederum bedeutet, dass grundlegend andere Fähigkeiten erforderlich sind, um zeitgemäß zu kommunizieren. Es ist noch nicht so lange her, da waren das Besitzen und Behalten von Informationen bedeutend wichtiger. Im Gegensatz dazu hat die Fähigkeit, Informationen zu filtern und zu bewerten, an Bedeutung gewonnen.

18

Jüngere Menschen stehen diesen Herausforderungen wesentlich offener gegenüber als Menschen, die mit ganz anderen Formen der Kommunikation aufgewachsen sind. Schlussendlich ist die Nutzung digitaler Medien somit oftmals eine Frage des Alters. Das ist insofern tragisch, als dass sich deshalb die Generationen einander entfremden. Daher gilt es den Kommunikationskanälen der Jüngeren eine Chance zu geben und umgekehrt Verständnis dafür aufzubringen, wenn sich die Älteren mit den neuen Errungenschaften der digitalen Kommunikation schwertun. Übung Bitte deine Großeltern um einen Videochat. Zeig ihnen, wie die Technik funktioniert. Vielleicht finden sie ja Gefallen daran.

? Was sind Formen der computervermittelten Kommunikation? Wie unterscheidet sich synchrone von asynchroner Kommunikation? Welche Nachteile können bei computervermittelter Kommunikation auftreten? Für welche Aufgaben kann eine MenschMaschine-Kommunikation verwendet werden? Welche grundsätzlichen Herausforderungen bringen neue digitale Kommunikationsformen mit sich?

159

Binärsystem & Datentypen

© Springer Fachmedien Wiesbaden GmbH, ein Teil von Springer Nature 2024 T. Eichstädt und S. Spieker, 52 Stunden Informatik, https://doi.org/10.1007/978-3-658-41838-0_19

19

160

19

Kapitel 19 · Binärsystem & Datentypen

In unserem Alltag verwenden wir das Dezimalsystem. Computer rechnen im Binärsystem. Das Binärsystem enthält zwei Zahlen, nämlich 0 und 1. Alle weiteren Zahlen sind aus Bits und Bytes zusammengesetzt. Wir können Zahlen von dem einen in das andere System umrechnen. Bits und Bytes begegnen uns häufig in Kombination mit einem Einheitenvorsatz, um Speicherkapazitäten oder Geschwindigkeiten für eine Datenübertragung anzugeben. Bei der Verwendung von Speicher in Programmen kommen Datentypen zum Einsatz. Für die Verwendung von Programmiersprachen ist das Verständnis von Binärsystem und Datentypen sehr wichtig. Es gibt primitive Datentypen wie die boolesche Variable, den Integer, Character, String und Pointer. Darüber hinaus können durch den Zusammenschluss von primitiven Datentypen Datenstrukturen entstehen. Ein Beispiel ist der Array als Aneinanderreihung von vielen primitiven Datentypen desselben Typs. In der frühen Bronzezeit zum ersten Mal erwähnt, hat sich das Dezimalsystem über Jahrhunderte hinweg etabliert und ist heute das System, auf dem sämtlichen Berechnungen des Alltags basieren. Es besteht aus zehn Zahlen (0–9), die verbunden werden und so jede erdenkliche Zahl bilden können. Das Binärsystem, auch Zweiersystem oder Dualsystem genannt, ist ein Zahlensystem, das in der Informatik eine große Bedeutung hat. Computer können ausschließlich in diesem System rechnen. Übung Weißt du, wie viele Zahlen das Binärsystem enthält? Hast du schon von den Begriffen Bit und Byte gehört und kennst du deren Bedeutung?

Das Binärsystem basiert auf zwei Zahlen, der 0 und der 1. Zum besseren Verständnis und der Übersichtlichkeit wegen werden die geschriebenen Zahlen hier als Ziffern dargestellt. Der Begriff Bit (aus dem Englischen „binary digit“) bezeichnet in der Informatik eine binäre Ziffer und kann damit genau zwei Zustände annehmen, nämlich 0 und 1. Beim Byte handelt es sich um eine Zusammenfassung aus 8 Bit, also acht binären Zahlen. Um das System zu verstehen, hilft ein Blick in . Tab. 19.1. Die Zahlen 0 und 1 sind noch identisch, doch bei der 2 müssen schon zwei Stellen besetzt werden. Ab der 4 sogar 3 Stellen. Es fällt auf, dass Vielfache der Zahl 2 genau eine 1 enthalten. In der Tabelle sind für diese die Zweierpotenzen mit angegeben. Um eine Zahl aus dem Binärsystem in das Dezimalsystem zu übertragen, wird die jeweilige Stelle mit der passenden Zweierpotenz multipliziert. Daraus bildet sich die Summe. Die Zahl 111 wird damit zu 1 × 22 + 1 × 21 + 1 × 20 = 1 × 4 + 1 × 2 + 1 × 1 = 4 + 2 + 1 = 7. Soll eine Dezimalzahl in eine Binärzahl umgerechnet werden, so muss man die Dezimalzahl mit dem Rest durch zwei dividieren. Die jeweiligen Ergebnisse werden so lange weiter durch zwei geteilt, bis die Lösung Null ist. Die Ziffern, die beim Rest stehen, sind dann die entscheidenden Zahlen, denn daraus entsteht die Binärzahl. In . Tab. 19.2 wird die Umrechnung der Dezimalzahl 44 in die Binärzahl 101100 dargestellt.

19

161 Kapitel 19 · Binärsystem & Datentypen

. Tab. 19.1 Erklärung Dezimalsystem und Binärsystem Dezimalsystem

Binärsystem

Zweierpotenz

0

=

0

1

=

1

20

2

=

10

21

3

=

11

21 + 20

4

=

100

22

5

=

101

22 + 20

. Tab. 19.2 Umrechnung von Dezimalzahl in Binärzahl Zahl

Ergebnis

Rest

44

:

2

=

22

0

22

:

2

=

11

0

11

:

2

=

5

1

5

:

2

=

2

1

2

:

2

=

1

0

1

:

2

=

0

1

Übung Kannst du die binären Werte für folgende Dezimalzahlen angeben? 8 17 127 Kannst du auch für die folgenden binären Werte die dezimalen Zahlen bestimmen? 1111 101010 1111111

Anhand von . Tab. 19.3 können die Ergebnisse kontrolliert werden. Als Hilfestellung sind auch noch die jeweiligen Zweierpotenzen angegeben. In der Informatik ist das Binärsystem so wichtig, weil innerhalb eines Computers alle Vorgänge binär verarbeitet und gespeichert werden. Innerhalb einer Rechenoperation ist das Bit vergleichbar mit dem Schalter einer Lampe. Es kann offen oder geschlossen sein, kennt also nur zwei Zustände. Daher die Bezeichnung binär.

162

Kapitel 19 · Binärsystem & Datentypen

. Tab. 19.3 Vergleich der Darstellung ausgewählter Zahlen Dezimal

128

64

32

16

8

4

2

1

Binär

8

1

0

0

0

1000

15

1

1

1

1

1111

1

0

0

0

1

10001

1

0

1

0

1

0

101010

1

1

1

1

1

1

1111111

17 42 127

1

Übung In welchen Bereichen kommen Bits und Bytes vor? Fallen dir Beispiele ein, vor allem wenn du dabei an das Internet oder auch an dein Smartphone denkst?

19 Mögliche Antworten sind 5 Speicher auf dem Smartphone (z. B. 32 Gigabyte), 5 Arbeitsspeicher (Smartphone z. B. 4 Gigabyte, PC z. B. 16 Gigabyte), 5 Internetgeschwindigkeit (DSL 100 Megabit/s, UMTS. 42 Megabit/s), 5 USB-Stick (z. B. 64 Gigabyte) und 5 Prozessor (64 Bit). . Tab. 19.4 gibt eine kurze Übersicht der allgemein gebräuchlichen Form und Abkürzungen wieder. . Tab. 19.4 Einheitenvorsätze Binärsystem Einheitenvorsatz

Symbol

Zehnerpotenz

Zahl

Zahlwort

Kilo

K

103

1000

Tausend

Mega

M

106

1.000.000

Million

Giga

G

109

1.000.000.000

Milliarde

Tera

T

1012

1.000.000.000.000

Billion

Peta

P

1015

1.000.000.000.000.000

Billiarde

Exa

E

1018

1.000.000.000.000.000.000

Trillion

Zetta

Z

1021

1.000.000.000.000.000.000.000

Trilliarde

163 Kapitel 19 · Binärsystem & Datentypen

19

Wie bereits erwähnt, kennt der Computer nur zwei Zustände. Als Konsequenz daraus ergibt sich, dass der Rechner auch nur zwei mögliche Antworten liefern kann. Ist die Antwort 0, dann … Ist die Antwort 1, dann … In der Informatik bezeichnet man das auch als If-else-Verzweigung. Das binäre System ist deshalb auch die Grundlage, um Programme zu schreiben und entsprechende Algorithmen zu entwickeln (siehe auch  Kap. 21 Algorithmik (in Python)). Eine weitere praktische Anwendung des Binärsystems sind IP-Adressen. Eine IPv4-Adresse (siehe  Kap. 8 Netzwerke und Protokolle) wird aus vier 8-Bit-Werten gebildet, beispielsweise 192.168.0.42. Die Subnetzmaske wird verwendet, um das Netzwerk in ein lokales und den Rest zu unterteilen. Die Größe des lokalen Netzwerks lässt sich einfach ausrechnen, indem man die Zahl binär aufschreibt und die Nullen als Wertebereich auffasst. Dies ist notwendig, um die maximale Anzahl an Geräten innerhalb des lokalen Netzwerks definieren zu können. Aus der Dezimalzahl 192 ergibt sich die binäre Zahl 1100 0000. Der Wertebereich liegt dann also zwischen 00 0000 (0) und 11 1111 (63), was 64 mögliche Adressen ergibt. Übung Kannst du die binäre Darstellung der Dezimalzahlen in . Tab. 19.5 aufschreiben? Wie viele Adressen gibt es innerhalb des Subnetzes, wenn die Subnetzmaske 255.255.255.0 ist? Und wie viele sind es bei 255.255.252.0?

Für die Subnetzmaske 255.255.255.0 ergeben sich 256 Adressen und für 255.255. 252.0 sind es 1024. Die Verwendung des Binärsystems ist auch die Grundlage bei der Speicherung aller Daten und nicht nur der von Zahlen. Es gibt verschiedene Datentypen, die innerhalb des Programmcodes verwendet werden können. Der kleinste und einfachste

. Tab. 19.5 Übungstabelle zur Umrechnung in das Binärsystem Beispiel

Dezimal

10

10

15

13

00001010

00001010

00001111

00001101

192

168

0

42

255

255

255

0

255

255

252

0

Binär Dezimal Binär Dezimal Binär

164

Kapitel 19 · Binärsystem & Datentypen

. Tab. 19.6 Datentypen mit Wertebereich

19

Name

Bit

Wertebereich

Byte oder Char

8

0 bis 255

Integer oder Int16

16

−32.768 bis 32.767

Unsigned Integer

16

0 bis 65.535

Long oder Int32

32

−2.147.483.648 bis 2.147.483.647

Long long oder Int64

64

−9.223.372.036.854.775.808 bis 9.223.372.036.854.775.807

Datentyp ist die boolesche Variable. Diese kann nur zwei Zustände annehmen, nämlich wahr (in Python True) oder falsch (in Python False). Sie lässt sich binär ganz einfach mit 0 oder 1 abbilden. Diese Art der Variablen können logisch miteinander verknüpft werden. Sie finden vor allem bei bedingten Anweisungen und Schleifen Anwendung (siehe  Kap. 21 Algorithmik (in Python)). Eine Gruppe von Datentypen sind Zahlen, die sich nochmal in Ganzzahlen und in Fließkommazahlen aufteilen. Ganzzahlen können aber nur natürliche Zahlen abbilden. Fliekommazahlen dagegen können Ganz- und Kommazahlen abbilden. Innerhalb ihrer jeweiligen Untergruppe unterscheiden sie sich vor allem durch die Größe, die sie abbilden können. Zahlen ohne Vorzeichen werden als unsigned (ohne Vorzeichen) bezeichnet. . Tab. 19.6 listet verbreitete ganzzahlige Datentypen auf. Der genaue Wertebereich unterscheidet sich je nach Umgebung und Programmiersprache. Bei JavaScript und Python übernimmt die Programmiersprache die Auswahl der Größe des Datentyps. Der Datentyp Character, abgekürzt char, kann aber nicht nur zum Speichern von Zahlen verwendet werden, sondern auch zum Speichern von Buchstaben. Wörter werden als Aneinanderreihung von Buchstaben dargestellt und heißen String (Zeichenfolge). Fließkommazahlen, auch Gleitkommazahlen genannt, werden aber ganz anders gespeichert als Ganzzahlen. Sie sind eine Näherung an beliebige reelle Zahlen, also Zahlen mit Komma. Es können sowohl Zahlen wie Pi (3,142 . . .) dargestellt werden als auch sehr große Zahlen wie 7,2 Billiarden (7,2 × 1015 ). Die Menge der zu speichernden Zahlen ist abhängig von der Anzahl der verwendeten Bits. Die Genauigkeit ist oft unterschiedlich ausgeprägt und nur näherungsweise korrekt. Fließkommazahlen werden dabei in drei Komponenten zerlegt: m × be (gelesen m mal b hoch e) (vergleiche . Tab. 19.7).

165 Kapitel 19 · Binärsystem & Datentypen

19

. Tab. 19.7 Komponenten einer Fließkommazahl Komponente

Beschreibung

Beispiel

Basis

Die gewählte Basis b gibt die Zahl an, auf die sich der Exponent bezieht. In der Informatik ist die Basis meist 2.

7,2 × 1015

Mantisse

Die Mantisse m enthält die Ziffern der Gleitkommazahl. Die Anzahl der gespeicherten Ziffern bestimmt die Genauigkeit.

7,2 × 1015

Exponent

Der Exponent e speichert nach der Normalisierung auf eine Stelle vor dem Komma die Größenordnung der Zahl.

7,2 × 1015

. Tab. 19.8 Datentypen für Fließkommazahlen Name

Mantisse Bit)

Half

(in

Exponent (in Bit)

Vorzeichen

Bits gesamt

Wertebereich

10

5

1

16

−6,6 × 104 bis 6,6 × 104

Float

23

8

1

32

−3,4 × 1038 bis +3,4 × 1038

Double

52

11

1

64

−1,7 × 10308 bis +1,7 × 10308

Für die Genauigkeit der Fließkommazahlen kommt es auf die Aufteilung des Speicherbereichs durch die drei Komponenten m, b und e an. Ist die Zahl sehr groß, wird viel Speicher für den Exponenten verwendet, sodass die Mantisse nur noch wenige Stellen hinter dem Komma besitzen kann. Zusätzlich wird immer ein weiteres Bit für das Vorzeichen verwendet, egal ob es sich um eine positive oder negative Zahl handelt. Die Speicherung erfolgt nach festen Regeln, wie in . Tab. 19.8 abgebildet. Ein sehr wichtiger Datentyp, der in kein bisher behandeltes Muster passt, ist der Pointer (Zeiger). Der Pointer ist ein Zeiger, der auf einen bestimmten Speicherbereich weist. Er wird verwendet, um einzelne Adressen innerhalb des Arbeitsspeichers eindeutig anzusprechen. Die Größe des Pointers hängt vom genutzten Betriebssystem ab. Heute sind 64-Bit-Betriebssysteme weit verbreitet, das bedeutet für den Pointer, dass dieser dann auch 64 Bit groß ist. Pointer sind bei objektorientierter Programmierung besonders wichtig (vergleiche mit  Kap. 22 Objektorientierung (in Python)).

166

Kapitel 19 · Binärsystem & Datentypen

Die bisher genannten Datentypen boolesche Variablen, ganze Zahlen, Fließkommazahlen, Chars und Pointer werden auch primitive Datentypen genannt. Darüber hinaus gibt es komplexere Datentypen, die aus dem Zusammenschluss von mehreren primitiven Datentypen entstehen. Ein Beispiel für einen komplexen Datentyp ist das Array (Feld). Ein Array ist eine Aneinanderreihung vieler primitiver Datentypen desselben Typs. Das Beispiel eines Strings wurde bereits kurz erwähnt. Es gibt diesen Datentyp jedoch auch in allgemeiner Form, zum Beispiel um eine Wertfolge, wie etwa die Lottozahlen, zu speichern. In  Kap. 23 Datenstrukturen (in Python) werden noch weitere komplexe Datentypen vorgestellt. Auch hier werden Pointer eine wichtige Rolle spielen. > Weiterführende Informationen zu Python-Datentypen: 7 https://www.python-kurs. eu/python3_variablen.php

19

? Was ist ein Bit? Wie viele Bits hat ein Megabyte? Was ist die binäre Darstellung der Zahl 7? Wie viele Zustände kann eine boolesche Variable annehmen? Was ist der Datentyp Integer? Aus welchen Komponenten besteht eine Fließkommazahl?

167

„Hallo Welt“ (in Python)

© Springer Fachmedien Wiesbaden GmbH, ein Teil von Springer Nature 2024 T. Eichstädt und S. Spieker, 52 Stunden Informatik, https://doi.org/10.1007/978-3-658-41838-0_20

20

168

20

Kapitel 20 · „Hallo Welt“ (in Python)

Python ist eine universell einsetzbare Programmiersprache. Um eine neue Programmiersprache kennenzulernen ist es üblich, mit dem Schreiben eines Hallo-WeltProgramms zu beginnen. Python-Code kann in einer Webshell ausgeführt werden. Meist ist es nützlicher, Python zu installieren, um Programme auf dem eigenen PC ausführen zu können. Dazu wird die python.exe verwendet – ein ausführbarer Python-Interpreter. Python lässt sich als Skriptsprache verwenden, was bedeutet, dass der Code vor der Ausführung nicht kompiliert werden muss. In der WindowsEingabeaufforderung lässt sich eine Python-Konsole öffnen. Um Python in anderen Verzeichnissen zu verwenden, kann der Python-Installationspfad zu den Umgebungsvariablen hinzugefügt werden. Python-Code kann in einer .py-Datei abgelegt und diese Datei vom Python-Interpreter ausgeführt werden. In der Windows-Aufgabenplanung lässt sich die Ausführung eines Skripts planen. Wir wollen uns in dieser Stunde Python zuwenden. Python ist eine einfache und zugleich sehr umfassende und universell einsetzbare Programmiersprache. Einfach deshalb, weil ihre Syntax klar und übersichtlich ist. Dadurch ist Python-Code gut lesbar. Sie eignet sich sehr gut für Anfänger. Aber auch Profis setzen zum Lösen komplexer Aufgaben in einer Vielzahl von verschiedenen Situationen auf Python. In  Kap. 7 JavaScript wurden bereits erste Erfahrungen mit dem Programmieren gesammelt. JavaScript diente dabei dem Zweck, HTML-Seiten dynamisch zu manipulieren. Mit Python werden andere Ziele verfolgt. Das Schreiben und Ausführen von Skripten mithilfe eines Interpreters funktioniert in Python aber ganz ähnlich. Am Anfang steht zunächst wieder die Ausgabe einer Zeichenkette. Um es uns einfach zu machen, verwenden wir dafür zunächst eine Webshell. In diesem Fall wird die Shell von einer Webseite bereitgestellt, wie . Abb. 20.1 zu entnehmen ist.

. Abb. 20.1 Python-Webshell

169 Kapitel 20 · „Hallo Welt“ (in Python)

20

Übung Öffne im Webbrowser 7 https://www.python.org/shell/ und gib ein: print(„hallo welt“)

Das Ergebnis ist die Ausgabe von „hallo welt“. Dies konnten wir ganz einfach durch den Aufruf der print-Funktion erreichen (vergleiche alert-Funktion in  Kap. 7 JavaScript). Außerdem ist ersichtlich, dass Python hier in der Version 3.10.5 verwendet wird. Ursprünglich wurde diese Programmiersprache in den 90er-Jahren entwickelt. Wird von Python gesprochen, ist in der Regel CPython gemeint. Das bedeutet, dass der Python-Interpreter in der Programmiersprache C geschrieben ist. C ist eine weitere universell einsetzbare Programmiersprache, die bereits in den 70er-Jahren entwickelt wurde, aber auch heute noch weit verbreitet ist. Mit der Verbreitung von C wurde es üblich, Lehrbücher und Tutorials zu Programmiersprachen mit dem Schreiben eines Hallo-Welt-Programms zu beginnen. Das Programm soll das Regelsystem der Sprache aufzeigen. Gleichzeitig dient es dem besseren Verständnis, wie ein minimal vollständiges Programm geschrieben und ausgeführt werden kann. Diesem Ablauf sind wir auch in der Stunde JavaScript gefolgt. Als Nächstes wollen wir sehen, wie der Hallo-Welt-Befehl auf dem PC ausgeführt wird. Das ist in den meisten Fällen wesentlich nützlicher als eine Webshell. Übung Besuche nochmals die Python-Webseite 7 https://www.python.org/downloads/ und lade die passende Version für dein Betriebssystem herunter. Installiere es danach auf deinem PC (vergleiche . Abb. 20.2).

Bei der Installation wird immer ein Zielverzeichnis angegeben. In diesem Beispiel wurde Python in das Verzeichnis C:\Users\Timm\AppData\Local\ Programs\Python\Python311 installiert. Das ist der Ort, an dem sich nun der Python-Interpreter python.exe befindet, wie es in . Abb. 20.3 gezeigt wird. Die Endung .exe steht für eine ausführbare Datei (engl. executable). Diese Dateien können vom Betriebssystem direkt verwendet werden. Hier liegt der große Unterschied zwischen den Skriptsprachen und kompilierten Programmiersprachen wie C. Kompilieren bedeutet, aus dem Quellcode eine ausführbare Datei zu erstellen. Der Python-Interpreter wurde also aus einem C-Programm kompiliert. Jetzt sind alle Voraussetzungen gegeben, um Python-Code ausführen zu können. Übung Öffne die Windows-Eingabeaufforderung im Python-Installationsverzeichnis und führe den Befehl „python“ aus. Führe dann den Hallo-Welt-Befehl aus.

170

Kapitel 20 · „Hallo Welt“ (in Python)

. Abb. 20.2 Python-Installer

20

. Abb. 20.3 Python-Verzeichnis mit Interpreter

Es gibt mehrere Möglichkeiten, die Eingabeaufforderung unter Windows aufzurufen. Empfohlen werden folgende Schritte: 5 Markieren der Adresszeile im Windows Explorer (. Abb. 20.4) 5 Eingabe von „cmd“ und mit Enter bestätigen (. Abb. 20.5) 5 Jetzt öffnet sich ein cmd-Fenster in demselben Verzeichnis wie auch der Windows Explorer (. Abb. 20.6).

171 Kapitel 20 · „Hallo Welt“ (in Python)

20

. Abb. 20.4 Adresszeile im Explorer

. Abb. 20.5 Ausführen von cmd

. Abb. 20.6 Konsole im Python-Verzeichnis

Die Eingabeaufforderung ist jetzt im richtigen Verzeichnis geöffnet. Hier wird der Python-Befehl nun ausgeführt. Dadurch öffnet sich innerhalb der Eingabeaufforderung wiederum die Python-Shell, wie in . Abb. 20.7 zu sehen. In dieser kann wiederum der print-Befehl ausgeführt werden. Dieses Mal wurde Python aber lokal auf dem PC verwendet (. Abb. 20.8). Wichtig für die Ausführung von Python ist, dass man sich im korrekten Verzeichnis befindet. Ist dies nicht der Fall, kann die Executable nicht ausgeführt werden. Je nach Windowsversion erscheint dann eine Fehlermeldung oder es wird, wie in . Abb. 20.9, eine Websuche gestartet, um Python herunterzuladen (was wir ja bereits getan haben). Das liegt daran, dass das Betriebssystem die Datei python.exe nicht kennt und somit nicht weiß, an welchem Ort es diese suchen soll. Über die sogenannte PATH-

. Abb. 20.7 Python-Shell

172

Kapitel 20 · „Hallo Welt“ (in Python)

. Abb. 20.8 „Hallo Welt“ in der Python-Shell

20

. Abb. 20.9 Fehlermeldung beim Ausführen im falschen Verzeichnis

Variable kann man Windows der Python-Installationspfad mitteilen. Diese Variable beinhaltet nämlich alle Orte, an denen das Betriebssystem ausführbare Dateien sucht. Übung Führe in der Eingabeaufforderung den folgenden Befehl aus: set PATH=[neues Verzeichnis];%PATH% Dadurch wird ein neues Verzeichnis zu der PATH-Variablen hinzugefügt. Achtung, damit werden Systemeinstellungen geändert! Es ist Vorsicht geboten, da beim Entfernen von Verzeichnissen aus der PATH-Variablen das Betriebssystem möglicherweise nicht mehr wie erwartet funktioniert.

. Abb. 20.10 zeigt einen Screenshot mit der Ausführung des PATH-Befehls.

173 Kapitel 20 · „Hallo Welt“ (in Python)

20

. Abb. 20.10 Anpassen der Pfadvariablen für Python

Damit ist die Voraussetzung geschaffen, Python überall im Betriebssystem nutzen zu können. Das Hallo-Welt-Programm ist damit jedoch immer noch nicht geschrieben. Der Python-Quellcode ist noch nicht hinterlegt oder gespeichert. Übung Erstelle eine hallo_welt.py-Datei mit dem Inhalt: print(„hallo welt“) Gratulation, hier ist das erste selbstgeschriebene Python-Skript.

Ein Programm lässt sich in der Eingabeaufforderung mit dem python-Befehl aufrufen. Der Dateipfad des Python-Skripts wird abgegrenzt mit einem Leerzeichen als Parameter übergeben:

python [Dateipfad]

In . Abb. 20.11 wird die Anlage der Datei gezeigt. Die Ausführung innerhalb der Eingabeaufforderung ist in . Abb. 20.12 dargestellt. Das Skript lässt sich jetzt auch außerhalb der Eingabeaufforderung ausführen: 5 Rechtsklick auf die Datei 5 Öffnen mit 5 Python auswählen

. Abb. 20.11 Erstellen einer hallo_welt.py-Datei

174

Kapitel 20 · „Hallo Welt“ (in Python)

. Abb. 20.12 Ausführen des Hallo-Welt-Programms

Das Problem hierbei ist, dass sich das Skript sofort nach der Ausführung wieder schließt. Es bleibt also keine Zeit, die Ausgabe zu lesen. Das Skript kann aber erweitert werden, sodass es vor dem Schließen eine definierte Zeit wartet. Das lässt sich wie folgt realisieren:

20

import time print(„hallo welt“) time.sleep(10)

Nun erscheint die Ausgabe für zehn Sekunden, bevor sich das Fenster wieder schließt, vergleiche . Abb. 20.13. Dieses Skript kann auch verwendet werden, um bei der Anmeldung am PC eine Begrüßung anzuzeigen. Übung Öffne die Windows-Aufgabenplanung, indem du in der Windows-Suche „Aufgabenplanung“ eingibst. Gehe dort auf „Einfache Aufgabe erstellen . . . “, die bei der Anmeldung mit höchster Berechtigung ausgeführt wird. Definiere als Aktion die Ausführung von Python mit dem Dateipfad zum Python-Skript.

. Abb. 20.13 Ausgabe des Hallo-Welt-Programms

175 Kapitel 20 · „Hallo Welt“ (in Python)

20

Diese Stunde diente also dem besseren Verständnis des Python-Interpreters. Wir haben auch eine kleine Anwendung zur Nutzung des Python-Interpreters erstellt und angewendet. Über das Programmieren mit Python lernen wir mehr in der nächsten Stunde. Python bietet sehr viele Möglichkeiten. Es ist unter anderem auch möglich, damit Programme zu kompilieren. Python kann als interpretierte Sprache, aber auch als kompilierte Sprache eingesetzt werden. Dank seiner Variabilität ist Python eine der beliebtesten Programmiersprachen der heutigen Zeit. Das gilt insbesondere für die Open Source Community. Python selbst wird als Open-Source-Projekt entwickelt und lizenziert. Mehr Informationen dazu gibt es in  Kap. 31 Open Source. ? Wozu dient ein Hallo-Welt-Programm? Wie kann ein Python-Befehl ausgeführt werden? Wie unterscheiden sich Programme von interpretierten und kompilierten Sprachen? Welche Bedeutung hat die PATH-Variable? Wie erstellt man ein PythonSkript?

177

Algorithmik (in Python)

© Springer Fachmedien Wiesbaden GmbH, ein Teil von Springer Nature 2024 T. Eichstädt und S. Spieker, 52 Stunden Informatik, https://doi.org/10.1007/978-3-658-41838-0_21

21

178

21

Kapitel 21 · Algorithmik (in Python)

Algorithmik ist wichtig, um Probleme so zu formulieren, dass sie ein Computer lösen kann. Dabei wird oft das Divide-and-conquer-Vorgehen angewendet. Entscheidungsbäume können helfen, eine Problemlösung zu beschreiben, die sich auch in einer Programmiersprache formulieren lässt. Bei der Übertragung werden die Knoten im Entscheidungsbaum durch If-else-Bedingungen beschrieben. Code-Bereiche, die auf eine Bedingung folgen, werden eingerückt. Die Einrückungstiefe ist bei Python im Gegensatz zu vielen anderen Programmiersprachen sehr entscheidend. Ein neues Computerprogramm sollte immer getestet werden. Das DRY-Prinzip besagt, dass Redundanzen im Quellcode vermieden werden sollen. Funktionen können verwendet werden, um wiederverwendbare Programmteile zu definieren. Wenn das Gleiche mehrmals hintereinander ausgeführt wird, wird eine Schleife verwendet. Ein Algorithmus ist eine eindeutige Handlungsvorschrift zum Lösen eines Problems. Ein Computerprogramm kann nur einfache Aufgaben lösen. Deshalb befasst sich diese Stunde damit, zu verstehen, wie das genau für den Computer umgesetzt werden kann. Dabei geht es nicht um das Funktionieren diverser Komponenten, sondern um die Programmierung, die den Computer in die Lage versetzt, bestimmte Problemstellungen einfach lösen zu können. Die Aufgabe des Programmierenden besteht also darin, komplizierte Sachverhalte in kleine einfache Teile zu zerlegen. Dieses Vorgehen wird auch divide and conquer (teile und herrsche) genannt. Die Erfassung der Zeit hat in der Menschheitsgeschichte schon immer einen hohen Stellenwert eingenommen. Begonnen mit Mondzyklen bis hin zur Datumsund Uhrzeiterfassung, basiert der gesamte Alltag auf einem Kalendersystem. Kalenderanwendungen sind praktisch überall vorhanden. Deshalb soll als Beispiel hier das Schaltjahr herangezogen werden, um zu verstehen, wie ein Computer diesen Sachverhalt umsetzen kann. Das Jahr hat bekanntlich 365 Tage. Alle vier Jahre wird dem Kalender der 29. Februar hinzugefügt. Dies geschieht, weil ein Sonnenjahr, also ein Umlauf der Erde um die Sonne, genau 365 Tage, 5 Stunden, 55 min und 12 s dauert. Würde dies nicht wieder ausgeglichen, hätte das langfristig eine Verschiebung der Jahreszeiten zur Folge. Allerdings führt das Einfügen aller vier Jahre zu einer Überkompensation. Das Problem wurde damit gelöst, dass alle durch 100 teilbaren Schaltjahre wegfallen. Da es so immer noch nicht ganz passt, gilt darüber hinaus, dass Jahre, die sowohl durch 100 als auch durch 400 teilbar sind, dennoch zu Schaltjahren werden. Deshalb war das Jahr 2000 ein Schaltjahr, obwohl es durch 100 teilbar ist. Doch was bedeutet das nun genau für die Kalenderanwendung des Computers? Um für diese Problematik ein Programm in Python schreiben zu können, empfiehlt sich eine Modellierung als Entscheidungsbaum. Dieser ist leicht zu verstehen und lässt sich besonders einfach in Programmcode verwandeln. Jede Bedingung lässt sich in einer Programmiersprache einfach formulieren. Der Entscheidungsbaum in . Abb. 21.1 stellt einen Algorithmus dar, der bestimmt, ob eine Jahreszahl ein Schaltjahr ist oder war. Außerdem zeigt sie klar die Darstellung von If-else-Verzweigungen (Wenn-dann-Funktion) innerhalb der Rauten auf. Ein solcher Entscheidungsbaum hilft dem Programmierenden, den passenden Python-Code zu schreiben.

179 Kapitel 21 · Algorithmik (in Python)

. Abb. 21.1 Entscheidungsbaum für Schaltjahre

Übung Versuche nun selbst ein Python-Programm zu schreiben, das für eine Jahreszahl berechnet, ob es sich um ein Schaltjahr handelt oder nicht. In . Abb. 21.2 ist der Rumpf, um eine Zahl auszulesen und als Zahl umzuwandeln, angegeben. Die erste Abfrage mittels if ist bereits eingebaut, sodass nur positive Zahlen akzeptiert werden. Die bedingte Verzweigung ist für die Programmfunktion nicht entscheidend, dient aber als Vorlage für den Implementierungsteil. Das exit(1) bewirkt, dass das Programm sofort beendet wird. Übernimm das Listing aus . Abb. 21.2 und teste selbst. (Zur Erinnerung: Um die Datei mit Python auszuführen, führe python schaltjahr.py in der Kommandozeile oder in der PowerShell aus.) Implementiere dann mithilfe des Entscheidungsbaums die Logik. Als zusätzliche Rechenanweisung könnte der Modulo Operator (in Python % geschrieben) hilfreich sein. Er gibt den Rest bei einer Division an. Es wird also nicht das Ergebnis der Division selbst berechnet, sondern nur der Teil, der sonst die Nachkommastellen bestimmen würde. Beispielsweise ist 35 modulo 8 = 3, da 35/8 = 4 mit Rest 3 ist.

21

180

Kapitel 21 · Algorithmik (in Python)

. Abb. 21.2 Quellcode für die Schaltjahrproblematik

21

Bei den if-else-Bereichen ist die Einrückung (Verrückung nach rechts) des Codes sehr wichtig, denn die Einrückungstiefe bestimmt, zu welchem Teil die Programmzeile gehört. Allgemein ist die Einrückungstiefe bei Python vergleichbar mit den geschweiften Klammern {}, die bei anderen Programmiersprachen, wie C# oder Java, zur Anwendung kommen. Um zu kontrollieren, ob ein neues Computerprogramm funktioniert, sollten immer Tests durchgeführt werden (mehr dazu in  Kap. 33 Testen). In . Tab. 21.1 sind einige Tests angegeben, die durchgeführt werden können, um das geschriebene Programm zu überprüfen. Eine Beispielimplementierung findet sich in . Abb. 21.3. Der hier genutzte Beispielcode verstößt jedoch gegen das DRY-Prinzip. DRY steht für don’t repeat yourself (wiederhole dich nicht) und besagt, dass Redundanzen vermieden werden sollen. Im obigen Beispiel sind Zeile 21 und 24 gleich, Zeile 18 und 27 ebenso. Sollte an der Ausgabe etwas geändert werden müssen, so ist es nötig, beide Zeilen anzupassen. Einfacher wäre es, nur eine Zeile anpassen zu müssen. Es gibt mehrere Möglichkeiten, den Code so zu verändern, dass es keine Zeilen doppelt gibt. Eine mögliche Lösung zeigt . Abb. 21.4. Darin ist die direkte Ausgabe an das Programmende verlagert und eine zusätzliche boolesche Variable, die den Status enthält, eingeführt worden. Die boolesche Variable kann nur zwei Zustände annehmen, nämlich wahr (in Python True) oder falsch (in Python False).

. Tab. 21.1 Tests für die Schaltjahrproblematik Bitte Jahreszahl eingeben:2000Die gelesene Jahreszahl ist: 2000Es ist ein Schaltjahr!

Bitte Jahreszahl eingeben:1995Die gelesene Jahreszahl ist: 1995Kein Schaltjahr!

Bitte Jahreszahl eingeben:2004Die gelesene Jahreszahl ist: 2004Es ist ein Schaltjahr!

Bitte Jahreszahl eingeben:2100Die gelesene Jahreszahl ist: 2100Kein Schaltjahr!

181 Kapitel 21 · Algorithmik (in Python)

21

. Abb. 21.3 Beispielimplementierung für die Schaltjahrproblematik

. Abb. 21.4 ben

Beispielimplementierung für die Schaltjahrproblematik ohne Wiederholung der Ausga-

182

Kapitel 21 · Algorithmik (in Python)

. Abb. 21.5 Einlesefunktion für Jahreszahlen

21

Nun soll das geschriebene Schaltjahrprogramm verwendet werden, um nicht nur für ein Jahr das Schaltjahr auszugeben, sondern für einen ganzen Jahresbereich. Da auch hier keine Wiederholungen vorkommen sollen, aber zwei Zahlen eingelesen werden müssen, braucht man eine Funktion. Das ist ein definierter Programmteil, der ähnlich dem print-Befehl leicht wiederverwendet werden kann. Ein Beispiel für eine Einlesefunktion zeigt . Abb. 21.5. Eine kurze tabellarische Übersicht der Schlüsselwörter und ihrer Bedeutungen findet sich in . Tab. 21.2. Nachdem nun die Möglichkeiten gegeben sind, einen Zahlenbereich einzulesen, stellt sich die Frage, wie eine beliebige Anzahl von Jahren an die Funktion übergeben werden kann. In der Programmierung werden solche Probleme oft mit Schleifen gelöst. Eine Schleife ist eine Abfolge von Befehlen, die so lange weitergeführt wird, bis eine Bedingung nicht mehr erfüllt ist. . Abb. 21.6 visualisiert, wie diese Schleifen funktionieren. Es ist wichtig, dass die Abbruchbedingung der Schleife auch irgendwann erreicht wird, anderenfalls wird das Programm nie enden. Diesen Fall bezeichnet man als Endlosschleife. In wenigen Ausnahmen kann das erwünscht sein, zum Beispiel bei Systemsoftware, die durchgehend laufen soll. Neben der Grafik in . Abb. 21.6 findet sich ein kleines Python-Beispiel, das alle Zahlen zwischen 0 und 1000 ausgibt, die durch 13 teilbar sind. Übung Versuche, eine Funktion zu entwerfen, die herausfinden kann, ob es sich bei dem übergebenen Jahr um ein Schaltjahr handelt. Hinweis: Du kannst den Code aus der vorherigen Übung übernehmen und musst nur ein def ist_schaltjahr(jahreszahl): vor den Funktionscode stellen. Denke daran, die Einrückungstiefe zu beachten. Nach den beiden Funktionen kannst du das eigentliche Hauptprogramm schreiben. Um dein Programm wieder zu testen, kannst du die Schaltjahre zwischen deinem Geburtsjahr und dem aktuellen Jahr berechnen lassen. Ein Beispiel dafür findest du in . Abb. 21.7.

183 Kapitel 21 · Algorithmik (in Python)

21

. Tab. 21.2 Erklärung von Python-Schlüsselwörtern Schlüsselwort

Funktion

def

Definiert eine neue Funktion mit dem darauffolgenden Namen und Klammern.

input()

Liest eine Tastatureingabe ein (abgeschlossen mit der Enter-Taste).

int(ARGUMENT)

Versucht, das ARGUMENT in eine Ganzzahl zu verwandeln.

print(ARGUMENT)

Gibt das ARGUMENT auf der Konsole aus.

if BEDINGUNG:

Führt den untergeordneten Codeblock aus, wenn die BEDINGUNG erfüllt ist.

elif BEDINGUNG:

Führt den untergeordneten Codeblock aus, wenn die BEDINGUNG erfüllt ist und die vorangehenden if-Anweisungen nicht ausgeführt wurden, weil deren Bedingungen nicht erfüllt sind.

else:

Kann auf ein if folgen und führt den Block unterhalb aus, falls keine vorhergehende Bedingung erfüllt ist.

exit(1)

Beendet das Programm mit dem Fehlercode 1.

return ERGEBNIS

Gibt an den Aufrufenden das ERGEBNIS zurück.

# Text

Ein Hash (#) leitet einen Kommentar ein, der von Python ignoriert wird und zur Dokumentation des Quellcodes verwendet werden kann.

. Abb. 21.6 Allgemeine Schleife im Diagramm und Beispiel in Python

184

Kapitel 21 · Algorithmik (in Python)

. Abb. 21.7 Beispiel Ausgabe für Schleifenberechnung der Schaltjahre

>

21

Eine mögliche Lösung findest du natürlich bei GitHub: 7 https://github.com/ StefanSpieker/52Stunden/blob/master/algorithmik/Schaltjahr/schaltjahr_schleife. py Wenn du weitermachen möchtest, gibt es hier einen guten Kurs der Universität Waterloo: 7 https://cscircles.cemc.uwaterloo.ca/using-website-de/

Natürlich ist Algorithmik ein wesentlich umfangreicheres Thema. Erwähnenswert sind unter anderem Best Practices (empfohlene Vorgehensweisen), die Probleme und deren Lösungen allgemein verständlich und leicht umsetzbar beschreiben. Etwas weitreichender sind sogenannte Patterns (Muster), die für Problemklassen Gebrauchsmuster beschreiben und oft auch als Implementierungsbaustein bereitstehen. ? Was bedeutet divide and conquer? Welche Vorteile hat die Modellierung eines Algorithmus als Entscheidungsbaum? Wie erstellt man in Python eine Funktion? Was bedeutet DRY? Wann hört eine Schleife auf, sich zu wiederholen?

185

22

Objektorientierung (in Python)

© Springer Fachmedien Wiesbaden GmbH, ein Teil von Springer Nature 2024 T. Eichstädt und S. Spieker, 52 Stunden Informatik, https://doi.org/10.1007/978-3-658-41838-0_22

186

22

Kapitel 22 · Objektorientierung (in Python)

Objektorientierung ist eine Sichtweise in der Softwareentwicklung, die komplexe Systeme mithilfe von Objekten beschreibt. Eine Klasse beschreibt eine Menge von gleichartigen Objekten. Ein Beispiel für eine Klasse ist die Person. Alle Personen haben bestimmte Eigenschaften, wie einen Namen oder ein Geburtsdatum. Jede spezielle Person ist ein Objekt. Der Konstruktor ist eine Methode, mit der Objekte erzeugt werden. Dem Konstruktor wird ein Pointer auf das zu erzeugende Objekt übergeben. Ein Beispiel für eine weitere Methode ist das Alter, das sich aus dem aktuellen Datum und dem Geburtsdatum berechnen lässt. Methoden lassen sich überschreiben, indem bestehende Methoden durch eigene Implementierungen ersetzt werden. Von einer bestehenden Klasse können weitere Klassen abgeleitet werden. Objektorientierung hilft Entwicklern, Zusammenhänge leichter zu erfassen und ein besseres Verständnis des Quellcodes zu erlangen. Die Objektorientierung findet in der Informatik eine sehr breite Verwendung. Vor allem hilft diese Art der Programmierung dem Entwickler, die Zusammenhänge leichter zu erfassen. Natürlich gibt es aber auch ein paar Nachteile. In der Theorie ist der Code ein bisschen langsamer, da neue Objekte im Speicher auch immer angelegt werden müssen. Unter Objektorientierung wird in der Softwareentwicklung eine Sichtweise auf komplexe Systeme verstanden, bei der jedes System durch das Zusammenspiel mehrerer Objekte beschrieben wird. Bei dem Begriff Objekt handelt es sich um etwas, das über Eigenschaften verfügt und Methoden beinhalten kann. Objekten und Methoden sind wir bereits in  Kap. 7 JavaScript begegnet. Die meisten modernen Programmiersprachen unterstützen Objektorientierung. Ein Objekt in der Informatik ist eine abstrakte Sicht auf ein zu beschreibendes Etwas. Eine Menge von gleichartigen Objekten wird als Klasse bezeichnet. Die Klasse ist eine Blaupause, aus der Objekte erzeugt werden können. Ein Beispiel für eine Klasse ist die Person, bei der ein mögliches Objekt eine spezielle Person ist, beispielsweise Max Mustermann. Übung Fallen dir weitere Objekte der Klasse Person ein? Was sind Eigenschaften von Personen? Welche Methoden können Personen haben? Vielleicht guckst du mal in deinen Ausweis oder Schülerausweis, welche Eigenschaften du besitzt.

Weitere Objekte sind Lehrer, Eltern oder auch Polizisten. Alle Personen haben bestimmte Eigenschaften, diese sind beispielsweise in einem Ausweis 5 Name, 5 Vorname, 5 Geburtsdatum und 5 Größe. Aber natürlich haben Personen auch noch weitere Eigenschaften, wie Hobbys, Haarfarbe, Beruf, Einkommen usw. Ein Beispiel für eine Methode, die auf einer Eigenschaft beruht, ist das Alter. Es wird aus dem aktuellen Datum und der Eigen-

187 Kapitel 22 · Objektorientierung (in Python)

22

schaft Geburtsdatum berechnet. Nach der Theorie hilft ein Blick auf den Quellcode einer einfachen Klasse Person, wie in . Abb. 22.1 zu sehen ist. Die Datei beginnt mit drei Kommentarzeilen. Darauf folgt einem Befehl, der Datumsfunktionen ermöglicht: import datetime (importiere Datum Zeit). In Zeile 7 beginnt die Definition der Klasse (class) Person. Unmittelbar danach folgt eine besondere Methode __init__(self, name, vorname, geb_datum, groesse). Diese Methode wird auch Konstruktor genannt, da sie dazu dient, neue Objekte zu erzeugen. Es wird von der Instanz einer Klasse gesprochen, wenn ein spezielles oder neu angelegtes Objekt gemeint ist. Die Methode besitzt fünf Parameter, wobei der erste Parameter self (selbst) ein besonderer ist. Er ist ein Pointer auf das zu erzeugende Objekt selbst. Was ein Pointer ist, wurde schon kurz in  Kap. 19 Binärsystem & Datentypen erklärt. In den folgenden Zeilen werden die Variablen dem Objekt zugewiesen, indem auf self. zugegriffen wird. Mit dem Gleichheitszeichen werden die Variablen aus dem Methodenaufruf zugewiesen. Es sieht etwas verwirrend aus, dass zweimal derselbe Variablenname verwendet wird. Durch das Präfix „self“ ist jedoch definiert, dass es sich um das neue Objekt handelt. Nachdem die Klasse nun definiert ist und es eine Möglichkeit gibt, neue Personen mittels eines Konstruktors anzulegen, kann die Klasse um Methoden erweitert werden. Es wird das Geburtsdatum gespeichert, aber oft wird das Alter der Person benötigt. Dies lässt sich leicht berechnen, indem von dem aktuellen Datum das Geburtsdatum abgezogen wird. Eine mögliche Implementierung ist in . Abb. 22.2 zu sehen. Die Funktion datetime.date.now() liefert das aktuelle Datum. Wenn nur die Jahre abgezogen werden, kann es einen Fehler geben, falls der Geburtstag noch nicht in diesem Jahr gewesen ist. Dies wird in der if-Abfrage überprüft und im Zweifelsfall von dem Ergebnis abgezogen. Um die Zeile besser lesen zu können, ist sie mittels eines Backslashs (umgekehrter Schrägstrich \) auf zwei Zeilen verteilt. Es ist in der Abbildung die Kurzschreibweise gewählt mit jahre -= 1, was dasselbe ist wie jahre = jahre -1.

. Abb. 22.1 Klasse Person mit Konstruktor

188

Kapitel 22 · Objektorientierung (in Python)

. Abb. 22.2 Methode, um das Alter einer Person zu berechnen

Übung

22

Mit dieser Klasse können nun Personen angelegt werden und deren aktuelles Alter kann berechnet werden. Erzeuge doch selbst in dem Python-Programm eine Funktion ausgeben(self), die alle Daten der Person ausgeben kann. Verwende hierfür die print()-Funktion. Bei der Ausgabe von Zahlen mithilfe der print-Funktion kann es nötig sein, diese in einen String zu konvertieren. Dies kann mit der Funktion str() erfolgen. Um eine neue Person zum Testen anzulegen, kann das Geburtsdatum beispielsweise durch datetime.datetime(year=2000, month=10, day=23) angegeben werden, für den 23. Oktober 2000.

Um den Code zu testen, ist es sinnvoll, zwei Personen anzulegen und damit die Funktion des Alters zu überprüfen. Eine Ausgabe von zwei Personen zeigt beispielhaft . Abb. 22.3. Um die Ausgabe auch später noch überprüfen zu können, ist das aktuelle Datum ebenfalls auf der Konsole angegeben. Eine mögliche Implementierung der Ausgabe und auch die Erzeugung von zwei Personen ist in . Abb. 22.4 zu sehen. Die Funktion ausgeben(self) verwendet alle Eigenschaften der Klasse Person und gibt sie auf der Konsole aus. Da sowohl das Alter als auch die Größe als Zahl gespeichert sind, müssen diese mithilfe der str()-Funktion in einen String umgewandelt werden. Eine etwas elegantere Art, dasselbe Ergebnis zu erhalten, zeigt . Abb. 22.5. Dort wurde die __str__()-Methode überschrieben, um danach Objekte vom Typ Person einfach über die print-Methode ausgeben zu können. Eingebaute Funktionen einer Klasse, wie die str()-Methode, können mit einer eigenen Implementierung ersetzt werden. Dies wird als Überschreiben bezeichnet. Obwohl es erstmal komplizierter aussieht, bietet es in der weiteren Verwendung Vorteile.

. Abb. 22.3 Ausgabe eines Testlaufs von Person.py

189 Kapitel 22 · Objektorientierung (in Python)

22

. Abb. 22.4 Ausgeben-Funktion und Erstellen von zwei Personen und deren Ausgabe

. Abb. 22.5 Alternative Implementierung zu . Abb. 22.4

Wenn nun zu der Klasse Person noch eine Klasse Schüler benötigt wird, weil die Klasse gespeichert werden soll, so müssen nicht alle Eigenschaften kopiert werden. Es gibt in der Objektorientierung eine sogenannte Vererbung, bei der zusätzliche Eigenschaften und Methoden zu einer Klasse hinzugefügt werden können. Die neue Klasse heißt abgeleitete Klasse und kann eine Erweiterung oder eine Einschränkung der ursprünglichen Klasse darstellen. Dies geschieht, ohne die Klasse Person zu verändern. Die ursprüngliche Klasse wird auch Basisklasse genannt. . Abb. 22.6 zeigt eine Implementierung, in der sowohl der Konstruktor als auch die str()-Methode überschrieben werden. Das Überschreiben ist also auch bei der Vererbung möglich und beschränkt sich nicht auf eingebaute Methoden. Der abgeleiteten Klasse ist es weiterhin möglich, die Methoden der Basisklasse aufzurufen. Dies ist in Zeile 37 erkennbar, da dort der Konstruktor der Klasse Person aufgerufen wird. Die Klasse lässt sich sehr ähnlich wie die Klasse Person verwenden:

eva = Schueler(’Engel’, ’Eva’, datetime.datetime(year=2005, month=2, day=4), 152, ’9b’) print(eva)

190

Kapitel 22 · Objektorientierung (in Python)

. Abb. 22.6 Klasse Schueler mit Basisklasse Person

Zur Ausführung wird folgender Text ausgegeben: Eva Engel ist 15 Jahre alt und 152 cm gross und besucht die Klasse 9b Die Vererbung zwischen Person und Schueler lässt sich, wie in . Abb. 22.7 zu sehen, in einem einfachen Bild veranschaulichen. Wir wollen nun noch weitere Klassen implementieren: den Lehrer, der Unterrichtsfächer hat, und den Klassenlehrer, der zusätzlich eine Klasse betreut. Es werden also zusätzliche Eigenschaften definiert, die ein Schüler nicht besitzt.

22

Übung Überlege dir, wie Klassenbeziehungen dargestellt werden können. Ist jeder Lehrer ein Klassenlehrer, oder verhält es sich andersherum?

Der Schüler und der Lehrer teilen sich die Eigenschaften der Person, aber ein Lehrer hat nicht nur eine Klasse, die er unterrichtet, sodass der Lehrer nicht direkt vom Schüler abgeleitet werden sollte, sondern nur auf den Eigenschaften der Person aufsetzen sollte. Der Klassenlehrer wiederum ist ein Spezialfall des Lehrers. Nicht jeder Lehrer ist auch ein Klassenlehrer, aber jeder Klassenlehrer hat die gleichen Eigenschaften, die ein Lehrer hat. Eine mögliche Vererbung ist in . Abb. 22.8 zu sehen.

. Abb. 22.7 Vereinfachte Darstellung von Vererbung

191 Kapitel 22 · Objektorientierung (in Python)

22

. Abb. 22.8 Vererbung für Schüler und Lehrer

Die Klasse Lehrer ist sehr ähnlich wie die Klasse Schüler, sie besitzt eine zusätzliche Eigenschaft und die Ausgabemethode wird angepasst. Der einzige Unterschied ist der, dass ein Lehrer selten nur ein Fach unterrichtet. Das heißt, es wird ein Datentyp benötigt, der mehr als einen Wert annehmen kann. Dies wird zum Beispiel mit Listen von Werten erreicht. Ein Beispiel für eine Liste in Python ist: faecher = [‘Deutsch’, ‘Englisch’]

Wie genau eine Liste aussieht, wird in der folgenden Stunde behandelt. Um eine solche Liste auszugeben, wird eine Schleife benötigt (siehe auch  Kap. 21 Algorithmik (in Python)). In . Abb. 22.9 ist ein Beispiel für eine Implementierung der Klasse Lehrer angegeben. Übung Doch wie sieht die Klasse Klassenlehrer aus? Schreibe doch die Klasse Klassenlehrer einmal selbst!

192

Kapitel 22 · Objektorientierung (in Python)

. Abb. 22.9 Implementierung der Klasse Lehrer

22

. Abb. 22.10 Testfunktion der Klassen Person, Schueler, Lehrer und Klassenlehrer

. Abb. 22.11 Ausgabe des Programmlaufs von . Abb. 22.10

In . Abb. 22.10 siehst du einen Test deiner Funktion und in . Abb. 22.11 eine Ausgabe. Eine mögliche Lösung kann auf GitHub ( 7 https://github.com/StefanSpieker/ 52Stunden/blob/master/objektorientierung/Komplett.py) heruntergeladen werden. Natürlich gibt es viele mögliche Lösungen, aber eine Implementierung der Klasse Klassenlehrer ist in . Abb. 22.12 zu sehen.

193 Kapitel 22 · Objektorientierung (in Python)

22

. Abb. 22.12 Implementierung der Klassenlehrer-Klasse

Die Objektorientierung findet in der Informatik eine sehr breite Verwendung. Vor allem hilft diese Art der Programmierung dem Entwickler, die Zusammenhänge leichter zu erfassen. Natürlich gibt es aber auch ein paar Nachteile. In der Theorie ist der Code ein bisschen langsamer, da größere Objektstrukturen auch mehr Speicher belegen. Dieser Nachteil wird bei größeren Projekten aber dadurch wettgemacht, dass mehrere Entwickler den Quellcode der anderen leichter verstehen können und sich ein gemeinsames Verständnis innerhalb des Teams bilden kann. Die größte Herausforderung bei dieser Art der Programmierung ist, wie Objekte designt werden. In  Kap. 24 Modellierung beschäftigen wir uns eingehend mit der Modellierung. Dies geschieht normalerweise, bevor man mit der Programmierung beginnt, um frühzeitig Schwächen im objektorientierten Design ausfindig zu machen. > Weiterführende Informationen zu Vererbung in Python finden sich auf dieser Seite: 7 https://www.python-kurs.eu/python3_vererbung.php

? Was meint der Begriff Klasse in der Objektorientierung? Was ist die Instanz einer Klasse? Was ist ein Konstruktor? Was versteht man unter einer überschriebenen Funktion? Was bedeutet Vererbung in der Objektorientierung?

195

Datenstrukturen (in Python)

© Springer Fachmedien Wiesbaden GmbH, ein Teil von Springer Nature 2024 T. Eichstädt und S. Spieker, 52 Stunden Informatik, https://doi.org/10.1007/978-3-658-41838-0_23

23

196

23

Kapitel 23 · Datenstrukturen (in Python)

Datenstrukturen sind komplexe Datentypen. In der Informatik werden Datenstrukturen oft verwendet, um mehrere primitive Datentypen zusammenzufügen und die Arbeit mit ihnen zu vereinfachen. Eine sehr häufige Datenstruktur ist die Liste. Listen sind äuerst praktisch, wenn viele gleichartige Variablen verwaltet werden sollen. Eine weitere nützliche Datenstruktur ist das Dictionary, welches Schlüsselwörter und Werte enthält. Im Dictionary können beliebige Datentypen eingefügt werden. Liste und Dictionary sind Klassen in Python, die eine Vielzahl an Methoden anbieten. Beim Kopieren von Listen und Dictionaries muss beachtet werden, dass nicht alles wirklich kopiert wird, sondern nur die Referenzen. Um eine vollständige Kopie zu erstellen, kann eine sogenannte deep copy erzeugt werden. Weitere relevante Datenstrukturen in Python sind Set und Tupel. Eine Struktur im Allgemeinen bezeichnet etwas Aufgebautes, ein aus mehreren Teilen bestehendes und von seinen Einzelteilen abhängiges Gefüge. In unserem Alltag begegnen wir oft Strukturen, die der Mensch geschaffen hat. Eine Brücke wird meist aus vielen gleichartigen Teilen zu einer größeren Struktur zusammengeführt. Auch in der Informatik werden ähnliche Dinge oft zu etwas Größerem zusammengefügt. Komplexe Datentypen, die aus mehreren primitiven Datentypen (vergleiche  Kap. 19 Binärsystem & Datentypen) bestehen, werden Datenstrukturen genannt. In der letzten Stunde wurde die Objektorientierung behandelt, die auch in dieser Stunde eine Grundlage für die hier zu behandelnden Datenstrukturen ist. Jeder kennt im täglichen Leben Listen, sei es die Einkaufsliste, auf der alle benötigten Dinge stehen, oder die Teilnehmerliste bei einer Veranstaltung. Genau solche Listen gibt es auch in Programmiersprachen, um gleichartige Dinge abspeichern zu können. In Python kann man eine Liste anlegen, indem man innerhalb eckiger Klammern die Listeneinträge durch Komma getrennt aufschreibt. Eine einfache Einkaufsliste kann dann beispielsweise so aussehen:

liste = [“Äpfel“, “Bananen“, “Brot“, “Käse“, “Butter“]

Danach existiert das Objekt liste, in dem die Einkaufsliste gespeichert ist. Da die Liste eine Python-Klasse ist, sind nun gewisse Methoden verfügbar, um mit dem Objekt liste zu arbeiten, beispielsweise die in . Tab. 23.1 aufgeführten. Um mit Listen zu arbeiten, bieten sich Schleifen an, wie sie in  Kap. 21 Algorithmik (in Python) schon verwendet wurden. Etwas eleganter geht es aber auch mit einer for-Schleife. Die folgende Schleife gibt alle Elemente aus:

for ding in liste: print(dialog)

197 Kapitel 23 · Datenstrukturen (in Python)

23

. Tab. 23.1 Methoden von Listen Befehl:

Wirkung:

liste.append(“Reis”)

Fügt das Element “Reis” am Ende der Liste an.

liste.remove(“Brot”)

Entfernt das Element “Brot” aus der Liste.

liste.index(“Brot”)

Gibt die Stelle in der Liste an, an der “Brot” steht. In dem Beispiel hier: 2, da das erste Element an der Stelle 0 steht!

liste[0] = “Birnen”

Ersetzt den ersten Wert in der Liste durch “Birnen”.

liste.sort()

Sortiert die Liste alphabetisch, wobei Ä nach Z kommt.

len(liste)

Gibt die Anzahl der Elemente in der Liste aus.

Übung Programmiere eine Einkaufsliste wie oben und gib die Anzahl der Elemente aus, anschließend mittels einer for-Schleife alle Einträge der Einkaufsliste. Füge dann ein zusätzliches Element Reis hinzu. Sortiere die Liste und gib die finale Einkaufsliste erneut aus.

. Abb. 23.1 zeigt die Ausgabe des Programmablaufs, in dem die Liste ausgegeben und danach das Element Reis hinzugefügt und die sortierte Liste erneut ausgegeben wird. In . Abb. 23.2 ist eine mögliche Lösung implementiert. Es gibt einen zweiten Parameter beim Aufruf von print(), der die Ausgabe nicht mit einem Zeilenumbruch abschließt, sondern nur ein Komma und ein Leerzeichen nutzt. Dadurch ist die Ausgabe etwas schöner formatiert.

. Abb. 23.1 Ausgabe der Einkaufslistenaufgabe

198

Kapitel 23 · Datenstrukturen (in Python)

. Abb. 23.2 Eine einfache Einkaufsliste mit Python

23

Listen sind also äußerst praktisch, wenn viele gleichartige Variablen verwaltet werden sollen. Wenn nun aber beispielsweise ein Wörterbuch angelegt werden soll, so sind auch Listen nicht besonders gut geeignet, denn man braucht immer das Wort und dessen Übersetzung. Man könnte die Wörter und deren Übersetzungen als zwei Listen implementieren. Allerdings hat Python bereits eine Datenstruktur eingebaut, die genau dieses Problem löst, nämlich das Dictionary (Wörterbuch). Dieses lässt sich so ähnlich wie eine Liste direkt zuweisen, wird aber mit geschweiften Klammern beschrieben, in denen die Schlüsselwörter zuerst stehen und mit einem Doppelpunkt vom Wert getrennt sind. Beispielsweise kann ein Dictionary wie folgt aussehen:

woerterbuch = {“house“: “Haus“, “cat“: “Katze“, “black“: “schwarz“}

Das Dictionary enthält drei Einträge mit englischen Wörtern und den deutschen Übersetzungen. Für ein Dictionary sind die in . Tab. 23.2 aufgeführten Methoden verfügbar. Ein einfaches Programm, mit dem die Grundzüge des Dictionaries gut erkennbar sind, zeigt . Abb. 23.3. Die passende Ausgabe findet sich in . Abb. 23.4. Natürlich gibt es den Quellcode auch wieder im GitHub Repository. Im Beispielcode wird ein kleines Wörterbuch angelegt und dieses zuerst ausgegeben. Anschließend wird in der Ausgabe demonstriert, wie die Einträge hinter den Schlüsselwörtern ausgegeben werden können. Dictionaries können aber noch deutlich mehr, als nur einfach Zeichenketten zu speichern. Es können beliebige Datentypen eingefügt werden, so auch Listen.

199 Kapitel 23 · Datenstrukturen (in Python)

23

. Tab. 23.2 Methoden von Dictionaries Befehl:

Wirkung:

woerterbuch[“house“]

Gibt den Wert, der beim Schlüsselwort house abgespeichert ist, aus. In unserem Beispiel ist das Haus.

woerterbuch[“flower“] = “Blume“

Erzeugt einen neuen Eintrag im woerterbuch unter dem Eintrag flower und dem Wert Blume.

“flower“ in woerterbuch

Prüft, ob flower im woerterbuch enthalten ist.

woerterbuch.clear()

Löscht alle Einträge aus dem woerterbuch.

w = woerterbuch.copy()

Kopiert das Dictionary woerterbuch und speichert es in der neuen Variablen w.

len(woerterbuch)

Gibt die Anzahl der Einträge im woerterbuch aus. Vergleiche auch Liste.

. Abb. 23.3 Einfaches Wörterbuch mit Python

. Abb. 23.4 Ausgabe des Programmlaufs aus . Abb. 22.4

200

Kapitel 23 · Datenstrukturen (in Python)

Übung Erweitere das Dictionary-Programm um weitere Bedeutungen. Das englische Wort house kann Haus oder auch beherbergen heißen. Das Wort flower bedeutet Blume oder auch blühen.

23

In Dictionaries können sogar Datentypen gemischt werden, sodass Listen und Zeichenketten auch gemeinsam in demselben Dictionary eingefügt werden können. Eine mögliche Lösung ist in . Abb. 23.5 gezeigt. Auf die Ausgabe haben wir diesmal verzichtet, sie kann aber natürlich mit dem Beispielcode selbst erstellt werden. Sowohl Listen als auch Dictionaries kann man kopieren. Dabei muss man jedoch beachten, dass nicht alles wirklich kopiert wird, sondern nur die Referenzen. Das bedeutet, dass beim Kopieren zwar die Schlüsselwörter kopiert werden, aber nur ein Zeiger auf die dahinterliegenden Listen kopiert wird. Somit ändert sich auch das ursprüngliche Dictionary, wenn in der Kopie etwas verändert wird. Um sich die Datenstruktur besser vorstellen zu können, ist in . Abb. 23.6 modelliert, wie das Wörterbuch im Speicher aussieht. Auf der linken Seite sind die Schlüsselwörter abgebildet. Von diesen Speicherstellen zeigen Pfeile auf die Listen, die sich dahinter befinden. Wenn nun kopiert wird, so werden nur die Schlüsselwörter kopiert und es werden neue Pfeile angelegt, die jedoch auf dieselben Listen zeigen.

. Abb. 23.5 Dictionary mit unterschiedlichen Arten von Einträgen

. Abb. 23.6 Aussehen von Dictionary woerterbuch im Speicher

201 Kapitel 23 · Datenstrukturen (in Python)

23

Um nun trotzdem eine vollständige Kopie zu erstellen, kann man eine sogenannte deep copy (tiefe Kopie) erzeugen. Dies kopiert dann auch die Listen in neue Speicherbereiche. Das Paket, das dazu importiert werden muss, ist durch import copy dem Quellcode hinzuzufügen. In . Abb. 23.7 ist ein Beispielcode und in . Abb. 23.8 die jeweilige Ausgabe dargestellt, die das Verhalten abbildet. Um sich das noch besser vorstellen zu können, ist eine bildliche Darstellung sinnvoll. In . Abb. 23.9 sind die Datenstrukturen dargestellt, wie sie nach Programmende aussehen. Bei der Erstellung von Kopien ist es ein häufiger Programmierfehler, dass sich Änderungen auch auf die Kopie auswirken. Trotzdem wird oft keine tiefe Kopie verwendet, da diese wirklich alles kopiert und damit dann auch doppelt so viel Speicher braucht. Im Allgemeinen gibt es noch eine ganze Reihe an Datenstrukturen, die sich für Spezialfälle eignen. In Python sollte man noch die folgenden beiden kennen:

. Abb. 23.7 Beispielcode für deep copy

. Abb. 23.8 Ausgabe des Codes aus . Abb. 23.6

202

Kapitel 23 · Datenstrukturen (in Python)

. Abb. 23.9 Struktur im Speicher von . Abb. 23.6

23 1. Set (Menge): Eine Datenstruktur, die jedes Element nur einmal zulässt. Es werden also Duplikate vermieden. In Python lässt es sich folgendermaßen definieren:

menge = set([1, 2, 3, 4, 1, 2])

2. Tupel (unveränderliche Listen): Eine Datenstruktur, die sehr ähnlich zu Listen verwendet wird, aber nicht mehr verändert werden kann. In Python durch folgende Syntax zu erzeugen:

mein_tupel = (1, 2, 3)

? Was ist eine Datenstruktur? Was ist eine Liste? Was ist ein Dictionary? Wie kann man auf das erste Element einer Liste zugreifen? Was muss man beim Kopieren eines Dictionaries beachten?

203

Modellierung

© Springer Fachmedien Wiesbaden GmbH, ein Teil von Springer Nature 2024 T. Eichstädt und S. Spieker, 52 Stunden Informatik, https://doi.org/10.1007/978-3-658-41838-0_24

24

204

24

Kapitel 24 · Modellierung

Sowohl die Hardware als auch das Softwaresystem können durch Modelle dargestellt werden. In den vorangegangenen Stunden wurden bereits verschiedene grafische Abbildungen zur Modellierung von Code, Architektur und Algorithmen verwendet. Modellierung hilft, Komplexität zu reduzieren. Das ist hilfreich beim Verstehen, Kommunizieren, Analysieren von Systemen und bei der Spezifizierung von Systemen, die neu entstehen oder erweitert werden. Jedes Modell ist entweder ein Abbild eines bestehenden Systems oder Vorbild eines zu erstellenden Systems. Ein grafisches Modellierungstool, das im Webbrowser verwendet werden kann, ist  diagrams.net. UML ist eine grafische Modellierungssprache, die zum Ziel hat, verschiedene Ansätze zur Modellierung von Softwaresystemen zu vereinheitlichen. UML unterscheidet dabei zwischen Strukturdiagrammen und Verhaltensdiagrammen. Das Klassendiagramm hilft bei der objektorientierten Entwicklung. Das Anwendungsfalldiagramm ist ein Beispiel für Verhaltensdiagramme. Was bedeutet Modellierung? Was ist ein Modell? Sicherlich hast du den Begriff schon einmal gehört. Du weißt zum Beispiel bestimmt, was eine Modelleisenbahn ist. Die Modellierung ist eine Disziplin, in der die Wirklichkeit vereinfacht durch ein Modell dargestellt wird. Ein Modell ist eine Abbildung, die ein System auf seine wesentlichen Elemente reduziert. In der Informatik handelt es sich bei diesen Abbildungen fast immer um zweidimensionale Grafiken oder Diagramme. Übung Überlege, wovon in der Informatik Modelle erstellt werden könnten. Welche Modelle sind dir bereits begegnet? Denke dabei an alle bisherigen Stunden.

Prinzipiell kann jedes System modelliert werden. In der Informatik betrifft das sowohl Software als auch Hardware und sowohl die Struktur von Software/Hardwaresystemen als auch deren Verhalten. Wir hatten bereits in  Kap. 4 HTML das Modell zur Beschreibung eines HTML-Dokuments kennengelernt (siehe . Abb. 4.6). In  Kap. 8 Netzwerke und Protokolle haben wir den Begriff der Architektur kennengelernt und eine Netzwerkarchitektur modelliert (siehe . Abb. 8.1). In  Kap. 14 Rechnerarchitektur haben wir eine Hardwarearchitektur für Computer kennengelernt (siehe . Abb. 14.1). Immer, wenn eine Architektur beschrieben wird, ist Modellierung im Spiel. Noch häufiger als mit Hardware haben es Informatiker mit der Modellierung von Softwareapplikationen zu tun. Darum wird es im Wesentlichen auch in dieser Stunde gehen. Einerseits kann das den Aufbau der Applikation als Ganzes betreffen. Andererseits müssen aber auch der Code und die durch ihn abgebildeten Prozesse modelliert werden. In  Kap. 21 Algorithmik (in Python) etwa haben wir eine Problemlösungsstrategie als Entscheidungsbaum dargestellt (siehe . Abb. 21.1 Entscheidungsbaum für Schaltjahr). Auch das ist ein Modell. Vielleicht sind dir noch andere Beispiele eingefallen und sicher werden dir auch in der Zukunft noch viele weitere Modelle begegnen. Besonders wichtig ist Modellierung auch für den Umgang mit Daten. Das gilt sowohl für die Strukturierung von Daten (siehe  Kap. 35 Das relationale Modell) als auch für Vorhersage-

205 Kapitel 24 · Modellierung

24

modelle, die mithilfe von Datenanalysen erstellt werden. Spätestens in  Kap. 43 Regressionsanalyse (mit Jupyter) wird dies sehr deutlich werden. Übung Welchen Zweck erfüllen Modelle in der Informatik? Überlege bei jedem bereits gesehenen Modell, zu welchem Zeitpunkt es erstellt wurde und aus welchem Grund. Welche Vorteile hat ein Modell gegenüber der Darstellung eines Systems in Textform? Denke darüber nach, warum Modelle gerade in der Informatik so eine entscheidende Rolle spielen.

Der wichtigste Grund, ein Modell zu verwenden, ist die Reduktion von Komplexität. IT-Systeme sind oft vielschichtig und mit vielen komplizierten Details versehen. Außerdem ist die Software, die den Großteil der IT-Systeme ausmacht, immateriell. Software kann nicht angefasst werden und ist daher nur schwer zu begreifen! Deshalb hilft es so oft, IT-Systeme zu modellieren. Das gilt ganz besonders bei den folgenden Aktivitäten. 5 Beim Verstehen: Durch die Beschränkung auf das Wesentliche kann ein komplexes System zunächst nur auf einer hohen Abstraktionsebene oder aus einer bestimmten Sichtweise verstanden werden. Alle weiteren Details können dann, wenn nötig, in weiteren Modellen dargestellt werden. 5 Beim Kommunizieren: Um ein System zu erklären, kann es ungemein hilfreich sein, dieses grafisch abzubilden. Die Person, die ein System erklärt bekommt, kann ein Bild in der Regel viel schneller verstehen und sich viel besser merken als Worte oder Text. Das gilt besonders für Anwender, für die nur ein Bruchteil der Komplexität eines Systems interessant ist. Auch der erklärenden Person hilft es, sich auf das Wesentliche zu beschränken, aber auch nichts Wichtiges zu vergessen. 5 Beim Gestalten und Analysieren: Abgebildete Systeme können flexibel verändert oder erweitert werden. Dadurch ist es möglich, Änderungen einfach nachzuvollziehen, zu vergleichen oder zu bewerten. 5 Beim Spezifizieren von Anforderungen und Designs: Wenn komplexe Systeme neu entstehen oder erweitert werden, ist es nötig, Anforderungen und Entscheidungen für Anforderungen festzuhalten. Dafür sind Modelle ein wichtiges Hilfsmittel, da sie bewusst vereinfachen und dennoch Komplexität gut abbilden können. Vielleicht ist dir bereits aufgefallen, dass Modelle unabhängig von einer Software beziehungsweise vor der Erstellung der Software existieren können. Jedes Modell ist entweder Abbild eines bestehenden Systems oder Vorbild eines zu erstellenden Systems. Wenn ein System, sagen wir eine Applikation, bereits existiert, kann es sehr wichtig sein, die Struktur oder das Verhalten der Applikation oder von Teilen der Applikation zu beschreiben. Die Beschreibung beinhaltet in der Regel Text und fast immer auch Modelle. Genauso wichtig wie in der Beschreibung bestehender Systeme sind Modelle auch für die Entwicklung neuer Systeme. In

206

Kapitel 24 · Modellierung

 Kap. 16 Software haben wir gelernt, wie die verschiedenen Herausforderungen der Softwareentwicklung in aufeinanderfolgenden Phasen behandelt werden. In allen diesen Phasen spielen Modelle eine wichtige Rolle, ganz besonders während der Analyse und des Designs. In  Kap. 22 Objektorientierung (in Python) haben wir eine Methode gelernt, wie komplexe Systeme im Code abgebildet werden. Sollten wir diese Abbildung modellieren? Bevor wir diese Aufgabe angehen, sehen wir uns zunächst das Modellierungstool  diagrams.net an (früher bekannt unter dem Namen draw.io). Tatsächlich wurden mit diesem Tool alle bisher gesehenen Modelle in diesem Buch erstellt. Übung

24

Öffne im Webbrowser die Adresse 7 https://app.diagrams.net/. Es erscheint zunächst eine Auswahl zum Speicherort von Diagrammen (siehe . Abb. 24.1). Triff eine Auswahl, wo die Diagramme gespeichert werden sollen. (Rechts unten lässt sich die Spracheinstellung ändern.) Erstelle dann ein neues, leeres Diagramm. Mache dich mit den folgenden Funktionalitäten von  diagrams.net vertraut: Füge Objekte aus der Auswahlleiste am linken Rand in die Zeichenfläche ein. Zoome mit Strg +/Strg –, um die Zeichenfläche zu verkleinern/vergrößern. Füge Text ein, indem du ein Objekt auswählst und dann beginnst, in das Objekt zu schreiben. Füge eine Verbindung ein, indem du zunächst auf die freie Zeichenfläche klickst, sodass kein Objekt mehr angewählt ist. Dann bewegst du die Maus über ein Objekt und ziehst eine Verbindung von einem der Kreuze zu einem anderen Objekt. Alternativ kannst du auch auf eine Verbindung aus der Auswahlleiste klicken, damit sie auf der Zeichenfläche erscheint. Dort kannst du die Endpunkte dann an den gewünschten Ort verschieben. Wähle eines der Objekte aus, um die Formatierungsleiste am rechten Rand zu öffnen. Ändere dort Eigenschaften, wie zum Beispiel die Farbe des Objekts. Verschiebe einzelne Elemente so, dass sich ein für dich stimmiges Gesamtbild ergibt. Dein erstes mit  diagrams.net erstelltes Diagramm könnte beispielsweise aussehen wie . Abb. 24.2. Speichere es.

207 Kapitel 24 · Modellierung

. Abb. 24.1 Auswahl zum Speichern von Diagrammen

. Abb. 24.2 Ungespeichertes Diagramm in  diagrams.net

24

208

Kapitel 24 · Modellierung

Jetzt, da wir ein grafisches Modellierungstool kennen, können wir die Modellierung von Code in die Tat umsetzen. Aber welches sind die wesentlichen Bestandteile? Wie wollen wir sie darstellen? Welche Formalismen und Symbole sollen wir verwenden? Bevor man mit der Modellierung beginnt, ist es sinnvoll, sich klar zu machen, welche Art von Modell benötigt wird und ob es dafür standardmäßige Darstellungen gibt. Wir greifen dazu auf die Unified Modeling Language, kurz UML, zurück. UML ist eine grafische Modellierungssprache, die in den 90er-Jahren entstand, um verschiedene Ansätze zur Modellierung von Softwaresystemen zu vereinheitlichen. UML unterscheidet dabei zwischen Strukturdiagrammen und Verhaltensdiagrammen. Strukturdiagramme beschreiben den Aufbau eines Systems durch die Darstellung seiner Elemente und deren Beziehung untereinander. Ein wichtiger Vertreter ist das Klassendiagramm, das hilft, Code zu modellieren, der objektorientiert entwickelt wurde. Genau das haben wir bereits in  Kap. 22 Objektorientierung (in Python) getan. Dort haben wir schon die Vererbung der verwendeten Klassen modelliert (siehe . Abb. 22.8). Dabei haben wir auf alle Details verzichtet. Als UML-Klassendiagramm beschrieben, sehen die Klassen Person, Schueler und Lehrer aus wie in . Abb. 24.3.

24

. Abb. 24.3 UML-Klassendiagramm für die Klassen Person, Schueler und Lehrer

209 Kapitel 24 · Modellierung

24

In einem Klassendiagramm wird jede Klasse als Box abgebildet. Im ersten Abschnitt steht der Name der Klasse. Im zweiten Abschnitt sind die Eigenschaften aufgelistet. Das Pluszeichen beschreibt die öffentliche Sichtbarkeit einer Eigenschaft oder Methode. Dem Namen der Eigenschaft folgt der Datentyp getrennt durch einen Doppelpunkt. Im letzten Abschnitt stehen die Methoden. In Klammern stehen die Datentypen der übergebenen Argumente. Dahinter steht der Datentyp des von der Methode zurückgegebenen Werts. Die Verbindungen zwischen den Klassen beschreiben ihre Beziehung zueinander. Der Pfeil symbolisiert die Vererbung mit Richtung ausgehend von der abgeleiteten Klasse hin zur Basisklasse. Übung Erstelle das Klassendiagramm wie in . Abb. 24.3 abgebildet. Speichere dein Ergebnis. Alternativ kannst du das fertige Diagramm aus GitHub laden. Vervollständige das Diagramm nun, indem du die Klasse Klassenlehrer in das Diagramm aufnimmst.

Alle Diagramme dieser Stunde und auch eine Lösung für das Klassendiagramm mit Klassenlehrer finden sich hier: 7 https://github.com/StefanSpieker/52Stunden/ tree/master/modellierung Die Stunde ist zu kurz, um sich alle Typen von UML-Diagrammen anzusehen. Zumindest einen Vertreter der Verhaltensdiagramme möchten wir aber noch vorstellen. Verhaltensdiagramme beschreiben die dynamische Seite von Systemen. Das können interne Abläufe sein, Interaktionen oder Prozesse, die mithilfe des Systems abgebildet oder unterstützt werden. Ein Beispiel ist das Anwendungsfalldiagramm. In . Abb. 24.4 ist dargestellt, welche Anwendungsfälle für diese Stunde mit dem System  diagrams.net bedient wurden. Das Diagramm stellt verschiedene Anwendungsfälle in Form von Ellipsen dar. Diese befinden sich in einem Systemkontext, der als Rechteck dargestellt ist. Außerdem sind die Anwendungsfälle Akteuren zugeordnet. Anwendungsfalldiagramme stellen eine typische Möglichkeit dar, Anforderungen an ein System aus der Perspektive eines Benutzers zu dokumentieren. Die UML bieten noch viele weitere Diagrammtypen. Jeder hat einen unterschiedlichen Zweck und eine spezielle Notation, die formal festgelegt ist. In der Praxis treten oft Mischformen auf oder solche Diagramme, die den UML-Diagrammen ähneln, sich aber nicht streng an die vorgegebene Notation halten. Wie wir gesehen haben, tauchen verschiedenste Formen von Modellen in der Informatik auf. Ganz besonders zur Modellierung von Softwaresystemen spielen Modelle eine wichtige Rolle. Dabei ist es meist nicht wichtig, ob es sich um ein „echtes“ Modell oder „nur“ eine Grafik handelt. Solange eine Abbildung hilft, komplexe Systeme verständlicher zu machen, hat sie ihre Berechtigung. Dennoch hilft es, Standards wie UML zu kennen und sich je nach Situation mehr oder weniger streng daran zu halten.

210

Kapitel 24 · Modellierung

24

. Abb. 24.4 Anwendungsfalldiagramm

? Was kann durch ein Modell beschrieben werden? Welchen Zweck hat Modellierung in der Informatik? Welche Funktionen sind typisch für ein grafisches Modellierungstool wie  diagrams.net? Wofür steht UML? Was ist der Unterschied zwischen Strukturdiagrammen und Verhaltensdiagrammen?

211

APIs (mit Python)

© Springer Fachmedien Wiesbaden GmbH, ein Teil von Springer Nature 2024 T. Eichstädt und S. Spieker, 52 Stunden Informatik, https://doi.org/10.1007/978-3-658-41838-0_25

25

212

25

Kapitel 25 · APIs (mit Python)

Bei der Anwendungsentwicklung ist es oft praktisch, Daten oder Dienste anderer Systeme zu verwenden. Dazu werden Programmierschnittstellen benötigt, die man oft als API bezeichnet. Beispiele sind Programmbibliotheken, Laufzeitumgebungen und Web-API. REST-API und SOAP sind zwei verschiedene Arten von Web-APIs. SOAP setzt auf XML-basierte Nachrichten. Bei REST ist das Dateiformat JSON sehr häufig anzutreffen. Web-API ist wichtig für Internetunternehmen wie eBay oder Zalando, um Partnern Funktionen anzubieten, die über die Funktionen der Webseite hinausgehen. In Python können REST-APIs mithilfe der Programmbibliothek requests einfach verwendet werden. Zur Abfrage werden normalerweise GET-Methoden verwendet und zum Senden von Daten an eine API kommen POST-Methoden zum Einsatz. Auch das Erstellen eigener APIs ist nicht schwer. Die bekannteste Programmbibliothek ist requests. In den vorangegangenen Stunden stand vor allem die Programmierung von eigenen Anwendungen im Fokus. Bis jetzt waren alle Daten entweder vom Programmierer eingetragen worden oder aber vom Anwender eingegeben. Oftmals ist es praktisch, die Daten auch aus anderen Systemen zu beziehen oder aber auch Dienste anderer Systeme zu verwenden. In dieser Stunde geht es um Programmierschnittstellen, die man oft mit als API bezeichnet, was die Abkürzung für Application Programming Interface (AnwendungsProgrammierSchnittstelle) ist. Generell gibt es drei Arten von Programmierschnittstellen: 1. Programmbibliotheken, wie beispielsweise datetime 2. Laufzeitumgebungen, wie beispielsweise Web-Audio-APIs zur Erzeugung von Audiosignalen 3. Web-APIs, wie die API von Google oder auch Zalando Ohne es zu wissen, haben wir also schon längst APIs verwendet, nämlich in den Stunden, die sich mit Python befassten. In dieser Stunde soll es nun vor allem um die Web-API gehen, die meist über das Internet direkt angesprochen wird. Aber auch bei Web-APIs gibt es verschiedene Arten, wobei REST-APIs und SOAP die verbreitetsten Arten sind. SOAP ist dabei eine Abkürzung für Simple Object Access Protocol (einfaches Objektzugriffsprotokoll) und steht für ein Netzwerkprotokoll, das zum Austausch von Daten zwischen Systemen entwickelt wurde. Es handelt sich hier um einen industriellen Standard des World Wide Web Consortiums (W3C). Der Standard setzt dabei auf XML-basierte Nachrichten. XML steht für Extensible Markup Language (erweiterbare Auszeichnungssprache) und beschreibt eine Sprache zur Darstellung hierarchisch strukturierter Daten im Format einer Textdatei. Das Besondere daran ist, dass sie sowohl von Menschen als auch von Maschinen lesbar ist.

213 Kapitel 25 · APIs (mit Python)

25

. Abb. 25.1 Beispiel für eine XML-Datei

In . Abb. 25.1 ist ein Beispiel für eine XML-Datei angegeben, in der die hierarchische Struktur dieses Buches angedeutet ist. Es gibt in der ersten Zeile die für XML typische Formatzeile, in der die Version und die Art, wie die Zeichen zu interpretieren sind, angegeben werden. In  Kap. 38 Datenformate werden wir detaillierter auf das Encoding eingehen. In seiner Struktur ist XML vergleichbar mit HTML (siehe  Kap. 4 HTML). Tags werden mithilfe von spitzen Klammern definiert und gelten so lange, bis sie mittels eines Schrägstrichs wieder beendet werden. Alles, was zwischen und steht, gehört also zum Verzeichnis. Der Titel des Verzeichnisses ist mit einem Text „Stundenverzeichnis“ angegeben. Es ist möglich, innerhalb eines Tags Text oder beliebig viele weitere Tags einzufügen. SOAP wird auch heute noch von vielen angeboten, so bietet eBay beispielsweise eine SOAP-API an, um mittels der Plattform zu interagieren. Dies ermöglicht Entwicklern, Programme zu schreiben, um Händlern zusätzliche Funktionen anzubieten, die über die Funktionen der Webseite hinausgehen. Über diese API können neue Dinge auf die Plattform eingestellt werden oder auch Dinge gekauft werden. Heute verdrängen REST-APIs aber immer mehr die SOAP-Schnittstellen, und so bietet auch eBay schon länger eine REST-API an, die deutlich mehr Funktionen bietet als die SOAP-Variante. >

Eine englische Anleitung über die SOAP-API von eBay: 7 https://developer. ebay.com/devzone/xml/docs/Reference/eBay/StandardListingIndex.html Die REST-API von eBay: 7 https://developer.ebay.com/api-docs/sell/static/ sell-landing.html

214

Kapitel 25 · APIs (mit Python)

. Abb. 25.2 Beispiel für eine JSON-Datei

25

Doch was ist der Grund für die große Beliebtheit von REST gegenüber SOAP? Weshalb setzen immer mehr Firmen auf die neuere Alternative? REST ist von Anfang an auf die Maschine-zu-Maschine-Kommunikation fokussiert. Im Allgemeinen wird auf XML verzichtet. Stattdessen werden Alternativen verwendet, die deutlich einfacher zu handhaben sind. Außerdem ist auch die Codierung offen. Das Dateiformat, das man bei REST relativ oft antrifft, ist JSON, die Java Script Object Notation (JavaScript-Objektdarstellungsart). Das XML-Beispiel kann auch als JSON dargestellt werden, wie in . Abb. 25.2 zu sehen ist. Auch diese Datei kann von Menschen und Maschinen gleichermaßen gut gelesen werden, ist aber in der Tendenz etwas kleiner, da die Strukturinformationen auf geschweifte und eckige Klammern beschränkt sind. Eine geschweifte Klammer steht dabei für ein neues Objekt und die eckigen Klammern für eine Liste von Objekten. Text ist bei JSON immer mit Gänsefüßchen eingerahmt, wie beispielsweise beim „titel“. Der Wert, den der Titel hat, ist das „Stundenverzeichnis“. Falls weitere Einträge folgen, wird mit einem Komma getrennt. Nachdem nun der Inhalt einer möglichen Antwort schon bekannt ist, stellt sich die Frage, wie man Anfragen an REST-APIs stellen kann. Dies geht im einfachsten Fall mit einem angehängten Fragezeichen an die Adresse und den Parameter und dessen Wert. Parameter und Wert werden dabei durch ein Gleichheitszeichen getrennt.

215 Kapitel 25 · APIs (mit Python)

25

. Abb. 25.3 JSON-Antwort auf die Abfrage  https://api.agify.io?name=stefan

Übung Am besten testest du das Gelernte direkt selbst. Gehe dazu auf die Seite 7 https:// www.agify.io/ und sieh dir an, was diese Webseite kann. Die Webseite bietet eine API an, die versucht, aufgrund des Vornamens auf das Alter der Person zu schließen. Du kannst es auch direkt ausprobieren, indem du an die Adresse deinen Namen als Parameter name anhängst. Für den Namen Stefan sieht der Aufruf dann wie folgt aus:  https://api.agify.io?name=stefan Teste nun mit deinem Namen, wie alt du laut API bist.

In . Abb. 25.3 ist die Antwort der Webseite auf den API-Aufruf angezeigt. Das geschätzte Alter von Personen mit dem Namen Stefan ist 28. Dies stimmt nicht so ganz. Die Webseite bietet aber auch die Möglichkeit, einen weiteren Parameter anzugeben, nämlich das Land, in der die Person lebt. Weitere Parameter werden mittels eines Und-Zeichens angehängt. Für die API gibt es den Parameter country_id, der als Wert den Ländercode akzeptiert. Damit ist der Aufruf, um nach dem Alter von Stefan in Deutschland zu suchen, der folgende: 7 https://www.api.agify.io/? name=stefan&country_id=de Das Ergebnis liegt dann bei 42 und ist deutlich näher am Alter des Autors dran. Dies kann natürlich auch mit dem Namen des Lesers getestet werden, um vielleicht ein besseres Ergebnis als im vorherigen Versuch zu bekommen. Mit dem gelernten Wissen kann nun auch eine API mittels Python angesprochen und die Funktionalität in ein eigenes Programm übernommen werden. In . Abb. 25.4 ist Beispielcode abgebildet, der die Agify-API anbindet. Wird das Programm ausgeführt, so wird der Nutzer zur Eingabe seines Namens aufgefordert und erhält anschließend als Ausgabe sein geschätztes Alter. Neu an dem Quelltext ist der Befehl import requests, der eine einfach zu verwendende HTTPBibliothek einbindet. Diese ermöglicht eine Abfrage an eine Adresse, die in Zeile 3 definiert wurde. Der Quelltext kann aus dem GitHub Repository bezogen werden.

216

Kapitel 25 · APIs (mit Python)

. Abb. 25.4 Python-Implementierung einer REST-Abfrage an Agify

25

Eine sehr elegante Art, auf JSON-Objekte zuzugreifen, bietet der Befehl myResponse.json(). Dieser liefert ein Wörterbuch aller Eigenschaften und deren Werte zurück. So kann direkt über die eckigen Klammern und den Bezeichner “age” auf das Alter innerhalb des JSON-Objektes zugegriffen werden. Nicht zuletzt weil die Verwendung innerhalb der Programme so einfach ist, ist REST bei Entwicklern so beliebt. Übung Passe nun das Programm an, indem du als zusätzlichen Parameter auch noch das Land mit an die Anfrage hängst, um bessere Ergebnisse zu erzielen. Du kannst entweder den Nutzer um eine Eingabe bitten oder fest einprogrammieren, dass alle Abfragen das Land fest mit eingestellt haben.

Eine mögliche Lösung ist ebenfalls im GitHub Repository abgelegt. Mit dieser doch sehr einfachen API, die an ein Python-Programm angebunden wurde, haben wir Grundlagenwissen über eine REST-API erworben werden. Selbstverständlich sind die meisten APIs deutlich komplizierter und haben auch mehr Funktionen. Ein Blick auf die weiter oben schon erwähnte API-Dokumentation von eBay zeigt deutlich mehr Möglichkeiten. Zur Abfrage nutzt man, wie in unserem kleinen Beispiel, normalerweise GET-Methoden und zum Senden von Daten an eine API kommen POST-Methoden zum Einsatz. In  Kap. 4 HTTP wurde detaillierter auf die verschiedenen Methoden eingegangen. Leider sind nicht alle APIs gleich aufgebaut, sondern jeder Anbieter hat seine Ideen, wie eine API zu funktionieren hat, und überlässt es dem Entwickler, sich durch die Dokumentation zu arbeiten. Eine Firma, die sehr viel auf dem Gebiet der REST-API macht, ist Zalando. Sie hat ein sehr umfangreiches Handbuch zur Erstellung von REST-APIs erstellt. Dort ist beispielsweise geregelt, wie die Versionierung von den API-Entwicklern verwendet werden soll. Die Versionierung ist

217 Kapitel 25 · APIs (mit Python)

25

besonders entscheidend, denn der Anbieter der API möchte vielleicht weitere Funktionen hinzufügen, will aber natürlich nicht die Applikationen, die mit der aktuellen Version laufen, in der Funktion einschränken. >

API-Guide von Zalando: 7 https://opensource.zalando.com/restful-api-guidelines

Die Verwendung einer API mit Python ist sehr einfach, doch auch eine eigene API zu erstellen ist nicht besonders schwer. In Python gibt es mehrere Programmbibliotheken, die es erlauben, eine REST-API selbst zu erstellen. Die bekannteste für Python ist Flask. Um sie verwenden zu können, muss sie natürlich auf dem System installiert sein, dies lässt sich mithilfe des folgenden Befehles erreichen: pip install flask

Übung Sobald das Paket installiert ist, kann das Programm aus . Abb. 25.5 ausgeführt werden. Lade die Programmdatei von GitHub herunter ( 7 https://github.com/ StefanSpieker/52Stunden/blob/master/api/server.py) und teste, ob die REST-API bei dir funktioniert. Starte das Programm mittels python server.py und vergleiche die Ausgabe mit . Abb. 25.6. Falls es nicht funktionieren sollte, denke daran, das Flask-Paket zu installieren. Öffne nun deinen Browser und tippe die Adresse, die dir dein Server anzeigt, ein, bei unserem Beispiel ist es 7 http://127.0.0.1:5000/ – du solltest hier eine „Not Found“-Seite sehen; da unsere API nur auf „/verzeichnis“ reagiert, ändere die Adresszeile zu 7 http://127.0.0.1:5000/verzeichnis

In . Abb. 25.5 wird die Programmbibliothek Flask eingebunden und ein Objekt verzeichnis angelegt, dass ausgegeben werden soll. Danach wird ein Objekt api definiert, das zum Aufrufen verwendet wird. In Zeile 9 wird die Route angegeben, unter der unsere Funktion aufgerufen werden soll. Der Typ ist ein GET, sodass wir es leicht im Browser testen können. Die Funktion get_verzeichnis() gibt das definierte Verzeichnis als JSON zurück. Die Ausgabe des Aufrufs ist in . Abb. 25.7 zu sehen. Es wird ein Objekt ausgegeben, das ähnlich aussieht wie das am Anfang der Stunde. Natürlich ist das eine sehr einfache API, die immer dasselbe ausgibt. So lässt sich innerhalb der Methode get_verzeichnis() auch Logik implementieren. Ebenfalls kann die Route geändert werden, oder es können auch weitere Funktionen entwickelt werden. Es ist nur wichtig, dass nicht zwei Methoden dieselbe Route zugewiesen bekommen.

218

Kapitel 25 · APIs (mit Python)

. Abb. 25.5 Einfache Implementierung einer REST-API

25

. Abb. 25.6 Start der Applikation aus . Abb. 25.5

. Abb. 25.7 JSON-Objekt, das ausgegeben wird, wenn die API angefragt wird

Es ließen sich auch die beiden Programmbeispiele kombinieren und die Altersabfrage beispielsweise mit einem zufälligen Land generieren. So könnte die eine API eine andere verwenden. Dies gibt einen kleinen Einblick in die breite Verwendbarkeit von APIs. ? Wofür steht API? Was ist eine API? Was ist der Unterschied zwischen XML und JSON? Was sind die Unterschiede zwischen REST und SOAP? Wie lautet eine Python-Programmbibliothek zur Erstellung von REST-APIs?

219

Virtualisierung

© Springer Fachmedien Wiesbaden GmbH, ein Teil von Springer Nature 2024 T. Eichstädt und S. Spieker, 52 Stunden Informatik, https://doi.org/10.1007/978-3-658-41838-0_26

26

220

26

Kapitel 26 · Virtualisierung

Virtualisierung ist uns aus dem Alltag bekannt. In der Informatik sind virtualisierte Systeme besonders wichtig, um Anwendungen auf ihnen laufen zu lassen. Virtuelle Maschinen stellen Unabhängigkeit von Hardware her. Auerdem erhöht Virtualisierung durch Abschottung die Sicherheit. Nachteile von Virtualisierung, nämlich ein langsamerer Start und ein höherer Verbrauch von Systemressourcen, wurden durch neuere Versionen abgemildert. Im Serverumfeld verfolgt man mit Virtualisierung vor allem kostengetriebene Ziele. Durch eine bessere Lastverteilung lassen sich die Stromkosten senken. Der Ersatz von Servern wird erheblich vereinfacht. Virtualisierung ist auch im privaten Bereich nützlich. Emulatoren bilden das Verhalten veralteter Hardware nach. Dadurch können alte Spiele auf modernen PCs ausgeführt werden. Im Internet sind Super-Nintendo-ROMs für die Emulation verfügbar. Um zu verstehen, was Virtualisierung bedeutet, hilft ein Blick in unseren Alltag. Es gibt etwas Virtuelles, das unseren Alltag stark beeinflusst, nämlich die Uhrzeit. Noch im Mittelalter kannten die meisten Menschen keine Uhr. Der Lauf der Zeit war deutlich anders im Vergleich zu heute. Sie war nicht ein konsequent geradlinig voranschreitendes Etwas, sondern wurde als ewiger Kreislauf gesehen. Als ein ständiger Übergang zwischen Tag und Nacht sowie der Jahreszeitenwechsel. Diese virtuelle Schicht Zeit hilft dabei, wenn sich Menschen unterhalten, die vielleicht eine unterschiedliche Wahrnehmung von Zeit haben, trotzdem zu verstehen, was der andere erwartet. Obwohl für einen selbst die Zeit unterschiedlich schnell vergeht, wissen wir auch schon als Kinder früh, wann zwölf Uhr ist, und verstehen das Konzept der Uhrzeit rasch. Es stellt sich die Frage: Wann vergeht die Zeit für einen selbst schneller? Bei den Hausaufgaben oder beim Spielen eines tollen Gesellschaftsspiels? Diese Stunde beschäftigt sich mit der Virtualisierung von Software und Hardware. Die Virtualisierung ist eine Technik, die darauf abzielt, Ressourcen zu teilen und damit effizienter zu nutzen oder eine einheitliche Zwischenschicht zu bieten, um Unterschiede der Hardware zu abstrahieren, die noch über die Funktionalität des Betriebssystems hinausgehen. Die häufigste Verwendung des Namens Virtual Machine (virtuelle Maschine) findet sich im Umfeld von Servervirtualisierung und bezeichnet hier ein abgeschottet laufendes virtualisiertes System. Auf einer solchen virtuellen Maschine können Anwendungen laufen, die über das Internet erreichbar sein sollen. Daneben werden virtuelle Laufzeitumgebungen für Programme, die speziell für diese Laufzeitumgebung geschrieben wurden, ebenfalls als virtuelle Maschinen bezeichnet. Laut Wikipedia ist die „Java Virtual Machine [. . .] der Teil der JavaLaufzeitumgebung (Java Runtime Environment, JRE) für Java-Programme, der für die Ausführung des Java-Bytecodes verantwortlich ist. Hierbei wird im Normalfall jedes gestartete Java-Programm in seiner eigenen virtuellen Maschine (VM) ausgeführt.“ Die bekannteste Verwendung dieser Maschine war lange Zeit auf AndroidSmartphones zu finden. Sie findet sich aber auch auf diversen anderen Endgeräten.

221 Kapitel 26 · Virtualisierung

26

Es gibt zwei Ziele, die durch die Verwendung der virtuellen Maschine erreicht werden sollen: 1. Unabhängigkeit von der Hardware 2. Erhöhung der Sicherheit Um die Vorteile der Unabhängigkeit von Hardware zu verstehen, kann man das Spektrum der Smartphones betrachten, vom kleinen „langsamen“ Smartphone mit einer älteren Android-Version bis zu den High-End-Geräten mit der aktuellsten Android-Version. Dadurch, dass Anwendungen auf derselben Grundlage entwickelt werden können, müussen diese nur ein Mal geschrieben werden und können danach auf allen Geräten verwendet werden. Die erhöhte Sicherheit wird dadurch erreicht, dass jede Anwendung ihre eigene virtuelle Maschine erhält und so von anderen Anwendungen abgeschottet ist. Eine App oder auch ein Spiel hat damit keinen Zugriff auf andere Applikationen, wie z. B. auf eine Banking-App. Die Nachteile der Virtualisierung, nämlich ein langsamerer Start der Anwendung und ein höherer Verbrauch von Systemressourcen, haben dazu geführt, dass bei Android 5.0 (Alias: Lollipop) im Jahr 2014 die virtuelle Maschine durch die Android Runtime abgelöst wurde. Auch wenn bei der Ausführung die neue Android Runtime zum Einsatz kommt, werden die Programme erst bei der Installation in Maschinencode übersetzt, sodass das Fundament der virtuellen Maschine auch heute noch besteht. Im Serverumfeld dient die Virtualisierung vor allem kostengetriebenen Zielen, die einen günstigeren Betrieb ermöglichen: 1. Effiziente Nutzung von Ressourcen 2. Erhöhte Verfügbarkeit 3. Schnellere Verfügbarkeit von Servern 4. Isolation von Anwendungen 5. Bessere Wiederherstellungsmöglichkeiten nach einem Hardwaredefekt Server haben im Allgemeinen nicht immer gleich viel zu tun, bei Webservern beispielsweise ist die Last stark davon abhängig, wie viele Leute den Server besuchen. Eine deutsche Nachrichtenseite wird vor allem zur Mittagspause sehr stark genutzt – in den Nachtstunden dagegen sehr wenig. Wenn jetzt auf derselben Hardware daneben eine weitere Anwendung betrieben wird, die vor allem nachts viel zu tun hat, so ist der einzelne Server viel besser ausgelastet. In diesem Fall spart man sich die Anschaffung eines weiteren Servers und die Stromkosten sind auch erheblich niedriger. Sie halbieren sich nicht ganz, da ein Server, der viel zu berechnen hat, auch deutlich mehr Strom verbraucht.

222

Kapitel 26 · Virtualisierung

Übung Schätze, wie viel Strom ein durchschnittlicher Computer bei Ruhe (ohne dass jemand etwas damit tut) und bei Volllast verbraucht. Wie sieht das bei Laptops aus? Wie hoch sind die Kosten pro Tag? Was hoch sind die Stromkosten von Servern, die den ganzen Tag laufen? Wie teuer ist wohl das tägliche Laden des Smartphones?

26

. Tab. 26.1 zeigt eine grobe Übersicht der im Jahr anfallenden Kosten. PC und Laptop sind mit etwa 4 h Nutzungszeit pro Tag angenommen, bei denen die Last zwischen Leerlauf und Volllast in etwa gleich verteilt ist. Die Server laufen natürlich 24 Stunden, 7 Tage die Woche und damit das ganze Jahr durch. Serverbetreiber können also nicht nur die Anschaffungskosten für Server reduzieren, sondern auch die kontinuierlich anfallenden Stromkosten senken. Dadurch, dass die Hardware nur noch virtualisiert existiert, müssen keine identischen Server mehr angeschafft werden, die im Falle eines Hardwaredefekts einspringen können, sondern es reichen freie Kapazitäten irgendwo innerhalb des Rechenzentrums. In einer virtuellen Umgebung ist auch das Verschieben von Maschinen problemlos möglich, sodass im Fehlerfall einfach auf einer anderen Maschine weitergerechnet werden kann. Wenn ein neuer Server benötigt wird und der bestehende virtualisierte Serverpark noch Ressourcen frei haben sollte, ist eine neue virtuelle Maschine auch in wenigen Sekunden verfügbar. Der Betreiber muss nicht erst eine neue Hardware bestellen und im Serverraum anschließen und einrichten. So erreicht man eine schnellere Verfügbarkeit von neuen Servern. Durch die zusätzliche Virtualisierung können auch Server besser voneinander getrennt werden, als das mit physischen alleine funktioniert. Denn die Systeme bieten noch die Möglichkeit, die Sichtbarkeit untereinander zu beschränken. Üblicherweise sehen sich die virtuellen Maschinen, die auf derselben physischen Maschine laufen, nicht.

. Tab. 26.1 Stromkosten verschiedener Geräte Typ

Energiebedarf Leerlauf [Watt]

Energiebedarf Volllast [Watt]

Stromkosten pro Jahr (40 ct/kWh) [e]

Computer (PC)

120

180

(4 h pro Tag) 88

Flachbildschirm

45

Laptop

30

40

(4 h pro Tag) 20

Kleiner Server

200

300

700–1050

Großer Server

500

750

1752–2628

Smartphone

(4 h pro Tag) 27

1–1,50

223 Kapitel 26 · Virtualisierung

26

Oft werden die Maschinen auf langsameren Servern gespiegelt, sodass diese im Falle eines Totalausfalls sofort übernehmen können. Natürlich wird das nur für Anwendungen gemacht, bei denen ein kurzzeitiger Ausfall besonders kritisch ist. Beispiele wären hier Spieleserver (z. B. Fortnite), ohne die kein Spielen möglich wäre. Die Nachteile der Virtualisierung unterscheiden sich im Serverbereich nicht sehr von denen der virtualisierten Laufzeitumgebung. Erhöhter Speicherbedarf und etwas höhere Verzögerungen beim Datenzugriff gelten wie dort, jedoch ist ein Nachteil der virtualisierten Umgebung, dass sich spezielle Rechnerfunktionen, wie z. B. eine schnelle Grafikkarte, nicht mehr so einfach nutzen lassen. Aber auch zu Hause kann Virtualisierung helfen, alte Spiele, für die die Spielkonsole kaputt ist, wiederzubeleben. So kennen viele, die heute selbst Kinder haben, noch den Super Nintendo. Wer hat früher nicht gern Super Mario oder andere Spiele gespielt? Die entsprechenden Konsolen hat heute kaum noch jemand zu Hause stehen. Trotzdem kann man mit Emulatoren auch heute noch diese Spiele auf PCs spielen. Als Emulator (von lateinisch aemulari, nachahmen) wird ein System bezeichnet, das ein anderes nachbildet. Es ist eng verbunden mit der Virtualisierung, unterscheidet sich aber darin, dass nur ein Teil der Funktionen nachgebildet wird. Die Emulation versucht mittels Software, das Verhalten der Hardware nachzubilden. So kann die CPU-Last eines alten Spiels auch schon mal ungewöhnlich hoch sein. Emulatoren gibt es für viele Konsolen, die heute nicht mehr auf dem Markt sind. In dieser Stunde wollen wir uns einen Super-Nintendo-Emulator genauer ansehen. Ein bekannter Vertreter dieser Emulatoren ist Snes9x. Es findet sich auch ein Downloadlink auf der Seite des Emulators: 7 http://www.snes9x.com/ Übung Gehe nun auf die Seite und lade dir den Emulator herunter. Da noch kein Spiel dabei ist, musst du dir noch zusätzlich eines herunterladen. Die Spieledateien heißen beispielsweise Super Mario World (U) [!].smc und lassen sich zum Beispiel über 7 https://www.emulatorgames.net/roms/super-nintendo/ herunterladen. Suche dir ein Spiel dort aus und speichere auch das. Packe danach beides in demselben Verzeichnis auf deinem Rechner aus.

Die Installation des Emulators ist denkbar einfach, man muss einfach nur alles in ein Verzeichnis entpacken. Die Spieldatei wird auch als ROM bezeichnet. ROM steht dabei für Read Only Memory (Nurlesespeicher). Bei den alten Spielekonsolen ließen sich die Spiele nur auf der Konsole speichern und nicht bei den Spielen. In . Abb. 26.1 ist der Snes9x in der Version 1.60 zu sehen. Eventuell gibt es auch schon eine neuere Version, die aber der hier vorgestellten ähnlich sein sollte. Ein Spiel lässt sich über File -> Load Game öffnen. Der Emulator unterstützt auch gängige Gamepads, sodass einem Spielgefühl wie früher wenig im Weg steht. Wer kein Gamepad hat, kann das Spiel auch über die Tastatur mit den Tasten in . Tab. 26.2 steuern.

224

Kapitel 26 · Virtualisierung

. Abb. 26.1 Emulator Snes9x

26

. Tab. 26.2 Tastenfunktion für den Emulator Funktion

Taste

Bewegen

Pfeiltasten

B

C

A

V

Y

X

X

D

Start

Leertaste

Select

Enter

L

A

R

S

Das erfolgreiche Starten sieht dann aus wie in . Abb. 26.2. Die erfolgreiche Einrichtung des Emulators lädt nun zum Spielen ein. Die Grafik ist natürlich nicht mit der heutiger Spiele vergleichbar, der Spielspaß ist aber manchmal sogar größer. Besonders gilt das natürlich für diejenigen unter uns, die diese Spiele vor über einem Jahrzehnt selbst gespielt haben.

225 Kapitel 26 · Virtualisierung

. Abb. 26.2 Starten von Super Mario im Emulator

? Was bedeutet Virtualisierung? Warum werden virtuelle Maschinen verwendet? Welche Vorteile bietet Virtualisierung im Serverumfeld? Wie groß ist der Stromverbrauch verschiedener Computer (PC, Smartphone, Laptop, Server)? Was ist der Unterschied zwischen einem Emulator und einer virtuellen Maschine?

26

227

Cloud-Computing

© Springer Fachmedien Wiesbaden GmbH, ein Teil von Springer Nature 2024 T. Eichstädt und S. Spieker, 52 Stunden Informatik, https://doi.org/10.1007/978-3-658-41838-0_27

27

228

27

Kapitel 27 · Cloud-Computing

Der Begriff Cloud-Computing leitet sich von der Vorstellung eines veränderlichen Rechnernetzwerkes ab, das uns Daten durch die Luft verfügbar macht. In Wirklichkeit greifen wir über das Internet auf Computer in einem Rechenzentrum zu. Die drei gröten Cloud-Anbieter sind Amazon, Microsoft und Google. Darüber hinaus gibt es viele kleinere Unternehmen, die zum Beispiel E-Mail, Filehosting oder andere CloudServices anbieten. Bei den Angeboten wird zwischen IaaS, PaaS und SaaS unterschieden. Cloud-Computing bietet Unternehmen die Möglichkeit, dem Kunden Dienste unkompliziert und unmittelbar zur Verfügung zu stellen. Auerdem können Unternehmen Cloud-Dienste selbst nutzen und dadurch ihre eigene IT-Landschaft drastisch entlasten oder unter Umständen komplett darauf verzichten. Solche Dienste sind gerade für Start-ups unglaublich interessant, aber auch gröere Unternehmen können stark von ihnen profitieren. Es existieren auch Bedenken gegen die Cloud-Nutzung, insbesondere was die Sicherheit der verarbeiteten Daten angeht. Ein weiterer Trend in Verbindung mit der Cloud ist das Serverless Computing. „Daten in die Cloud hochladen“, „ein Backup in der Cloud machen“, „über die Cloud auf etwas zugreifen“ oder „eine Applikation läuft in der Cloud“. Die Cloud ist heute für viele Menschen ein gebräuchlicher Begriff. Aber was bedeutet er eigentlich? Was ist die Cloud? Warum und wofür wird sie verwendet? Die Begriffe Cloud (Wolke) und Cloud-Computing (Rechnerwolke) leiten sich von der Vorstellung eines Rechnernetzwerks ab, das über das Internet verfügbar ist. Wir wissen nicht, wo sich diese Rechner genau befinden. Auch kann sich der Aufbau des Netzwerks verändern. Aber wir haben von überall (wo es Internet gibt) Zugriff darauf. Auf fast magische Weise sind Daten für uns sozusagen „durch die Luft“ erreichbar. Wahrscheinlich assoziieren wir diese Datenverbindungen deshalb gerne mit einer Wolke. Wir selbst haben das Bild der Wolke in  Kap. 8 Netzwerke und Protokolle verwendet (siehe . Abb. 8.1). Natürlich werden die Daten nicht wirklich im Himmel gespeichert oder verarbeitet. In Wirklichkeit greifen wir über das Internet auf Computer zu, die sich in einem Rechenzentrum befinden, wie in . Abb. 27.1 dargestellt. Etwas präziser ausgedrückt, bedeutet Cloud-Computing, dass eine IT-Infrastruktur über ein Rechenzentrum zur Verfügung gestellt wird, ohne dass sie auf der Seite des Nutzers installiert werden muss. IT-Infrastruktur ist ein breiter Begriff, der für die Gesamtheit von Hardware und Software steht, die notwendig ist, um die Nutzung von Anwendungssoftware zu ermöglichen. Ein Anbieter, der sogenannte Cloud-Provider, stellt diese Infrastruktur als Dienst zur Verfügung. Die meisten solcher Dienste werden durch große Anbieter bereitgestellt, die international tätig sind und mehrere Rechenzentren betreiben. Die drei größten dieser Cloud-Provider (mit Marktanteil im Q4 2022 laut Synergy Research Group) sind in . Tab. 27.1 aufgelistet.

229 Kapitel 27 · Cloud-Computing

27

. Abb. 27.1 Internetzugriff auf Rechenzentrum . Tab. 27.1 Marktanteile von Cloud-Anbietern Cloud-Anbieter

Marktanteil

33 %

23 %

11 %

Kommentar Amazon Web Services (AWS) war 2006 als Erstes am Markt und ist bis heute dominierend im klassischen Cloud-Geschäft mit IT-Infrastruktur. Zugleich werden zahlreiche Zusatzdienste angeboten. Microsoft Azure existiert seit 2010. Auch aufgrund der guten Integration mit etablierter Unternehmenssoftware wie Microsoft Teams, Office365 und Active Directory gewann Azure in den letzten Jahren Marktanteile.

Google Cloud hat das Image, sehr gute Lösungen für innovative Projekte anzubieten, und wächst ähnlich rasant wie Microsoft Azure.

Die Kunden solcher Cloud-Provider sind oft Unternehmen, die ihrerseits wieder Dienste oder konkrete Lösungen an einen Endkunden bereitstellen. Es wird von einer cloudbasierten Applikation gesprochen. Für den Endkunden ist meist nicht ersichtlich und auch nicht wichtig, ob es sich um einen Cloud-Dienst aus erster Hand handelt oder eine Lösung, die auf Cloud-Diensten eines weiteren Anbieters basiert. Wir gehen später noch auf solche Beispiele ein und auch auf die großen

230

Kapitel 27 · Cloud-Computing

Cloud-Provider selbst. Zunächst wollen wir uns überlegen, welche Cloud-Dienste wir kennen. Das bekannteste Beispiel für einen Cloud-Dienst ist Datenspeicher. Das heißt, niemand muss in den Laden gehen, eine Festplatte kaufen, mit seinem Rechner verbinden und eine Treibersoftware installieren, um den Speicher endlich nutzen zu können. Stattdessen wird die benötigte Menge Speicher als Cloud-Dienst gebucht. Übung Welche Bedeutung hat die Cloud für dich persönlich? Welche Cloud-Dienste kennst du? Welche nutzt du privat?

27

Ein paar weit verbreitete Beispiele für Cloud-Anbieter und ihre Cloud-Dienste sind: 5 Die Moodle-Lernplattform (siehe 7 https://moodle.de/) bietet Bildungseinrichtungen eine Möglichkeit, Nutzer, Kurse, Arbeitsmaterial und Lernaktivitäten zu verwalten. In Deutschland interessierte sich vor der Coronapandemie kaum jemand für diese Art, Schule „über eine Cloud“ zu organisieren. Seit dem Frühjahr 2020 haben solche Plattformen starken Zulauf. Auch wenn noch nicht klar ist, welche der Plattformen sich durchsetzen werden, wird deutlich, dass diese zukünftig eine wichtige Rolle in der Schulbildung spielen werden. 5 Die beiden populärsten E-Mail-Anbieter in Deutschland sind GMX und web.de. Beide bieten auch Cloud-Dienste an. Darüber lassen sich Dateien speichern und freigeben (siehe . Abb. 27.2). Im weiteren Sinn ist natürlich auch die E-Mail ein Cloud-Dienst beziehungsweise ein cloudbasierter Dienst. Die Nachrichten sind auf zentralen Servern gespeichert und wir können von jedem Endgerät über das Internet darauf zugreifen. 5 Dropbox ist ein bekannter Filehosting-Dienst, der seit 2007 existiert. Dabei wird ein spezieller Ordner auf dem eigenen PC angelegt, die sogenannte Dropbox. Alle Dateien in diesem Ordner werden im Hintergrund mit einem Server synchronisiert, also „in die Cloud“ gesendet oder „aus der Cloud“ heruntergeladen. Dieser Serverordner lässt sich an mehreren Geräten synchronisieren. Dateien und Ordner in der Dropbox lassen sich mit anderen Nutzern teilen. All das funktioniert sowohl im Webbrowser als auch bequem aus dem Windows Explorer heraus (siehe . Abb. 27.3). 5 Etwa zur gleichen Zeit wie Dropbox erschienen auch die Filehosting-Dienste Google Drive und Microsoft OneDrive. Eng mit ihnen verknüpft ist jeweils ein Office-Softwarepaket. Dieses Buch etwa wurde zum Großteil mit Google Docs verfasst. Das Manuskriptdokument war dabei „in der Cloud“ gespeichert und konnte von verschiedenen Benutzern auf verschiedenen Geräten parallel bearbeitet werden.

231 Kapitel 27 · Cloud-Computing

. Abb. 27.2 GMX-Cloud

. Abb. 27.3 Dropbox-Integration in Windows Explorer

27

232

Kapitel 27 · Cloud-Computing

5 Neben Dokumenten und E-Mails lassen sich auch viele andere Informationen über einen Cloud-Anbieter verwalten. Für Android-Nutzer ist es oft praktisch, Fotos, Kontakte und Kalender durch Google verwalten zu lassen. Das macht einen Wechsel des Geräts extrem komfortabel. Das Gleiche gilt für Apple, das mit der iCloud ein vergleichbares Angebot bereitstellt. 5 Wir haben darüber gesprochen, Cloud-Dienste von einem Anbieter zu beziehen. Es ist auch möglich, eine eigene Cloud einzurichten und selbst Dienste anzubieten. Dazu wird ein Server benötigt, also ein Rechner, der über ein Netzwerk für mehrere Clients verfügbar ist. Meistens wird dazu eine spezielle Software verwendet. Zum Beispiel bietet OwnCloud (siehe 7 https://owncloud.org/) die Möglichkeit, eine eigene Cloud mit ähnlichen Funktionen wie eine Dropbox einzurichten. Dazu kann ein Raspberry Pi verwendet werden (siehe  Kap. 49 Internet der Dinge). 5 Ein weiterer typischer Anwendungsfall von Cloud-Dienstleistung fehlt noch in der Liste. Er ist so wichtig, dass wir ihm eine komplette Stunde gewidmet haben. Welcher könnte das sein? Richtig, die Rede ist vom Hosting von Webseiten und der dazugehörigen Dienste und IT-Infrastruktur (siehe  Kap. 12 Webhosting). Übung

27

Falls du noch keine Erfahrungen mit der Dateiablage in der Cloud gemacht hast, probiere Dropbox aus. Zur Registrierung geht es unter: 7 https://www.dropbox. com/register.

Also gut. Wir können Daten online speichern. Das ist praktisch, aber auch nicht wirklich revolutionär, mögen einige Menschen denken. Dabei ist es genau das: ein revolutionärer neuer Ansatz, wie IT-Dienste angeboten und konsumiert werden. Daten bilden oft die Grundlage solcher Dienste. Allerdings gibt es viele weitere Dienste, die als oder mithilfe von Cloud-Computing angeboten werden. Grundsätzlich wird dabei unterschieden: 5 Infrastructure as a Service (Infrastruktur als Dienst), kurz IaaS, bezeichnet die Onlinebereitstellung von Computerhardware. Beispiele sind virtuelle Maschinen, Speicher, Netzwerkkomponenten. 5 Platform as a Service (Plattform als Dienst), kurz PaaS, bezeichnet eine cloudbasierte Umgebung, in der Applikationen programmiert und bereitgestellt werden können. Über klassische Programmierung hinaus werden insbesondere auch Möglichkeiten zur Datenbearbeitung und zur Entwicklung im Bereich künstliche Intelligenz angeboten (siehe  Kap. 44 Künstliche Intelligenz). Die Umgebung verwendet in aller Regel dynamisch anpassbare Infrastruktur desselben Anbieters. 5 Software as a Service (Software als Dienst), kurz SaaS, bezeichnet Applikationen und Datenbanken, die online bereitgestellt werden und auf der Infrastruktur des Anbieters laufen. Der Nutzer kann die Software bedarfsgerecht über ein Abonnement verwenden. Für Unternehmen bietet dieses breite Spektrum an Cloud-Diensten zwei riesige Chancen:

233 Kapitel 27 · Cloud-Computing

27

1. Unternehmen können dem Kunden Dienste ohne komplizierte Vertriebskanäle anbieten und unmittelbar zur Verfügung stellen. 2. Unternehmen können selbst Cloud-Dienste nutzen und dadurch ihre eigene IT-Landschaft drastisch entlasten oder unter Umständen komplett darauf verzichten. Uber und Airbnb sind Beispiele für Unternehmen mit revolutionär neuen Geschäftsmodellen, die durch die Cloud ermöglicht wurden. Beide Unternehmen bieten ihre Dienste über eine cloudbasierte Plattform an. So kommen Anbieter in direkten Kontakt mit Abnehmern. Für den Kunden ist der Zugang zum Angebot über die Cloud extrem komfortabel. Auf diese Art wurden zwei jahrhundertealte Wirtschaftsbereiche, nämlich die Hotel- und die Transportbranche, auf den Kopf gestellt! Es gibt viele weitere Fälle, in denen die Cloud bestehende Geschäftsmodelle verbessert oder völlig neue Geschäftsmodelle ermöglicht. Ihnen ist gemein, dass IT-Systeme eine zuvor unerreichte Kundennähe und Nutzerfreundlichkeit erzeugen (siehe  Kap. 50 User Experience). Für welche Art und Größe von Unternehmen ist es attraktiv, selbst CloudDienste zu nutzen? Praktisch für alle! Denke einmal darüber nach. Übung Kannst du dir vorstellen, welche Vorteile solche Cloud-Dienste für ein Unternehmen bieten? Gibt es auch Nachteile? In welchen Fällen würdest du keinen Cloud-Ansatz verwenden?

Ein paar der wichtigsten Vorteile sind: 5 Bei der Verwendung von IT-Diensten entfällt die Anschaffung. Gerade für Startups sind Cloud-Dienste daher unglaublich interessant. So können schnell und günstig IT-Dienstleistungen bezogen werden, ohne dass man selbst Hardware, Software und Personal beschaffen muss. Größere Unternehmen können es sich eher leisten, eine eigene IT-Infrastruktur zu betreiben. Aber auch das hat seinen Preis. Selbst langfristig sind die Cloud-Dienste finanziell konkurrenzfähig, wenn Nebenkosten einer eigenen IT-Infrastruktur wie Betrieb, Wartung und Strom eingerechnet werden. Die Kosten fallen in der Regel monatlich an und sind besser kalkulierbar. 5 Cloud-Dienste können flexibel bestellt und abbestellt werden. Das ist von Vorteil bei Sparmaßnahmen, bei Änderungen von Hardwareanforderungen oder beim Wechsel von Software oder Softwareversionen. 5 Die Bedeutung der Verfügbarkeit haben wir bereits erwähnt. Cloud-Dienste lassen sich von verschiedenen Personen und Geräten an beliebigen Orten über das Internet verwenden. Sie steigern daher die Attraktivität von angebotenen Dienstleistungen und die Kollaboration im eigenen Unternehmen. 5 Ein weiterer, extrem wichtiger Aspekt ist die Skalierbarkeit. Das bedeutet, dass die Cloud-Dienste und deren Nutzung bei Bedarf dynamisch erweitert werden können. Egal ob IaaS, PaaS oder SaaS, jeden Dienst kann man zunächst kos-

234

Kapitel 27 · Cloud-Computing

tenfrei oder für einen sehr geringen Betrag ausprobieren. Werden weiterer Speicherplatz, schnellere Datenverbindungen, weitere Rechenleistung oder Zugang für mehr Benutzer benötigt, so lassen sich die Dienste ohne Schwierigkeiten anpassen.

27

Denken wir wieder an die Beispiele Uber und Airbnb. Diese Unternehmen haben es innerhalb weniger Jahre geschafft, extrem stark zu wachsen und ihre Vermittlungsdienste international einer riesigen Menge an Nutzern anzubieten. Kunden melden sich an der Cloud-Plattform an und bekommen innerhalb von Sekunden Ergebnisvorschläge. Wie sähe so eine Vermittlungsplattform ohne die Cloud aus? Eine reguläre Webseite (die auch bereits eine Art von Cloud-Dienst darstellt) wäre nicht in der Lage, die Datenmengen zu speichern und Suchanfragen durchzuführen. Noch weniger wäre eine klassische Applikation in der Lage, alle möglicherweise relevanten Daten herunterzuladen und lokal zu verarbeiten. Auf der anderen Seite hat Cloud-Computing auch Nachteile. Es gibt mitunter starke Bedenken gegen Cloud-Lösungen, die auf diese Nachteile zurückzuführen sind oder zumindest als solche empfunden werden. Sehen wir uns ein paar dieser Bedenken an: 5 Die am häufigsten auftretenden Bedenken in Verbindung mit Cloud-Computing betreffen die Sicherheit der zu verarbeitenden Daten. Wie ausfallsicher sind die Dienste? Geht der Cloud-Anbieter verantwortungsbewusst mit den Daten um? Was ist mit Hackerangriffen? Es ist sehr schwierig, diese Fragen pauschal zu beantworten. Die großen Cloud-Anbieter verfügen über umfangreiche Sicherheitsmechanismen, insbesondere zur Verschlüsselung und Zugriffsbeschränkung (vergleiche  Kap. 10 Informationssicherheit und  Kap. 11 Authentifizierung). Die Sicherheit ist daher oft eher eine Frage, ob ein Unternehmen oder ein Anwendungsfall diese Mechanismen sinnvoll einsetzt. Tatsächlich können Sicherheitsaspekte auch ein Argument für die Cloud sein. 5 Durch die Nutzung einer Cloud entsteht eine Abhängigkeit vom Anbieter. Dieser Fakt wird häufig als problematisch empfunden. Im PaaS- und noch stärker im SaaS-Umfeld variieren die verschiedenen Cloud-Anbieter mitunter deutlich. Die Abhängigkeit ist hier also größere als bei IaaS. Andererseits wird von PaaS und SaaS die größte Ersparnis an Aufwand und Kosten erwartet. Ähnlich wie beim Kauf einer Software geht die Nutzung natürlich mit einer Abhängigkeit einher. Diese kann mit dem Nutzen beziehungsweise der Ersparnis abgewogen werden. 5 Cloud-Dienste sind großteils standardisiert. Individualisierung ist in manchen Fällen schwierig. Zu Problemen kann es beispielsweise führen, wenn CloudDienste mit lokalen Systemen zusammenarbeiten sollen. 5 Rechtliche Einschränkungen, zum Beispiel beim Datenschutz, können die Nutzung von Clouds erschweren oder je nach Branche und Anwendungsfall sogar unmöglich machen. Lange Zeit erschien es fraglich, ob sich der Cloud-Ansatz im Unternehmensumfeld durchsetzen würde. Mittlerweile hat er sich in fast allen Branchen etabliert und gewinnt weiter an Bedeutung. Dies ist an dem enormen Erfolg, den die Cloud-

235 Kapitel 27 · Cloud-Computing

27

. Abb. 27.4 Produktauswahl im Microsoft-Azure-Portal

Anbieter haben (insbesondere die drei in . Tab. 27.1 gelisteten), abzulesen. Zum Abschluss der Stunde wollen wir kurz darauf eingehen, wie das Anbieten von ITInfrastruktur als Cloud-Dienst abläuft. Wenn ein Kunde beim Cloud-Provider einen Dienst aufruft, wird im ausgewählten oder im nächstgelegenen Rechenzentrum die entsprechende Infrastruktur reserviert. Zum Beispiel wählt der Kunde einen virtuellen Computer (siehe . Abb. 27.4). Er kann dann Angaben zum Betriebssystem und zu der gewünschten Größe des Computers machen. Die entsprechende Maschine wird „angelegt“ und der Nutzer kann sie benutzen. Zum Beispiel, um darauf eine cloudbasierte Applikation auszuführen. Es erfolgt aber keine Zuweisung einer physikalischen Maschine zu einem bestimmten Nutzer. Stattdessen bedient sich der Cloud-Provider des Konzeptes der Virtualisierung. Der Cloud-Provider abstrahiert also von der Hardware, um diese flexibler für seine virtuellen Maschinen einzusetzen! Ein weiterer Trend ist die zusätzliche Abstraktion von Maschinen überhaupt. Der Begriff dieses Konzeptes ist Serverless Computing. Das heißt, der Cloud-Provider führt eine Funktion aus und managt flexibel die dazu notwendigen Ressourcen. Der Dienst zum Ausführen von Serverless Code bei Amazon Web Services heißt „Lambda“. Bei Microsoft Azure heißt er „Azure Function“ und in der Google Cloud „Google Function“. Es ist lehrreich, sich bei einem der drei großen Cloud-Provider zu registrieren und ein wenig mit den angebotenen Diensten zu spielen. Alle drei bieten ein Gratisguthaben, mit dem viele Dienste ausprobiert werden können. Serverless Computing bietet eine einfache Möglichkeit, Code in der Cloud auszuführen. Allgemein sollte nach dem Abschluss eines Versuchs daran gedacht werden, die Dienste wieder zu deaktivieren, um keine weiteren Kosten zu erzeugen.

236

Kapitel 27 · Cloud-Computing

Übung Öffne 7 https://aws.amazon.com/de/getting-started/hands-on/run-serverless-code. Registriere dich bei Amazon Web Services und folge den Anweisungen, um „Hello World“ als AWS Lambda auszuführen.

? Was bedeutet Cloud-Computing? Was sind Beispiele für Cloud-ComputingDienste? Wie unterscheiden sich IaaS, PaaS und SaaS? Welche Vorteile bietet die Nutzung von Cloud-Diensten für Unternehmen? Welche Nachteile sind bei der Nutzung von Cloud-Diensten zu beachten?

27

237

IT-Betrieb

© Springer Fachmedien Wiesbaden GmbH, ein Teil von Springer Nature 2024 T. Eichstädt und S. Spieker, 52 Stunden Informatik, https://doi.org/10.1007/978-3-658-41838-0_28

28

238

28

Kapitel 28 · IT-Betrieb

Der IT-Betrieb umfasst die Prozesse und Dienste, die von der IT-Abteilung eines Unternehmens durchgeführt werden, um Hardware und Software in angemessener Weise zur Verfügung zu stellen. Administration und Support gestalten sich je nach Gröe des Unternehmens unterschiedlich. Ticketsysteme geben dem IT-Betrieb eine Struktur. Monitoring hilft dabei, Probleme frühzeitig zu erkennen und schnell zu beheben. Das Monitoring ist in der Regel automatisiert und ein Alerting informiert die zuständigen Mitarbeiter im Fehlerfall. Auerdem kann die Verfügbarkeit eines Systems gemessen werden. Diese gibt an, zu wie viel Prozent der Zeit das System verfügbar ist. Manchmal versprechen Anbieter eine bestimmte Verfügbarkeit in Form eines Service Level Agreement. Um im Problemfall zu helfen, wird oft eine Fernwartungssoftware verwendet, die es erlaubt, sich auf den PC eines anderen zu schalten. Der IT-Betrieb, manchmal auch mit dem englischen Begriff IT Operations bezeichnet, umfasst die Prozesse und Dienste, die von der IT-Abteilung eines Unternehmens durchgeführt werden, um Hardware und Software in angemessener Weise zur Verfügung zu stellen. Es sind also all die Dinge, die die hausinterne IT erledigt. Beispielsweise neue Notebooks an Mitarbeiter ausgeben oder Updates verteilen. Kleine Firmen besitzen meist keine eigene IT-Abteilung, sondern einen, der sich etwas besser auskennt, oder auch einen externen IT-Fachmann. In Firmen mit mehr als 10.000 Mitarbeitern gibt es meist große IT-Abteilungen. IT-Betrieb ist in der Mehrzahl der Unternehmen eine von der Entwicklung strikt getrennte Angelegenheit. Das bedeutet, es gibt dort keine Entwickler, die beispielsweise in Python Programme schreiben. Innerhalb dieser Abteilung werden Programme angeschafft und den Benutzern vorkonfiguriert zur Verfügung gestellt. Das kann ein installiertes Office sein, mit einem Mailprogramm, das bereits auf die firmeneigene E-Mail-Adresse konfiguriert ist. Das Ziel ist hier, dass der normale Mitarbeiter so wenig Aufwand mit seinem Rechner hat wie möglich. Anstatt von Entwicklung wird von der Administration (Verwaltung) gesprochen. Der ITAdministrator (auch Systemadministrator oder kurz „Sysadmin“ oder nur Admin genannt) plant, installiert, konfiguriert und pflegt die IT-Infrastruktur. Für ihre Arbeit benötigen die Administratoren umfassende Berechtigungen in den jeweiligen IT-Systemen. Deshalb wird bei der Installation von Betriebssystemen und auch Anwendungssoftware ein spezieller Nutzer angelegt, der Root User. (Ein konkretes Beispiel dafür findet sich im  Appendix: Installation von MySQL.) Dieser Root User, manchmal auch Superuser gennant, ist ein spezieller Nutzer mit sehr weit gefassten Rechten. Das Konto trägt oft den Namen „root“ oder „admin“. Die meisten Einschränkungen, wie zum Beispiel, dass man in einem Programm nur seine eigenen, aber nicht die Daten anderer Benutzer sehen kann, gelten für einen Root User nicht. Falls ein Anwender doch einmal ein Problem hat, so kann er sich an die interne IT wenden und diese unterstützt dann bei der Problemlösung. Falls die IT groß ist, gibt es dafür einen separaten Bereich, den Support (Unterstützung). Man kann dort anrufen oder eine E-Mail mit dem Problem dorthin schreiben. Manche Firmen arbeiten auch mit Ticketsystemen im Hintergrund, um eine feste Struktur zu haben. So können wichtige Dinge früher bearbeitet werden und es ist möglich, die Arbeit der IT besser zu überwachen.

239 Kapitel 28 · IT-Betrieb

1. 2. 3. 4. 5. 6. 7. 8.

28

Ein möglicher Ablauf könnte folgendermaßen aussehen: Benutzer ruft bei der Hotline an und sagt, dass seine Internetverbindung nicht funktioniert. Der Hotlinemitarbeiter sieht nach, ob es eine generelle Störung gibt. Die Überwachung meldet kein generelles Problem und der Hotlinemitarbeiter fragt konkreter nach: „Sind Sie mit dem WLAN verbunden?“ Benutzer: „Wie sehe ich das?“ Hotlinemitarbeiter: „Unten rechts gibt es ein WLAN-Symbol, sehen Sie das?“ Benutzer: „Ja, da bin ich verbunden mit dem Netzwerk Firmennetz.“ Hotlinemitarbeiter: „Darf ich mich kurz auf ihren Rechner aufschalten, um nach dem Problem zu sehen?“ Benutzer: „Natürlich, meine PC-Nummer ist PC1234.“

Danach wird der Hotlinemitarbeiter versuchen, das Problem selbst zu lösen, oder, wenn er das nicht schafft, ein Ticket aufmachen, sodass sich ein Experte das Problem ansehen und dem Benutzer helfen kann. Vielleicht hilft das Ticket aber auch, ein generelles Problem zu finden, dass bis dahin noch nicht bemerkt wurde. Ticketsysteme haben dabei die Aufgabe, etwas mehr Struktur in den Betrieb innerhalb der IT zu bringen. Diese Systeme bieten eine Möglichkeit, die Bearbeitung und Bearbeitungsdauer und -qualität zu überwachen. So können Kennzahlen ermittelt werden, ob sich das Aufkommen von Tickets verändert, wenn Dinge innerhalb des Betriebs verändert werden. Oft ist die Menge an Anfragen nach einem großen Betriebssystem-Update größer, weil die ein oder andere Software danach nicht mehr genauso funktioniert wie vorher oder beim Update der Desktop neu sortiert wurde. Aber kommen wir zurück zu dem kleinen Dialog, der in großen Firmen gar nicht mal so selten vorkommt. Er hat zwei Fragen aufgeworfen: 1. Wie sieht ein Mitarbeiter, dass es gerade generelle Probleme gibt? 2. Wie kann sich jemand mit einem anderen Rechner verbinden? Die Antwort auf die erste Frage lautet im allgemeinen Monitoring (Überwachung). Damit bezeichnet man die Überwachung verschiedener Vorgänge. So ein Vorgang könnte der Verbindungsaufbau mit dem Internet sein. Meistens wird dazu spezielle Software eingesetzt. Übung Einen einfachen Test, wie gut deine Internetverbindung gerade funktioniert, kannst du auch selbst machen. Öffne dazu eine Kommandozeile oder PowerShell und gib folgenden Befehl ein: ping -t 7 www.google.de und warte etwa 2 min. Drücke dann STRG+C und sieh dir an, was ausgegeben wird.

Eine mögliche Ausgabe könnte dann wie in . Abb. 28.1 aussehen. In der Abbildung sind IPv6-Adressen zu sehen, es können aber auch IPv4-Adressen wie 172.217.18.99 sein.

240

Kapitel 28 · IT-Betrieb

. Abb. 28.1 Einfaches Internetmonitoring mittels ping

28

Etwa jede Sekunde wird ein Paket gesendet und die Zeit gemessen, die es dauert, bis die Gegenstelle darauf antwortet. Wenn über eine längere Zeit kein einziges Paket verloren geht, dann werden 0 % Verlust angegeben und die Internetleitung ist zumindest in dem Zeitrahmen stabil. Man kann auch gut ablesen, wie stark die Reaktionszeit schwankt; vor allem bei einer WLAN-Verbindung kann das Maximum deutlich höher sein als hier in dem Beispiel. Gelegentliche Verluste sind bei WLAN auch deutlich häufiger. Das, was man zu Hause mit kleinen Bordmitteln herausfinden kann, wird nach demselben Prinzip auch bei der Überwachung von Netzwerken gemacht. Aber natürlich beobachten die Mitarbeiter nicht die ganze Zeit die Ausgaben von Bildschirmen, sondern sie haben diese Vorgänge automatisiert. Es gibt also Programme, die die Funktionsfähigkeit überwachen und im Fehlerfall die zuständigen Mitarbeiter benachrichtigen. Diese Funktionalität wird in der IT als Alerting (Alarmierung) bezeichnet. Diese Alarmierung kann durch E-Mails, Tickets oder bei wichtigen Ereignissen auch als Nachricht auf das Handy erfolgen. Wenn ein Ereignis, wie der Ausfall des Internets oder ein beliebiger anderer überwachter Vorgang, gemeldet wird, so wird von einem Alert (Alarm) gesprochen. Im Fall eines Alarms versuchen die Mitarbeiter, den Fehler zu lokalisieren und zu beheben, ohne dass ihn jemand melden muss. Dies spart Zeit in der Behebung des Fehlers. Die Ansichten, die sich die Administratoren angucken können, sehen dabei oft sehr hübsch aus und geben auch Informationen über den Betrieb der zurückliegenden Stunden. Damit lässt sich ablesen, ob der Fehler plötzlich aufgetreten ist oder sich langsam entwickelt hat. Bei einem sich langsam entwickelnden Problem könnte es sich beispielsweise um einen zu heiß gewordenen Router handeln. Bei einem plötzlich aufgetretenen Problem ist vielleicht nur ein Kabel herausgezogen worden. Ein Beispiel für eine Überwachung mittels der Programme Prometheus und Grafana ist in . Abb. 28.2 zu sehen. Durch die Automatisierung ist es möglich, die Verfügbarkeit des Systems zu messen. Die Verfügbarkeit gibt an, zu wie viel Prozent der Zeit das System verfügbar ist. Um das zu berechnen, gibt es eine einfache Formel:

241 Kapitel 28 · IT-Betrieb

28

. Abb. 28.2 Screenshot einer Überwachungslösung mittels Grafana

Verf¨ugbarkeit =

Gesamtzeit- Gesamtausfallzeit Gesamtzeit

Dabei gibt die Gesamtzeit den Zeitraum an, in der das System beobachtet wurde, und die Gesamtausfallzeit die Zeit, in der das System nicht funktioniert hat, also einen Ausfall hatte. Übung Berechne selbst, wie hoch die Verfügbarkeit ist, wenn dein Internetzugang 24 h am Tag und 365 Tage im Jahr verfügbar sein sollte, es aber ein Mal pro Monat für ca. 7,3 h ausfällt. Vielleicht ist bei dir das Internet verlässlicher oder weniger verlässlich, berechne es auch für dich konkret, wie hoch die Verfügbarkeit deines Internets ist. Falls du nur alle zwei Monate eine kurze Ausfallzeit von einer Stunde beobachten kannst, setze diese Werte in die Formel ein.

Um die Formel anzuwenden, werden die Zeiten berechnet: Gesamtzeit : 24 h × 365 = 8760 h Gesamtausfallzeit : 12 × 7,3 h = 87,6 h

Kapitel 28 · IT-Betrieb

242

In die Formel eingesetzt, ergibt sich dann für die Verfügbarkeit: 8760 h − 87,6 h = 99 % 8670 h Das System ist dann also zu 99 % innerhalb des Jahres verfügbar. Anbieter versprechen manchmal eine bestimmte Verfügbarkeit, mit der sie ihre Dienstleistung zur Verfügung stellen. Dies wird dann innerhalb eines Vertrags oft als Service Level Agreement (Dienstleistungsgütevereinbarung), kurz SLA, genannt. Um einen Eindruck zu bekommen, wie viele Stunden im Jahr ein System mit einer gegebenen Verfügbarkeit ausfallen darf, sind in . Tab. 28.1 gängige Verfügbarkeiten dargestellt. Bei einer Verfügbarkeit oberhalb von 99,99 % spricht man von hochverfügbaren Systemen. Der zweite Aspekt des Dialogs vom Anfang der Stunde ist noch offen, nämlich wie sich jemand auf den Rechner eines anderen schalten kann. Für diese Art der Unterstützung gibt es spezielle Software, die sogenannte Fernwartungssoftware. Eine sehr bekannte kommerzielle Lösung heißt „TeamViewer“. Diese ist auch im privaten Umfeld sehr hilfreich, um beispielsweise einem Verwandten zu helfen. Die Software ist im privaten Umfeld kostenfrei zu verwenden. Als Open-SourceAlternative bietet sich „UltraVNC“ an, die etwas komplizierter zu nutzen, dafür aber auch kommerziell kostenfrei einzusetzen ist. Dabei gibt es zwei Komponenten, den Server und den Clienten. Es werden also zwei Programme benötigt.

28

>

7 https://www.teamviewer.com/de/ 7 https://www.heise.de/download/product/ultravnc-38367 Aufgrund der Einfachheit von TeamViewer werden wir uns diesen genauer ansehen. . Abb. 28.3 zeigt das Fenster, wenn das Programm TeamViewer geöffnet wird. Um jemand anderen auf dem eigenen Rechner zuzulassen, muss die eigene ID dem anderen mitgeteilt werden. Dieser trägt die ID in das rechte Feld als Partner-ID ein und klickt auf Verbinden. Wenn eine Verbindung hergestellt wird, so wird nach dem Passwort gefragt, das normalerweise aus Zahlen und Buchstaben besteht und sechs Zeichen lang ist. Das eigene Passwort steht in der Mitte und erlaubt den Zugriff. Die Zugangsdaten sollten nicht über unsichere Wege wie E-Mail zusammen versendet werden, um nicht Unbefugten den Zugriff zu ermöglichen.

. Tab. 28.1 Verfügbarkeiten dargestellt in Ausfallzeit Verfügbarkeit (in %)

Maximale Ausfallzeit pro Jahr (in Stunden)

99

87,6

99,5

43,8

99,9

8,76

99,99

0,876

243 Kapitel 28 · IT-Betrieb

28

. Abb. 28.3 TeamViewer

Bei der TeamViewer-Lösung kann die Person, die sich verbindet, zusehen, was auf dem Desktop des verbundenen PCs passiert. Oder es kann auch die Steuerung angefordert werden, um Maus und Tastatur selbst zu übernehmen. So können erfahrene Nutzer innerhalb der Familie oder im Bekanntenkreis auch aus der Ferne Hilfe leisten und müssen nicht extra vorbeikommen, um zum Beispiel den Drucker neu einzurichten. Übung Etwas Ähnliches ist auch mit Skype oder Teams möglich. Verbinde dich doch mal mittels TeamViewer, Skype oder Microsoft Teams und bearbeite mit jemandem gemeinsam ein Bild in Paint.

Gerade seit der Coronakrise ist es ganz entscheidend geworden, mit anderen zusammen am Computer zu arbeiten, ohne im gleichen Raum sitzen zu müssen. Dies gilt für den Support, aber natürlich auch für das gemeinsame Bearbeiten von Aufgaben. So kann man auch über das Internet gemeinsam an Problemen arbeiten. ? Was bedeutet IT-Betrieb? Was sind Monitoring und Alerting? Wie berechnet sich die Verfügbarkeit? Was bedeutet es, wenn in einem SLA von einem hochverfügbaren System gesprochen wird? Wie kann sich jemand auf den Rechner eines anderen schalten?

245

Agile Produktentwicklung

© Springer Fachmedien Wiesbaden GmbH, ein Teil von Springer Nature 2024 T. Eichstädt und S. Spieker, 52 Stunden Informatik, https://doi.org/10.1007/978-3-658-41838-0_29

29

246

Kapitel 29 · Agile Produktentwicklung

Kanban ist ein Beispiel für eine agile Methode. Ursprünglich war Kanban zur effizienten Steuerung von Produktionsprozessen gedacht. Agilität bezeichnet das Vorgehen eines Teams, um sich verschiedenen Situationen anzupassen. Die agilen Werte sind im agilen Manifest beschrieben. Es gibt viele Herausforderungen in traditionellen Softwareentwicklungsprojekten, insbesondere ist es sehr schwierig, Vorabpläne einzuhalten. Statt starrer Pläne bietet sich ein iteratives Vorgehen an, das dem PDCAZyklus folgt. Scrum ist ein solches Vorgehen. Scrum folgt einem fixen Regelwerk. Die Iterationen heien Sprints. Die Rollen sind Product Owner, Entwicklungsteam und Scrum Master. Es gibt die Artefakte Product Backlog, Sprint Backlog und Product Increment. Die Ereignisse heien Sprint Planning, Daily Scrum, Sprint Review und Sprint-Retrospektive. Um eine grobe Einordnung zu geben, wann welcher agile Ansatz sinnvoll ist, kann die Stacey-Matrix helfen. Bereits in  Kap. 16 Software ist der Begriff der agilen Softwareentwicklung gefallen. In dieser Stunde wird vertieft, was agil bedeutet. Genau genommen werden die folgenden Aufgaben in dieser Stunde erledigt: 5 Lerne Begriff Kanban 5 Lese und verstehe das Agile Manifest 5 Verstehe PDCA-Zyklus 5 Übe PDCA-Zyklus 5 Lerne Begriff Scrum 5 Verstehe Stacey-Matrix Wir beginnen dazu direkt mit einer Übung.

29

Übung Für diese Übung benötigst du eine Tafel und Kreide, 6 Post-its und einen Stift. Genauso gut wie eine Tafel ist ein Whiteboard. Zur Not geht es auch mit einem Blatt Papier, das du an einer Wand befestigst. Male auf die Tafel 3 Spalten mit den Beschriftungen „To Do“ (zu erledigen), „In Arbeit“ und „Erledigt“. Schreibe auf die Post-its die 6 Aufgaben dieser Stunde und klebe alle Post-its in die erste Spalte. Du hast soeben dein erstes Kanban-Board erstellt und befüllt! Es wird dich durch diese Stunde begleiten. Immer wenn eine Aufgabe begonnen wird, wandert das entsprechende Post-it in die Spalte „In Arbeit“. Aktuell sind wir dabei, zu lernen, was Kanban bedeutet. Das Board sollte nun aussehen, wie in . Abb. 29.1. Sobald eine Aufgabe abgeschlossen ist, klebst du das Post-it in die Spalte „Erledigt“. Ganz einfach. Kontrolliere in regelmäßigen Zeitabständen, ob das Board noch den aktuellen Zustand deiner Aufgaben widerspiegelt. Sagen wir spätestens alle 10 min.

247 Kapitel 29 · Agile Produktentwicklung

29

. Abb. 29.1 Kanban-Board

Kanban (japanisch Karte oder Tafel) ist eine Methode, die im Unternehmen Toyota zur Steuerung von Produktionsprozessen entwickelt wurde. Die Prinzipien des Systems sind denkbar einfach. Arbeitsabläufe werden visualisiert. Parallele Arbeitsabläufe werden limitiert. Dadurch wird die Effizienz gesteigert. Die Reihenfolge beziehungsweise Priorität von Arbeitsaufgaben kann durch die Sortierung in den Spalten repräsentiert werden. So. Die erste Aufgabe auf dem Kanban-Board ist hiermit bereits erledigt. Schön und gut, aber was hat das mit Informatik zu tun? Nun, in der Informatik haben wir es oft mit komplexen und untereinander abhängigen Aufgaben zu tun. Erschwerend kommt dazu, dass viele Probleme und der Fortschritt bei der Bearbeitung nach außen kaum sichtbar werden. Die Praxis hat gezeigt, dass in diesem Umfeld eine flexible und visuelle Verfolgung der Arbeitsabläufe eine große Hilfe darstellt. Mehr noch, einige sehr namhafte Softwareentwickler forderten im Jahr 2001 eine Abkehr vom gängigen Vorgehen in Projekten hin zu agilen Ansätzen. Zu diesem Zweck formulierten sie das Agile Manifest. Kanban ist ein Beispiel für eine solche agile Methode. Agilität selbst ist nicht durch Regeln oder ein bestimmtes Vorgehen festgelegt. Vielmehr geht es darum, agile Werte zu verinnerlichen und das Vorgehen eines Teams gemäß dieser Werte und der jeweiligen Situation anzupassen.

248

Kapitel 29 · Agile Produktentwicklung

Übung Rufe die Webseite 7 https://agilemanifesto.org/iso/de/manifesto.html auf und lies das Agile Manifest. Kannst du dir unter den vier genannten Werten etwas vorstellen?

29

Um die Forderung nach Agilität besser zu verstehen, machen wir uns bewusst, wie IT-Projekte häufig ablaufen. Wir erinnern uns dazu an den Softwarelebenszyklus, (. Abb. 16.2) aus  Kap. 16 Software. In traditionellen Softwareentwicklungsprojekten werden die Phasen Analyse, Design, Implementierung, Test und Betrieb nacheinander durchlaufen. Der gesamte Ablauf und die Zielerreichung sollen möglichst vorab geplant werden. Dann wird ein Projektleiter eingesetzt, der die Einhaltung des Plans kontrolliert. In der Realität sind aber Schätzungen oft schwierig. Es treten immer unvorhersehbare Ereignisse auf und Kosten, Zeitplan oder Ergebnisse müssen angepasst werden. Dazu sind mindestens noch Anforderungen, Versionen (siehe  Kap. 30 Versionsverwaltung) und Qualität (siehe  Kap. 34 Qualitätsmanagement) fortlaufend im Auge zu behalten. Außerdem sind noch rechtliche Aspekte zu beachten (siehe zum Beispiel  Kap. 13 Datenschutz und  Kap. 32 Softwarelizenzierung). Nicht zuletzt gibt es viele menschliche Faktoren, die in Planungen gänzlich fehlen. Alles in allem ist dadurch eine seriöse Vorabplanung im Detail gar nicht möglich. Der Versuch, komplexe Projekte dennoch klassisch zu steuern, führt oft zu viel unnützer Dokumentation, die am Bedürfnis der Nutzer vorbeigeht und Projekte schlussendlich scheitern lässt. Bei agilen Ansätzen wird stattdessen die detaillierte Planung nur mit kurzem Zeithorizont durchgeführt. Das heißt umgekehrt, dass von vornherein viele kleine Zwischenschritte vorgesehen sind. Jeder Zwischenschritt stellt eine sogenannte Iteration dar. Eine Iteration ist der wiederholte Ablauf ähnlicher Tätigkeiten. Bei diesem iterativen Vorgehen wird meist der Plan-DoCheck-Act-Zyklus (Plane-Tue-Kontrolliere-Handle-Zyklus), kurz PDCA-Zyklus, verwendet (siehe . Abb. 29.2). Er beginnt mit einer Planung, dann folgt die Durchführung. Nach der Durchführung findet eine Kontrolle statt von dem, was erreicht wurde. Als Letztes folgt eine Handlung, das heißt eine Anpassung des Vorgehens. Daraufhin startet der Zyklus von vorne mit der nächsten Planung. Wir probieren das einfach einmal in der Praxis. Bitte die Aktualisierung des Kanban-Boards nicht vergessen! Übung Die folgende Übung besteht in dem Bau eines Streichholzturms. Ziel ist es, möglichst viele Streichhölzer auf einem Flaschenhals zu platzieren. (Falls du keine Streichhölzer zur Hand hast, kannst du auch Zahnstocher verwenden.) Suche zunächst einen geeigneten Tisch und stelle eine Flasche darauf. Alle Mitspieler legen abwechselnd ein Streichholz auf den Flaschenhals. Innerhalb nur einer Minute und ohne weitere Hilfsmittel sollen möglichst viele Streichhölzer platziert werden, ohne dass diese herunterfallen. Es zählen nur die Streichhölzer, die am Ende der Minute auf dem Flaschenhals liegen.

249 Kapitel 29 · Agile Produktentwicklung

29

. Abb. 29.2 Plan-Do-Check-Act-Zyklus

Wir beginnen aber nicht einfach planlos mit dem Vorhaben. Wir versuchen auch nicht, vorab einen möglichst detaillierten Plan zu formulieren. Stattdessen halten wir uns an den PDCA-Zyklus. Plan: Fasse einen Entschluss, wie du vorgehen wirst. Schätze, mit welchem Ergebnis du bei dem geplanten Vorgehen rechnest. Notiere deine Schätzung. Do: Stelle eine Stoppuhr und versuche dann genau eine Minute lang, möglichst viele Streichhölzer zu platzieren. Check: Welches Ergebnis hast du erreicht? Notiere das tatsächliche Ergebnis neben der Schätzung. Act: Die Versuchung ist groß, direkt mit dem nächsten Durchlauf zu beginnen. Stattdessen nimm dir Zeit zu überlegen, was gut funktioniert hat und was nicht. Was muss geändert werden, um ein besseres Ergebnis zu erzielen? Dieses Vorgehen wiederholen wir dreimal. Betrachte die Ergebnisse der drei Iterationen. Kontrolliere auch, wie sich die Genauigkeit der Schätzungen im Lauf der Iterationen entwickelt hat.

Der PDCA-Zyklus ist ein sehr allgemeines Vorgehensmuster für iteratives Vorgehen. Insbesondere bei festen Teams, die über einen längeren Zeitraum an einem Produkt arbeiten, ist ein iteratives Vorgehen zum wiederholten Planen und Verfolgen von Ergebnissen sinnvoll. Ganz besonders wichtig ist für solche Teams auch das Nachdenken über mögliche Verbesserungen. Menschen verfallen sehr schnell in Gewohnheiten und denken nicht mehr über alternative Handlungswege oder Begleitumstände nach. Bezogen auf die letzte Übung könnte das bedeuten, sich zu fragen:

250

Kapitel 29 · Agile Produktentwicklung

5 Wie geeignet war die Stapeltechnik? Wenn nicht, versuche einen anderen Ansatz. 5 Wie hoch waren Geschwindigkeit und Risikofreude beim Stapeln? Möglicherweise ist zu Beginn wichtiger, schnell vorzugehen und nach und nach vorsichtiger zu werden. 5 Wie wurde mit der Zeit gehaushaltet? Vielleicht hilft es, wenn eine Person die Uhr im Blick behält und alle abgelaufenen 15 Sekunden ansagt. 5 Kann die Interaktion der beteiligten Personen verbessert werden? Ändere zum Beispiel etwas an der Position der Personen oder der Kommunikation. 5 Stand der Tisch gerade und stabil? Wenn nicht, sorge für einen festen Stand. 5 War die Arbeitshöhe geeignet? Standen Gegenstände im Weg? War das Licht gut? Sorge für ideale Randbedingungen. 5 Gibt es eine geeignetere Flasche mit breiterem Hals? Tausche die Flasche. (In der Beschreibung der Übung stand keine Einschränkung zu der Art der Flasche.)

29

Diese Verbesserungen haben wiederum nicht direkt etwas mit Informatik zu tun. Allerdings treten gerade in der Entwicklung und im Betrieb von Software immer wieder unterschiedlichste Probleme auf, die nur schwer zu greifen sind. Es ist daher unwahrscheinlich wichtig, sich immer wieder mit dem eigenen Vorgehen auseinanderzusetzen. Kanban, die erste agile Methode, die wir kennengelernt haben, wird meist um Praktiken zur kontinuierlichen Verbesserung erweitert. Üblich ist ein tägliches Statusmeeting, also ein kurzer Termin, in dem Probleme besprochen werden. Eine Planung findet bei Kanban nicht oder zumindest nicht regelmäßig statt. Wer eine agile Methodik sucht, die den vollen PDCA-Zyklus beinhaltet, wählt in der Regel Scrum. Der Begriff Scrum (Gedränge) kommt ursprünglich aus dem Rugbysport und steht für ein erfolgreiches selbstorganisiertes Team. Bei Scrum handelt es sich um einen iterativen Ansatz, der eingesetzt wird, um ein (Software-) Produkt zu entwickeln. Die einzelnen Iterationen werden mit Sprint bezeichnet und dauern in der Regel 1–4 Wochen. Innerhalb jedes Sprints gibt es klar definierte Rollen, Artefakte und Ereignisse. Rollen: 5 Product Owner: Der Product Owner kennt die Produktvision und die Nutzer des zu erstellenden Produkts. Er ist dafür verantwortlich, Ziele vorzugeben und das Product Backlog zu pflegen und zu priorisieren. 5 Entwicklungsteam: Das Scrum-Entwicklungsteam enthält idealerweise alle Fähigkeiten und Mittel, die zur Entwicklung des Produkts notwendig sind. Es ist zuständig für die Schätzung und Detaillierung des Product Backlog und die eigenständige Bearbeitung des Sprint Backlog. Als Faustregel sollte ein ScrumTeam aus 3–9 Personen bestehen. 5 Scrum Master: Der Scrum Master hat zum Ziel, dem Team zu möglichst großer Effizienz zu verhelfen. Er hilft dem Team und führt wenn nötig, ohne selbst im Vordergrund zu stehen. Artefakte: 5 Product Backlog: Das Product Backlog ist eine geordnete Liste der Anforderungen des zu entwickelnden Produkts. Aufgrund des iterativen Vorgehens muss das

251 Kapitel 29 · Agile Produktentwicklung

29

Product Backlog nicht vollständig sein. Wichtig ist, dass die Einträge priorisiert sind, das heißt, es muss klar sein, welche Anforderung als nächstes umgesetzt werden sollen, und die Einträge mit hoher Priorität müssen ausreichend klar formuliert sein. 5 Sprint Backlog: Der Sprint Backlog spiegelt die im aktuellen Sprint zu bearbeitenden Anforderungen wider. 5 Product Increment: Das Product Increment stellt die am Ende eines Sprints umgesetzten Anforderungen aus dem Sprint Backlog dar. Ereignisse: 5 Sprint Planning: Im Sprint Planning wird geklärt, welche Einträge aus dem Product Backlog in den neuen Sprint Backlog übernommen werden und wie diese umgesetzt werden sollen. Die im Sprint Planning festgelegten Aufgaben werden in ein Scrum-Board übernommen. 5 Daily Scrum: Zu Beginn jeden Arbeitstags trifft sich das Entwicklungsteam zu einem kurzen, maximal 15-minütigen Termin, in dem aktuelle Anliegen besprochen werden. Das Daily Scrum findet am Scrum-Board statt. 5 Sprint Review: Zum Ende eines Sprints wird das Product Increment vorgestellt. Der Product Owner begutachtet die Umsetzung der Anforderungen. 5 Sprint-Retrospektive: Zum Abschluss eines Sprints findet in der Retrospektive eine Betrachtung des Vorgehens statt. Ziel ist es, Verbesserungen zu finden und durch Anpassungen die Effizienz in den folgenden Sprints zu erhöhen. Woran erinnern dich die vier Ereignisse? Richtig, im Wesentlichen handelt es sich um dasselbe Vorgehen wie beim PDCA-Zyklus. Scrum und Kanban ähneln sich in der Visualisierung der Arbeitsabläufe anhand einer Tafel/eines Boards. Die Boards können selbstverständlich auch digital erstellt und bearbeitet werden. Für Teams, die an unterschiedlichen Standorten oder im Homeoffice arbeiten, ist das oft eine gute Möglichkeit, sich auszutauschen. >

Der Platzhirsch für Softwarelösungen zum agilen Arbeiten Atlassian bietet eine kostenlose Trial-Version an: 7 https://www.atlassian.com/de/software/jira/try Zur Verwaltung von Boards ist Trello eine kostenfreie Alternative. Trello zielt ebenso auf Firmenkunden wie auch auf private Nutzer ab. Trello eignet sich für Kanban-Boards ebenso wie für eine private Aufgabenliste: 7 https://trello.com/

Scrum und Kanban sind nicht die einzigen, aber die beliebtesten agilen Methoden. Scrum beinhaltet ein striktes Vorgehen mit klar definierten Begriffen. Es ist damit deutlich umfangreicher als Kanban. In der Praxis gibt es auch Mischformen der beiden Ansätze oder auch Mischformen zwischen einem agilen Ansatz und dem klassischen Projektansatz. Wer noch nicht mit agilen Methoden in Berührung gekommen ist, dem mögen die Begriffe und die Vorgehensbeschreibung abstrakt erscheinen. Aber: Die agilen Methoden sind mittlerweile weit über die IT hinaus zur gängigen Arbeitsweise geworden. Millionen Menschen arbeiten mittlerweile agil. Viele Unternehmen organisieren sich heute komplett agil, mit Ansätzen, die weit

252

Kapitel 29 · Agile Produktentwicklung

über Scrum und Kanban hinausgehen. Es ist es also wert, sich zumindest mit den Grundlagen von Agilität zu beschäftigen. >

Selbst in der Unterrichtsgestaltung werden heute teilweise agile Methoden eingesetzt: 7 https://eduscrum.org/eduscrum-deutschsprachig/

Trotz der enormen Popularität sind die agilen Ansätze nicht jedermanns Sache. Mit dem konsequenten Einsatz agiler Methoden geht die Abschaffung klarer Hierarchien und die Eigenverantwortung des Entwicklungsteams einher. Das Team wird nicht mehr klassisch gesteuert, sondern steuert sich weitgehend selbst. Agilität hängt auch mit Teamstrukturen zusammen. Viele Organisationen sind in funktionalen Abteilungen strukturiert, die gelegentlich zusammen arbeiten, wenn es ein Projekt erfordert. Um einen höheren Grad an Agilität zu erreichen, ist es im Gegensatz dazu erforderlich, möglichst alle notwendigen Kompetenzen, die für die Entwicklung erforderlich sind, im eigenverantwortlichen Produktteam zu vereinen. Ein Beispiel, bei der die agilen Methoden weniger gut funktionieren, ist hoch sicherheitskritische Software, bei der ein hoher Grad an Planung und Kontrolle nötig oder sogar gesetzlich vorgeschrieben ist. Mit den entsprechenden Randbedingungen sind agile Methoden jedoch heute das gängige Mittel der Wahl. Zur groben Einordnung, wann welcher agile Ansatz sinnvoll ist, kann die Stacey-Matrix in . Abb. 29.3 dienen.

29

. Abb. 29.3 Stacey-Matrix

253 Kapitel 29 · Agile Produktentwicklung

29

Für einfache und komplizierte Arbeitsfelder empfiehlt sich meist Kanban. Das trifft etwa auf Softwareprodukte zu, die im Betrieb sind und nicht oder kaum weiterentwickelt werden. Für komplexe Arbeitsfelder wie die Neuentwicklung eines Softwareprodukts empfiehlt sich vornehmlich Scrum. In chaotischen Arbeitsfeldern ist in der Regel keiner der beiden Ansätze erfolgreich. Dann sollte durch Workshops ein einigermaßen klares Produktverständnis hergestellt werden, bevor die Entwicklung mit Scrum startet. Geschafft. Nun haben wir auch die Stacey-Matrix verstanden und der letzte Post-it kann in die Erledigt-Spalte gehängt werden. ? Was ist das Agile Manifest? Scrum basiert im Wesentlichen auf dem PDCA-Zyklus – wofür steht PDCA? Welche Rollen, Artefakte und Ereignisse gibt es im ScrumProzess? Wie unterscheiden sich Kanban und Scrum? Wann empfiehlt sich der Einsatz von Kanban bzw. Scrum?

255

Versionsverwaltung

© Springer Fachmedien Wiesbaden GmbH, ein Teil von Springer Nature 2024 T. Eichstädt und S. Spieker, 52 Stunden Informatik, https://doi.org/10.1007/978-3-658-41838-0_30

30

256

Kapitel 30 · Versionsverwaltung

Es gibt viele gute Gründe, warum die Verwaltung verschiedener Versionen wichtig und nützlich ist. Das gilt besonders für Quellcode. Versionsverwaltung existiert bereits sehr lange. Eine lokale Versionsverwaltung sorgt für die Versionierung innerhalb einer einzelnen Datei. Die zentrale Versionsverwaltung ist als Client-Server-System aufgebaut. Die Ablage erfolgt innerhalb eines Repository. Eine verteilte Versionsverwaltung speichert das Repository zusätzlich auch bei jedem Client. Die am weitesten verbreitete Versionsverwaltung ist heute Git. Es gibt kommerzielle Plattformen, die um Git herum ein ansprechendes Webinterface und zusätzliche Funktionalitäten anbieten. Zu diesem Buch existiert ein GitHub Repository. Ist ein Repository lokal geklont, können Änderungen vorgenommen und committed werden. Git bietet zahlreiche weitere Befehle, die mit der Git Bash ausgeführt werden können. Das Branching ermöglicht es, Änderungen unabhängig vom Hauptzweig vorzunehmen. Diese Stunde ist einem wichtigen, aber oft vernachlässigten Teil der Softwareentwicklung gewidmet – der Verwaltung verschiedener Versionen von Quellcode. Generell ist es auch eine gute Idee, Versionen von anderen Dingen, wie Abschlussarbeiten, vorzuhalten. Bei Word kennen es bestimmt viele: Die Datei mit dem aktuellen Datum neben die ursprüngliche legen, um Änderungen nachvollziehen zu können. Übung Wozu wird eine Versionsverwaltung gebraucht? Was kann eine Versionsverwaltung und welche gibt es? Seit wann gibt es derartige Softwarelösungen?

30

Mögliche Antworten für den Sinn einer Versionsverwaltung, im Folgenden auch Wunschliste genannt: 1. Letzte Änderung rückgängig machen 2. Auf einen zuvor gespeicherten Stand zurückgehen 3. Mit mehreren Leuten am selben Projekt arbeiten 4. Versehentlich gelöschte Daten wiederherstellen 5. Feststellen, wer wann und warum eine Änderung gemacht hat Auswahl an verbreiteten Versionsverwaltungen [mit Erscheinungsjahr]: 5 BitKeeper [2000] 5 CVS (Concurrent Versions System) [1990] 5 Git [2005] 5 Mercurial [2005] 5 SourceSafe [1994] 5 Subversion [2000] 5 Team Foundation Server [2005] 5 Wikipedia [2001]

257 Kapitel 30 · Versionsverwaltung

30

Wie oben erwähnt, gibt es viele gute Gründe, eine Versionsverwaltung zu verwenden. In Unix (Betriebssystem für Großrechner) war schon früh eine sehr rudimentäre Versionsverwaltung eingebaut. Bei jedem Speichern wurde eine Kopie neben die Datei gelegt und an die Endung noch eine zusätzliche Versionsnummer angehängt. Eine Datei Textdatei.txt wurde also als Textdatei.txt.1 abgespeichert. Nach der erneuten Bearbeitung lag zusätzlich noch eine Datei Textdatei.txt.2 im Verzeichnis. Beim Öffnen der Datei ohne Angabe der Versionsnummer wurde immer die höchste Nummer automatisch ausgewählt. Dieses rudimentäre System konnte jedoch nur die Punkte 1 und 2 der Wunschliste erfüllen. Etwas später, im Jahr 1990, wurde die erste Versionsverwaltung mit einer größeren Verbreitung veröffentlicht: CVS (Concurrent Versions System). In dieser Zeit wurde es nötig, mit mehreren Leuten an einem Projekt zu arbeiten, was Punkt 3 auf unserer Wunschliste ist. Aus diesem Grund ist auch der Name Concurrent (gleichzeitig) das wichtigste Merkmal. Es deckt auch die anderen Wünsche ab und wird zum Teil noch heute verwendet, obwohl es einige Einschränkungen im Vergleich zu neueren Systemen gibt. Generell werden Versionsverwaltungen in drei Kategorien eingeordnet: 1. Die lokale Versionsverwaltung bezeichnet dabei oft nur die Versionierung innerhalb einer einzelnen Datei, z. B. eines Word-Dokuments. 2. Die zentrale Versionsverwaltung ist durch ein Client-Server-System (siehe  Kap. 8 Netzwerke und Protokolle) aufgebaut. Der Server hält die Informationen über die verschiedenen Versionen vor und der Client hat üblicherweise nur einen aktuellen Stand. Die Versionsgeschichte liegt normalerweise nur auf dem Server in dem sogenannten Repository vor. Der bekannteste Vertreter ist das System Subversion. Bei Subversion hat das Repository eine Versionsnummer, die sich bei jeder Änderung um eins erhöht. So können die Clients sehr einfach am Server nachfragen, was sich geändert hat, indem sie ihre lokale Versionsnummer an den Server schicken. 3. Bei der verteilten Versionsverwaltung ist das Repository auch bei jedem Client gespeichert, inklusive der gesamten Historie. Der große Vorteil ist, dass keine Verbindung zu einem Server benötigt wird, um mit dem Repository zu arbeiten. Bei einem verteilten System ist es nicht mehr möglich, fortlaufende Versionsnummern zu vergeben, da die Bearbeitung parallel erfolgen kann. Die Seiten bei der Wikipedia haben auch Versionsnummern. Darüber hinaus gibt es auch eine Versionsnummer der gesamten Wikipedia. Jedes Mal, wenn sich eine Seite ändert, wird die Versionsnummer um eins hochgezählt. Bei Subversion funktioniert es ganz ähnlich, jedoch wird die Nummer auch bei Änderungen der Verzweigung hochgezählt. Was Verzweigungen sind, werden wir uns im späteren Verlauf bei Git ansehen. Die am weitesten verbreitete Versionsverwaltung ist heute Git. Sie wurde von Linus Torvalds entwickelt, weil er der Meinung war, dass es keine vernünftige Lösung zur Verwaltung des Linux Kernel Source Codes geben würde (mehr zur Linux-Entwicklung in  Kap. 31 Open Source).

258

Kapitel 30 · Versionsverwaltung

Übung Git ist Open Source und völlig kostenfrei zu verwenden. Es gibt aber auch bekannte kommerzielle Plattformen, die um Git herum ein ansprechendes Webinterface und einige zusätzliche Funktionalitäten anbieten. Kennst du Anbieter solcher Lösungen? Wenn nicht, benutze eine Suchmaschine, um nach Git-Anbietern zu suchen.

Mögliche Antworten: 1. GitHub (siehe auch: 7 https://github.com/StefanSpieker/52Stunden) 2. GitLab 3. BitBucket Wir werden uns nun vor allem mit Git beschäftigen, da es die am weitesten verbreitete und mächtigste Versionsverwaltung ist. Übung Am besten installierst du dir ein Git auf deinem PC. Eine Anleitung dazu findest du im Appendix: Installation von Git. Du sollst nun das Repository dieses Buches auf deinen PC herunterladen. Das kannst du mittels der Git Bash erreichen. Öffne diese nun über „Programme -> Git -> Git Bash“. Um das GitHub Repository auf deinen PC herunterzuladen, führe folgenden Befehl aus:

30

git clone 7 https://github.com/StefanSpieker/52Stunden.git Die Zeile kannst du mit Enter bestätigen.

Dadurch wird das gesamte Repository auf deine Festplatte heruntergeladen. Unter Windows liegt das Verzeichnis dann unter C:\Users\\52Stunden. Welche Befehle bietet Git nun und was bewirken diese? 5 git init : Legt ein neues Git Repository im Verzeichnis Name an. 5 git clone : Lädt ein existierendes Repository von URL herunter. 5 git status : Gibt den aktuellen Repository-Status aus. 5 git log : Zeigt die Commit-Nachrichten an. 5 git checkout : Wechselt den Branch, auf dem gearbeitet wird. 5 git add : Fügt Dateien in den Staging-Bereich hinzu. 5 git commit -m „“ : Fügt den Staging-Bereich zum Repository hinzu mit dem Kommentar „Commit Message“. 5 git config : Editiert die Konfiguration (siehe auch Installation von Git).

259 Kapitel 30 · Versionsverwaltung

30

Übung Nutze die Liste der oben aufgeführten Befehle, um dein erstes eigenes Repository anzulegen: 1. 2. 3. 4. 5. 6. 7.

Lege ein neues Repository mit dem Namen „GitLernen“ an. Wechsle in das Verzeichnis (mit cd GitLernen) und gib den Status des Repositorys aus. Lege eine Datei readme.md an (mit touch readme.md) und füge diese Datei in den Staging-Bereich hinzu. Anschließend bringe den Staging-Bereich in dein Repository mit einer CommitNachricht deiner Wahl. Überprüfe, dass alles funktioniert hat, indem du dir den aktuellen RepositoryStatus ausgeben lässt.

Falls du einen Schritt nicht hinbekommst, kannst du im Listing nachgucken. Falls du neu anfangen möchtest, kannst du das Verzeichnis „GitLernen“ gefahrlos löschen und neu beginnen.

Mögliche Ausgabe (jeder fett gedruckte Befehl entspricht einer Anweisung): stefan@LAPTOP-I6L8K96P MINGW64 ~ $ git init GitLernen Initialized empty Git repository in C:/Users/stefan/GitLernen/.git/ stefan@LAPTOP-I6L8K96P MINGW64 ~ $ cd GitLernen/ stefan@LAPTOP-I6L8K96P MINGW64 /GitLernen (master)$ git status On branch masterNo commits yetnothing to commit (create/copy files and use “git add” to track) stefan@LAPTOP-I6L8K96P MINGW64 /GitLernen (master) $ touch readme.md stefan@LAPTOP-I6L8K96P MINGW64 ~/GitLernen (master) $ git add readme.md stefan@LAPTOP-I6L8K96P MINGW64 ~/GitLernen (master)$ git commit -m ‘‘leere readme.md angelegt’’ [master (root-commit) 8a42f5d] leere readme.md angelegt 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 readme.md stefan@LAPTOP-I6L8K96P MINGW64 ~/GitLernen (master)$ git status On branch masternothing to commit, working tree clean

Nachdem wir diese Befehle ausgeführt haben, wollen wir uns mit den Ausgaben des Programms beschäftigen: Welche Bedeutung haben sie und was kann damit getan werden. Der Befehl git status gibt den aktuellen Status aus und sagt,

Kapitel 30 · Versionsverwaltung

260

ob es Dateien gibt, die bearbeitet oder neu in den Verzeichnisbaum hinzugefügt wurden. Zusätzlich gibt er aus, in welchem Branch wir sind. Normalerweise heißt der Hauptentwicklungszweig master, wie auch bei uns in einem frisch aufgesetzten Repository. Es ist heute auch möglich, den Hauptzweig anders zu benennen. GitHub möchte den Master-Begriff durch einen anderen Namen ersetzen, der keinen unnötigen Bezug zur Sklaverei aufweist. Die Befehle touch und git add readme.md führen zu keiner Ausgabe. Der Befehl git commit führt dagegen zu einigen Zeilen Ausgabe, die wir der Reihe nach analysieren wollen.

1.

[master (root-commit) 8a42f5d] leere readme.md angelegt

Zeile 1 teilt uns mit, dass es der erste Commit auf dem Branch master in unserem Repository ist (root-commit), gefolgt von einer kryptischen Zahlenfolge und unserer Commit-Nachricht. Diese kryptische Zahlenfolge ist ein Teil eines HashWertes des gesamten Repositorys. Dieser Wert ist keine fortlaufende Zahl, wie etwa bei Subversion, sondern eine Möglichkeit, den Zustand des Repositorys zu beschreiben, also sämtliche Dateien und die gesamte Historie aller Bearbeitungen. Wie genau Hashing funktioniert, behandeln wir in  Kap. 10 Informationssicherheit.

2.

30

1 file changed, 0 insertions(+), 0 deletions(-)

Zeile 2 beschreibt, was geändert wurde, nämlich eine Datei wurde geändert und es wurden weder Zeichen hinzugefügt noch gelöscht. Das können bei umfangreichen Bearbeitungen auch große Zahlen werden.

3.

create mode 100644 readme.md

In Zeile 3 gibt das Programm aus, dass es eine neue Datei readme.md angelegt hat und diese Datei nicht ausführbar ist (100644). Nachdem wir nun die lineare Bearbeitung kennen, kommen wir zu einem erweiterten Konzept – dem Branching (Verzweigung). Dieses Mittel findet immer dann Anwendung, wenn unabhängig vom Hauptzweig (master) Änderungen vorgenommen werden sollen. Im folgenden Abschnitt gibt es Befehle, die bei der Verzweigung verwendet werden: 5 git branch : Gibt alle Branches aus. 5 git checkout -b : Legt einen neuen Branch an und wechselt dorthin. 5 git checkout : Wechselt auf den bereits existierenden Branch.

261 Kapitel 30 · Versionsverwaltung

30

5 git merge : Fügt die Änderungen des angegebenen Branch in den aktuellen ein. 5 git branch -D : Löscht den Branch.

Übung Die Befehle wollen wir nun in einer Übung verwenden. 1. 2.

3. 4. 5. 6. 7. 8. 9.

Gehe nun wieder in die Git Bash und lege einen neuen Branch mit dem Namen readme an. Editiere dann die Datei readme.md entweder mit dem Notepad oder auch direkt in der Kommandozeile mittels nano readme.md . Schreibe dort einen Satz und speichere die Datei. Lass dir anschließend alle Branches ausgeben. Füge die Änderungen an der Datei readme.md zum Repository hinzu. Committe deine Änderungen. Wechsle zum master-Branch. Lass dir die Datei readme.md anzeigen, indem du cat readme.md eintippst. Übernimm die Änderungen aus dem readme-Branch in den master-Branch. Lass dir die Datei readme.md erneut anzeigen, indem du cat readme.md eintippst.

Die Ausgaben könnten in etwa so aussehen: stefan@LAPTOP-I6L8K96P MINGW64 /GitLernen (master) $ git checkout -b readme Switched to a new branch ‘readme’ stefan@LAPTOP-I6L8K96P MINGW64 /GitLernen (readme) $ nano readme.md stefan@LAPTOP-I6L8K96P MINGW64 /GitLernen (readme) $ git branch master * readme stefan@LAPTOP-I6L8K96P MINGW64 /GitLernen (readme) $ git add readme.md warning: LF will be replaced by CRLF in readme.md. The file will have its original line endings in your working directory stefan@LAPTOP-I6L8K96P MINGW64 /GitLernen (readme) $ git commit -m ‘‘Änderungen an der Readme’’

262

Kapitel 30 · Versionsverwaltung

[readme 37ce264] Änderungen an der Readme 1 file changed, 1 insertion(+) stefan@LAPTOP-I6L8K96P MINGW64 /GitLernen $ git checkout master Switched to branch ‘master’ stefan@LAPTOP-I6L8K96P MINGW64 /GitLernen $ cat readme.md stefan@LAPTOP-I6L8K96P MINGW64 /GitLernen $ git merge readme Updating 8a42f5d..37ce264 Fast-forward readme.md | 1 + 1 file changed, 1 insertion(+) stefan@LAPTOP-I6L8K96P MINGW64 /GitLernen $ cat readme.md Dies ist mein erstes Git-Repository.

30

(readme)

(master) (master)

(master)

Wir wollen uns genauer ansehen, was da gerade passiert ist und warum beim ersten Ausgeben der Inhalt der Datei readme.md leer war. Wir haben die Änderungen an der Datei readme.md innerhalb des Zweigs readme gemacht und haben danach den Inhalt der Datei readme.md im Zweig master ausgegeben. Dort waren die Änderungen aber noch nicht vorhanden, daher gab es keinen Inhalt anzuzeigen. Mit dem Befehl git merge readme haben wir den Zweig readme mit der geänderten Datei readme.md in den Hauptentwicklungszweig (master) geholt. Danach wurde auch der von uns in die Datei readme.md eingegebene Inhalt sichtbar. Der Vorteil mehrerer Zweige liegt vor allem darin, größere Entwicklerteams zu ermächtigen, Programmfunktionen unabhängig voneinander zu entwickeln und nach Fertigstellen trotzdem mit wenig Aufwand zu übernehmen. Klassischerweise beginnt man eine neue Entwicklung in einem neuen Zweig, und erst nach Abschluss der Entwicklung wird sie in den master-Zweig übernommen. Bei der parallelen Bearbeitung desselben Softwareprojekts durch mehrere Entwickler kann man innerhalb eines eigenen Zweigs alle notwendigen Änderungen vornehmen, ohne dass andere Entwickler gestört werden oder der Master zwischendurch einen fehlerhaften Stand haben würde. In Open-Source-Projekten (siehe auch  Kap. 31 Open Source) wird heutzutage vor allem Git eingesetzt und das Mergen (Zusammenkommen) nicht von Hand, sondern auf GitLab mittels eines Merge Requests oder auf GitHub mittels eines Pull Requests halbautomatisch erledigt.

263 Kapitel 30 · Versionsverwaltung

30

. Abb. 30.1 Gemeinsam mit Git arbeiten

Ein möglicher Ablauf von Arbeitsschritten und Befehlen ist in . Abb. 30.1 gezeigt. Man beginnt mit einem git clone, um sich das Repository auf den Rechner zu klonen. Sobald alles dort ist, kann man mit dem Bearbeiten oder Hinzufügen starten. Mithilfe des Befehls git add können die Dateien, die thematisch zusammengehören, zu einer Commit-Message hinzugefügt und die Änderungen mithilfe des Befehls git commit lokal commited werden. Um eventuelle Änderungen, die parallel im Repository vorgenommen wurden, zu integrieren, kann mithilfe des Befehls git pull der Stand aus dem Repository im Internet integriert werden. Falls eine andere Person an derselben Datei und derselben Stelle gearbeitet hat, müssen die Änderungen zusammengeführt werden. Dies wird auch mergen genannt. Mit dem Befehl git push werden die Änderungen hochgeladen und die anderen können die Änderungen direkt auch ausprobieren oder ein Build Server testet die Änderungen. Was ein Build Server ist, wird in  Kap. 34 Qualitätsmanagement erklärt. ? Wozu wird eine Versionsverwaltung gebraucht? Welche Kategorien von Versionsverwaltung gibt es? Was ist Git? Was bewirkt der Befehl git status? Wie sieht ein möglicher Ablauf von Arbeitsschritten und Befehlen in Git aus?

265

Open Source

© Springer Fachmedien Wiesbaden GmbH, ein Teil von Springer Nature 2024 T. Eichstädt und S. Spieker, 52 Stunden Informatik, https://doi.org/10.1007/978-3-658-41838-0_31

31

266

Kapitel 31 · Open Source

Als Open Source wird Software bezeichnet, deren Quellcode öffentlich verfügbar ist und von Dritten eingesehen, genutzt und auch geändert werden darf. Prominente Vertreter sind zum Beispiel Linux, Git, Python oder LibreOffice. Linux verwendet die GNU General Public License. Bei jeder neuen Version gibt es zahlreiche Änderungen. Ein weiteres interessantes Open-Source-Projekt ist Jenkins. Jenkins ist eine Automatisierungslösung für kontinuierliche Integration, vor allem als Hilfsmittel für die Softwareentwicklung gedacht und weit verbreitet. Jenkins verwendet die MIT-Lizenz. Das gemeinsame Arbeiten funktioniert mithilfe von persönlichen Forks. Das Hinzufügen in den Hauptentwicklungszweig darf erst nach einem Approve durch die Reviewer erfolgen. Den Entwicklungsaufwand in einem Open-Source-Projekt zu teilen, unterscheidet sich stark von einem klassischen Ansatz mit streng hierarchischer Führung innerhalb einer Firma. Das führt zu einigen Vorteilen für Entwickler und Nutzer. Es können aber auch Nachteile entstehen. In dieser Stunde wollen wir uns der freien Software widmen, die man Open Source Software (Offene-Quellen-Software) nennt. So wird Software bezeichnet, deren Quellcode öffentlich verfügbar ist und von Dritten eingesehen, genutzt und auch geändert werden darf. Es gibt aber auch Beispiele, in denen sogar die Hardware frei verfügbar ist, wobei natürlich nicht die Dinge selbst frei sind, sondern die Quellen, die nötig sind, um diese herzustellen. Darunter fallen beispielsweise 3DDrucker-Vorlagen oder auch der Schaltplan, um eine elektronische Platine selbst nachzuproduzieren. Übung

31

Welche Open-Source-Projekte kennst du? Wo findet das jeweilige Softwareprodukt Anwendung?

Prominente Open Source Software: 5 Linux: Betriebssystem (siehe  Kap. 15 Betriebssysteme) 5 Git: Versionsverwaltung (siehe  Kap. 30 Versionsverwaltung) 5 LibreOffice: Office-Paket 5 Raspberry Pi: Einplatinenrechner (siehe  Kap. 49 Internet der Dinge) 5 Eclipse (IDE): Quellcodeeditor 5 Visual Studio Code: Quellcodeeditor (siehe  Kap. 5 Code) 5 Python: Programmiersprache (siehe  Kap. 20 „Hallo Welt“ (in Python)) 5 Wordpress: Content-Management-System (siehe  Kap. 12 Webhosting) 5 Firefox: Webbrowser (siehe  Kap. 6 Webbrowser) 5 Go: Programmiersprache 5 Jenkins: Build Server (siehe  Kap. 34 Qualitätsmanagement) 5 MySQL: Datenbank (siehe  Kap. 36 SQL) 5 Inkscape: Grafikeditor (siehe  Kap. 39 Computergrafik) 5 …

267 Kapitel 31 · Open Source

31

Das prominenteste Beispiel von Open Source ist wahrscheinlich das LinuxBetriebssystem. Es wurde ursprünglich allein von Linus Torvalds entwickelt und unter einer Lizenz zur Verfügung gestellt, die eine kommerzielle Nutzung verbot. Er änderte im Jahre 1992 die Lizenz zu einer GNU General Public License (abgekürzt: GPL, allgemeine Veröffentlichungserlaubnis), sodass es auch für Firmen interessant wurde. Diese spezielle Lizenz erlaubt die kommerzielle Nutzung, fordert aber, dass alle Änderungen oder Erweiterungen des Quellcodes wieder als Open Source zur Verfügung gestellt werden müssen. Dies hat zum Siegeszug des Linux-Betriebssystems geführt. Auch heute leitet Linus Torvalds das Linux-Projekt weiterhin. Alle Änderungen am Quellcode übernimmt er in den Hauptentwicklungszweig. Die Änderungen kommen dabei aber vor allem von einigen großen Softwarefirmen. In einer Version werden immer etliche Änderungen zusammengeführt. . Tab. 31.1 zeigt ein paar Statistiken dazu. Besonders die letzte Spalte zeigt, wie viele Zeilen in jeder Version dazukommen und wie viele gelöscht werden. Wenn eine normale DIN-A4-Seite als Maßstab genommen wird, sind das bei ca. 30 Zeilen pro Seite für die Version 5.0 über 19.000 hinzugefügte Seiten. Das ist schon eine enorme Leistung, die von vielen Entwicklern innerhalb einer Version erbracht wird. Viele Änderungen stammen dabei von Firmen, allen voran Intel, die für circa 12,9 % des Codes verantwortlich zeichnen. Aber auch Red Hat hat circa 8 % beigetragen. Samsung hat im Jahr 2016 etwa 3,6 % zum Kernel beigetragen. Vielleicht etwas unerwartet ist die Tatsache, dass auch die Firma Microsoft an der LinuxEntwicklung beteiligt ist.

. Tab. 31.1 Details zu Linux-Versionen KernelVersion

Anzahl Dateien

Zeilen Quelltext

Entwicklungszeitraum

Commits

Diff

Linux 5.0

63.135

26.203.035

70 Tage

13.921

12.100 Dateien geändert, 579.084 insertions(+), 331.570 deletions(-)

Linux 5.1

63.873

26.459.776

63 Tage

14.160

11.977 Dateien geändert, 545.423 insertions(+), 288.683 deletions(-)

Linux 5.2

64.587

26.552.127

63 Tage

15.089

30.888 Dateien geändert, 624.857 insertions(+), 532.510 deletions(-)

268

Kapitel 31 · Open Source

Mehr oder weniger gilt das auch für die anderen oben genannten Open-SourceProjekte. Oft stehen einige Firmen hinter dem Produkt und organisieren mit ihren Mitarbeitern eine kontinuierliche Weiterentwicklung, ohne dabei die Open-SourceGemeinschaft auszuschließen. Doch wie funktioniert das, an einem Projekt mitzuarbeiten? Wir wollen uns das mal anhand eines GitHub-Projekts ansehen, an dem ich mich selbst beteilige: Jenkins. Jenkins ist eine Automatisierungslösung für kontinuierliche Integration, vor allem als Hilfsmittel für die Softwareentwicklung gedacht und weit verbreitet. Der Quellcode liegt auf GitHub unter  github.com/jenkinsci/jenkins (siehe . Abb. 31.1). Die Anzahl der Commits und der Contributors (Mitentwickler) deutet darauf hin, dass dieses Repository schon einiges gesehen hat. Es wurde nicht schon immer mit Git entwickelt, sondern der Quellcode wurde früher mit Subversion verwaltet. Die Lizenz des Projekts ist die MIT-Lizenz. Diese Lizenz wurde vom Massachusetts Institute of Technology entwickelt, um eine besonders freie Lizenz zu schaffen, die auch die Veränderung des Quellcodes erlaubt, ohne die Änderungen veröffentlichen zu müssen. Aus diesem Grund ist diese Lizenz auch im kommerziellen Umfeld gern gesehen. Übung Besuche doch selbst einmal die Website und schaue dir an, was bei den Pull Requests alles zu sehen ist, und finde unter Insights heraus, seit wann es das Projekt schon gibt. Ebenfalls spannend könnten die Contributors sein. Findest du einen Benutzer StefanSpieker unter den Top 100?

31

. Abb. 31.1 Jenkins auf GitHub

269 Kapitel 31 · Open Source

31

Wie funktioniert denn nun das gemeinsame Arbeiten an einem Open-SourceProjekt? Normalerweise wird ein persönlicher Fork erstellt, das ist eine Kopie des Repositorys innerhalb des eigenen Accounts. Es ist nicht möglich, direkt in das Jenkins-Repository zu schreiben. Das Hinzufügen funktioniert über sogenannte Pull Requests. Das Repository wird aus dem eigenen Account geklont (mittels git clone), und danach kann man lokal an dem Code arbeiten. Bevor man mit dem Entwickeln beginnt, sollte man einen neuen Branch erstellen (siehe  Kap. 30 Versionsverwaltung). Auf der Konsole geht das mit:

Git checkout -b “”

Dieser Befehl erstellt eine Kopie des Hauptzweigs Master mit dem Titel . Sobald ein Teil abgeschlossen ist, wird mit einer sinnvollen Meldung commitet und es wird der aktuelle Stand dann in das Repository gepusht. Wie das aussehen kann, zeigt der Screenshot in . Abb. 31.2. Beim Pushen der Änderungen gibt es eine Ausgabe auf Englisch, die empfiehlt, einen Pull Request zu eröffnen. Im Browser kann dort recht einfach ein Pull Request eröffnet werden. Das sieht dann zum Beispiel aus wie in . Abb. 31.3. Mit diesem Pull Request möchte ich also Änderungen von meinem Entwicklungszweig remove_redundancies in den Hauptentwicklungszweig (master) des Jenkins-Repositorys schieben. Ich selbst habe bei diesem Projekt keine Rechte, die Änderungen direkt vornehmen zu können, sondern es gibt sogenannte Maintainer (Betreuer), die sich meine Codeänderungen ansehen und bewerten können, ob sie dem Projekt helfen oder eher schaden. Manchmal kommen bei größeren Änderungen auch noch Rückfragen oder Verbesserungsvorschläge von den anderen Beitragenden. Wenn alles zur Zufriedenheit der Betreuer sein sollte, kann man bei einem aktiven Projekt davon ausgehen, dass die Änderungen binnen weniger Tage oder Wochen in den Hauptentwicklungszweig integriert werden. Das sieht dann zum Beispiel aus wie in . Abb. 31.4.

. Abb. 31.2 Open-Source-Mitarbeit via Git

270

Kapitel 31 · Open Source

. Abb. 31.3 Pull Request von StefanSpieker

31

. Abb. 31.4 Integration eines genehmigten Entwicklungszweigs

271 Kapitel 31 · Open Source

31

Das Approve (Genehmigen) zeigt an, dass die beiden Reviewer (Gutachter) sich die Änderungen angesehen und diese für gut befunden haben. Open-Source-Software hat einige Vorteile: 5 An der Entwicklung einer Open-Source-Software können sich beinahe beliebig viele Personen (und damit auch Firmen) beteiligen. Der Entwicklungsaufwand wird geteilt, sodass auch große Projekte entwickelt werden können. 5 Als Nutzer einer Open-Source-Software gibt es meist keine Abhängigkeit von einer einzelnen Firma, denn sogar die Fehlerbeseitigung kann theoretisch von jedem selbst vorgenommen werden. 5 Die Nutzung von Open Source ist normalerweise kostenfrei. Auch die Vervielfältigung ist möglich, sodass keine Lizenzgebühren anfallen. 5 Da der Quelltext öffentlich ist, kann auch aus Sicherheitsaspekten nach geheimen Funktionen gesucht werden. Zusätzlich gibt es eine Versionshistorie, in der man die Änderungen nachvollziehen kann. Aber natürlich gibt es auch ein paar Nachteile: 5 Niemand garantiert die Weiterentwicklung einer Open-Source-Software. Wenn aus welchen Gründen auch immer die Entwickler keine Lust oder Zeit mehr haben, an dem Projekt zu arbeiten, können die Projekte einschlafen. 5 Bei vielen parallel an einer Lösung arbeitenden Menschen kann der Programmcode auch schlechter ausfallen, als wenn es eine streng hierarchische Führung innerhalb einer Firma gibt. ? Was ist Open Source? Wie läuft die Mitarbeit in einem Open-Source-Projekt ab? Welche Lizenzen können für Open-Source-Software verwendet werden? Welche Vorteile bietet Open Source? Welche Nachteile hat Open-Source-Software?

273

Softwarelizenzierung

© Springer Fachmedien Wiesbaden GmbH, ein Teil von Springer Nature 2024 T. Eichstädt und S. Spieker, 52 Stunden Informatik, https://doi.org/10.1007/978-3-658-41838-0_32

32

274

Kapitel 32 · Softwarelizenzierung

Eine Lizenz ist ein Nutzungsrecht, das besonders dem Schutz von geistigem Eigentum dient. Es ist verwandt mit dem Copyright aus dem englischsprachigen Raum. Im Umfeld der Informatik gibt es verschiedene Formen von geistigem Eigentum. Entwickler oder Unternehmen haben das Recht, die von ihnen erstellte Software zu schützen. Dann wird von proprietärer Software gesprochen, die im Gegensatz zu freier Software steht. Ist ein Quellcode freigegeben, kann mit einem Copyleft erzwungen werden, dass Weiterentwicklungen ebenfalls unter der ursprünglichen Lizenz veröffentlicht werden müssen. Der Nutzer stimmt den Lizenzbedingungen in Form einer EULA zu. Die EULA kann sehr umfangreich sein und vom Herausgeber beliebig formuliert werden. Ihre Gültigkeit unterliegt gesetzlichen Regelungen. Eine kostenlose Software ist nicht automatisch freigegeben. Ein heute sehr weit verbreitetes Geschäftsmodell ist Freemium. Dabei wird Software kostenlos zur Verfügung gestellt. Einnahmen werden später durch Werbung oder kostenpflichtige Zusatzleistungen erzielt. Eine Lizenz ist ein Nutzungsrecht. Besonders bei geistigem Eigentum (also dem Eigentum an immateriellen Gütern) sind der rechtliche Schutz und deshalb die Regelung der Nutzung von Bedeutung. Gesetzlich geregelt wird dieser Schutz in den meisten Fällen durch das Urheberrecht. In erster Linie geht es dabei um die individuellen Schutzrechte des Schöpfers (etwa eines Softwareentwicklers). Im englischsprachigen Raum heißt das Urheberrecht Copyright. Beim Copyright (wörtlich übersetzt „Kopierrecht“) stehen die Einschränkungen bei der Vervielfältigung allerdings stärker im Vordergrund als zum Beispiel beim deutschen Urheberrecht. Wie das in der Praxis funktioniert, werden wir im Verlauf dieser Stunde sehen. Außerdem gibt es noch weitere gewerbliche Schutzrechte, zum Beispiel in Form von Patenten. Übung

32

Was sind Beispiele von geistigem Eigentum, an dem ein Schutzrecht geltend gemacht werden kann? Vielleicht denkst du bei einem Urheber zuerst an einen Schriftsteller, der ein Buch geschrieben hat und dieses schützen möchte, um sich sein Einkommen zu sichern. Das ist ein gutes Beispiel. Es gibt aber auch im Umfeld der Informatik viele Fälle, in denen ein Schutzrecht existiert. Überlege, welche Beispiele von geistigem Eigentum dir noch einfallen, und liste sie auf.

Einige Beispiele für schützenswertes geistiges Eigentum sind wie folgt: 5 Persönliche Daten (siehe  Kap. 13 Datenschutz) 5 Selbst erstellte Software/Computerprogramme 5 Selbst erstellte Filme, Musik oder Videos 5 Selbst erstellte künstlerische, wissenschaftliche oder technische Darstellungen (siehe  Kap. 39 Computergrafik)

275 Kapitel 32 · Softwarelizenzierung

32

Übung Recherchiere die Bedeutung von „CC BY-SA“.

>

Creative Commons veröffentlicht verschiedene Standardlizenzverträge für Autoren: 7 https://de.wikipedia.org/wiki/Creative_Commons

In dieser Stunde geht es in erster Linie um Nutzungsrechte an Computerprogrammen und deren Quellcode. Zunächst hat der Entwickler das Recht, seine Software zu schützen. Oft gehört der Entwickler aber auch einer Organisation an oder hat durch einen Arbeitsvertrag bereits seine Rechte an der entwickelten Software an ein Unternehmen weitergegeben. Wenn dieses Unternehmen dann die Software herausgibt, kann es entscheiden, sein geistiges Eigentum zu schützen und die Nutzungsrechte durch andere einzuschränken. In diesem Fall spricht man von proprietärer Software. Entscheidet sich der Herausgeber aber, die Freiheit der Softwarenutzung in den Vordergrund zu stellen, so wird dies freie Software genannt. Das ist eine erste wichtige Unterteilung von Software, die meistens in Verbindung mit entsprechenden Lizenzen steht (siehe . Abb. 32.1). In der praktischen Arbeit ist für den Entwickler der Umgang mit dem Quellcode entscheidend. Bei proprietärer Software wird der Quellcode in aller Regel unter Verschluss gehalten (Closed Source). Wohingegen die Entscheidung für eine freie Software immer mit der Veröffentlichung des Quellcodes einhergeht (Open Source). Die Begriffe sind also in der Praxis meist bedeutungsgleich. In  Kap. 31 Open Source wurden bereits zwei Open-Source-Lizenzen namentlich erwähnt: die GPLund die MIT-Lizenz. Ein wesentlicher Gesichtspunkt bei Open-Source-Lizenzen ist, inwiefern der Lizenznehmer frei ist, über die Lizenzierung einer bearbeiteten Software selbst zu entscheiden. Wenn eine Softwarelizenz dazu verpflichtet, Weiterentwicklungen unter der ursprünglichen Lizenz zu veröffentlichen, spricht man von Copyleft. Eine Weiterentwicklung des Jenkins-Quellcodes (MIT) könnte also auch mit einer anderen Lizenz versehen werden, während dasselbe mit LinuxQuellcode (GNU) nicht möglich ist. Eine weitere Unterteilung von Lizenzen ist also die Möglichkeit der Vervielfältigung durch den Entwickler (siehe . Abb. 32.2). Nun gut. Überlegen wir uns jetzt, wie die Lizenzierung in der Praxis funktioniert. Wenn ein Entwickler ein neues Open-Source-Projekt startet, entscheidet er sich für eine Lizenz, die zum Zweck des Projekts und seinen persönlichen Idealen passt. Er kopiert dann den vollständigen Text der Lizenz in eine Datei namens COPYING (oder LICENSE) und legt diese im Repository ab. Zusätzlich findet sich oft ein Lizenzhinweis am Anfang jeder Quellcodedatei. Dieser sieht zum Beispiel folgendermaßen aus:

276

Kapitel 32 · Softwarelizenzierung

. Abb. 32.1 Unterteilung in proprietäre und freie Software

. Abb. 32.2 Unterteilung von Software nach Copyleft

32 Copyright (C) Dieses Programm ist Freie Software: Sie können es unter den Bedingungen der GNU General Public License, wie von der Free Software Foundation, Version 3 der Lizenz oder (nach Ihrer Wahl) jeder neueren veröffentlichten Version, weiterverbreiten und/oder modifizieren. Dieses Programm wird in der Hoffnung, dass es nützlich sein wird, aber OHNE JEDE GEWÄHRLEISTUNG, bereitgestellt; sogar ohne die implizite Gewährleistung der MARKTFÄHIGKEIT oder EIGNUNG FÜR EINEN BESTIMMTEN ZWECK. Siehe die GNU General Public License für weitere Details. Sie sollten eine Kopie der GNU General Public License zusammen mit diesem Programm erhalten haben. Wenn nicht, siehe .

277 Kapitel 32 · Softwarelizenzierung

32

. Abb. 32.3 Akzeptieren von Nutzungsbedingungen beim Einkauf

Anders gestaltet es sich bei proprietärer Software. Der Quellcode wird ja nicht veröffentlicht und benötigt daher theoretisch keine Kennzeichnung. Um die Position bei rechtlichen Auseinandersetzungen zu stärken, sind aber auch hier Hinweise sehr verbreitet. Zum Beispiel: Copyright (C) All rights reserved.

Die rechtliche Regelung des Nutzungsrechts erfolgt aber nicht mithilfe des Quellcodes, sondern durch die Zustimmung zu den Nutzungsbedingungen des Herstellers, oft auch bezeichnet als Endbenutzer-Lizenzvereinbarung oder EULA (engl. EndUser license agreement). Sicherlich habt ihr einen solchen Vertrag bereits einmal während des Kaufs oder der Installation einer Software angezeigt bekommen. Das sieht zum Beispiel aus wie in . Abb. 32.3. Übung Habt ihr schon einmal solche Nutzungsbedingungen oder eine EULA gelesen? Wenn ja, was stand darin? Wenn nein, was könnte darin stehen?

Grundsätzlich kann der Softwarehersteller die Nutzungsbedingungen beliebig formulieren. Oft widersprechen diese oder einzelne Bestandteile auch geltenden Gesetzen. Das ist schon alleine deswegen der Fall, weil Software in aller Regel international vertrieben wird, aber das gesetzliche Lizenzrecht von Staat zu Staat variiert. In Deutschland ist die in anderen Ländern übliche EULA nur dann wirksam, wenn sie dem Nutzer bereits vor dem Kauf kenntlich war. Damit stellt sie dann eine allgemeine Geschäftsbedingung (AGB) dar und unterliegt den entsprechenden Regelungen. Ein paar Beispiele, was Nutzungsbedingungen oder EULA enthalten können: 5 Einordnung des Vertragsinhalts, zum Beispiel, ob es sich um den Kauf einer Software oder nur um ein dauerhaftes Nutzungsrecht handelt 5 Einschränkungen bezüglich des Zwecks der Nutzung 5 Einschränkungen zur zeitlichen Dauer des Nutzungsrechts, zum Beispiel bei Mietverträgen

278

Kapitel 32 · Softwarelizenzierung

5 Bedingungen oder Fehlverhalten, aufgrund dessen ein Nutzungsrecht wieder entzogen werden kann 5 Haftungsausschluss aufgrund von Mängeln oder Fehlern in der Software 5 Haftungsausschluss aufgrund von Gesundheitsschäden, die durch die Software verursacht werden 5 Hinweise zum Datenschutz oder Verweis auf Datenschutzrichtlinien außerhalb des vorliegenden Vertrags (vergleiche Datenschutz) 5 Bestätigung, dass der Lizenznehmer mindestens 18 Jahre alt ist oder dafür Sorge getragen hat, dass die Erziehungsberechtigten dem Vertrag ebenfalls zustimmen 5 Zustimmung zur Verwendung von personenbezogenen Daten, zum Beispiel Weitergabe an Dritte 5 Handhabung und Zahlungsweise bei kostenpflichtigen Leistungen in der Software 5 Verbote zum Umgang mit der Software, zum Beispiel Vervielfältigung 5 Verbote zur Nutzung der Software, zum Beispiel Cheats und Exploits 5 Verbote zum Umgang mit Accounts, zum Beispiel Weitergabe oder Verkauf

32

Den Endnutzer interessieren die Lizenzbedingungen oftmals nicht. Für viele ist das wichtigere Kriterium, mit welchen Kosten die Nutzung verbunden ist. Vielfach wird Software kostenlos zur Nutzung zur Verfügung gestellt (Freeware). Einige Herausgeber bieten auch eine kostenlose Programmversion zum Test an (Shareware). Diese besitzt einen beschränkten Funktionsumfang oder eine beschränkte Laufzeit und dient in der Regel als Werbung für den Kauf der Vollversion. Es gibt verschiedenste Gründe, eine Software kostenlos anzubieten. Dazu später noch mehr. Wichtig ist, sich bewusst zu sein, dass kostenlos nicht gleichbedeutend mit frei ist. Bei Freeware wird nur auf die Nutzungsvergütung verzichtet, in der Regel aber nicht auf die Rechte am Quellcode. Gleichzeitig gibt es natürlich auch verschiedene Modelle, eine Software kostenpflichtig anzubieten. Neben dem Kauf kann eine Nutzung auch eine zeitliche Beschränkung haben oder ein fortlaufendes regelmäßiges Entgelt erfordern (Abos). Während Software früher meist verkauft wurde, sind heute Abonnements mindestens genauso weit verbreitet. Microsoft beispielsweise bietet seine Office-Software nicht mehr zum Kauf an, sondern hat mit Office 365 auf ein Abonnementsystem umgestellt. Auch Internetdienstleistungen werden fast ausschließlich als Abonnement vertrieben (vergleiche  Kap. 12 Webhosting). Die tatsächlichen Kosten sind nicht Teil des Lizenzvertrags. Dennoch haben die Kosten für die Nutzung der Software einen großen Einfluss auf die Ausgestaltung des Lizenzvertrags (siehe . Abb. 32.4).

279 Kapitel 32 · Softwarelizenzierung

32

. Abb. 32.4 Unterteilung von Software nach Nutzungskosten

Die Nutzungskosten sind aber nur ein Aspekt des mit der Software verbundenen Geschäftsmodells. Ein heute sehr weit verbreitetes Geschäftsmodell ist Freemium. Dabei wird eine Software kostenlos zur Verfügung gestellt. Einnahmen werden durch Werbung oder kostenpflichtige Zusatzleistungen erzielt. Die Zusatzleistung kann darin bestehen, dass Werbung ausgeblendet oder Erweiterungen freigeschaltet werden. Die Buchung von Zusatzleistungen erfolgt in der Regel innerhalb der Software selbst (In-App-Kauf) und kann als einmaliger Kauf oder als Abonnement angelegt sein. Ein bekanntes Beispiel für Freemium ist Spotify. Im Jahr 2019 hatte Spotify rund 250 Mio. aktive Nutzer. Rund die Hälfte davon sind zahlende Abonnenten, während der Rest die grundlegenden Dienste kostenlos und werbefinanziert nutzt. Ein weiteres erfolgreiches Beispiel für Freemium ist Fortnite. Anstatt Freemium heißt es bei Computerspielen auch oft „Free-to-play“. Insbesondere bei Computerspielen ist das Geschäftsmodell oft psychologisch geschickt ausgestaltet. Da das Spiel zunächst kostenlos ist, ist die Hürde für den Einstieg niedrig. Die Verlockung für In-App-Käufe, die geschickt im Spiel platziert sind, steigt mit zunehmendem Verlauf. Bei Fortnite etwa werden Skins, also optische Veränderungen, in einer Ingame-Währung angeboten, die den Bezug zum echten Geld geschickt verschleiert. Den rechtlichen Bedingungen wurde bereits bei der Registrierung zugestimmt, sodass auch diese keine Hürde mehr darstellen. Rechtlich interessant ist die Lage, wenn Minderjährige ohne das Wissen der Eltern Geld für diese Art von Spielen ausgeben. Je nach konkretem Fall kann der Kauf rechtlich unwirksam sein. Das kann beispielsweise davon abhängen, welches Zahlungsmittel verwendet wurde oder wer den entsprechenden Account angelegt hat. Selbst wenn der Kauf nicht gültig war, ist fraglich, wie praktikabel sich die Rückabwicklung gestaltet. An den beiden genannten Beispiel wird deutlich, dass Software heute vielfach kostenlos und trotzdem kommerziell ist (siehe . Abb. 32.5).

280

Kapitel 32 · Softwarelizenzierung

. Abb. 32.5 Unterteilung von Software nach Geschäftsmodell

32

Die Einteilung von Software ist gar nicht so einfach. Selbst Open-SourceSoftware kann einen kommerziellen Hintergrund haben. Ein Beispiel ist das Betriebssystem Red Hat Enterprise Linux, das auf einem freien Linux (GPL) basiert. Trotz Copyleft gelingt es Red Hat über ergänzende Software, Support, Schulungen, die sich speziell an Unternehmen richten, kommerziell erfolgreich zu sein. Für einen Laien ist es schwierig, bei den verschiedenen Lizenzen und ihren Bedeutungen den Überblick zu behalten. Erschwerend kommt hinzu, dass es sogar möglich ist, dieselbe Software unter verschiedenen Lizenzen anzubieten. Kein Wunder, dass Softwareunternehmen oft eigene Spezialisten für Lizenzrecht anstellen. Ähnlich sieht es auch bei Unternehmen aus, die Software in großen Mengen konsumieren. Wenn Mitarbeiter Software für ihre Arbeit benötigen, muss diese lizenziert werden (in der Regel abweichend von dem privaten Einsatzzweck). Ab einer gewissen Größe kaufen Unternehmen die Softwarelizenzen nicht mehr stückweise, sondern verhandeln beim Anbieter einen Unternehmenslizenzvertrag. Auch hier gibt es diverse Möglichkeiten. Neben Funktion und Kosten hängt die Ausgestaltung auch mit Aspekten zum Betrieb der Software zusammen, beispielsweise wie die Nutzung überwacht werden kann (vergleiche  Kap. 28 IT-Betrieb). ? Was ist eine Lizenz? Was ist der Unterschied zwischen Copyright und Copyleft? Wofür steht EULA? Was sind übliche Beispiele für den Inhalt einer EULA? Wie funktioniert das Freemium-Geschäftsmodell?

281

Testen

© Springer Fachmedien Wiesbaden GmbH, ein Teil von Springer Nature 2024 T. Eichstädt und S. Spieker, 52 Stunden Informatik, https://doi.org/10.1007/978-3-658-41838-0_33

33

282

Kapitel 33 · Testen

Testen hat die Aufgabe, Bugs zu finden. Es gibt Webseiten, bei denen jeder selbst zum Tester werden kann, um mit gefundenen Fehlern Geld zu verdienen. Wichtig ist, dass die ausgeführten Schritte, das erwartete Ereignis und das tatsächlich beobachtete Verhalten beschrieben werden. Neben dem manuellen Testen gibt es auch noch weitere Testarten: Unit Test, Integrationstest, Systemtest, Akzeptanztest, Regressionstest. Auch in der Umsetzung gibt es verschiedene Möglichkeiten: Black Box Testing, White Box Testing, Grey Box Testing. Eine verbreitete Art, qualitativ hochwertige Software zu schreiben, ist die testgetriebene Entwicklung, bei der der Test vor der Implementierung geschrieben wird. Um Unit Tests in Python zu schreiben, wird die Klasse Unittest verwendet. Der Zustand von Programmen kann innerhalb von Tests mit Assertions überprüft werden. Testen bedeutet auch in der Informatik ausprobieren, ob ein Produkt oder ein Programm so funktioniert, wie es gedacht ist. Bei einer Textverarbeitung muss es beispielsweise möglich sein, ein Dokument zu öffnen und zu speichern. Dies wird bei dem Hersteller der Software getestet, bevor der erste Anwender die Version zur Verfügung gestellt bekommt. Das Testen hat also die Aufgabe, Bugs (Fehler) zu finden, möglichst bevor die Software an den Kunden ausgeliefert wird. Man unterscheidet folgende Typen von Fehlern: 5 Funktionale Fehler – beispielsweise ein nicht funktionierender Link auf einer Webseite 5 Inhaltliche Fehler – das können Rechtschreibfehler oder auch falsche Bilder zu einem Text sein 5 Visuelle Fehler – beispielsweise, wenn ein Fenster einer Webseite einen anderen Bereich verdeckt 5 Benutzerfreundlichkeitsfehler – wenn es unnötig kompliziert oder nicht intuitiv ist

33

Das Finden der Fehler benötigt nicht selten einiges an Zeit. Daher gibt es einige Webseiten, bei denen jeder selbst tätig werden kann. Ein Beispiel ist Test.io. Übung Falls du selbst auch mal reinschnuppern möchtest, findest du mehr Informationen unter: 7 https://test.io/de/become-a-tester/

Dort kann man mit gefundenen Fehlern auch Geld verdienen, man sollte sich dabei aber nicht mehr als ein Taschengeld erhoffen. Zum Beispiel sehen mögliche Belohnungen aus wie in . Abb. 33.1 abgebildet. Den Betrag aus der ersten Spalte verdient, wer einen neuen Fehler findet. Wenn man einen bereits gefundenen Fehler reproduziert, also nachstellt, wird nur der Betrag aus der zweiten Spalte ausbezahlt. Ein möglicher funktionaler Fehler könnte zum Beispiel bei der Überprüfung der E-Mail-Adresse liegen. Wer eine eigene Webseite hat, nutzt normalerweise auch die E-Mail-Adressen davon. So ist zum Beispiel auch mueller.online eine gültige Webseite, die eine gültige E-Mail-Adresse, wie in . Abb. 33.2 zu sehen, besitzt. Bei dieser Webseite wird sie jedoch fälschlicherweise als ungültig markiert.

283 Kapitel 33 · Testen

33

. Abb. 33.1 Belohnungen für das Auffinden von Fehlern

. Abb. 33.2 Ungültige E-Mail-Adresse

Ein solcher Fehler lässt sich, wie in . Abb. 33.3 dargestellt, melden. Wichtig ist, dass die einzelnen Schritte, um zu dem Fehler zu gelangen, genau beschrieben werden. Dann wird das erwartete Ereignis beschrieben und anschließend das auf der Testwebsite tatsächlich beobachtete Verhalten. Wichtig ist, immer einen Screenshot mit anzufügen, damit es leichter nachzuvollziehen ist, wo ein Fehler gelegen hat. Bei komplizierten Abläufen kann auch ein Video vorteilhaft sein und dieses mit hinzugefügt werden. Nachdem man einen Fehler gemeldet hat, gibt es jemanden, der den Fehler bewertet und entscheidet, ob es sich um einen tatsächlichen Fehler handelt, der im Kontext des Tests bezahlt wird, oder ob dieser nicht zum Testszenario gehört. Diesen Vorgang bezeichnet man als manuelles Testen. In der folgenden Übersicht sind weitere Arten von Tests aufgeführt: 5 Unit Test (Einheitentest): Das bezeichnet das Testen von kleinen Einheiten, zum Beispiel der Funktion, die eine E-Mail-Adresse auf Gültigkeit überprüft. 5 Integrationstest: Hier werden die Verbindungen der verschiedenen Einheiten getestet, damit diese nicht nur einzeln funktionieren, sondern auch im Zusammenspiel. 5 Systemtest: Dieser Test hat das gesamte System im Fokus und soll möglichst viele Komponenten beinhalten, also beispielsweise die Oberfläche, aber auch die Programmlogik. 5 Akzeptanztest: Das ist im Allgemeinen der letzte Schritt, bevor ein Produkt ausgeliefert wird. Der Test umfasst alle wichtigen Eigenschaften der Software. 5 Regressionstest (von lateinisch regredior, zurück schreiten‘): Ein Test, der darauf zielt, Dinge, die in vorherigen Versionen funktioniert haben, erneut zu testen.

284

33

Kapitel 33 · Testen

. Abb. 33.3 Formular für das Eintragen eines Bugs

Nachdem wir nun von verschiedenen Arten des Testens gelesen haben, gibt es aber auch dort nochmal unterschiedliche Ansätze, dies umzusetzen: 5 Black Box (schwarze Box) Testing: Bei dieser Art des Testens geht es nur um die Schnittstellen und nicht um die Betrachtung der tatsächlichen Implementierung. 5 White Box (weiße Box) Testing: Hierbei wird in die Software hineingesehen und versucht, besonders geschickte Testfälle zu entwickeln, um Randfälle leichter herauszufinden. Im Allgemeinen werden dabei deutlich mehr Fehler als beim Black Box Testing gefunden. Manchmal jedoch auch Fehler, die in dem Produkt bei normalen Anwendern nicht auftreten würden. 5 Grey Box (graue Box) Testing: Ist eine Mischform aus Black Box Testing und White Box Testing und ein guter Kompromiss aus Aufwand und Nutzen. Nur kritische Systeme werden dabei als weiße Box genau getestet und nicht so wichtige Systeme als schwarze Box betrachtet. Nach so viel Theorie ist jetzt auch wieder etwas Praxis mit Python gefragt. Wir schreiben unseren ersten Unit Test. Falls der Test vor der Implementierung geschrieben wird, spricht man von testgetriebener Entwicklung. Diese Vorgehensweise

285 Kapitel 33 · Testen

33

hilft, vor dem eigentlichen Implementieren genau zu überlegen, was benötigt wird. Es ist eine Form, strukturiert an die Problemlösung von Teilproblemen zu gehen, und eine verbreitete Art, qualitativ hochwertige Software zu erstellen. In  Kap. 20 „Hallo Welt“ (in Python) kannst du nochmal nachlesen, wie du Python auf den Rechner bekommst. Damit du auch etwas zum Testen hast, müssen wir natürlich zuerst eine Funktion schreiben, die wir testen wollen. Auch wenn es die Summe in Python als sum bereits gibt, wollen wir sie nochmal für uns implementieren. Lege zuerst ein Verzeichnis summe an. Übung Öffne einen Editor deiner Wahl, z. B. Notepad, und füge deine Implementierung in folgendes Konstrukt ein:

def summe(arg): total = 0 # Deine Berechnung # Ergebnis zurückgeben return total

Übung Diesen Text speicherst du nun unter dem Namen __init__.py ab. Durch diese besondere Schreibweise weiß Python, dass wir diese Funktion von einer anderen Stelle aus aufrufen wollen. Du kannst für einen ersten Test die Datei auch erstmal so lassen und noch keinen Code für die Berechnung hinzufügen. Wir legen also nun zunächst den Test an im Wurzelverzeichnis von summe mit dem Namen test.py, wie in . Abb. 33.4 dargestellt.

. Abb. 33.4 Python-Datei für Tests

286

Kapitel 33 · Testen

In diese Datei wird Folgendes eingefügt (ohne die Zeilennummern): 1 import unittest 2 3 from summe import summe 4 5 6 class TesteSumme(unittest.TestCase): 7 def test_list_int(self): 8 # Test Daten 9 daten = [1, 2, 3] 10 result = summe(daten) 11 # Überprüfe dass das Resultat 1+2+3=6 ist. 12 self.assertEqual(result, 6) 1314 15 if __name__ == ’__main__’: 16 unittest.main()

33

Die erste Zeile gibt an, dass es sich um einen Unit Test handelt und wir die Funktionen der Klasse unittest verwenden wollen. In Zeile 3 geben wir an, dass wir das selbst geschriebene Modul summe verwenden möchten. Der eigentliche Test fängt dann in Zeile 7 an mit dem Schlüsselwort def und dem Namen der Funktion test_list_int. In Zeile 9 definieren wir ein Array mit dem Namen daten und dem Inhalt 1, 2, 3. Das Ergebnis der Funktion summe(daten) wird in der Variablen result gespeichert. Anschließend wird das Ergebnis auf Gleichheit mit assertEqual überprüft. Eine Assertion (Behauptung) überprüft den Zustand eines Programms. Um diesen Test laufen zu lassen, führen wir in der cmd-Befehlszeile folgenden Befehl aus: python test.py -v

Der Test schlägt fehl und gibt aus, dass 0 nicht gleich 6 ist, wie in . Abb. 33.5 zu sehen. Übung Nun ist es an dir, die Funktion zu implementieren. In  Kap. 21 Algorithmik (in Python) findest du Hilfe, falls du nicht mehr weißt, wie eine Schleife programmiert wird. Die Variable arg ist ein Array. Du kannst nun immer den Test laufen lassen, wenn du die Summe implementiert hast. Natürlich kannst du auch deinen Test anpassen und z. B. noch eine 4 an die Daten anfügen und das Ergebnis davon überprüfen.

287 Kapitel 33 · Testen

33

. Abb. 33.5 Fehlgeschlagener Unit Test in Python

Außer equals gibt es noch andere Überprüfungsmöglichkeiten, wie in . Tab. 33.1 dargestellt. Die zwei Screenshots in . Abb. 33.6 und 33.7 zeigen den erfolgreichen Unit Test und eine mögliche Implementierung der Summe.

. Tab. 33.1 Bedeutung von Assertions Assertion

Bedeutung der Assertion

assertTrue()

Überprüft das Argument auf Wahrheit.

assertFalse()

Überprüft das Argument auf Unwahrheit.

assertEqual()

Überprüft, ob beide Argumente gleich sind.

assertNotEqual()

Überprüft, ob beide Argumente ungleich sind.

assertAlmostEqual()

Überprüft, dass zwei Zahlen fast gleich sind, nämlich bis zur siebten Stelle hinter dem Komma.

. Abb. 33.6 Aufruf des Unit Tests

288

Kapitel 33 · Testen

. Abb. 33.7 Implementierung einer Summenfunktion in Python

Natürlich kostet das Schreiben von Unit Tests viel Zeit. Es ist aber nötig, um auch beim Hinzufügen von neuem Code sicher zu sein, dass das bestehende Verhalten noch erhalten bleibt. Manchmal kann man bei Programmen beobachten, dass nach einem Update Verhalten, das immer einwandfrei funktioniert hat, plötzlich nicht mehr funktioniert. In der folgenden Stunde wollen wir uns mit dem Qualitätsmanagement und den Möglichkeiten bei der Softwareentwicklung näher befassen. Durch das Testen hast du aber schon den wichtigsten Baustein kennengelernt.

33

? Welche Typen von Fehlern werden üblicherweise unterschieden? Was gibt es beim manuellen Testen zu beachten? Welche Arten von Tests gibt es? Wie wird ein Unit Test in Python geschrieben? Was ist eine Assertion?

289

Qualitätsmanagement

© Springer Fachmedien Wiesbaden GmbH, ein Teil von Springer Nature 2024 T. Eichstädt und S. Spieker, 52 Stunden Informatik, https://doi.org/10.1007/978-3-658-41838-0_34

34

290

34

Kapitel 34 · Qualitätsmanagement

Qualitätsmanagement bezeichnet einen Aufgabenbereich und organisatorische Manahmen, die der Verbesserung der Qualität dienen. Das Management versucht, die Kosten der Qualitätskontrolle in ein sinnvolles Verhältnis zu dem Nutzen zu setzen. Bei Software wird höhere Qualität hauptsächlich durch Testen erreicht. Um die Qualitätskontrolle durch Tests durchgehend zu nutzen, hilft die Testautomatisierung. Die Qualität von Quellcode kann erhöht werden, indem sich Programmierer an Coding Standards halten, die in einem Styleguide festgehalten sind. Es gibt Programme, die die Einhaltung von Styleguides kontrollieren. Darüber hinaus kann eine statische Codeanalyse durchgeführt werden, um häufig gemachte Fehler zu finden. Der Build Server überwacht die Versionsverwaltung und lässt im Fall einer Änderung alle Tools laufen. Das ist sehr wichtig, um einen Überblick über den Gesamtzustand der Software zu bekommen und Fehler frühzeitig zu finden. Die Kosten, die eine Fehlerbeseitigung verursacht, steigen umso stärker an, je später sie stattfindet. Im Allgemeinen versteht man unter Qualitätsmanagement (QM) in der Wirtschaft einen Aufgabenbereich und organisatorische Maßnahmen, die der Verbesserung der Prozessqualität, der Arbeitsqualität und damit der Produktqualität dienen. Oft kann auch bei Firmen eine ISO-9001-Zertifizierung gesehen werden, bei der es um die Qualitätssicherung geht. Das bedeutet konkret, dass man sich mögliche Fehlerquellen überlegt und Gegenmaßnahmen implementiert. Bei einer Produktion kann das zum Beispiel ein nachgelagerter Schritt sein, der die Grundfunktion eines Produkts testet. In der Automobilindustrie wurde das auch bei einem so komplexen Objekt wie dem Auto schon früh erkannt. Zum Beispiel werden die Spaltmaße, etwa der Abstand zwischen Tür und dem Rest der Karosserie, zum Ende der Produktion überprüft, um sicherzustellen, dass die Türen korrekt eingebaut wurden. Natürlich werden auch alle Teile, bevor sie eingebaut werden, zum Teil intensiv getestet. Dies wird Qualitätskontrolle genannt. Das Management versucht nun, die Kosten der Qualitätskontrolle in ein sinnvolles Verhältnis zu ihrem Nutzen zu setzen und in einem ganzheitlichen Ansatz zu verstehen. Eine besondere Bedeutung bekommt das Qualitätsmanagement dort, wo Fehler großen Schaden anrichten können. Dies ist zum Beispiel beim Flugzeugbau der Fall, beispielsweise bei der Boeing 737 MAX, bei der zwei Flugzeugabstürze insgesamt 346 Leben gekostet haben. Die Abstürze waren auf einen Softwarefehler zurückzuführen, der trotz des intensiven Qualitätsmanagements in der Luftfahrtindustrie nicht gefunden wurde. Das Flugzeug durfte in der Folge nicht mehr starten, bis der Fehler beseitigt wurde und die Flugaufsichtsbehörde davon überzeugt war, dass ähnliche Fehler nicht nochmal auftreten können. Im Mai 2019 hat Boeing auch offiziell eingeräumt, dass es sich um einen Konzeptionsfehler in einer Software für die Maschinen vom Typ 737 MAX handelt. Übung Kannst du dir vorstellen, wie Qualitätsmanagement oder Qualitätskontrolle bei Software funktionieren könnte? Hast du schon mal von Codeanalyse gehört? Weißt du, was ein Build Server ist?

291 Kapitel 34 · Qualitätsmanagement

34

Im Gegensatz zu einem einfachen Produkt ist Software meist so komplex, dass nie alle Funktionen komplett unter allen Bedingungen getestet werden können. Was genau Testen ist und wie Software getestet wird, behandelt  Kap. 33 Testen. Getestete Software ist natürlich von besserer Qualität als ungetestete. Um die Qualitätskontrolle durch Tests durchgehend zu nutzen, kann das Testen automatisiert passieren. Bei regelmäßiger Ausführung wird das als Testautomatisierung bezeichnet. Ein hoher Grad an Automatisierung ist besonders dann nötig, wenn die Einsatzgebiete der Software besonders groß sind oder aber die möglichen Hardwarekomponenten eine große Variabilität haben. Das kann zum Beispiel bei der Android-App-Entwicklung beobachtet werden. Dort gibt es eine sehr große Anzahl an Handys, mit verschiedensten Auflösungen und Betriebssystemversionen, sodass die Möglichkeiten, wie die Oberfläche aussieht, sehr groß sind. Die Fläche, die einer Applikation auf einem sehr handlichen Smartphone zur Verfügung steht, ist viel kleiner als beispielsweise auf einem großen Tablet. Oft wird die Hardware bei den Tests virtualisiert (siehe  Kap. 26 Virtualisierung), sodass nur noch ein Smartphone-Emulator verwendet werden muss. Diese Tests können dann automatisiert in hoher Anzahl parallel für verschiedene Handymodelle getestet werden. Damit wird eine gleichbleibende Produktqualität für jedes Release erreicht. Es gibt noch weitere Möglichkeiten, die Qualität der Software zu verbessern, zum Beispiel indem man versucht, die Qualität des Quellcodes zu verbessern. Bei Teams, die aus mehreren Personen bestehen oder an denen vielleicht sogar mehrere Firmen beteiligt sind, hat sich herausgestellt, dass es hilfreich ist, sich an gewisse Coding Standards zu halten. Somit ist für jeden der Quellcode leichter zu lesen und nicht jeder Programmierer gestaltet die Quelltexte nach seinem Belieben. Wir erinnern uns: Wie in der Einleitung auch schon beschrieben wurde, gibt es in der Informatik nicht die eine richtige Lösung. Einheitliche technische und visuelle Aspekte werden in einem Styleguide festgehalten. Da ein Blatt Papier jedoch oft dazu führt, sich doch nicht immer an die Verabredung zu halten, gibt es genau dafür Programme, die die Einhaltung der Standards überprüfen. Im Java-Umfeld ist es das Programm CheckStyle, unter Python wird pyLint verwendet. Es wird in den Quellcodeeditoren eingebaut und unterkringelt Verstöße, sodass der Programmierer schon beim Schreiben auf Fehler aufmerksam gemacht wird. In Styleguides werden z. B. folgende Dinge geregelt: 5 Einrückungstiefen (Tabs oder Leerzeichen, 2 oder 4 Leerzeichen pro Tab) 5 Großoder Kleinschreibung von Variablen (z. B. laufVariable oder lauf_variable) 5 Einfache Fehler wie Verwendung einer Variablen, bevor sie das erste Mal zugewiesen wurde 5 Verwendung von globalen Variablen, da sie in großen Anwendungen fehlerträchtig sind 5 Zeilenlängen, um die Übersichtlichkeit zu erhalten 5 Anzahl der Zuweisungen pro Zeile

292

Kapitel 34 · Qualitätsmanagement

. Abb. 34.1 Nicht Style-konformer Quellcode im Editor

34

Und natürlich gibt es noch wesentlich mehr Regeln, die alle den Zweck haben, ein einheitliches Bild im Quellcode zu erzeugen. Bei der Verwendung eines Editors wie PyCharm, wie in . Abb. 34.1 zu sehen, gibt es rote Kringel unter den Stellen, die nicht Style-konform sind. Der Fehler liegt in der Einrückungstiefe der totalZuweisung. Die restlichen Kringel sind Folgefehler. Der grüne Kringel markiert lediglich einen Schreibfehler, da „Summe“ im deutschen Sprachgebrauch großgeschrieben wird. Falls alles in Ordnung ist, sieht der gleiche Teil aus wie in . Abb. 34.2. Doch es gibt noch bessere Programme, die sich den Programmablauf vorab ansehen und eine sogenannte statische Codeanalyse durchführen, um häufig gemachte Fehler zu finden. In diesem Bereich gibt es kostenlose (z. B. SonarQube [für sehr viele Programmiersprachen], PEP 8 [für Python]) und auch etliche kommerzielle Anbieter (z. B. Coverity, VeraCode). Die kommerziellen Anbieter behaupten, erheblich mehr Fehler zu finden und dadurch die zum Teil stolzen Preise wert zu sein. Wenn Software für ein Flugzeug oder eine Weltraummission geschrieben werden muss, ist das ganz sicher gerechtfertigt, für eine Webseite des kleinen Ortsvereins wahrscheinlich nicht. Diese Produktkategorie hilft aber auf jeden Fall Fehler zu vermeiden. Der zusätzliche Aufwand für den Entwickler wird bei der Verwendung beim Entwicklungsbeginn kaum Mehraufwände bedeuten, aber einige Fehler frühzeitig finden.

. Abb. 34.2 Style-konformer Quellcode im Editor

293 Kapitel 34 · Qualitätsmanagement

34

. Abb. 34.3 Fehlerkosten

Die Kosten, die eine Fehlerbeseitigung verursacht, steigen sehr stark an, je später sie stattfindet. Ziel des Qualitätsmanagements ist es, möglichst früh Fehler zu identifizieren, damit ihre Beseitigung möglichst günstig machbar ist. Die Grafik in . Abb. 34.3 zeigt anschaulich, wie groß der Aufwand in den einzelnen Entwicklungsphasen ist. Bei einem großen Softwareprojekt ist es wichtig, einen Überblick über die Qualität der Software zu haben, um abschätzen zu können, wie lange die Fehlersuche am Ende dauern sollte. Es gibt einige Metriken, die versuchen, diese messbar zu machen. Eine Metrik ist die Testabdeckung, die die Zeilen des Programmcodes angibt, die über Unit Tests getestet werden. Das Team oder das Management setzt ein Ziel, das erreicht werden soll. Bei testgetriebener Entwicklung sollte es kein Problem sein, für alles auch Tests zu schreiben, sodass dort hohe Prozentzahlen erreichbar sind. Oft sind Zielvorgaben von 80 % gut zu erreichen. Das bedeutet, dass von 100 Zeilen Programmcode 80 Zeilen bei Unit Tests durchlaufen werden. Wenn die Entwickler nun in jedem Arbeitsschritt noch alle qualitätssteigernden Tools verwenden müssen, erhöht das den Aufwand für jeden Einzelnen. Es ist zudem eine Fehlerquelle, denn wenn man vergisst, Tests dauernd laufen zu lassen, schleichen sich Fehler ein, die erst später wieder gefunden werden. Aus diesem Grund ist die Verwendung eines Build Servers sehr wichtig. Die Aufgabe des Build Servers besteht im Überwachen der Versionsverwaltung und im Fall einer Änderung im Laufenlassen aller Tools und automatisierten Tests. Im Fehlerfall oder auch, wenn verschiedene Metriken nicht erreicht werden, wird der zugehörige Entwickler benachrichtigt, sodass er sofort auf seinen Fehler aufmerksam gemacht werden kann. Es gibt so die Möglichkeit für die Teammitglieder, auch jederzeit einen Überblick über den Gesamtzustand der Software zu bekommen. Natürlich

294

34

Kapitel 34 · Qualitätsmanagement

kann das dann auch jeder andere, der Zugriff auf den Build Server hat. Es gibt in diesem Bereich mehrere Anbieter. Der Platzhirsch ist die Open-Source-Software Jenkins. Sie zeichnet sich durch einen schlanken Kern aus und einige tausend Plugins, die zur Erweiterung dienen. Für sehr viele Aufgabenstellungen haben sich schon Entwickler gefunden, die Plug-ins geschrieben haben, um Jenkins zu erweitern. Es gibt natürlich noch einige andere Lösungen, zum Beispiel die Microsoft-Lösung Azure DevOps, die in der Microsoft-Cloud verfügbar ist. Sie ist generell kostenfrei, die Infrastruktur muss jedoch monatlich bezahlt werden. Möglicherweise wird sie in den kommenden Jahren von GitHub verdrängt, auf dessen Basis GitHub Actions verfügbar sind. Als derzeit immer populärere Lösung ist GitLab zu sehen. Bei dieser Lösung wird die Versionsverwaltung Git um eine Build-Server-Lösung und etliche weitere Komponenten erweitert. Wir haben nun vor allem die technischen Möglichkeiten parallel zur Neuentwicklung genauer betrachtet. Sobald ein Produkt auf dem Markt ist, werden üblicherweise am Anfang sehr viele neue Fehler gemeldet, die es zu bewerten und zu lösen gilt. Die verwendeten Programme und Werkzeuge helfen natürlich auch bei dieser Aufgabe und ergänzen die Fehlerbeseitigung. Du hast bestimmt auch schon bemerkt, dass bei einem neuen Spiel direkt sehr große Aktualisierungen anfallen. Ein Beispiel ist das Spiel Cyberpunk 2077, das Ende 2020 veröffentlicht wurde. Es erhielt sehr gute Bewertungen, allerdings gab es auch heftige Kritik aufgrund einer Vielzahl an Mängeln. So ist der initiale Download für die PC-Version 70 GB groß gewesen, der am ersten Tag herausgekommene Patch dann jedoch noch einmal 43 GB. Sobald die erste Runde Patches bei einem Spiel draußen ist, läuft es deutlich besser und die nächsten Patches werden oft auch kleiner. Bei großen Anwendungen oder Spielen wird aus diesem Grund oft eine Betaversion angeboten, die vor dem offiziellen Release startet. Sie dient dazu, die frühen Fehler schon vor der öffentlichen Verfügbarkeit zu finden. Bei einem Betaprogramm kann ein Spiel oder Programm zwar sehr frühzeitig verwendet werden, aber die Wahrscheinlichkeit, dass Fehler auftreten, ist relativ groß. Wer sich daran beteiligt, arbeitet also als kostenloser Tester für die Entwickler, um ein bisschen früher das Spiel zu sehen. ? Warum ist Qualitätsmanagement notwendig? Wie lässt sich die Qualität von Software steigern? Was wird in einem Styleguide geregelt? Was ist die Aufgabe eines Build Servers? Was ist eine Betaversion?

295

Das relationale Modell

© Springer Fachmedien Wiesbaden GmbH, ein Teil von Springer Nature 2024 T. Eichstädt und S. Spieker, 52 Stunden Informatik, https://doi.org/10.1007/978-3-658-41838-0_35

35

296

35

Kapitel 35 · Das relationale Modell

Daten lassen sich so darstellen, dass Informationen aus ihnen gewonnen werden können. Dazu ist es hilfreich, Daten in einer formalen Struktur zu erfassen. Struktur ist eng verbunden mit der Frage, ob ein Computer die Daten lesen und interpretieren kann. Die meisten Daten sind unstrukturiert. Eine sehr wichtige Möglichkeit zur Strukturierung sind Tabellen. Wenn eine Tabelle alle Daten enthält, wird sie flache Tabelle genannt. Je gröer und komplexer die Datenmenge ist, desto wichtiger ist es, statt einer flachen Tabelle ein Datenmodell zu verwenden. Das wichtigste Datenmodell ist das relationale Modell. Es ist ein logisches Konzept, um Daten mithilfe von mehreren Tabellen zu beschreiben und gleichzeitig Redundanzen zu vermeiden. Jede einzelne Tabelle und deren Attribute werden durch ein Schema definiert. Die enthaltenen Datensätze können mit einem Primärschlüssel eindeutig identifiziert werden. Unter Normalisierung wird die Aufteilung der Attribute eines Schemas verstanden, mit dem Ziel, Redundanzen zu reduzieren. Informatik ist die Wissenschaft von der Verarbeitung von Informationen. Wir haben mittlerweile einiges über Informatik gelernt. Mit Informationen selbst haben wir uns noch kaum beschäftigt. Was sind Informationen eigentlich? Der Begriff hat verschiedene miteinander verwandte Bedeutungen. Eine Information kann das Wissen zu einem Thema oder die Weitergabe dieses Wissens oder den Inhalt einer Nachricht bezeichnen. Wir verwenden den Begriff oft gleichbedeutend mit Daten. Doch der Begriff Daten ist ebenfalls sehr weit gefasst (vergleiche mit Begriff Software). Daten können alles bezeichnen, was aus maschinell verarbeitbaren Zeichen zusammengesetzt ist. Informationen setzen voraus, dass Daten eine Bedeutung beinhalten. Die Zahlenfolge „11102018“ ist ein Beispiel für Daten. Weiß man, dass es sich um ein Geburtsdatum handelt, stellt die Zahlenfolge eine Information dar. Genau genommen die Information, dass jemand am 11. Oktober 2018 geboren ist. Um diese Information zu beschreiben, wäre möglicherweise die Erfassung der Daten „11.10.2018“ sinnvoller. In dieser Stunde beschäftigen wir uns damit, wie wir Daten so darstellen, dass sie möglichst viele Informationen enthalten. Dazu lernen wir ein Modell kennen, das uns hilft, Daten zu strukturieren. Werden Daten in einer formalen Struktur erfasst, handelt es sich um strukturierte Daten. In unserem Beispiel wäre das die Erfassung des Geburtsdatums als Datumsfeld anstatt als Zahlenfolge. Natürlich lässt sich die Idee der Strukturiertheit von Daten noch weiter fassen. Beispielsweise zu Informationen, die formatiert und in ein Datenmodell umgewandelt werden können. Die Frage lautet jedoch häufiger, ob die Daten einer Datei, Webseite oder Datenbank strukturiert sind. Wir wollen uns vorläufig auf die logische Struktur von Daten konzentrieren. Auf die verschiedenen Speicherformen gehen wir in den folgenden Stunden ein. Übung Welche Beispiele für strukturierte Daten fallen dir ein? Überlege, wo Daten in unstrukturierter Form vorliegen. Nenne jeweils mehrere Beispiele. Denkst du, es existieren insgesamt eher mehr strukturierte oder mehr unstrukturierte Daten?

297 Kapitel 35 · Das relationale Modell

35

. Tab. 35.1 Beispiele zur Strukturiertheit von Daten Beispiele für strukturierte Daten

Beispiele für unstrukturierte Daten

Baumdarstellung der Objekte eines HTMLDokuments

Textinhalt eines HTML-Dokuments

Stundenplan als CSV-Datei

Foto eines Stundenplans

Erfassung von Fehlerkosten im Qualitätsmanagement in einer Tabelle

Beschreibung von Fehlerkosten im Qualitätsmanagement als Text, Grafik, Audio- oder Videoaufnahme

Verschiedenen Schätzungen zufolge sind etwa 70–90 % aller Daten unstrukturiert. Das bringt erhebliche Herausforderungen mit sich, wenn mit diesen Daten gearbeitet werden muss. Die Notwendigkeit von Struktur wird sehr deutlich werden, wenn wir uns in dieser und den folgenden Stunden noch mehr mit Daten beschäftigen. Sie ist eng verbunden mit der Frage, ob ein Computer die Daten lesen und interpretieren kann (vergleiche  Kap. 5 Code). Nicht in allen Fällen gibt es eine eindeutige Antwort. Wie sieht es zum Beispiel mit einer Datei aus, die mithilfe von HTML-Tags strukturiert ist, während die Tags aber wiederum unstrukturierten Text oder Zahlen enthalten? Solche Fälle werden auch als semistrukturierte Daten bezeichnet. Ein paar klassische Beispiele zur Unterscheidung der Strukturiertheit finden sich in . Tab. 35.1. Ein Foto lässt sich problemlos auf einem Computer speichern und sogar bearbeiten (mehr dazu in  Kap. 39 Computergrafik). Allerdings liegen die Daten in unstrukturierter Form vor. Das heißt, es ist dem Computer nicht ohne weiteres möglich, die enthaltenen Informationen zu erkennen und weiterzuverarbeiten. Anders ist es, wenn wir Daten mithilfe eines Programms oder einer Programmiersprache strukturiert erfassen. Eine Möglichkeit zur Strukturierung, die wir in diesem Buch schon mehrfach gesehen haben, sind Tabellen. Die Tabellenform ist eine der ältesten Formen und die nach wie vor am meisten verbreitete Art, Daten zu strukturieren. Problematisch ist es, wenn große Datenmengen in einer einzigen Tabelle abgebildet sind. Wenn eine Tabelle alle Daten enthält, ohne auf andere Datenstrukturen zu verweisen, so wird dies flache Tabelle genannt. Je größer und komplexer die Datenmenge ist, desto wichtiger ist es, statt einer flachen Tabelle ein Datenmodell zu verwenden. Ein Datenmodell beschreibt die Struktur von Daten und deren Beziehung untereinander. In dieser Stunde beschäftigen wir uns mit dem wichtigsten, nämlich dem relationalen Datenmodell oder kurz relationalen Modell. Das relationale Modell ist ein logisches Konzept zur Beschreibung von Daten mithilfe von Relationen – was nichts anderes ist als Tabellen, wie wir gleich erkennen werden. Bevor wir uns das relationale Modell genauer ansehen, gehen wir zunächst ein einfaches Beispiel durch. Stellen wir uns vor, dass ein Lehrer mit den drei Schülern Emma, Maxim und Florian die 52 Stunden Informatik abhält. Der Lehrer möchte verfolgen, wann die Stunden stattfinden, wie lange sie dauern und wie die Schüler die einzelnen Stunden bewerten. Außerdem möchte der Lehrer Namen und Geburtsdatum der Schüler

298

Kapitel 35 · Das relationale Modell

erfassen und zu jeder Stunde den Titel und die Anzahl der Übungen, die in der Stunde vorkommen. Daraus erhofft er sich Rückschlüsse darauf, welches Thema und wie viele Übungen für den Schüler bzw. dessen Altersklasse angemessen sind. Der Lehrer entscheidet sich, die Daten in einer Tabelle zu erfassen, die aussieht wie in . Tab. 35.2 dargestellt. Übung Kommen dir die Daten aus . Tab. 35.2 bekannt vor? In  Kap. 5 Code hatten wir vorgeschlagen, Datum, Dauer und Bewertung zu den einzelnen Stunden zu sammeln. Hast du die Daten ähnlich erfasst? Falls du es noch nicht getan hast, ist jetzt eine gute Gelegenheit, dies nachzuholen.

Die vorgeschlagene flache Tabelle ist eine strukturierte Form der Datenerfassung. Die Spalten beschreiben jeweils ein Attribut, also ein Merkmal der Daten. In jeder Zeile steht ein Datensatz oder anders ausgedrückt eine fest definierte Anzahl an Einträgen, die den Attributen entsprechen. Die Gesamtheit von Attributen und Datensätzen wird Relation genannt. Und die übliche Darstellung dieser Relationen ist: eine Tabelle. Wir machen es uns einfach und verwenden in Zukunft den leichter verständlichen Begriff Tabelle, anstatt von einer Relation zu sprechen. Die Tabelle lässt sich formal durch ihre Attribute beschreiben. So eine Beschreibung wird Schema oder auch Datenschema oder Relationsschema genannt.

Stundennummer, Titel der Stunde, Anzahl der Übungen in der Stunde, Datum, Dauer in Minuten, Vorname des Schülers, Nachname des Schülers, Geburtsdatum des Schülers, Bewertung

35

Übung Enthält die Tabelle „nur“ Daten oder auch Informationen? Sind die Einträge in der Tabelle für einen Computer eindeutig interpretierbar? Wenn du an  Kap. 19 Binärsystem & Datentypen denkst, kommst du vielleicht darauf, wie sich die Struktur in der Tabelle noch eindeutiger beschreiben lässt.

Die Tabelle enthält viele Informationen. Zum Beispiel können wir gleich aus dem ersten Datensatz die Information ablesen, dass sich Emma Meier am 02.12.2023 für die Dauer von 54 min mit dem Kapitel Informatik lernen beschäftigt hat und ihr diese Stunde recht gut gefiel. Zumindest dann, wenn der Bewertung Schulnoten zugrunde liegen. Warum ist die Ableitung dieser Information möglich? Neben sinnvollen Einträgen ist für eine Tabelle die Aussagekraft ihrer Attribute maßgeblich. Generell sind gute Bezeichnungen formaler Elemente in der Informatik hilfreich. Aber reicht das aus? Kann auch ein Computer dieselbe Information interpretieren?

Informatik lernen

Informatik lernen

Suchmaschinen 5



1

1

2





6

6

6

Informatik lernen

1

Anzahl Übungen in der Stunde

Titel der Stunde

Stundennummer

. Tab. 35.2 Stundenerfassung



09.12.2023

03.12.2023

02.12.2023

02.12.2023

Datum



62

50

54

54

Dauer in Minuten



Emma

Florian

Maxim

Emma

Vorname des Schülers



Meier

Perez

Schuhmacher

Meier

Nachname des Schülers



05.03.2006

15.07.2003

03.12.2006

05.03.2006

Geburtsdatum des Schülers



2

4

1

2

Bewertung

Kapitel 35 · Das relationale Modell 299

35

300

Kapitel 35 · Das relationale Modell

Damit dies möglich ist, empfiehlt es sich, auch die Datentypen der Einträge formal zu beschreiben. Die vollständige Beschreibung einer Tabelle enthält in der Regel ebenfalls eine Tabellenbezeichnung und zu jedem Attribut einen Datentyp.

Stundenerfassung = ( Stundennummer : Integer, Titel der Stunde : String, Anzahl der Übungen in der Stunde : Integer, Datum : Date, Dauer in Minuten : Integer, Vorname des Schülers : String, Nachname des Schülers : String, Geburtsdatum des Schülers : Date, Bewertung: Integer )

Nun haben wir eine sehr strukturierte Art der Datenerfassung gefunden. Möglicherweise die beste für den Zweck der Daten. Das ist aber nur so, weil in unserem Beispiel die Datenmenge sehr überschaubar ist. Oft ist das Speichern in einer einzigen Tabelle keine Option, ganz einfach weil die Datenmengen dafür zu groß werden. Stell dir vor, dass ein Lehrer mehrere Klassen mithilfe von mehreren Büchern unterrichtet. Dann wird eine Tabelle schnell zu unübersichtlich. Oder ein extremeres Beispiel: Amazon muss die Daten aller seiner im Onlineshop angebotenen Artikel mitsamt ihren Beschreibungen, Preisen und Bewertungen verwalten. Eine einzelne Tabelle ist dafür absolut ungeeignet. Übung

35

Wie könnte die Aufsplittung der Tabelle Stundenerfassung (. Tab. 35.2) in mehrere kleineren Tabellen aussehen? Mache einen Vorschlag.

Ein konkreter Vorschlag könnte sein, die Daten des Lehrers in drei Tabellen aufzusplitten: Stunden (. Tab. 35.3), Schüler (. Tab. 35.4), Stundenbewertungen (. Tab. 35.5). Die Tabelle Stunden ist sehr übersichtlich. Sie muss nur ein Mal erstellt werden, bevor der Unterricht überhaupt beginnt. Die Tabelle Schüler ist noch kürzer.

. Tab. 35.3 Stunden Stundennummer

Titel

Anzahl Übungen

1

Informatik lernen

6

2

Suchmaschinen

5







35

301 Kapitel 35 · Das relationale Modell

. Tab. 35.4 Schüler Schülerkennung

Vorname

Nachname

Geburtsdatum

EmMe06

Emma

Meier

05.03.2006

MaSc06

Maxim

Schuhmacher

03.12.2006

FlPe03

Florian

Perez

15.07.2003

. Tab. 35.5 Stundenbewertungen Stundennummer

Schülerkennung

Datum

Dauer in Minuten

Bewertung

1

EmMe06

02.12.2023

54

2

1

MaSc06

02.12.2023

54

1

1

FlPe03

03.12.2023

50

4

2

EmMe06

09.12.2023

62

2











Sie muss nur in Ausnahmefällen erweitert werden (wenn ein neuer Schüler dazukommt). Die Tabelle Stundenbewertungen ist die Einzige, die kontinuierlich erweitert wird. Der allergrößte Unterschied der neuen Aufteilung der Daten ist aber, dass Stunden- und Schülerdaten jeweils nur noch ein Mal erfasst werden. Allgemein gesprochen ist es in der Informatik sinnvoll, Redundanzen zu vermeiden. Eine Redundanz ist das mehrfache Auftreten derselben Daten oder desselben Codes. Übung Vergleiche die neue Lösung nochmals mit der flachen Tabelle. Welche Vor- und welche Nachteile hat die Aufsplittung in mehrere Tabellen? Denke daran, was passiert, wenn du neue Datensätze einträgst oder bestehende Daten änderst.

Die neue Einteilung der Daten hat viele Vorteile. Dadurch, dass Stunden und Schüler nicht mehr mehrfach aufgeführt existieren, gibt es weniger redundante Einträge. Das bedeutet: 5 Das Eintragen neuer Datensätze wird in der reduzierten Form deutlich schneller gehen. 5 Suchen nach einem bestimmten Eintrag werden einfacher und schneller. 5 Neben Übersichtlichkeit und Zeitersparnis ist oft auch das Vermeiden von Fehlern ein wichtiger Aspekt. Wenn immer wieder dieselben Daten eingetragen werden, schleichen sich gern Fehler ein. Das wiederum erschwert die Auswertung der Daten.

302

Kapitel 35 · Das relationale Modell

5 Änderungen und Erweiterungen können deutlich unkomplizierter vorgenommen werden. Möchte der Lehrer beispielsweise zusätzlich E-Mail-Adressen seiner Schüler erfassen, muss er zu dem neuen Attribut in der Tabelle Schüler nur drei neue Werte eintragen, anstatt jeden einzelnen Datensatz zu verändern. 5 Die drei Tabellen werden insgesamt deutlich weniger Einträge und damit weniger Speicherplatz benötigen als eine große Tabelle. (Zumindest dann, wenn die Tabelle bis zur Stunde 52 fortgesetzt wird.)

35

Natürlich hat die Aufteilung der Tabelle Stundenerfassung nicht nur Vorteile. Ein Nachteil ist, dass die Analysemöglichkeit eingeschränkt wird, wenn Daten über mehrere Tabellen verteilt sind. Das wird klar, wenn man versucht, die Frage zu beantworten, welche Beziehung zwischen Anzahl der Übungen in einer Stunde und deren Bewertung besteht. Trotzdem ist es wichtig, sich bewusst zu sein, wie viele Vorteile eine sinnvolle Aufteilung von Daten bieten kann. Ganz besonders dann, wenn es sich um schnell wachsende Datenmengen handelt. Wir haben eben zwei wichtige Konzepte zur Strukturierung von Tabellen kennengelernt: Wir haben unsere Ausgangstabelle normalisiert und die neuen Tabellen mit einem Primärschlüssel versehen. Unter Normalisierung versteht man die Aufteilung der Attribute eines Schemas mit dem Ziel, Redundanzen zu reduzieren. Also genau das, was wir mit der Ausgangstabelle getan haben. Der Primärschlüssel erlaubt die eindeutige Identifizierung von Datensätzen innerhalb einer Tabelle. Die Schülerkennung ist ein solcher Primärschlüssel. In der Stundenbewertung wird mithilfe der Schülerkennung auf einen Schüler verwiesen. Ein Primärschlüssel kann aus mehreren Attributen bestehen. Es ist aber vorteilhaft, wenn in jeder Tabelle ein Attribut existiert, das als Primärschlüssel verwendet werden kann. Auch der Vorname hätte diese Funktion erfüllen können, da kein Vorname doppelt vorkommt. Es ist aber denkbar, dass der Lehrer in Zukunft einen neuen Schüler mit einem bereits existierenden Vornamen unterrichten möchte. Weil die Eindeutigkeit bei der Identifizierung von Datensätzen so wichtig ist, ist es oft sicherer, ein neues Attribut einzuführen. Die Schülerkennung hat neben der Eindeutigkeit noch einen weiteren Vorteil. Durch sie kann nämlich ein Schüler eindeutig identifiziert werden, ohne dass sie Aufschluss über personenbezogene Daten gibt. Sie kann also als Mittel zur Anonymisierung dienen (vergleiche  Kap. 13 Datenschutz). Zum Beispiel könnte der Lehrer die Tabelle Stundenbewertungen eher mit Außenstehenden teilen, da sie keine direkten Daten seiner Schüler enthält. Die Kennung als Kombination von Zeichen aus anderen Einträgen war nur ein Beispiel für ein neues Attribut. Sehr oft wird als Primärschlüssel eine fortlaufende Nummer eingefügt. Für die Stunden gab es solch ein Attribut bereits, das sich natürlicherweise als Primärschlüssel anbietet, die Stundennummer. Beachte, dass durch die neuen Tabellen trotz der geringeren Größe keine Informationen verloren gehen. Das wird möglich durch Verweise zwischen den Tabellen. Der Primärschlüssel ermöglicht diesen eindeutigen Verweis. Jeder Datensatz in der Tabelle Stundenbewertung verweist auf einen Datensatz in der Tabelle Informatikstunde und auf einen Datensatz in der Tabelle Schüler. Ein Primärschlüssel, der zum Verweis in einer „fremden“ Tabelle dient, wird Fremdschlüssel genannt. Die Verbindung lässt sich in beide Richtungen darstellen. Das heißt, eine Informatikstunde

303 Kapitel 35 · Das relationale Modell

35

kann mehreren Stundenbewertungen zugeordnet sein. Auch ein Schüler kann in mehreren Stundenbewertungen zu finden sein. Die Wahl der Primärschlüssel und deren Verwendung zum Verweis zwischen Modellen lässt sich formal festlegen. Die Darstellung dieser Tabellenbeziehungen erfolgt meist mithilfe eines EntityRelationship-Diagramms, für unser Beispiel siehe . Abb. 35.1. Damit haben wir das relationale Modell für das Beispiel der Stundenbewertungen fertiggestellt. ? Was ist der Unterschied zwischen Daten und Informationen? Was bedeutet es, Daten strukturiert zu speichern? Wie lässt sich eine Tabelle formal beschreiben? Welche Vorteile hat es, bei der Datenspeicherung Redundanzen zu vermeiden? Was sind Primärschlüssel und Fremdschlüssel?

. Abb. 35.1 Entity-Relationship-Diagramm

305

SQL

© Springer Fachmedien Wiesbaden GmbH, ein Teil von Springer Nature 2024 T. Eichstädt und S. Spieker, 52 Stunden Informatik, https://doi.org/10.1007/978-3-658-41838-0_36

36

306

Kapitel 36 · SQL

Eine Datenbank ist ein elektronisches System, das speziell zur Verwaltung von Daten konzipiert wurde. Um mit einer relationalen Datenbank zu kommunizieren, wird SQL verwendet. SQL-Anfragen enthalten immer die Schlüsselwörter SELECT und FROM, um die auszugebenden Attribute und die angefragten Datenbanktabellen anzugeben. Es gibt zahlreiche weitere optionale Schlüsselwörter. SQL erlaubt es, Datenzugriffe maschinell und optimiert durchzuführen. Eine der Herausforderungen beim Umgang mit Datenbanken sind leere Einträge. SQL kann auch für das Anlegen und Ändern von Tabellen und Einträgen einer Datenbank verwendet werden, wenn die nötigen Berechtigungen vorliegen. Ein Datenbankmanagementsystem verwaltet und steuert die Datenbank und kontrolliert alle Datenbankzugriffe. Dazu sind auch Metadaten notwendig, die Informationen über andere Daten enthalten wie Tabellennamen, Datentypen, Angaben von Primärschlüsseln und vieles mehr. Oracle, MySQL und Microsoft SQL Server sind bekannte relationale DBMS. Wir kennen nun ein Modell, wie auch große Datenmengen strukturiert werden können. Aber wie werden die Daten tatsächlich gespeichert? Eine Datenbank, kurz DB, ist eine elektronische Sammlung von strukturierten Daten. In sehr vielen Fällen empfiehlt es sich für den Informatiker, eine Datenbank zu verwenden. Besonders dann, wenn Programme automatisiert Daten speichern und zu einem späteren Zeitpunkt wieder lesen sollen. Um mit einer Datenbank kommunizieren zu können, benötigen wir eine formale Sprache. Die am weitesten verbreitete Datenbanksprache ist SQL. SQL steht für Structured Query Language (strukturierte Abfragesprache). Sie wird in der Regel immer dann verwendet, wenn eine relationale Datenbank im Einsatz ist. Also dann, wenn die Datenbank Tabellen zur Strukturierung ihrer Daten verwendet. Übung

36

Wir sehen uns direkt zum Einstieg an, wie wir Daten, die in einer Datenbank gespeichert sind, mit SQL abrufen können. Wir benutzen dazu die Terra-Datenbank, die der Freistaat Sachsen für Übungszwecke zur Verfügung stellt. Öffne die Webseite 7 https://www.sachsen.schule/~terra2014/sql_abfragen.php und gib „SELECT * FROM LAND“ in das Eingabefenster ein und klicke auf „Anfrage“. Du hast soeben Daten aus einer Datenbank abgerufen und siehst unter der Anfrage das Ergebnis (vergleiche . Abb. 36.1).

Wenn wir mithilfe von SQL-Daten anfragen, müssen wir angeben, welche Datenbanktabellen gemeint sind. Im Beispiel war das die Tabelle „LAND“. Außerdem ist wichtig, welche Attribute uns interessieren. Das Sternchen „*“ ist gleichbedeutend mit der Auflistung aller Attribute. Wie wir das aus  Kap. 35 Das relationale Modell kennen, sind die Attribute die Spalten der Tabelle. Es wurden also alle Datensätze mit allen Einträgen ausgegeben, die in der Tabelle LAND vorhanden sind.

307 Kapitel 36 · SQL

36

. Abb. 36.1 SQL-Anfrage Terra-Datenbank

5 5 5 5

SQL-Anfragen sind nach dem folgenden Muster aufgebaut: SELECT – Liste der auszugebenden Attribute FROM – Liste der Tabellen, in denen die Daten vorliegen WHERE (optional) – Bedingung, die die Datensätze erfüllen müssen ORDER BY (optional) – Attribute, nach denen die Datensätze sortiert werden

SQL-Anfragen müssen immer die Schlüsselwörter SELECT und FROM enthalten. Außerdem gibt es optionale Schlüsselwörter wie WHERE, ORDER BY und einige mehr. Innerhalb einer Liste werden mehrere Elemente mit einem Komma getrennt. Bei einer Bedingung ist die logische Verknüpfung mehrerer Bedingungen mit AND oder OR möglich. Wir wollen noch ein paar weitere SQL-Anfragen ausführen. Dazu ist es hilfreich, die Struktur der Terra-Datenbank zu kennen. Auch sie ist auf der Webseite beschrieben.

308

Kapitel 36 · SQL

Übung Öffne den Reiter Struktur ( 7 https://www.sachsen.schule/~terra2014/terra-struktur. php) und sieh dir an, welche Tabellen und Attribute in der Datenbank vorhanden sind. Führe nun die Anfrage „SELECT ST_NAME, L_ID, EINWOHNER FROM STADT“ aus, um Daten zu in der Datenbank erfassten Städten anzeigen zu lassen. Welches Ergebnis erwartest du bei der Anfrage „SELECT ST_NAME, L_ID, EINWOHNER FROM STADT WHERE L_ID=“D“ “? Beachte die Anführungszeichen bei der WHERE-Angabe. Wie alle formalen Sprachen folgt SQL einer fixen Syntax. Lasse die Anführungszeichen bei der Anfrage weg und sieh dir den Fehler an, der dann auftritt (siehe . Abb. 36.2). Ein ähnlicher Fehler erscheint, wenn du den Namen eines Attributes verwendest, das nicht existiert (siehe . Abb. 36.3). Wie muss die Anfrage lauten, wenn du eine Sortierung nach Einwohnerzahl sehen möchtest?

Wie wir gesehen haben, können wir mit SQL nicht nur ganze Tabellen anfragen. Es ist auch möglich, ganz bestimmte Datensätze auf eine bestimmte Art und Weise anzufragen und darzustellen. WHERE und ORDER BY sind dazu zwei häufig gebrauchte Möglichkeiten. Solche SQL-Anfragen können von Menschen ausgeführt werden. Noch häufiger kommt es aber vor, dass Webseiten oder Programme SQL verwenden. Das passiert meist dann, wenn im Hintergrund die richtigen Informationen geladen werden müssen. Sehen wir uns ein einfaches Beispiel an.

36

. Abb. 36.2 SQL-Anfrage mit fehlerhafter Syntax

. Abb. 36.3 SQL-Anfrage mit fehlerhaftem Attribut

309 Kapitel 36 · SQL

36

Übung Vielleicht kennst du das Nachrichtenportal „heise.de“. Ein Service ist die Bereitstellung von Artikeln über einen sogenannten „Permalink“. Also eine URL, die sich nicht mehr ändert. Ein solcher Permalink ist die Seite „ 7 https://www.heise.de/-4727482. html“. Was meinst du, was die Zahl 4727482 bedeutet? Warum steht dort überhaupt eine Zahl und nicht etwa „25-Jahre-MySQL“?

Professionelle Webseiten und Programme verwenden im Hintergrund fast immer eine oder sogar mehrere Datenbanken. Natürlich lassen sich Daten anstatt in einer Datenbank auch in Dateien speichern. Wir kennen mit CSV ein Dateiformat, das Tabellen ähnlich wie relationale Datenbanken abbilden kann. Es gibt noch zahlreiche weitere solcher Formate (siehe  Kap. 38 Datenformate). Bestimmt ist eines dabei, das sich gut für Nachrichtenartikel eignet. Dennoch gibt es gute Gründe, eine Datenbank zu verwenden. Denn Dateien stoßen schnell an ihre Grenzen, wenn es um Geschwindigkeit und Sicherheit beim Zugriff durch mehrere Benutzer geht. Jeder der einmal versucht hat eine Datei zu öffnen, die bereits ein anderer Benutzer geöffnet hat (zum Beispiel auf einem weiteren PC im selben Netzwerk) kennt dieses Problem. Meist erscheint dann eine Warnung des Betriebssystems. Es wird aufgefordert zu warten oder gefragt, ob die Datei schreibgeschützt geöffnet werden soll. Dieses Verhalten ist bei einem Nachrichtenportal natürlich undenkbar. Hunderte oder tausende Personen möchten denselben Artikel gleichzeitig lesen. In solchen Fällen ist es wichtig, Datenzugriffe möglichst direkt und schnell abzuhandeln. Am besten parallel, also gleichzeitig. Genau dafür eignet sich SQL. Die Verwendung von SQL erlaubt es, Datenzugriffe maschinell und optimiert durchzuführen. Nicht selten erfolgt die Entwicklung von SQL-Befehlen in zwei separaten Schritten. Zunächst kommt es darauf an, dass die Befehle das richtige Ergebnis erzielen. Dann erfolgt eine Optimierung der Zugriffsgeschwindigkeit. Das heißt, die Befehle oder sogar die Struktur der Datenbank werden so umgeschrieben, dass häufig ausgeführte Anfragen möglichst schnell durchgeführt werden können. Natürlich gibt es dabei auch ein paar Fallstricke zu beachten. Ein mögliches Problem sehen wir uns in der nächsten Übung an. Übung Die Tabelle BERG beinhaltet Daten zu Bergen und die Jahreszahl, wann diese Berge erstmals bestiegen wurden. Sieh dir die Tabelle an. Versuche mithilfe von SQLAnfragen die folgenden Fragen zu beantworten: Welcher Berg, der über 8000 m hoch ist, wurde als Erstes bestiegen? Welcher Berg, der über 7000 m hoch ist, wurde als Erstes bestiegen? Welcher Berg, der über 6000 m hoch ist, wurde als Erstes bestiegen?

Die Aufgabe lässt sich mit den bereits bekannten SQL-Elementen lösen. Zum Beispiel durch eine geordnete Anzeige der relevanten Auswahl. Alternativ bietet SQL

310

Kapitel 36 · SQL

auch die Funktionen MIN und MAX, um tatsächlich nur den niedrigsten oder höchsten Wert einer Datenauswahl auszugeben (siehe . Abb. 36.4). Diese Auswertungen sind möglich, da es sich bei Höhe und Jahr um Attribute mit numerischen Werten handelt. Wer genau hingesehen hat, dem ist aufgefallen, dass einige Einträge in der Tabelle leer sind. Vermutlich kann bei manchen Bergen nicht mehr festgestellt werden, wann die erste Besteigung stattfand. Die Frage nach der ersten Besteigung eines Berges über 6000 m Höhe kann mit der MIN-Funktion beantwortet werden (vergleiche . Abb. 36.5). Die Datensätze mit leeren Einträgen werden dann ignoriert. Dieses (sinnvolle) Verhalten täuscht darüber hinweg, dass Daten zur vollständigen Auswertung fehlen. Früher oder später tauchen in fast allen Datenbanken solche leeren Einträge auf. Das kann an der Datenerfassung liegen oder dadurch geschehen, dass Attribute nachträglich eingefügt werden. Unvollständige Datensätze sind generell nicht erstrebenswert. Manchmal werden unbekannte Werte daher mit einem bestimmten vorher festgelegten Wert ersetzt, um leere Einträge zu vermeiden, etwa mit einer Null. In unserem Beispiel wäre das aber gefährlich. Ein Nutzer könnte dann bei einer (maschinellen) Auswertung das Jahr Null erhalten und wüsste nicht, ob es sich um einen Hinweis auf fehlende Werte oder ein echtes Ergebnis handelt.

. Abb. 36.4 SQL-Anfrage mit MIN-Funktion

36

. Abb. 36.5 Datensätze mit fehlenden Einträgen

311 Kapitel 36 · SQL

36

Bisher haben wir SQL nur verwendet, um bestehende Daten anzufragen. SQL wird ebenso zum Schreiben in Datenbanken verwendet. Angenommen, wir möchten unseren Datenbestand bereinigen. Dazu haben wir recherchiert, dass der Berg Aconcagua erstmals im Jahr 1900 bestiegen wurde. Nun möchten wir den korrekten Wert in die Datenbank eintragen. Der entsprechende Befehl lautet: „UPDATE BERG SET JAHR=1900 WHERE B_NAME=’Aconcagua’ “. Der Wert für das Attribut „jahr“ im Datensatz mit dem Namen des Berges „Aconcagua“ soll also auf „1900“ gesetzt werden. Das ist bei der online zur Verfügung gestellten SQLEingabe der Terra-Datenbank nicht möglich (siehe . Abb. 36.6). Als Besucher der Webseite sind wir nicht berechtigt Änderungen vorzunehmen. Das ist auch gut so. Andernfalls könnte schnell Chaos in der Datenbank entstehen. Wir haben nun bereits verschiedene Fehlermeldungen gesehen, die ausgegeben wurden, weil SQL-Befehle nicht wie gewünscht ausgeführt werden konnten. Wer überprüft eigentlich die SQL-Befehle auf Korrektheit, führt sie aus und liefert das Ergebnis bzw. eine Fehlermeldung zurück? Tatsächlich tut auch das die Datenbank. Wobei jetzt nicht mehr die Datenbank im engeren Sinne gemeint ist. Denn wenn von einer Datenbank gesprochen wird, können zwei Dinge gemeint sein. Erstens die Datenbank (DB) selbst, also der eigentliche Datenspeicher. Und zweitens das Datenbankmanagementsystem (DBMS). Das Datenbankmanagementsystem ist eine Verwaltungssoftware, die die Datenbank steuert und alle Datenbankzugriffe kontrolliert. Ein Benutzer oder eine Applikation greifen also tatsächlich nicht auf die Datenbank direkt zu, sondern auf ein durch das DBMS bereitgestelltes Interface (vergleiche  Kap. 25 APIs (mit Python)). Der Zugriff ist in . Abb. 36.7 dargestellt. Ohne DBMS sind Datenbanken kaum von Nutzen. Daher ist meist beides gemeint, wenn von einer Datenbank die Rede ist. Nachdem wir nun wissen, dass ein DBMS existiert und die Datenbankzugriffe steuert, ist eine weitere wichtige Erkenntnis, dass jede Datenbank Metadaten enthält. Metadaten sind strukturierte Daten, die Informationen über andere Daten enthalten. Zum Beispiel das Schema, wie wir es in  Kap. 35 Das relationale Modell gesehen haben. Enthalten sind die Namen von Tabellen, Informationen zu Attributen, Angaben von Primärschlüsseln und vieles mehr. Neben der Speicherung des eigentlichen Datenbestands übernimmt das DBMS auch die Verwaltung genau dieser Metadaten. Das heißt, über SQL-Befehle werden nicht nur Dateneinträge abgerufen und geschrieben, sondern auch Metadaten. Sogar neue Tabellen werden über SQL angelegt. Und jedes Mal ist das DBMS involviert.

. Abb. 36.6 Unerlaubtes Schreiben in die Terra-Datenbank

312

Kapitel 36 · SQL

. Abb. 36.7 Datenbank und Datenbankmanagementsystem

Übung Sieh dir die Ergebnisse deiner letzten SQL-Abfragen nochmals an. Kannst du dir vorstellen, welche Prüfungen das DBMS vor der eigentlichen Auswertung vorgenommen hat? Welche Metadaten waren dazu notwendig? Sogar der Name des DBMS versteckt sich in den Fehlermeldungen…

36

In . Abb. 36.8 sehen wir, welche Attribute und Datentypen die Tabelle Berg enthält. Auch diese Metainformationen stecken in der Datenbank und können angefragt werden. Wie wir sehen, hat die Höhe den Datentyp Double. Wir können sie daher numerisch eingrenzen. Wenn nötig auch mithilfe von Nachkommastellen. Die Jahreszahl hat den Datentyp Integer, den wir minimieren können. Der Name des Berges besteht aus maximal 20 Zeichen. Längere Namen brauchen wir nicht in der Ausgabe zu erwarten, da sie in der Datenbank gar nicht gespeichert werden können. Solche Metadaten sind sehr wichtig. Sie entscheiden über Funktionalität, aber auch über nichtfunktionale Merkmale der Datenbank, etwa die benötigte Menge an Speicherplatz.

313 Kapitel 36 · SQL

36

. Abb. 36.8 Anfrage von Metadaten der Terra-Datenbank . Tab. 36.1 Ranking von DBMS Rang

Datenbankmanagementsystem

Typ

1.

Oracle

Relational

2.

MySQL

Relational

3.

Microsoft SQL Server

Relational

4.

PostreSQL

Relational

5.

MongoDB

Dokumentenorientiert

Wie wir bereits wissen, sind relationale Datenbanken, die mittels SQL angesprochen werden können, in den meisten Fällen die beste Wahl. Dementsprechend sind auch relationale Datenbankmanagementsysteme (RDBMS) am weitesten verbreitet. Die fünf populärsten DBMS sind in . Tab. 36.1 aufgelistet. Oracle und Microsoft SQL Server sind kommerziell sehr erfolgreiche proprietäre RDBMS. PostgreSQL ist ein freies RDBMS. MySQL ist ein proprietäres RDBMS, das sowohl als Open Source als auch als kommerzielle Version für Unternehmen angeboten wird. MySQL ist kostenlos verfügbar und vergleichsweise einfach zu bedienen.

314

Kapitel 36 · SQL

Deshalb und weil die Terra-Datenbank als MySQL-Variante vorliegt, werden wir uns im weiteren Verlauf der Stunde mit MySQL vertraut machen. Erst an fünfter Stelle der Tabelle folgt mit MongoDB eine dokumentenorientierte Datenbank. Auch solche Datenbanken, die kein relationales Schema verwenden, benötigen Metadaten und ein DBMS. In einer MongoDB können beliebige Daten als JSON abgelegt werden. Ein großer Vorteil ist der Verzicht auf die Definition von Tabellenstrukturen. Es ist dann allerdings nicht mehr möglich, mit den bereits bekannten SQL-Befehlen Abfragen gegen eine MongoDB auszuführen. Damit ist es etwas aufwendiger eine MongoDB anstelle einer relationalen Datenbank zu verwenden, falls vor allem strukturierte Daten verarbeitet werden. >

Das Ranking in . Tab. 36.1 stammt von der Webseite 7 https://db-engines. com/de/ mit Stand von Mai 2023. Die Webseite beinhaltet auch eine detaillierte Auflistung weiterer DBMS und eine Enzyklopädie mit wichtigen Begriffen zu DBMS.

Übung Wenn du Interesse hast, dich weiter mit Datenbanken zu beschäftigen, installiere MySQL. Eine Beschreibung findest du im  Appendix: Installation von MySQL. Du kannst sogar neue Datenbanken anlegen. Verwende zum Beispiel das Schema aus . Abb. 35.1 und entsprechende Daten zur Bewertung von Stunden. Trage die vorgeschlagenen Daten mittels SQL ein und überlege dir mögliche Abfragen und teste diese.

SQL ist ein Standardwerkzeug zur Arbeit mit Daten. Es gibt noch andere wichtige Sprachelemente, wie etwa JOIN, um Daten aus mehreren Tabellen zusammenzufügen. Weitere Übungen finden sich auch auf der Seite zur Terra-Datenbank.

36

? Wofür steht SQL? Welche Schlüsselwörter sind in SQL-Anfragen enthalten? Welche Vorteile hat der Datenzugriff mit SQL? Welche Aufgaben übernimmt ein DBMS? Was sind Beispiele für Metadaten? Was sind bekannte DBMS?

315

Bezahlsysteme

© Springer Fachmedien Wiesbaden GmbH, ein Teil von Springer Nature 2024 T. Eichstädt und S. Spieker, 52 Stunden Informatik, https://doi.org/10.1007/978-3-658-41838-0_37

37

316

Kapitel 37 · Bezahlsysteme

Onlinebezahlsysteme werden durch die Verlagerung von Geschäften in das Internet begünstigt. Beim kontaktlosen Bezahlen mit einer Bankkarte kommt die NFC-Technik zum Einsatz. Die gleiche Technik findet sich heute aber auch in immer mehr Smartphones und sogar in Smartwatches. Seit 2018 gibt es das Bezahlsystem Google Pay in Deutschland. Die Teilnahme ist entweder über PayPal oder über Kredit- und Debitkarten möglich. Die App ist kostenlos. Der Kunde bezahlt Google auch in diesem Fall vor allem mit seinen Daten. Das Pendant für iPhones ist Apple Pay. In den Anfangszeiten des Internets waren Kreditkarten die einzige Möglichkeit zum Onlineshopping. Heute ist PayPal ein beliebter Internetbezahldienst, der als Zwischenhändler fungiert. Dieser erspart dem Kunden die Preisgabe seiner Kontonummer und ermöglicht auch ein sofortiges Bezahlen ohne Wartezeit. Ein völlig anderes Bezahlsystem sind Kryptowährungen, wie Bitcoin, die auf der Blockchain-Technologie basiert. Unter dem Begriff Bezahlsystem werden alle Möglichkeiten zusammengefasst, eine Zahlung entgegenzunehmen bzw. zu leisten. Dementsprechend gibt es also Offlinebezahlsysteme (z. B. im stationären Handel) und auch Onlinebezahlsysteme. Das bekannteste Offlinebezahlsystem ist das Bargeld, mit dem immer noch der größte Teil der Bezahlvorgänge abgewickelt wird. Aus den Daten der Bundesbank in . Tab. 37.1 ist zu sehen, dass andere Bezahlverfahren aber deutlich aufholen. Dies ist natürlich auch der Verlagerung von Geschäften in das Internet geschuldet. Aber auch im stationären Handel gibt es einige Verfahren, die immer beliebter werden. Besonders die kontaktlosen Bezahlverfahren, obwohl noch relativ neu auf dem Markt, finden immer breiter Verwendung in Deutschland. In dieser Stunde werden die Internetbezahlverfahren und die kontaktlosen Bezahlverfahren näher betrachtet, da sie einen starken Bezug zur Informatik haben und am stärksten in der Verbreitung steigen. . Tab. 37.1 Zahlen und Fakten rund ums Bargeld (Deutsche Bundesbank, Stand Februar 2023) Zahlungsmittel

37

Umsatz in %

Zahlungsvorgänge in %

2021

2017

2021

2017

Barzahlung

29,9

47,6

57,8

74,3

Debitkarte/Girocard

29,9

34,9

22,6

18,9

Kreditkarte (inkl. Prepaid)

10,4

4,6

6,2

1,6

sonstige Karte

0,3

0,1

1,0

0,3

Überweisung

15,0

5,6

2,5

1,3

Lastschrift

3,7

2,4

1,9

1,3

Internetbezahlverfahren

7,7

3,7

5,0

1,9

mobile Bezahlverfahren

1,6

0,0

2,1

0,1

Sonstiges/ohne Angabe

1,6

1,1

1,0

1,0

317 Kapitel 37 · Bezahlsysteme

37

Jeder, der ein Konto hat, besitzt wahrscheinlich eine Kreditkarte oder Girocard, die kontaktloses Bezahlen im Handel ermöglicht. Die Technik, die dabei zum Einsatz kommt, nennt sich NFC, was für Near Field Communication (Nahfeldkommunikation) steht. Eine Besonderheit bei NFC ist, dass der Chip und das Lesegerät in einem Abstand von wenigen Zentimetern gehalten werden müssen, um eine Übertragung zu ermöglichen. Der Vorteil, der sich daraus ergibt, ist die große Sicherheit gegen Abhören von außen. Mögliche Täter müssen sich schließlich auf engstem Raum nähern, um Daten auszuspionieren. Übung Wie bezahlst du? Was verwendest du im Geschäft? Welches Bezahlverfahren wird von dir im Internet verwendet?

Die gleiche Technik, die es auf den Plastikkarten gibt, findet sich heute aber auch in immer mehr Smartphones und sogar in Smartwatches. Beim mobilen Bezahlen mit dem Smartphone war in Deutschland lange nicht viel los. Zu viele Anbieter gab es auf dem Markt und zu wenig Interesse aufseiten der Verbraucher. So gaben viele Anbieter schnell wieder auf. Seit Sommer 2018 ist wieder Bewegung in dem Thema. Denn seitdem gibt es das Bezahlsystem Google Pay des amerikanischen Großkonzerns auch in Deutschland. Die Zahlungsabwicklung ist entweder über PayPal möglich oder über Kredit- und Debitkarten. Am Anfang nahmen nur wenige Banken teil, inzwischen hat sich der Kreis aber erweitert. Das Bezahlen geschieht dabei ähnlich einfach wie mit einer Plastikkarte. Die App muss nicht mal geöffnet werden, sondern es genügt, das Smartphone an das Lesegerät im Geschäft zu halten. Ein Entsperren des Geräts ist dann schon ausreichend, um das Bezahlen durchzuführen. Mit Google Pay soll das Smartphone als zentrales Element für Bezahlvorgänge verwendet werden. So ist es ebenfalls möglich, diverse Kundenkarten oder auch Gutscheinkarten in die App einzupflegen (siehe dazu auch . Abb. 37.1). Dadurch soll der Kunde auf eine größere Anzahl an Karten im Portemonnaie verzichten können. Natürlich weiß dann Google auch über alles Bescheid, wenn dies zum zentralen Ort aller Kundenkarten und Gutscheinkarten wird. Da die App kostenlos ist, bezahlt der Kunde auch in diesem Fall vor allem mit seinen Daten. Dadurch kann Google beispielsweise noch gezielter Werbung anzeigen. Da Google Pay nur für Android verfügbar ist, gibt es für iPhones eine App von Apple. Apple Pay ist seit Dezember 2018 auf dem deutschen Markt angekommen. Wie auch bei Google Pay boten zunächst nur wenige Banken den Dienst an, jedoch wächst die Zahl. Bei iOS ist Apple Pay in die App Wallet eingebunden, in die sich etliche weitere Apps einbinden lassen. So ist es dort auch möglich, Tickets oder Hotelreservierungen zu verwalten. Die Auswahl reicht von der Deutschen Bahn über Lufthansa und FlixBus bis hin zu Eventim. Ein Screenshot der App ist in . Abb. 37.2 zu sehen. In der Funktionsweise ähneln sich die Apps von Google und Apple stark.

318

37

Kapitel 37 · Bezahlsysteme

. Abb. 37.1 Screenshot von Google Pay

Aber es muss nicht immer eine Plastikkarte oder eine App sein, um zu bezahlen. An Schnellladestationen von Tesla reicht es, das Ladekabel in die Säule zu stecken, und die Ladesäule erkennt den zugehörigen Kunden. Dies ist ein proprietäres Verfahren von Tesla, sodass dies leider nur mit Tesla-Fahrzeugen und der Ladeinfrastruktur von Tesla funktioniert. Offensichtlich ist Bargeld keine gute Lösung, um über das Internet zu bezahlen. Denn damit können nur Pakete per Nachnahme zugestellt werden. Der Postbote nimmt dann das Bargeld bei Auslieferung der Ware entgegen. Dies ist natürlich auch nur möglich bei Warensendungen und hilft nicht beim Kauf von digitalen Medien wie Filmen oder Musik. In der Anfangszeit des Internets waren Kreditkarten die einzige Möglichkeit. Aufgrund hoher Gebühren und der Gefahr des Betrugs waren viele skeptisch. Die Vorauszahlung, bei der der Betrag vorher überwiesen werden musste, war ebenfalls unbeliebt, da der Bezahlvorgang oft einige Tage gedauert hat.

319 Kapitel 37 · Bezahlsysteme

37

. Abb. 37.2 Screenshot von Apple Pay

In diese Bresche sind verschiedene Anbieter mit ihren Geschäftsmodellen getreten. Die Zielsetzung war vor allem die Möglichkeit, sofort zu bezahlen und nicht lange warten zu müssen. Einerseits gibt es Anbieter wie Sofortüberweisung, die im Namen des Kunden von seiner Bank auf das Konto des Anbieters überweisen und garantieren, dass das Geld unterwegs ist. Somit muss der Anbieter nicht erst warten, bis er die Gutschrift auf seinem Konto sieht. Ein in den Jahren sehr groß gewordener Internetbezahldienst ist PayPal. Um zu verstehen, warum er so beliebt ist, hilft ein Blick auf die Funktionsweise. Beim Onlineshopping wickelt PayPal wie ein Zwischenhändler den Kauf für den Kunden ab, sodass keine Bankverbindung an den Onlineshop weitergeben werden muss. Dies erspart dem Kunden also die Preisgabe seiner Kontonummer und ermöglicht auch ein sofortiges Bezahlen ohne Wartezeit. Beim Bezahlen bekommt der Händler den Rechnungsbetrag von PayPal sofort überwiesen. Per Lastschriftverfahren bucht PayPal wenige Tage später den Betrag vom Bankkonto des Kunden ab. Um den Dienst nutzen zu können, muss dieser Folgendes tun:

320

Kapitel 37 · Bezahlsysteme

1. Er muss sich bei PayPal registrieren. Dort muss neben Namen und E-MailAdresse auch eine Bankverbindung hinterlegt werden. 2. Das angegebene Konto muss allerdings noch freigegeben werden: Auf dem Kontoauszug erscheint nach wenigen Tagen eine Gutschrift in Höhe von wenigen Cent zusammen mit einem Zahlencode von PayPal. Durch die Eingabe dieses Codes ist das Bankkonto für die PayPal-Nutzung aktiviert. 3. Alternativ kann auch eine Kreditkarte verwendet werden, bei der das Verfahren etwas anders abläuft. Dieses Mal bucht PayPal jedoch wenige Euro ab (und später natürlich wieder zurück). 4. Wenn das PayPal-Konto dann startklar ist, kann das Shoppen losgehen. Bei jedem Onlinehändler, der das blaue PayPal-Logo auf seiner Seite hat, kann diese Zahlungsart genutzt werden. 5. Am Ende des Bestellvorgangs wird zu PayPal weitergeleitet und dort müssen die Zugangsdaten eingeben werden. Dann noch kurz die Zahlung bestätigen und die Bestellung abschließen.

37

Sollte ein Artikel zum Händler zurückgesendet werden, wird der Kaufpreis in der Regel auf gleiche Weise erstattet – also bei PayPal gutgeschrieben. Dieses Guthaben kann entweder für den nächsten Einkauf bei PayPal aufbewahrt oder gebührenfrei auf das Bankkonto zurücküberwiesen werden. Als ebenfalls für den Kunden kostenfreie Alternative zu PayPal ist noch Amazon Payments zu nennen, für das jedoch ein Amazon-Konto nötig ist. Die Verbreitung von PayPal ist aber ungleich höher und Amazon derzeit in Deutschland noch eher in der Nische zu finden. Alle bisher genannten Bezahlsysteme bauen auf dem Geld auf, das Staaten ausgeben und für deren Gegenwert die Staaten bürgen. Eine völlig andere Art des Bezahlsystems ist die Kryptowährung, auch Kryptogeld genannt. Eine Kryptowährung ist ein digitales Zahlungsmittel, das auf kryptografischen Werkzeugen wie Blockchains basiert. Die Blockchain (Blockkette) ist eine kontinuierlich erweiterbare Liste von Datensätzen, die mittels kryptografischer Verfahren miteinander verkettet sind. Innerhalb dieser Blockchain werden alle Transaktionen, die innerhalb der Kryptowährung geschehen, festgehalten. Als Zahlungssystem sollen Kryptowährungen unabhängig, verteilt und sicher sein. Sie sind keine Währungen im eigentlichen Sinne. Im Jahr 2009 wurde mit dem Bitcoin die erste Kryptowährung öffentlich gehandelt, die auch heute noch die mit Abstand bekannteste ist. Es gibt jedoch noch etliche weitere, von denen ungefähr 1000 einen täglichen Handelsumsatz von über 10.000 US$ erreichen. Bitcoin kann sowohl als Zahlungssystem als auch als Geldeinheit betrachtet werden. Sie wird dezentral in einem Rechnernetz mithilfe eigener Software verwaltet bzw. geschöpft. Das System basiert auf einer von den Teilnehmern gemeinsam verwalteten dezentralen Datenbank, in der alle Transaktionen in einer Blockchain aufgezeichnet werden. Dezentral bedeutet hier, dass es eben nicht eine zentrale Datenbank gibt, sondern sie sich über viele Teile verteilt. So stellt auch der Ausfall einzelner Teile keine große Beeinträchtigung dar.

321 Kapitel 37 · Bezahlsysteme

37

Um am Bitcoin-System teilzunehmen, ist die einzige Bedingung ein BitcoinClient oder die Nutzung eines diese Funktionalität bereitstellenden Onlinedienstleisters. Dadurch unterliegt es keinen geografischen Beschränkungen und kann länderübergreifend eingesetzt werden. Übung Doch wie entstehen Bitcoins? Gibt es jemanden, der eine gewisse Anzahl Bitcoins festgelegt hat, oder können irgendwie neue entstehen?

Neue Bitcoins werden durch das sogenannte Mining (Bergbau) erzeugt. Es werden neue Blöcke erzeugt und anschließend zur Blockchain hinzugefügt. Durch neue Blöcke werden neue Bitcoins ausgegeben und gleichzeitig ein Teil der neuen oder noch offenen Transaktionen bestätigt. Der Vorgang ist sehr rechenintensiv, und im Gegenzug erhält der Teilnehmer, der einen gültigen Block erzeugt, als Belohnung die geschöpften Bitcoins und die Gebühren aus den enthaltenen Transaktionen. Nachdem ein neuer gültiger Block gefunden wurde, wird er, wie unbestätigte Transaktionen, an alle Bitcoin-Teilnehmer im Netzwerk als neue längere gültige Blockchain verbreitet. ? Wofür steht NFC? Wie funktioniert das mobile Bezahlen per App, etwa mit Google Pay? Wie stellt PayPal sicher, dass die Person, die sich anmeldet, zu der Kontoverbindung gehört? Was ist Bitcoin? Was ist der Unterschied zwischen einer Währung und Kryptowährung?

323

Datenformate

© Springer Fachmedien Wiesbaden GmbH, ein Teil von Springer Nature 2024 T. Eichstädt und S. Spieker, 52 Stunden Informatik, https://doi.org/10.1007/978-3-658-41838-0_38

38

324

Kapitel 38 · Datenformate

Datenformate legen fest, wie Daten strukturiert und dargestellt werden. Per Konvention beinhaltet ein Dateiname eine Dateiendung, die Aufschluss über das Dateiformat gibt. Generell unterscheidet man zwei Typen von Dateien, die binären Formate, die nicht menschenlesbar sind, und die textbasierten Dateien. Im Texteditor sehen Binärdateien nach Datenmüll aus. Eine Besonderheit ist die Datei mit der Endung .zip. Sie enthält einen ganzen Ordner von anderen komprimierten Dateien. Eine andere spannende Datei ist die SVG. Innerhalb dieser Dateien werden mittels xml Elemente eines Bildes beschrieben. Um Zeichen in einer Datei zu speichern, werden Codierungen verwendet. Die wichtigste Codierung war lange Zeit ASCII. Heute wird der Standard UTF-8 fast überall verwendet. Er ermöglicht, auf einer Webseite gleichzeitig westeuropäische Texte und auch japanische Schriftzeichen darzustellen. Selbst Emojis lassen sich mit UTF-8 darstellen. In vielen vorherigen Stunden haben wir bereits Dateien verwendet. In  Kap. 5 Code wurde CSV erklärt und später wurden auch HTML- und Python-Dateien erzeugt. Alle diese Dateien haben unterschiedliche Regeln, nach denen sie aufgebaut sind. Dies wird als Dateiformat oder allgemeiner auch als Datenformat bezeichnet. Dabei ist das Datenformat ein Begriff aus der Datenverarbeitung, der festlegt, wie Daten strukturiert und dargestellt werden. Ebenfalls ist festgelegt, wie sie bei ihrer Verarbeitung zu interpretieren sind. Unter Windows hat sich die Konvention durchgesetzt, dass ein Dateiname aus zwei Komponenten besteht, dem Namen und der Dateinamenerweiterung oder in Kurzform der Dateiendung. Da die beiden Komponenten durch einen Punkt voneinander getrennt sind, ergibt sich die Form:

.

Die Dateiendung war früher auf drei Zeichen begrenzt und gibt Aufschluss über das Dateiformat der Datei. Es gibt sehr viele Dateiformate, von denen etliche auch schon in diesem Buch verwendet wurden.

38

Übung Welche Dateiformate kennst du? Was ist ihre jeweilige Dateiendung? Welche Dateiendungen wurden schon im Buch verwendet?

Generell unterscheidet man zwei Typen von Dateien, die binären Formate, die nicht menschenlesbar sind, und die textbasierten Dateien. Der Unterschied lässt sich in einem Editor gut feststellen. . Abb. 38.1 zeigt den Inhalt einer Bilddatei in einem Texteditor. Für einen Menschen sieht das zuerst nach Datenmüll aus. Die einzelnen Bytes in einer Binärdatei können jeden beliebigen Wert von 0 bis 255 annehmen, während Textdateien nur Buchstaben, Ziffern, Sonderzeichen und einige Steuerzeichen enthalten dürfen. Bis jetzt wurden bereits einige Dateiformate in dem Buch verwendet, siehe . Tab. 38.1.

325 Kapitel 38 · Datenformate

38

. Abb. 38.1 Inhalt einer binären Bilddatei . Tab. 38.1 Bereits verwendete Dateiformate Dateiendung

Beschreibung

Typ

Stunde

.html

Hypertext Markup Language

text

 Kap. 4 HTML

.css

Cascading Style Sheets

text

 Kap. 4 HTML

.csv

Comma Separated Values

text

 Kap. 5 Code

.xlsx

Tabellenkalkulation

binär

 Kap. 17 Tabellenkalkulation

.py

Python-Quellcode

text

 Kap. 20 „Hallo Welt“ (in Python)

.exe

Executable

binär

 Kap. 20 „Hallo Welt“ (in Python)

.drawio

7 http://Diagrams.net Zeichnung

text

 Kap. 24 Modellierung

.xml

Erweiterbare Auszeichnungssprache

text

 Kap. 25 APIs (mit Python)

.json

JavaScript Object Notation

text

 Kap. 25 APIs (mit Python)

.stl

Standard Triangle Language

text

 Kap. 40 3D-Druck

.txt

Textdatei

text

 Kap. 30 Versionsverwaltung

Natürlich gibt es noch eine ganze Reihe von weiteren verbreiteten Dateiformaten. Einige sind in . Tab. 38.2 aufgelistet. Eine Besonderheit ist die Datei mit der Endung „zip“ (Reißverschluss). Innerhalb einer solchen Datei liegen andere Dateien unverändert. Trotzdem ist eine ZIPDatei meist deutlich kleiner als die eigentlichen Dateien. Unter Windows heißt eine solche Datei ZIP-komprimierter Ordner.

Kapitel 38 · Datenformate

326

. Tab. 38.2 Weitere verbreitete Dateiformate Dateiendung

Beschreibung

Stunde

Verwendung

.pdf

Portable Document Format

binär

Plattformunabhängiges Dateiformat

.odt

OpenDocument-Text

binär

Open Office-Textdokument

.bmp

Windows Bitmap

binär

Grafikdatei

.jpeg

Joint Photographic Experts Group

binär

Grafikdatei, weit verbreitet bei Fotos

.svg

Scalable Vector Graphics

text

Grafikdatei, vektorbasiert

.mp3

MPEG Audio Layer-3

binär

Musik, komprimiert

.avi

Audio Video Interleave

binär

Videodatei

.zip

Zip

binär

Gepackte Datei

. Abb. 38.2 Erstellen einer ZIP-Datei

38 Übung Erstelle ein ZIP-File auf dem Desktop, indem du auf dem Desktop mit einem Rechtsklick eine neue Datei anlegst. Vergleiche dazu auch . Abb. 38.2. Lege anschließend noch eine Textdatei neben den neu angelegten ZIP-komprimierten Ordner. Öffne dann das Textfile und setze einige Zeichen hinein. Du kannst dir auch von einer Webseite einen längeren Text hineinkopieren. Kopiere nun die Datei in den ZIP-Ordner. Die Dateigröße kannst du dir durch einen Rechtsklick auf die Datei und die Auswahl von Eigenschaftenanzeigen lassen. Vergleiche, wie sich die Dateigrößen verhalten.

327 Kapitel 38 · Datenformate

38

In dem Beispiel ist eine Textdatei mit 600 Zeichen erstellt worden. Das ergibt eine Dateigröße von 600 Bytes. Bei der ZIP-Datei sind es jedoch nur noch 344 Bytes. Sie ist damit nur noch knapp halb so groß. Der Unterschied hängt allerdings stark vom Inhalt der Datei ab. So kann sich die Größe auch mehr als halbieren, wenn sich die Inhalte innerhalb der Datei oft wiederholen. Wenn ausschließlich Einsen innerhalb des Textdokuments vorkommen, ist die ZIP-Datei sogar nur noch 151 Bytes groß. ZIP-Dateien eignen sich auch besonders gut, um Dateien für den E-MailVersand zu verkleinern oder um mehrere Dateien in eine Datei zu gruppieren. Dies kann beim Hochladen auf einen Cloud-Speicher deutlich schneller gehen. Das ZIP-Format ist aber nicht die einzige Lösung, um Dateien zu komprimieren. Es gibt einige Formate, die Ähnliches leisten, darunter RAR, TAR und 7z, sowie Archivierungs- und Datenkomprimierungssoftware wie WinRAR oder 7-Zip. Eine andere spannende Datei ist die SVG, was für Scalable Vector Graphics (skalierbare Vektorgrafik) steht. Der Inhalt einer solchen Datei ist aber im Gegensatz zu vielen anderen Bildformaten lesbar und nicht binär. Innerhalb von diesen Dateien wird mittels xml beschrieben, was dargestellt werden soll. Die Schritte lesen sich in etwa so wie eine Anleitung, um ein Bild zu malen:

1. 2. 3.

Text

Dabei beschreibt der erste Schritt das Zeichnen eines Rechtecks, das ab der Koordinate (x, y) = (25, 25) mit der Breite von 80 und einer Höhe von 80 gezeichnet werden soll. Die Einheiten sind relativ zur Bildgröße, und das Bild bleibt auch bei Skalierung gestochen scharf. Im zweiten Schritt wird ein Kreis ab der Position (x, y) = (150, 150) mit einem Radius von 50 gezeichnet. Der dritte Schritt ist dann noch ein Text, der an der Position (x, y) = (150, 50) angezeigt werden soll. Versuche doch einmal, ein SVG selbst zu zeichnen, indem du eine neue SVGDatei erzeugst und in diese folgende Zeilen einträgst und dann die Zeilen von oben der Reihe nach einfügst hinter den xml-Kommentar Inhalt der Datei:



Du kannst dir das Ergebnis mit einem Browser deiner Wahl ansehen.

328

Kapitel 38 · Datenformate

. Abb. 38.3 SVG-Datei, die „von Hand“ gezeichnet wurde

38

Das Ergebnis einer solchen Datei ist in . Abb. 38.3 abgebildet und kann auch über GitHub heruntergeladen werden unter 7 https://raw.githubusercontent.com/ StefanSpieker/52Stunden/master/Datenformate/test.svg Natürlich können in einer SVG-Datei auch kompliziertere Elemente verwendet werden als in dem hier gezeigten Beispiel. Es wird ebenfalls an einer Neuauflage des Standards gearbeitet, der wahrscheinlich als Version 2.0 bezeichnet wird. In eine Textdatei lassen sich nicht nur einfache Texte schreiben, sondern auch Sonderzeichen, wie gerade im SVG-Beispiel gesehen. Aus  Kap. 19 Binärsystem & Datentypen ist schon bekannt, welche Datentypen der Computer verwendet. Doch wie sieht es aus, wenn Zeichen in eine Datei gespeichert werden? Es gibt dafür Codierungen, die eine feste Zuordnung vom Wert zu einem Zeichen abbilden. Eine der ersten Codierungen, die im Jahr 1965 definiert wurde und auch heute noch Verbreitung findet, ist der American Standard Code for Information Interchange (ASCII, Amerikanischer Standard-Code für den Informationsaustausch). In diesem Standard sind die Kleinbuchstaben a–z, die Großbuchstaben A–Z, die Zahlen 0–9, Steuerzeichen und einige Sonderzeichen enthalten. Es fehlen aber die deutschen Sonderzeichen wie ö, ä, ü und ß. Da bei ASCII nur 7 Bits für die Codierung verwendet werden, konnten relativ leicht mit einem weiteren Bit die fehlenden Zeichen ergänzt werden. Eine neue Norm ISO 8859 wurde für verschiedene Länderbereiche definiert. So ist die ISO 8859-1 für den westeuropäischen Raum lange Zeit die Standardcodierung (8 Bit) gewesen, die die nötigen Erweiterungen wie die deutschen Umlaute, aber auch die Akzente aus dem Französischen mitbringt. Der größte Nachteil dieser Art der

329 Kapitel 38 · Datenformate

38

. Abb. 38.4 Gleicher Text mit ISO 8859-5 (kyrillisch) und ISO 8859-1 (westeuropäisch)

Codierung besteht jedoch darin, dass ein Text, der mit einer anderen Codierung als der, mit der er erstellt wurde, angesehen wird, wie Buchstabensalat aussieht, wie in . Abb. 38.4 gut zu erkennen ist. In einer global vernetzten Welt musste eine andere Lösung gefunden werden, die nicht mehr den Sprachraum beschränkt und auch für die Zukunft noch genügend Reserven bereithält. So wurde im Jahr 1992 der Standard UTF-8 definiert, die Abkürzung steht dabei für Universal Coded Character Set Transformation Format (universell codiertes Buchstaben-Mengen-Umwandlungs-Format). Dieses Format wird heute fast überall verwendet, beispielsweise im Jahr 2019 bei über 90 % aller Webseiten weltweit. Mit diesem Zeichensatz ist es auch möglich, auf einer Webseite gleichzeitig westeuropäische Texte und japanische Schriftzeichen darzustellen. Bei japanischen Schriftzeichen, auch Kanji genannt, ist das Problem für den Informatiker, dass es viel mehr als die 26 Zeichen des Alphabets gibt. Insgesamt gibt es 50.000 Schriftzeichen, von denen ein gebildeter Japaner etwa 5000 kennt. In UTF-8 sind auch diese Zeichen integriert. Aber auch eine neue Art von Zeichen lässt sich mit UTF-8 darstellen, das Emoji. Unter Windows kann man über den Shortcut Windows-Taste + ‘‘.’’ eine Auswahl davon aufrufen. Leider sehen die Emojis nicht überall gleich aus, da gibt es manchmal kleine Unterschiede, die die Bedeutung aber nicht verändern. Übung Öffne doch einmal selbst den Editor in Windows und füge dort ein beliebiges Emoji ein. Sieh dir an, wie es sich verändert, wenn es eingefügt wird. Füge das Emoji auch mal testweise in den Browser ein und beobachte, ob es sich dort verändert.

Gerade Emojis sind in der digitalen Kommunikation durchaus beliebt und so bietet UTF-8 die Möglichkeit einer Art der Beschreibung, die im Internet alle Eventualitäten bedient. Derzeit sind 1.114.112 Zeichen in dieser Codierung definiert. Theoretisch ist es möglich, über 4 Billionen unterschiedliche Zeichen mit UTF-8 zu beschreiben. ? Was ist eine Dateiendung? Was ist der Unterschied zwischen Text- und Binärformaten? Was sind Beispiele für Text- und Binärformate? Wie können mehrere Dateien platzsparend als E-Mail versendet werden? Was ist der Nachteil von ASCII-Code gegenüber UTF-8?

331

Computergrafik

© Springer Fachmedien Wiesbaden GmbH, ein Teil von Springer Nature 2024 T. Eichstädt und S. Spieker, 52 Stunden Informatik, https://doi.org/10.1007/978-3-658-41838-0_39

39

332

39

Kapitel 39 · Computergrafik

Von einer Computergrafik spricht man, wenn ein Bild durch Datenverarbeitungsprozesse am Computer entsteht. Beim digitalen Fotografieren und bei der Bearbeitung von Fotos spielt Software eine groe Rolle. Es gibt einfache und komplizierte Arten der Bildbearbeitung. Besonders Photoshop hat durch die Verwendung von Ebenen, Filtern und Masken neue Mastäbe gesetzt. Das ermöglicht das Verschönern von Portraits bis hin zur Fotomanipulation. Fotos werden von Computern in aller Regel als Pixelgrafik beschrieben. Zur Beschreibung der einzelnen Pixel wird das RGB-Farbmodell eingesetzt. Die Auflösung gibt die Gröe an und die Farbtiefe, wie viele Bit für die Beschreibung eines Bildpunktes verwendet werden. Für die Kompression von Bildern werden spezielle Grafikformate verwendet. Wird ein Bild mit geringer Pixeldichte dargestellt, erscheint es uns als pixelig. Vektorgrafiken können beliebig vergröert werden und bleiben trotzdem scharf. Vektorgrafiken spielen in vielen professionellen Anwendungen eine wichtige Rolle. Eine Computergrafik ist ein Bild, das durch Datenverarbeitungsprozesse am Computer entstanden ist, also zum Beispiel ein Entwurf durch ein Grafikprogramm oder ein Bild, das mithilfe eines Computertomografen erzeugt wurde. Im weiteren Sinn sind auch Bilder gemeint, die am Computer bearbeitet wurden, zum Beispiel Fotos. Der Begriff Computergrafik bezeichnet ebenso das entsprechende Teilgebiet der Informatik. Es entstand in den 1950er-Jahren, als Computer erstmals mit Bildschirmen ausgestattet wurden und so eine grafische Ausgabe möglich wurde. Seither haben sich die Möglichkeiten und die Verbreitung von Computergrafiken sehr stark weiterentwickelt. Bei Fotos spricht man in der Regel nicht von Computergrafiken, obwohl heute fast ausschließlich digital fotografiert wird. Das heißt, mobile Computer nehmen die Fotos auf. Bereits hierbei spielt Software eine wichtige Rolle. Sie steuert unter anderem die Blendenöffnung und die Wandlung von Signalen der Lichtsensoren in Bildpunkte. Im Anschluss liegt natürlich auch die Bearbeitung des Fotos am Computer nahe. Bildbearbeitung bedeutet, dass bestehendes Bildmaterial verändert wird. Jeder von uns hat (zumindest als Kind) schon einmal mit einer Schere ein Bild bearbeitet. Selbst dieses Zuschneiden zählt schon zur Bildbearbeitung. Übertragen auf digitale Bilder gilt das ebenso. Das Verändern des Bildausschnitts ist die trivialste Form der Bearbeitung. Dafür wird nicht einmal ein spezielles Programm benötigt. In Messengern, sozialen Netzwerken und Office-Programmen sind rudimentäre Ansätze der Bildbearbeitung integriert. Übung Mache ein Foto mit der Kamera deines Smartphones. Versuche nun das Foto zuzuschneiden. Welche weiteren Bildbearbeitungsmöglichkeiten sind in die Kamera-App integriert? Prüfe die Einstellungen der Kamera und auch welche Möglichkeiten du zur Bearbeitung des existierenden Fotos hast. Wende mindestens drei verschiedene Möglichkeiten der Bildbearbeitung an.

333 Kapitel 39 · Computergrafik

39

Bildbearbeitung umfasst selbstverständlich nicht nur das Zuschneiden eines Bildes. Weitere Möglichkeiten der Bildbearbeitung: 5 Helligkeit/Weißabgleich verändern 5 Kontrast/Schärfe verändern 5 Farben bearbeiten/verändern 5 Dateiformat verändern 5 Skalieren 5 Retuschieren 5 Bildelemente einfügen/entfernen 5 Texte oder Sticker einfügen 5 Drehen/Spiegeln/Verzerren 5 Horizont/Perspektive korrigieren 5 Panorama 5 U.v.m. Effektiv ist vor allem die Anwendung von Filtern und Masken. Filter erlauben es, Helligkeit, Kontrast oder Farbgebung des Originalbilds zu verändern. Masken sind eigenständige Bildelemente, die einen Teil des Originalbilds überdecken. Neben kostenlosen Programmen wie dem unserer Smartphone-Kamera gibt es auch sehr viel umfangreichere Programme zur professionellen Bildbearbeitung. Der Marktführer auf diesem Gebiet ist Photoshop mit einem geschätzten Marktanteil von 90 %. In Photoshop lässt sich ein Bild in verschiedene Ebenen untergliedern, die einzeln bearbeitet werden können. Mithilfe von Ebenen können zum Beispiel Filter nur auf bestimmte Bildbereiche angewendet werden. Ebenso können Ebenen auch als Masken fungieren, um andere Bildbereiche zu überdecken. Das Programm war so erfolgreich, dass der Begriff „photoshoppen“ heute gleichbedeutend mit der Bearbeitung von Fotos verwendet wird. Diese Bearbeitung kann etwa Fettpolster, rote Augen, Falten, Hautporen oder Pickel verschwinden lassen. Tatsächlich sind nahezu alle Fotos, die wir von Fotomodels, Werbefiguren und Prominenten zu sehen bekommen, nachbearbeitet. Neben dem Ausbessern von kleinen Makeln können Fotos auch gezielt manipuliert werden, zum Beispiel, indem Gegenstände oder Personen eingefügt oder entfernt werden. Die Bearbeitung von Fotos ist eine wirkungsvolle Art der Manipulation, da die Glaubwürdigkeit von Fotos vom Betrachter oft überschätzt wird. >

Es gibt viele historische Fälle von Fotomanipulation. Beispiele finden sich leicht über eine Google-Suche. Siehe 7 https://www.google.com/search?q=fotomanipulation Die Manipulation von Bildern ist mit Photoshop technisch relativ einfach zu realisieren. Jeder kann sich das in einem YouTube-Video erklären lassen. Siehe 7 https://www.youtube.com/results?search_query=bildmanipulation+photoshop

Die Mittel der Bildbearbeitung sind nicht neu. Sie wurden aber durch die digitalen Möglichkeiten stark erweitert und einer breiten Nutzergruppe zugänglich gemacht. In den letzten Jahren wird immer öfter von Deepfakes gesprochen. Das Wort setzt sich zusammen aus „Deep Learning“ (siehe  Kap. 46 Deep Learning) und „Fake“

334

Kapitel 39 · Computergrafik

( Fälschung). Dabei werden Techniken der künstlichen Intelligenz zur Medienmanipulation eingesetzt. Ein bekanntes Beispiel ist der täuschend echte Austausch von Gesichtern in (pornografischen) Videos. Dasselbe gilt natürlich erst recht für Bilder. Diese können nicht nur manipuliert, sie können sogar vollständig maschinell erzeugt werden. Manche Verfahren zum Erzeugen von Bildern sind mittlerweile so gut, dass ein Mensch sie nicht mehr von originalen Bildern unterscheiden kann. >

39

Eine relativ neue Entwicklung ist, dass sich aus Text Bilder generieren lassen. Am 5. Januar 2021 stellte OpenAI so einen Text-zu-Bild-Generator vor. Er heißt DALL-E und beruht auf ChatGPT (siehe  Kap. 47 ChatGPT). Seither ist eine Vielzahl solcher Tools entstanden, die meist als kostenfreier Webdienst oder als App zur Verfügung gestellt werden. 7 https://openai.com/dall-e

In dieser Stunde wollen wir zunächst ein grundlegendes Verständnis von Computergrafiken entwickeln. Wir wollen verstehen, was es überhaupt bedeutet, wenn wir von digitalen Bildern sprechen. Was ist ein Bild für einen Computer? Fotos werden von Computern in aller Regel als Pixelgrafik beschrieben. Eine Pixelgrafik, auch Rastergrafik genannt, besteht aus einer rasterförmigen Anordnung von Pixeln. Jedes Pixel beschreibt einen Bildpunkt, der wiederum durch Farbwerte beschrieben ist. Demnach können auch die Höhe und Breite der Pixelgrafik in Pixeln angegeben werden. Umgangssprachlich wird auch von der Auflösung eines Bildes gesprochen, wenn Höhe und Breite in Pixeln genannt werden. Ein Beispiel für eine Größe, der man relativ häufig begegnet, ist 1920 × 1080 Pixel. Dieses Format wird auch als „Full HD“ bezeichnet. Dieselbe Angabe wird auch für Wiedergabegeräte verwendet, um zu beschreiben, welche Bildgröße maximal wiedergegeben werden kann. Die Beschreibung der Pixel erfolgt meistens innerhalb des RGB-Farbmodells. Das heißt, für jedes Pixel sind jeweils Farbwerte für Rot, Grün und Blau vorhanden. Die Darstellung des Pixels setzt sich dann aus der Addition dieser drei Grundfarben zusammen. Wir können jetzt die Frage beantworten, was für einen Computer ein Bild ausmacht. Ein Bild ist eine Menge von drei Farbwerten. Hat das Bild etwa eine Höhe und Breite von jeweils 6 Pixeln, dann kann der Computer es als eine Menge von 6 × 6 × 3 Farbwerten erfassen (vergleiche . Abb. 39.1). Es bleibt die Frage, wie ein einzelner Farbwert gespeichert wird. Wie wir aus  Kap. 19 Binärsystem & Datentypen wissen, verarbeiten Computer letztlich alle Daten in Form von Bits und Bytes. Also, wie viele Bits werden für die Beschreibung eines Farbwertes verwendet? Dies bezeichnet man als Farbtiefe. Vereinfacht ausgedrückt, können heute die meisten Bildschirme Farben mit maximal 8 Bit (das entspricht 1 Byte) darstellen. Daher werden auch viele Bilder mit 8 Bit je Farbwert gespeichert, also 24 Bit (3 Byte) pro Pixel für die Farbwerte von Rot, Grün und Blau. Für das Bild in . Abb. 39.1 würden demnach 6 × 6 × 3 = 108 Byte benötigt werden. Diese Farbtiefe wird „True Color“ genannt. True Color erlaubt die Darstellung von 16,7 Mio. unterschiedlichen Farben aus der Kombination der drei Grundfarben (wer möchte, kann gerne nachrechnen). Das menschliche Auge ist in der Lage, rund 20 Mio. Farben zu unterscheiden. Daher lohnen sich höhere

335 Kapitel 39 · Computergrafik

39

Farbtiefen meist nicht. Aus demselben Grund werden zum Beispiel auch Videos auf YouTube mit einer Farbtiefe von 8 Bit dargestellt. Übung Welche Auflösung besitzt das Foto, das du gemacht hast? Du kannst das herausfinden, indem du die Details des Fotos anzeigst (vergleiche . Abb. 39.2). Wie groß müsste das Bild sein, wenn jeder Pixel mit 3 Byte darstellt wird? Hast du eine Erklärung dafür, dass die tatsächliche Größe der Datei geringer ist?

Die meisten Bilder werden komprimiert in einem speziellen Grafikformat gespeichert. Dies wird als Datenkomprimierung oder Datenkompression bezeichnet, wenn eine Menge von Daten reduziert wird. Dadurch können Speicherplatz und Übertragungszeit gespart werden. Das am weitesten verbreiteten Format zur Bildkompression ist JPEG (gesprochen „jay-peg“). Die entsprechenden Bilddateien enden auf „.jpg“ oder „.jpeg“. Durch ein mathematisches Verfahren ist es möglich, die ursprüngliche Auflösung und eine sehr große Farbtiefe zu erhalten, ohne tatsächlich jedes Pixel einzeln speichern zu müssen. Der größte Vorteil von JPEG ist demnach die Reduzierung der Speichergröße. JPEG ist heute das Standardgrafikformat für die meisten Digitalkameras (siehe . Abb. 39.2). Auch wenn ein Foto per WhatsApp verschickt wird, findet durch JPEG eine zusätzliche Kompression statt. Verschiedene Kompressionsraten sind möglich. Allerdings sinkt dabei die Bildqualität. Meistens passiert das, ohne dass wir es mit dem bloßen Auge bemerken würden.

. Abb. 39.1 Bild repräsentiert als Raster im RGB-Farbmodell

336

Kapitel 39 · Computergrafik

. Abb. 39.2 Details eines mit dem Smartphone aufgenommenen Fotos

Es gibt auch Methoden der verlustfreien Datenkompression. Ein bekanntes Grafikformat, das verlustfreie Kompression verwendet, ist Portable Network Graphics, kurz PNG. Wenn ein Bild in diesem Format gespeichert wird, gehen tatsächlich keine Bildinformationen verloren. Diese Kompression ist besonders dann sinnvoll, wenn viele gleiche oder sehr ähnliche Bildpunkte im Bild enthalten sind. Für Fotos benötigt die PNG-Darstellung allerdings wesentlich mehr Speicherplatz als die JPEG-Darstellung desselben Bildes. Das ist zum Beispiel in Applikationen oder auf Webseiten praktisch, die mit verschiedenen Hintergründen angeboten werden. Unter anderem deswegen ist PNG ein sehr beliebtes Grafikformat im Internet. Rastergrafikformate wie JPEG oder PNG sind auch deswegen so weit verbreitet, weil sie dem entsprechen, wie Computer Bilder ausgeben, nämlich in Pixeln. Das gilt zum Beispiel für Drucker, aber vor allem auch für alle Arten von Bildschirmen. Übung Welche Auflösung besitzt die Anzeige deines Smartphones? Welche dein PC-Monitor? Ändere die Auflösung, um zu sehen, welche maximale Auflösung dein Gerät darstellen kann und welche Auflösung dir am meisten zusagt. Wovon hängt es ab, ob ein Bild scharf dargestellt werden kann?

39

Jeder Computer besitzt einen speziellen Bildspeicher, in den die GPU (vergleiche  Kap. 14 Rechnerarchitektur) die Bildinformationen schreibt, die auf dem Bildschirm angezeigt werden. Die so entstehende Anzeige besitzt eine Auflösung, die angibt, wie viele Pixel dargestellt werden. Je höher die Auflösung ist, desto mehr Pixel und damit mehr Informationen werden angezeigt. In den Einstellungen lässt sich die Bildschirmauflösung anzeigen und ändern. Smartphones besitzen meistens eine sehr hohe Auflösung, verglichen mit der Größe des Displays (siehe . Abb. 39.3). Dahingegen ist die Bildschirmauflösung am PC-Monitor vergleichsweise gering (siehe . Abb. 39.4), denn die Pixel werden ja am PC-Monitor auf einer viel größeren Fläche dargestellt! Dies wird als Pixeldichte bezeichnet. Auch dieser Faktor, also die Größe der Anzeigefläche, ist neben Auflösung und Farbtiefe des Bildes entscheidend für die Qualität des angezeigten Bildes. Die Pixeldichte wird in der Regel angegeben als DPI (dots per inch, Punkte pro Zoll) oder PPI (pixel per inch, Pixel pro Zoll). Kleine Geräte verwenden wir in der Regel näher an unserem Auge, daher benötigen wir eine höhere Pixeldichte, um das Bild als scharf wahrzunehmen.

337 Kapitel 39 · Computergrafik

39

. Abb. 39.3 Bildschirmauflösung Smartphone

. Abb. 39.4 Bildschirmauflösung PC-Monitor

Problematisch wird es erst dann, wenn die Auflösung des Bildes nicht genügt, um es mit ausreichender Pixeldichte darzustellen. Das passiert zum Beispiel, wenn wir weit in ein Foto hineinzoomen. Das Bild wird dann als „pixelig“ bezeichnet. Gemeint ist damit, dass die Auflösung des Bildes zu gering ist, um den Ausschnitt in der gewünschten Größe scharf darzustellen. Es gibt aber auch Grafikformate, die nie pixelig werden. Sie können beliebig vergrößert werden und bleiben dabei trotzdem scharf. Diese Formate werden Vektorgrafiken genannt. Vektorgrafiken speichern Bildinformationen nicht in Form von Pixeln. Stattdessen beschreiben sie eine Darstellung als Zusammensetzung aus geometrischen Figuren: Linien, Kreisen, Rechtecken und anderen primitiven Grafiken. Dadurch sind die Dateien meist kleiner als Pixelgrafiken, bei gleichzeitig besseren Möglichkeiten zur Bearbeitung. Eines der bekanntesten Formate dieser Art ist die SVG, die wir bereits aus  Kap. 38 Datenformate kennen. Aufgrund der Skalierbarkeit wird das SVG-Dateiformat gern für Logos, Werbebanner, Programmsymbole, Hintergrundbilder, Buttons und Landkarten eingesetzt.

338

Kapitel 39 · Computergrafik

>

Auch Vektorgrafiken lassen sich bearbeiten. Ein gutes kostenloses Tool dazu ist Inkscape 7 https://inkscape.org/de/.

Übung Wirf einen Blick auf deinen Windows-Desktop. Mit Sicherheit entdeckst du viele Vektorgrafiken. Aber hast du auch bereits einmal selbst eine Vektorgrafik erstellt? Ja, hast du! Erinnere dich daran, dass wir in  Kap. 24 Modellierung selbst Computergrafiken mit 7 http://diagrams.net erstellt haben. Diese lassen sich sowohl als Pixel- als auch als Vektorgrafiken exportieren (siehe . Abb. 39.5). Öffne nun die Adresse 7 https://app.diagrams.net/ im Webbrowser, lade ein existierendes Diagramm oder erstelle ein neues. Exportiere das Diagramm als PNG, JPEG und SVG. Öffne nun eines der Pixelgrafikformate, zum Beispiel mit Paint. Wenn du das Bild vergrößerst, wird es pixelig (siehe . Abb. 39.6). Öffne das Vektorgrafikformat mit Inkscape. Egal, wie stark du den Bildausschnitt vergrößerst, es werden keine Pixel sichtbar (außer natürlich die Pixel deiner Bildschirmauflösung) (siehe . Abb. 39.7).

39

. Abb. 39.5 Export in verschiedenen Dateiformaten

339 Kapitel 39 · Computergrafik

39

. Abb. 39.6 Pixelgrafik in Paint

. Abb. 39.7 Vektorgrafik in Inkscape

Vereinfacht gesagt, sind Vektorgrafiken immer dann von Vorteil, wenn Bilder nicht aufgenommen, sondern modelliert werden. Das erlaubt eine große Flexibilität, um die Bilder im Nachhinein zu verändern. Für animierte Filme (auch „bewegte Bilder“ genannt) werden deshalb Vektorgrafiken verwendet. Ebenso spielt in Wissenschaft, Entwicklung, Simulation und Produktion die Modellierung von Computergrafiken eine enorm wichtige Rolle. Bestandteile von Fahrzeugen werden zunächst am Computer entworfen. Dann wird ihr Verhalten im späteren Betrieb, unter anderem auch in Crashsituationen, simuliert. Schlussendlich wird der Fertigungsauftrag an eine Produktionsmaschine übermittelt. Jede dieser Phasen in der Produktentstehung basiert auf beschreibenden Darstellungen der Bauteile. Eine große Zahl von Ingenieuren beschäftigt sich jeden Tag intensiv mit dieser Art von Computergrafiken und Software für ihre Bearbeitung. Die entsprechenden Disziplinen heißen: CAD (Computer-Aided Design), CAE (Computer-Aided Engineering) und CAM

340

Kapitel 39 · Computergrafik

(Computer-Aided Manufacturing). Die Bauteile werden übrigens dreidimensional beschrieben. Mithilfe von Vektorgrafiken ist das problemlos möglich. Neben den vielen Vorteilen, die Vektorgrafiken bieten, haben sie auch einen entscheidenden Nachteil: Die Darstellung ist nur mit speziellen Programmen möglich. Wenn eine Ausgabe der Grafik benötigt wird, muss zunächst ein Rendering passieren. Rendering bezeichnet die Transformation des Modells in ein fotoähnliches Bild. Dabei spielen unter anderem der gewünschte Blickwinkel, Überdeckungen von Objekten, Lichtverhältnisse und Schattenbildung eine Rolle. Wir kennen diesen Vorgang bereits aus  Kap. 6 Webbrowser. Dort haben wir gelernt, wie ein Programm (der Webbrowser) aus einem Modell (DOM) und darüber hinaus verfügbaren Einstellungen zur Darstellung (CSS) ein ausgabefähiges Bild erzeugt (die angezeigte Webseite). ? Was ist mit dem Begriff Computergrafik gemeint? Wofür steht die Abkürzung RGB (bei Grafiken)? Woraus ergibt sich die Größe einer Pixelgrafik? Wovon hängt es ab, ob eine Pixelgrafik als scharf und wirklichkeitsnah wahrgenommen wird? Welche Vorteile bietet eine Vektorgrafik?

39

341

3D-Druck

© Springer Fachmedien Wiesbaden GmbH, ein Teil von Springer Nature 2024 T. Eichstädt und S. Spieker, 52 Stunden Informatik, https://doi.org/10.1007/978-3-658-41838-0_40

40

342

40

Kapitel 40 · 3D-Druck

Der 3D-Druck ist ein additives Fertigungsverfahren, bei dem das Material Schicht für Schicht aufgetragen wird. Der Ausgangspunkt sind 3D Daten, die in Ebenen unterteilt werden und dann durch den Drucken Ebene für Ebene aufgebaut werden. Es handelt sich um ein vergleichsweise günstiges Verfahren, wenn Objekte aus Plastik hergestellt werden sollen und ist deshalb vor allem im Prototypenbau zu finden. Es gibt diverse Quellen für 3D Objekte im Internet die sich frei verwenden lassen. Die Vorlagen reichen von Spielzeug, Ersatzteilen bis hin zu praktischen Alltagshelfern. Beim eigentlichen Druckprozess wird zuerst die Platte, auf der das Werkstück aufgebracht wird aufgeheizt. Danach startet der Druck, indem das Plastik durch eine Düse aufgeschmolzen wird und auf die Platte gedruckt wird, wo es langsam erkaltet. Beispielhaft wird ein Spielzeugeimer gedruckt und die verschiedenen Phasen des Drucks genauer betrachtet. Der 3D-Druck ist auch als additive Fertigung bekannt. Es handelt sich dabei um ein Fertigungsverfahren, bei dem das Material Schicht für Schicht aufgetragen wird, um dreidimensionale Gegenstände zu erzeugen. Demgegenüber gibt es das subtraktive Verfahren, das als klassische Methode zum Einsatz kommt. Bei der subtraktiven Fertigung wird ein meist quaderförmiger oder runder Block als Ausgangspunkt gewählt, bei dem kontrolliert Material entfernt wird. Dies geschieht durch Bearbeitungsprozesse wie Drehen, Fräsen, Schleifen oder Bohren. Diese Arbeiten werden entweder per Hand oder von einer Maschine ausgeführt. Im zweiten Fall spricht man von CNC-Bearbeitung (Computerized Numerical Control). Für die CNC-Bearbeitung werden zunächst CAD-Daten eines am Computer entworfenen 3D-Modells benötigt. Diese reinen Geometriedaten müssen in einen für die Maschine lesbaren Code umgewandelt werden. In diesem wird festgelegt, mit welchen Werkzeugen und in welcher Reihenfolge das Material bearbeitet werden muss. Nachdem die Daten aufbereitet sind, kann die Anlage gerüstet werden. Das bedeutet, der Materialrohling wird eingesetzt und in die Anlage eingespannt. Außerdem müssen die notwendigen Werkzeuge, wie Fräser und Bohrer bereitgestellt und die Fertigungsdaten auf die Anlage gespielt werden. Danach startet die Anlage den subtraktiven Fertigungsprozess. Der Ausgangspunkt in der additiven Fertigung ähnelt dem der CNCBearbeitung. Auch hier bilden die Basis 3D-Daten, die ebenso zuerst aufbereitet werden müssen. Beim 3D-Druck erfolgt die Aufbereitung durch einen Slicer (Schneidemaschine), der das Bauteil vollautomatisch in einzelne Ebenen zerlegt. Jede Ebene stellt dabei ein 2D-Modell bzw. die Kontur des Bauteils in einer vorgegebenen Höhe dar. Um sich die Gegebenheiten besser vorstellen zu können, zeigt . Abb. 40.1 das Bild eines kleinen Spielzeugeimers, der in Ebenen zerteilt wurde. Mit diesen einzelnen Modellen kann ein 3D-Drucker das Bauteil nun Schicht für Schicht aufbauen und die Schichten miteinander verbinden. Wenn alle Schichten gedruckt wurden, ist das Bauteil komplett fertig. Im Gegensatz zur subtraktiven Fertigung entfallen bei der additiven Fertigung Rüstvorgänge wie das Tauschen der Bohrer und Fräsköpfe. Anders als bei der subtraktiven Herangehensweise wird bei der additiven Fertigung weitestgehend nur das Material verwendet, das für das Bauteil selbst notwendig ist.

343 Kapitel 40 · 3D-Druck

40

. Abb. 40.1 Slicer Bild eines Eimers in Ultimaker Cura . Tab. 40.1 Vor- und Nachteile der verschiedenen Fertigungsverfahren Verfahren

Subtraktiv

Additiv (3D-Druck)

Vorteile

+ alle festen Produkte können verwendet werden + Oberflächen von rau bis glatt

+ erlaubt komplexe Geometrien + günstig, vor allem bei kleinen Stückzahlen + wenig Abfall + keine Rüstzeiten

Nachteile

- weniger Konstruktionsfreiheiten - Abfallprodukte wie Späne - Rüstzeiten

- derzeit sind nur Kunststoffe kostengünstig - meist raue Oberfläche

Anwendungen

* Bauteile mit geringen Toleranzen * Metallbauteile mit hohen Belastungen * große Bauteile

* Rapid Prototyping * Kleinserien * Bauteile mit Geometrien

komplexen

In . Tab. 40.1 sind Vor- und Nachteile des 3D-Drucks übersichtlich dargestellt. Ebenfalls sind Anwendungsklassen der jeweiligen Fertigungsmethode angegeben. Das Rapid Prototyping (schneller Modellbau) ist der Überbegriff verschiedener Verfahren zur schnellen Herstellung von Musterbauteilen ausgehend von den Konstruktionsdaten.

344

Kapitel 40 · 3D-Druck

Übung Fallen dir weitere Vorteile des 3D-Drucks gegenüber der subtraktiven Fertigung ein? Was könnten weitere Nachteile sein? Welche Einsatzmöglichkeiten kannst du dir für die verschiedenen Fertigungsverfahren vorstellen?

Das generelle Verfahren der 3D-Druck-Funktionsweise ist deutlich greifbarer, wenn das Ganze an einem Beispiel genauer betrachtet wird. Der Startpunkt ist immer ein 3D-Modell, das auch gut im Internet zu finden ist. Bekannt und oft genutzt ist die Seite 7 https://www.thingiverse.com/. Dort können Nutzer ihre eigenen Kreationen hochladen und der Allgemeinheit zur Verfügung stellen. Übung Besuche die Seite 7 https://www.thingiverse.com/ und suche nach interessanten Vorlagen. Die Vorlagen reichen von Spielzeug, kleinen Ersatzteilen und Dekorationsobjekten bis hin zu praktischen Alltagshelfern wie beispielsweise Batteriehaltern.

40

In diesem Beispiel möchte ich für meine Tochter einen kleinen Eimer maßstabsgetreu für ihre Schleich(™) Pferde drucken und werde bei der Suche nach „Schleich Water Buckets“ fündig. Zu den Bildern gibt es meist Dateien zum Herunterladen, die das eigentliche 3D-Modell beinhalten. Normalerweise werden Dateien mit der Endung .stl verwendet. Die Abkürzung stl stand ursprünglich für die Bezeichnung Stereolithographie. Heute wird sie aber meist als Abkürzung für „Standard Triangle Language“ (Standard Dreieckssprache) verstanden. Für dieses Beispiel wird also die Datei WaterBucketu.stl heruntergeladen, die im Programm Ultimaker Cura bearbeitet werden kann. Das Programm kann man über 7 https:// ultimaker.com/de/software/ultimaker-cura beziehen. Es funktioniert mit allen gängigen 3D-Druckern und nicht nur mit denen von Ultimaker. Nachdem im Programm hinterlegt ist, welcher 3D-Drucker zum Einsatz kommt, kann konfiguriert werden, wie das Modell verarbeitet werden soll. . Abb. 40.2 zeigt die vereinfachten Einstellungen, die in den meisten Fällen vollkommen ausreichend sind. In der ersten Zeile kann die Auflösung des Druckvorgangs eingestellt werden. Diese gibt an, in welcher Dicke die einzelnen Schichten aufgetragen werden. Je feiner die Schicht, desto mehr Lagen müssen beim 3D-Druck aufgetragen werden. Je feiner das Druckbild, desto länger dauert der Druck. Für den hier verwendeten 3D-Drucker „Anycubic i3 Mega S“ machen diese Feinheiten für den kleinen Beispieleimer aber einen gehörigen Unterschied. Bei einer Auflösung von 0,1 mm dauert der Druck 39 min. Bei einer eingestellten Auflösung von 0,3 mm dauert der Druck allerdings nur 13 min. Ersichtlich ist eine Verdreifachung der Zeit, da dreimal so viele Lagen gedruckt werden müssen. Für das hier genannte Beispiel wird ein Druck mit 0,2 mm eingestellt, der mit einer Druckzeit von etwa 19 min zu Buche schlägt.

345 Kapitel 40 · 3D-Druck

40

. Abb. 40.2 Slicer-Einstellungen

Der Eimer des Modells ist zu einer gewissen Höhe gefüllt, also nicht komplett leer. Hierbei ist der Vorteil des 3D-Drucks gut ersichtlich, denn der Raum muss nicht komplett mit Material gefüllt werden, sondern kann eine einzelne Struktur drucken, die ausreichend Halt gibt, aber auch einen Großteil an Material spart. Hier wird eine Füllung (Infill) von 35 % eingestellt. Es werden also 65 % Material gespart, ohne dass die Festigkeit des Eimers wesentlich darunter leidet. Unterstützungsstrukturen (Support) sind bei diesem Modell nicht nötig, da es keine freischwebenden Strukturen gibt. Ebenfalls kann auf eine Adhäsion (Adhesion) verzichtet werden. Wenn man im Kontext 3D-Druck von Adhäsion spricht, was nichts anderes als Haftung bedeutet, ist damit die Haftung des Werkstücks auf dem Druckbett gemeint. Nachdem das Programm mit dem Slicen fertig ist, entsteht für unseren Drucker eine angepasste .gcode-Datei. Diese wird dann auf den 3D-Drucker kopiert oder mittels einer SD-Karte übertragen. Der Druck kann nun gestartet werden. Der Drucker heizt zuerst die Platte und den Druckkopf auf, denn das Plastik wird durch den Druckkopf geschmolzen, und dann auf die Platte aufgetragen. . Abb. 40.3 zeigt den Start des Aufheizens.

346

Kapitel 40 · 3D-Druck

. Abb. 40.3 Foto des Aufwärmprozesses beim 3D-Drucker

40

Der Druck startet, sobald die gewünschten Temperaturen erreicht sind. Bei dem verwendeten Drucker und Material wird die Platte auf 60 ◦ C und die Düse auf 200 ◦ C aufgeheizt. Der Druck startet anschließend vollautomatisch. In . Abb. 40.4 ist der Druckverlauf gut nachvollziehbar. Ein besonderes Augenmerk richtet sich dabei auch darauf, wie die Löcher mitgedruckt werden, sodass diese nicht nachträglich gebohrt werden müssen. Um das Spielzeug fertigzustellen, wird ein Stück roter Draht verwendet, um den Henkel des Eimers zu erzeugen. Das verwendete Druckmaterial ist grünes Polylactide, abgekürzt PLA. Hierbei handelt es sich um synthetische Polymere, die zu den Polyestern gehören. Aus ihnen wird Kunststoff gefertigt, der aus regenerativen Quellen gewonnen wird (wie beispielsweise Maisstärke). 3D-Druck-Filament ist oftmals kein reines PLA, sondern eine Grundstruktur, die mit Additiven angereichert wird, um bestimmte gewünschte Eigenschaften zu erhalten. Da 3D-Druck vergleichsweise günstig sein soll, wollen wir auch die Kosten des kleinen Eimers genauer betrachten. Für den Eimer wurden etwa zwei Gramm Material verwendet. Eine Rolle mit einem Kilogramm Filament kostet im Schnitt 20 bis 25 e, was zu etwa fünf Cent Kosten bei angesetzten 25 e je Kilo führt. Der Stromverbrauch des eingesetzten 3D-Druckers liegt bei etwa 120 Watt während des Druckprozesses. Inklusive Aufheiz- und Abkühlphase hat der Druckvorgang etwa 35 min gedauert, was sich dann zu 70 Wattstunden summiert. Bei einer angenommenen kWh Strom für 40 Cent, ergeben sich damit etwa drei Cent. Somit kostet der fertige Eimer aus . Abb. 40.5 circa acht Cent an Material und Strom.

347 Kapitel 40 · 3D-Druck

. Abb. 40.4 Druckverlauf des 3D-Drucks für den Schleich-Eimer

. Abb. 40.5 Endergebnis des Eimerdrucks mit rotem Draht als Henkel

40

348

Kapitel 40 · 3D-Druck

In der Nahaufnahme des Eimers wird aber auch ein Nachteil des 3D-Drucks deutlich. Durch die aufgetragenen Schichten sind an den Rändern auch immer die Druckebenen zu erkennen. Diese führen zu einer relativ rauen Oberfläche. Größere Strukturen dauern im Druck erheblich länger und sind dementsprechend natürlich auch nicht mehr so günstig wie der Eimer. Wer jetzt mit dem Gedanken spielt, in das Hobby 3D-Druck einzusteigen, kann mit 200 bis 500 eAnschaffungskosten für einen anfängerfreundlichen 3D-Drucker rechnen. Die Unterschiede liegen dabei vor allem in der Präzision und der Druckgeschwindigkeit. ? Was sind subtraktive Fertigungsverfahren? Wie nennt man den Vorgang, der aus einem 3D-Modell eine druckfähige Datei erzeugt? Müssen beim 3D-Druck Löcher oder Aussparungen nachträglich nachbearbeitet werden? Was sind die Vorteile des 3D-Drucks? Was sind die Nachteile des 3D-Drucks?

40

349

Statistik

© Springer Fachmedien Wiesbaden GmbH, ein Teil von Springer Nature 2024 T. Eichstädt und S. Spieker, 52 Stunden Informatik, https://doi.org/10.1007/978-3-658-41838-0_41

41

350

41

Kapitel 41 · Statistik

Statistik ist der wissenschaftliche Ansatz, um quantitative Erkenntnisse aus Daten zu gewinnen. Statistik gab es bereits sehr lange vor den ersten Computern. Heute werden dazu meist die Programmiersprachen R und Python eingesetzt oder Statistikapplikationen. Es gibt auch erste entsprechende Onlinetools. Metrische Variablen lassen sich mithilfe der Häufigkeitsverteilung analysieren. Dazu kann das Histogramm verwendet werden. Der Boxplot hilft ebenfalls dabei, eine Werteverteilung zu beurteilen. Er enthält den Median und den Mittelwert. Ein sehr wichtiges Phänomen ist die Korrelation, die einen statistischen Zusammenhang zwischen Variablen beschreibt. Sie ist nicht zu verwechseln mit dem ursächlichen Zusammenhang, der Kausalität. Statistik wird in den unterschiedlichsten Disziplinen eingesetzt. Eine davon ist Business Intelligence. So wird die Analyse von Daten und Prozessen genannt, die ein Unternehmen betreffen. In der Informatik beschäftigen wir uns damit, Informationen zu verarbeiten. Natürlich haben Menschen schon lange, bevor es Computer gab, Informationen gesammelt, um Schlüsse aus ihnen zu ziehen. Der wissenschaftliche Ansatz dazu ist die Statistik. In der Statistik geht es darum, quantitative Erkenntnisse aus Daten zu gewinnen. Quantitativ heißt, dass es um Zahlenwerte oder Ausmaße geht. Ein Statistiker würde also nicht fragen, „Verdient ein BMW-Mitarbeiter gut?“, sondern „Wie hoch ist das durchschnittliche Einkommen eines BMW-Mitarbeiters?“. Denn die zweite Frage lässt sich quantitativ beantworten. Hier weitere beispielhafte statistische Fragestellungen: 5 Medizin: Wie hoch ist die Wirksamkeit eines neuen Impfstoffs auf Grundlage der bisherigen Studienergebnisse? 5 Wirtschaft und Börse: Wie viel riskanter ist die Geldanlage in Aktien als in einen Sparbrief? 5 Erziehungswissenschaften: Wie sehr wirkt sich das Lesevermögen auf den weiteren erfolgreichen Verlauf der Schullaufbahn aus? 5 Versicherungsmathematik: Welche Faktoren beeinflussen die Beitragshöhe einer Lebensversicherung wie stark? 5 Umfragen: Wie viele Personen müssen befragt werden, damit ein repräsentatives Meinungsbild entsteht? 5 Werbepsychologie: Wie stark wirkt die gewünschte Assoziation bei der relevanten Bevölkerungsgruppe? 5 Biologie: Mit welcher Wahrscheinlichkeit lässt sich ein Tollwutbefall der Gesamtpopulation bei einer Stichprobe von 10 % gefangenen Fledermäuse ausschließen? Das Wort Statistik stammt von „statisticum“, lateinisch für „den Staat betreffend“. Statistik wurde also ursprünglich zur Administration des Staates eingesetzt. Die Erfassung von Bevölkerungsstatistiken gab es bereits vor mehr als 4000 Jahren. Viele der heute verwendeten statistischen Verfahren haben eine entsprechend lange Tradition. Einige Fragestellungen, die in den unterschiedlichen Wissenschaftsbereichen statistisch behandelt werden, sind seit Jahrhunderten nahezu unverändert. Dennoch erfordern die Auswertung neuer Daten, die Reduktion von Unsicherheiten und die Verfeinerung bestehender Modelle permanent den Einsatz von Statistik. Dafür ist die Programmiersprache Python sehr gut geeignet. Das werden wir in

351 Kapitel 41 · Statistik

41

 Kap. 42 Data Science (mit Jupyter) und  Kap. 43 Regressionsanalyse (mit Jupyter) sehen. Das kommt uns entgegen, da wir uns mit Python bereits in früheren Stunden beschäftigt haben. Nur die Programmiersprache R erfreut sich unter Statistikern noch größerer Beliebtheit. Wer neugierig ist, der sei hiermit ermutigt, sich über die Sprache R zu informieren und sie einmal auszuprobieren. Die allermeisten Anwender von Statistik benutzen aber überhaupt keine Programmiersprache, sondern Standardsoftware. Beliebte Statistikapplikationen sind: Excel, SAS, SPSS, Stata. Wir verwenden in dieser Stunde ein einfaches Onlinetool, das völlig ausreichend ist, um die wichtigsten Begriffe, Grafiken und Problemstellungen der Statistik kennenzulernen. Übung Besuche die Webseite 7 https://datatab.de/statistik-rechner/deskriptive-statistik. Sieh dir die dort hinterlegten Beispieldaten an (vergleiche . Abb. 41.1). Um welche Art von Daten handelt es sich? Wirf einen genaueren Blick auf die Spalte „Einkommen“. Welche quantitativen Informationen stecken in diesen Daten? Sieh dir auch die Informationen zu den verschiedenen Variablen unter der Tabelle an.

. Abb. 41.1 DATAtab-Statistikrechner

352

Kapitel 41 · Statistik

Wie wir es bereits kennen, sind die Daten gut strukturiert in Tabellenform dargestellt. Anscheinend sind hier mehrere Personen anonymisiert erfasst. Da die Datenmenge übersichtlich ist, können wir zum Beispiel schnell ablesen, welches das höchste erfasste Alter ist oder wie viele Personen in Berlin leben. Um die Daten statistisch besser zu erfassen, sehen wir uns nun das Einkommen einmal genauer an. Es handelt sich dabei um eine metrische Variable, also einen Zahlenwert. (Im Gegensatz zu den nominalen Variablen, also benannte Werte, und den ordinalen Variablen, also benannte Werte, die zusätzlich eine natürliche Ordnung besitzen, wie zum Beispiel die Wertigkeit des Schulabschlusses.) Übung Wähle unter „metrische Variablen“ die Checkbox beim Einkommen aus, um verschiedene weitere Informationen zu den Daten zu bekommen. Sieh dir die Diagramme an, die unterhalb der Daten angezeigt werden. Scrolle nach unten, um alle Diagramme zu sehen.

Eine sehr populäre Darstellung von metrischen Größen ist das Liniendiagramm (siehe . Abb. 41.2). Diese Art der Visualisierung entspricht unserem natürlichen Verständnis vom Zusammenhang zwischen genau zwei Größen, zum Beispiel bei einem zeitlichen Verlauf. Allerdings werden darin eben auch nur Wertepaare dargestellt (in diesem der Fall und das Einkommen), sodass es statistisch von eingeschränktem Nutzen ist.

41

. Abb. 41.2 Liniendiagramm

353 Kapitel 41 · Statistik

41

. Abb. 41.3 Histogramm

Das Histogramm stellt eine Häufigkeitsverteilung der Einkommenswerte grafisch dar (siehe . Abb. 41.3). Die Häufigkeitsverteilung gibt an, wie oft Werte in einer Datenmenge vorkommen. Die Histogrammdarstellung ist den meisten Menschen bereits begegnet. Zum Beispiel in der Altersverteilung der deutschen Bevölkerung. Wer kein entsprechendes Bild vor Augen hat, kann es schnell mit einer entsprechenden Suchanfrage finden. Neben Liniendiagramm und Histogramm bieten Tools wie DATAtab noch eine weitere interessante Darstellung der Verteilung einer metrischen Variablen, den Boxplot. In . Abb. 41.4 sehen wir diese Grafik, die verschiedene statistische Größen zusammenfasst. Innerhalb des Kastens befindet sich ein durchgezogener Strich, der den Median der Datenmenge angibt. Der Median bezeichnet den mittleren Wert einer Datenmenge. Also genau den Wert, der die Datenmenge in zwei Hälften teilt, wobei die eine Hälfte kleiner ist als der Medianwert und die andere Hälfte größer ist als der Medianwert. Mit einer gestrichelten Linie ist der Mittelwert, auch Durchschnitt genannt, dargestellt, also der rechnerisch gemittelte Wert aus allen vorkommenden Werten in der Datenmenge. Die Grenzen der Kästen bezeichnen das untere und obere Quartil, also genau die Grenze, unter der 25 % der Werte beziehungsweise über der 75 % der Werte liegen. Die Verteilung der restlichen Werte wird durch die sogenannten „Antennen“ dargestellt. Dabei enden die Antennen jeweils beim minimalen und maximalen Wert, der in der Datenmenge vorkommt.

354

Kapitel 41 · Statistik

. Abb. 41.4 Boxplot

Übung Mache dir bewusst, dass Median und Durchschnitt stark voneinander abweichen können. In . Abb. 41.4 liegt der Durchschnittswert deutlich unter dem Medianwert. Was meinst du, wie es für Gesamtdeutschland aussieht? Welcher Wert ist höher, das Durchschnittseinkommen oder das Medianeinkommen der Deutschen? Warum? Versuche in Zukunft darauf zu achten, was genau gemeint ist, wenn von einem Mittelwert oder mittleren Wert die Rede ist.

41

Bis jetzt haben wir nur eine einzige Größe betrachtet. Wirklich spannend wird Statistik, wenn mehrere Variablen und deren Beziehung untersucht werden sollen. Wir könnten neben dem Einkommen auch Alter und Geschlecht betrachten und prüfen, ob ein statistischer Zusammenhang besteht. Wer Lust hat, der kann versuchen, solche Zusammenhänge in den Beispieldaten zu finden. Dazu sind statistische Werte von Teilen der Daten interessant. Zum Beispiel liegt der Mittelwert des männlichen Einkommens bei etwa 2000, der Mittelwert des weiblichen Einkommens bei etwa 2600. In dieser Stichprobe verdienen Frauen also im Durchschnitt mehr als Männer. Hängen also Geschlecht und Einkommen zusammen? Es kann aber auch auffallen, dass die Männer im Durchschnitt nur 28,8 Jahre alt sind, während die Frauen über 45 Jahre alt sind. Hängen also vielmehr Alter und Geschlecht zusammen? Wenn ein statistischer Zusammenhang zwischen zwei oder mehr der Variablen besteht, spricht man von einer Korrelation. Die Korrelation (von lateinisch correlatio, Wechselbeziehung) kann erklärbar sein oder auch vom Zufall beeinflusst. Bei metrischen Variablen kann die Korrelation rechnerisch als ein Wert zwischen −1 und 1 bestimmt werden. Dabei bedeutet die 0 eine vollständige Unabhängigkeit (was alleine durch den Zufall nicht vorkommt). Eine 1 steht für eine vollkommene Übereinstimmung, also die maximale positive Korrelation. In unserem Beispiel

355 Kapitel 41 · Statistik

41

zeigt sich eine relativ hohe Übereinstimmung zwischen Einkommen und Alter (siehe . Abb. 41.5). Ein negativer Wert würde bedeuten, dass hohe Einkommen mit niedrigem Alter zusammenfallen. Selbst wenn eine Korrelation besteht, kann man aber nicht automatisch davon ausgehen, dass auch ein ursächlicher Zusammenhang besteht, also eine Kausalität (von lateinisch causalis, ursächlich). Die vorschnelle Verwechslung von Korrelation und Kausalität ist einer der großen Fallstricke der Statistik. Angenommen, in einer Studie wird festgestellt, dass Menschen, die mehr verdienen als andere, auch angeben, glücklicher zu sein. Es besteht also eine Korrelation zwischen den Variablen Einkommen und Glücksempfinden. Heißt das nun, dass 5 glückliche Menschen erfolgreicher sind und deswegen auch mehr verdienen? 5 Menschen, die mehr verdienen, dadurch glücklicher werden? 5 Oder besteht möglicherweise überhaupt kein ursächlicher Zusammenhang? Wie viele Personen wurden befragt und könnte es sich um Zufall handeln? Oder vielleicht waren Gutverdiener eher bereit, an der Studie teilzunehmen. Die Schlechtverdiener wurden dazu genötigt und waren deswegen schlechter Laune, Auskunft geben zu müssen. Außerhalb der Studienteilnahme sind sie aber genauso glücklich wie die Besserverdiener. Wir wissen es nicht. Es ist oft gar nicht so einfach, über Kausalität zu entscheiden.

. Abb. 41.5 Korrelationen

356

Kapitel 41 · Statistik

Klarer ist der folgende Fall: In Sommern mit hohem Umsatz von Speiseeis treten mehr Sonnenbrände auf. Können wir also schlussfolgern, dass Eisessen Sonnenbrand erzeugt? Natürlich nicht. Eine dritte Größe ist ursächlich, nämlich die Sonneneinstrahlung, die die beiden anderen Phänomene gleichermaßen zur Folge hat. Wir haben in dieser Stunde gelernt, wie aus Daten quantitative Informationen abgeleitet werden können. Vielfach wird die Statistik als Teilgebiet der Mathematik betrachtet. Neben Berechnungen spielen aber auch die Art der Fragestellung, Interpretation und Präsentation von Ergebnissen eine große Rolle. Die Statistik ist eine Hilfswissenschaft, die in den unterschiedlichsten Fachbereichen eingesetzt wird. Da die Datenverarbeitung fast immer mit Computern passiert, ist aber auch die Nähe zur Informatik sehr groß. Insbesondere in der Wirtschaftsinformatik spielt Statistik eine zentrale Rolle. Werden Daten und Prozesse, die ein Unternehmen betreffen, analysiert, spricht man von Business Intelligence (kurz BI). Wir verzichten in diesem Buch darauf, BI separat zu behandeln. In gewisser Weise haben wir das bereits getan. Das gesehene Beispiel der Einkommensanalyse könnte etwa in einem Unternehmen stattfinden, mit dem Ziel, Entscheidungen in der Vergütung von Mitarbeitern zu unterstützen. Dann würde es in die Kategorie BI fallen. Business Intelligence ist neben Data Science und künstlicher Intelligenz (vergleiche  Kap. 42 Data Science (mit Jupyter) und  Kap. 44 Künstliche Intelligenz) einer der Trends, die sich der Mittel der Informatik und der Statistik bedienen, um noch mehr Wert aus Daten zu ziehen. ? Was sind Beispiele für statistische Fragestellungen? Welche Darstellungsmöglichkeiten gibt es für die Verteilung einer metrischen Variablen? Was ist der Unterschied zwischen Median und Mittelwert? Was ist der Unterschied zwischen Korrelation und Kausalität? Was ist Business Intelligence?

41

357

Data Science (mit Jupyter)

© Springer Fachmedien Wiesbaden GmbH, ein Teil von Springer Nature 2024 T. Eichstädt und S. Spieker, 52 Stunden Informatik, https://doi.org/10.1007/978-3-658-41838-0_42

42

358

42

Kapitel 42 · Data Science (mit Jupyter)

Data Science bezeichnet die Gewinnung von Wissen aus Daten. Der Begriff kam zu Beginn des 21. Jahrhunderts auf und beschreibt ein neuartiges Vorgehen im Umgang mit Daten. Gleichwohl ist der Übergang zur Statistik mitunter flieend. Ein Einblick in die Problemstellungen der Data Science kann in der Online-Community Kaggle erlangt werden. Für die Lösungsfindung ist es zunächst wichtig, passende Daten zu finden. In dieser Stunde werden Temperaturdaten vom Deutschen Wetterdienst betrachtet. Um die Daten zu inspizieren und zu verarbeiten, sind Jupyter Notebooks sehr hilfreich. Jupyter lässt sich als Erweiterung von Python installieren und im Webbrowser öffnen. Die Ausführung von Python-Code erfolgt interaktiv in Zellen. Das Ergebnis wird ebenfalls direkt im Notebook angezeigt. Auf diese Weise lassen sich schnell grafische Auswertungen erzeugen. Die Temperaturverläufe steigen über die Zeit an. Zur Interpretation ist das Wissen eines Klimaexperten notwendig. „Daten sind das neue Öl“, heißt es oft. Auch dieses Buch leistet einen Beitrag dazu, die Bedeutung von Daten zu erkennen. In  Kap. 35 Das relationale Modell haben wir gelernt, dass Daten dann wertvoll sind, wenn sie Informationen enthalten. In  Kap. 41 Statistik haben wir von ein paar Methoden gehört, die behilflich sind, an solche Informationen zu gelangen. Aber woher wissen wir, ob wir auch die passenden Datenquellen verwenden? Woher, ob wir die richtigen Fragen stellen? Was nutzen uns die gewonnenen Informationen und wie setzen wir sie richtig ein? Nicht immer ist das offensichtlich. Vielleicht sind die Daten nicht ausreichend strukturiert oder die Datenmenge ist zu gering oder so umfangreich, dass wir die Informationen trotz Struktur nicht auswerten können, oder die Fragestellung ist nicht eindeutig genug, um eine korrekte Antwort zu finden. In vielen Fällen braucht es einen Datenexperten, den Data-Scientisten oder deutsch Datenwissenschaftler. Data Science bezeichnet die Gewinnung von Wissen aus Daten. Moment. Mancher wird sich nun fragen, wo der Unterschied zwischen Data Science und Statistik liegt. Mitunter ist der Übergang fließend. Es lassen sich aber Unterschiede im Vorgehen feststellen. Statistiker beschäftigen sich stark mit der Methodik, wie Daten möglichst optimal genutzt werden können. Es geht ihnen oft darum, Auswertungen immer weiter zu verfeinern, um Fehler zu reduzieren und möglichst präzise Aussagen treffen zu können. Die grundsätzlichen Fragestellungen des Statistikers und die von ihm verwendeten Modelle sind dabei oft gut bekannt. Neuerdings gibt es aber immer größere, heterogene Datenquellen. Gleichzeitig sind die Möglichkeiten der Auswertung besser und vielfältiger geworden. Bei neuen Problemen ist oft unklar, wie die Daten aussehen und wie sie modelliert werden können, sodass viel Zeit in die Datenaufbereitung fließt und parallel diverse Modelle erstellt und verglichen werden müssen. Für diesen neuen Typ der Datenanalyse kam zu Beginn des 21. Jahrhunderts der Begriff Data Science auf und dieses Berufsfeld gewann immer mehr an Beliebtheit. Im Jahr 2012 erschien in der Harvard Business Review der Artikel „Data Scientist: The Sexiest Job of the 21st Century“. Seit dieser Zeit ist Data Science ein beliebtes und gut vergütetes Berufsfeld.

359 Kapitel 42 · Data Science (mit Jupyter)

42

In dieser und der folgenden Stunde befassen wir uns mit dem gut bekannten Phänomen der Klimaerwärmung, dem wir uns mit den Werkzeugen und dem Vorgehen eines Data-Scientisten nähern wollen. Notwendigerweise stellen wir das Problem vereinfacht dar, um es im Rahmen dieses Buchs behandeln zu können. Es gibt unzählige weitere Data-Science-Probleme aus der realen Welt, die darauf warten, gelöst zu werden. Wer an derartigen Problemen für Data Science interessiert ist, dem sei die Online-Community Kaggle empfohlen. >

Online-Community zur Organisation von Data-Science-Wettbewerben: 7 https:// www.kaggle.com/

Wir versuchen in dieser Stunde Antworten auf die folgenden Fragestellungen zu finden: 1. Wie hoch war die durchschnittliche Lufttemperatur in Berlin im Jahr 2019? 2. Wie sieht der historische Verlauf der Lufttemperatur aus? In welchen Jahren war es besonders kalt oder besonders heiß? 3. Wie war die Temperatur in Berlin im Vergleich zu anderen Regionen Deutschlands? 4. Können wir einen Trend in der Entwicklung der Lufttemperatur erkennen und diesen bestenfalls erklären? Zunächst benötigen wir die entsprechenden Klimadaten vom Deutschen Wetterdienst (DWD). Der DWD ist eine Bundesbehörde, die meteorologische Dienstleistungen erbringt, insbesondere Wettervorhersagen. Außerdem stellt der DWD Klimadaten frei auf seiner Webseite zur Verfügung (siehe . Abb. 42.1).

. Abb. 42.1 Webseite DWD

360

Kapitel 42 · Data Science (mit Jupyter)

Übung Lade die jährlichen Durchschnittstemperaturen von der Webseite des Deutschen Wetterdienstes herunter: 7 http://opendata.dwd.de/climate_environment/CDC/regional_ averages_DE/annual/air_temperature_mean/regional_averages_tm_year.txt. Welche Daten sind enthalten? Wie wirst du anhand der Daten die Fragestellungen beantworten? Welche Grafiken wären nützlich, um die Fragen zu beantworten?

Die Datei regional_averages_tm_year.txt enthält die Lufttemperaturen im jährlichen Durchschnitt für verschiedene deutsche Bundesländer und für Deutschland insgesamt. Die Aufzeichnung startet im Jahr 1881 und endet im Jahr 2022 (zu dem Zeitpunkt, als diese Auflage geschrieben wurde, war das der Fall). Wir können die erste Fragestellung ganz einfach beantworten, indem wir die letzte Zeile betrachten. Für jedes enthaltene Bundesland lässt sich hier die durchschnittliche Lufttemperatur aus dem vergangenen Jahr ablesen. Schwieriger ist es, die zweite Frage (umfassend) zu beantworten. Spätestens an dieser Stelle sollten wir uns Gedanken machen, wie wir die Daten maschinell verarbeiten können. Die Daten sind sehr schön strukturiert. Sie wurden im CSV-Format gespeichert (genau wie in  Kap. 5 Code – mit dem kleinen Unterschied, dass hier Semikolons „;“ statt Kommas „,“ verwendet wurden). Wir können die Daten also maschinell lesen und weiterverarbeiten. Data-Scientisten verwenden zu diesem Zweck gern Jupyter Notebook. Jupyter Notebook ist eine webbasierte Umgebung zur interaktiven Datenauswertung. Interaktiv bedeutet in diesem Fall, dass der Benutzer in der Lage ist, Code zu schreiben und abschnittsweise auszuführen, formatierten Text und Datenvisualisierungen darzustellen. Das alles geschieht in derselben Umgebung. Dadurch gelangt der Data-Scientist vergleichsweise schnell zu Erkenntnissen und vorzeigbaren Resultaten. >

42

Wer Jupyter online ausprobieren möchte (auch für die weiteren Übungen möglich), kann dies hier tun: 7 https://jupyter.org/try

Jupyter unterstützt verschiedene Programmiersprachen. Da sich Python gut zur Datenauswertung eignet und wir bereits einige Erfahrungen damit gesammelt haben, wollen wir es auch in dieser Stunde verwenden. In  Kap. 20 „Hallo Welt“ (in Python) hatten wir Python auf unserem Computer installiert. Um Erweiterungen zur Standardinstallation von Python verwenden zu können, benutzen wir das Paketverwaltungsprogramm pip. Pip liegt normalerweise im PythonInstallationsverzeichnis im Unterordner Scripts. Um pip aufrufen zu können, müssen wir diesen kompletten Pfad angeben. Oder wir fügen ihn zu der PATHVariablen hinzu, wie wir das bereits von der Installation von Python kennen. Ist das geschehen, installieren wir Jupyter mit dem folgenden Befehl pip install jupyter. Eine weitere praktische Bibliothek für grafische Darstellungen ist Matplotlib. Nach der Installation können wir Jupyter Notebook starten.

361 Kapitel 42 · Data Science (mit Jupyter)

42

pip install jupyter pip install matplotlib jupyter notebook

Der Befehl jupyter notebook öffnet Jupyter im Standardbrowser unter der URL  http://localhost:8888/tree (siehe . Abb. 42.2). Diese URL ist nur erreichbar, nachdem der Befehl ausgeführt wurde. Die Startseite von Jupyter zeigt die Verzeichnisstruktur an der Stelle, an der der Befehl jupyter notebook ausgeführt wurde. Über den Button „New“ lässt sich ein neues Python 3 Notebook erstellen (siehe . Abb. 42.3)

. Abb. 42.2 Jupyter-Startansicht

. Abb. 42.3 Erstellung eines neues Notebooks

362

Kapitel 42 · Data Science (mit Jupyter)

. Abb. 42.4 „Hallo Welt“ in Jupyter Notebook

Innerhalb des Notebooks kann Python-Code ausgeführt werden. Die Ausführung passiert zellenweise durch den Button „Run“ oder durch die Tastenkombination Shift + Enter. Die Zahl links neben den Zellen zeigt an, in welcher Reihenfolge die Zellen ausgeführt wurden. Um mit der neuen Umgebung vertraut zu werden, empfiehlt es sich wie immer, mit einer „Hallo Welt“-Ausgabe zu starten (siehe . Abb. 42.4). Wir sind jetzt bereit, unsere Data-Science-Aktivitäten fortzusetzen und mit der Analyse der Temperaturdaten zu starten. Dazu können wir im Jupyter Notebook Befehle direkt ausführen und das Ergebnis sehen. Im Gegensatz zu einer Konsole bietet Jupyter aber einige Vorteile, wie das Speichern und Teilen von NotebookDokumenten. Die Ergebnisse sind im Dokument enthalten und bleiben erhalten, bis die entsprechende Zelle erneut ausgeführt wird. Das gilt für einfache Ergebnisausgaben durch den print-Befehl ebenso wie für grafische Visualisierungen. Darüber hinaus können Zellen anstatt Programmcode auch formatierten Text enthalten, um das Dokument ansprechender zu gestalten. Aus all diesen Gründen eignen sich Notebooks hervorragend zur Analyse und zur anschließenden Präsentation der Analyseergebnisse.

42

Übung Falls noch nicht geschehen, installiere Jupyter Notebook. Lade die Dateien von 7 https://github.com/StefanSpieker/52Stunden/tree/master/data_science herunter. Starte Jupyter Notebook in demselben Verzeichnis. Öffne das Notebook temperaturverlauf.ipynb, sieh dir den Inhalt genau an und führe alle Zellen aus. Kannst du die zu Beginn der Stunde gestellten Fragen nun beantworten?

Um den Verlauf eines Wertes auf einer Zeitachse darzustellen, sind Liniendiagramme gut geeignet. Zum Beispiel für den historischen Verlauf der jährlichen Durchschnittstemperaturen für Berlin (siehe . Abb. 42.5). Je nachdem, wie aktuell die verwendeten Temperaturdaten sind, kann sich die erzeugte Grafik von der hier abgebildeten geringfügig unterscheiden.

363 Kapitel 42 · Data Science (mit Jupyter)

42

. Abb. 42.5 Liniendiagramm – Temperaturverlauf

Meistens gibt es viele verschiedene Wege, um zu einem Ergebnis zu gelangen. Zum Beispiel lässt sich der minimale und maximale Temperaturwert berechnen oder aus dem Liniendiagramm ablesen (minimal knapp unter 7 und maximal bei circa 11). Wichtig ist nicht nur die korrekte Auswertung, sondern auch die Interpretation von Ergebnissen. In welcher Einheit sind die Werte angegeben? Grad Celsius. Ist die Temperatur im Jahr 1940 tatsächlich so stark abgefallen und im Jahr 2019 so stark gestiegen oder handelt es sich um einen Messfehler? Vielleicht war ein Sensor kaputt? Oder bei der Bestimmung der Durchschnittstemperaturen ist ein Rechenfehler passiert? Oder der Eintrag in der Quelldatei war anders formatiert als die übrigen Werte und wir haben ihn daher falsch ausgelesen? Es gibt viele Möglichkeiten, die zu Fehlern in der Auswertung oder Interpretation führen können. Wir haben es in diesem Beispiel einfach, weil es sich um eine sehr übersichtliche Menge von sehr gut strukturierten Daten handelt, die von einer sehr seriösen Quelle stammen. In vielen anderen Fällen ist die Recherche und Bereinigung von Daten sehr viel aufwendiger, bis eine vergleichbare Auswertung möglich ist. Auch das gehört zu den Aufgaben des Data-Scientisten. In diesem Fall liegt natürlich kein Fehler vor und 1940 war einfach nur ein ungewöhnlich kaltes Jahr, 2019 ein besonders warmes Jahr. Diese Erkenntnis wird auch dadurch gestützt, dass die übrigen Bundesländer in demselben Jahr ebenfalls einen niedrigen Wert anzeigen. Die verschiedenen Bundesländer zeigen überhaupt alle einen ähnlichen Verlauf (siehe . Abb. 42.6). Rein visuell scheint die Temperatur mit den Jahren anzusteigen, vor allem seit etwa 1980. Ob es sich dabei um einen belastbaren Trend handelt, kann mit statistischen Verfahren untersucht werden.

364

Kapitel 42 · Data Science (mit Jupyter)

. Abb. 42.6 Scatter Plot – Temperaturverlauf verschiedener Bundesländer

. Abb. 42.7 Boxplot – Temperaturverteilung verschiedener Bundesländer

42

Um die Verteilung von Temperaturwerten in den verschiedenen Bundesländern zu vergleichen, können wir einen Boxplot verwenden (siehe . Abb. 42.7). Wenn wir uns die Grafik für Berlin ansehen, können wir auch hier wieder denselben minimalen und maximalen Temperaturwert ablesen wie in . Abb. 42.5. Die Kringel zeigen an, dass ein Wert besonders stark abweicht. Dies sind sogenannte Ausreißer. Diese Werte sind besonders interessant, weil es sich oft lohnt, zu interpretieren, ob diese Werte eine besondere Bedeutung haben oder ob es sich möglicherweise um Fehler handelt. (Genau diese Überlegung hatten wir oben angestellt.) Beachte, dass wir im Boxplot nur die Verteilung der Temperatur untersucht haben. Wir können keine Rückschlüsse auf die Jahreszahlen ziehen, da diese nicht in die Grafik mit eingeflossen sind.

365 Kapitel 42 · Data Science (mit Jupyter)

42

. Abb. 42.8 CO2 -Konzentration in der Atmosphäre

Wir haben uns in dieser Stunde mit Data Science beschäftigt. Wir können jetzt erahnen, wie die Tätigkeiten Recherche, Datenaufbereitung und Datenvisualisierung ablaufen. Aber auch das Verständnis des jeweiligen Problems spielt eine sehr wichtige Rolle. Wir vermuten, dass die jährliche Temperatur einen Anstieg verzeichnet. Was würde ein Klimaexperte dazu sagen? Vermutlich würde er auf den historischen Verlauf der CO2 -Konzentration verweisen (siehe . Abb. 42.8). Die Menge von CO2 -Molekülen gemessen in ppm (engl. parts per million, Millionstel) zeigt in jüngster Zeit einen starken Anstieg. Unter die Aufgaben des Data-Scientisten fällt es auch, Expertenmeinungen einzuholen und mit deren Hilfe Problemen inhaltlich auf den Grund zu gehen. >

Die Grafik . Abb. 42.8 stammt von der Webseite 7 https://ourworldindata.org/ co2-and-other-greenhouse-gas-emissions#co2-in-the-atmosphere.

In der folgenden Stunde wollen wir uns weiter mit diesen Daten befassen und mit den Mitteln eines Data-Scientisten weitere Erkenntnisse generieren. ? Welche Aktivitäten machen Data Science aus? Was ist ein Jupyter Notebook? Warum ist Jupyter Notebook ein beliebtes Werkzeug unter Data-Scientisten? Warum ist es notwendig, die Ergebnisse eines Data-Scientisten zu interpretieren? Wofür ist der Boxplot ein geeignetes Mittel?

367

Regressionsanalyse (mit Jupyter)

© Springer Fachmedien Wiesbaden GmbH, ein Teil von Springer Nature 2024 T. Eichstädt und S. Spieker, 52 Stunden Informatik, https://doi.org/10.1007/978-3-658-41838-0_43

43

368

Kapitel 43 · Regressionsanalyse (mit Jupyter)

Über eine beschreibende Analyse hinaus können mit Datenanalyse auch Vorhersagen getroffen werden. Sehr zentral ist dafür die Regressionsanalyse. Bei der linearen Regression wird vorausgesetzt, dass sich der Zusammenhang von zwei Werten als Gerade darstellen lässt. Die Bestimmung der Gerade erfolgt mithilfe der Methode der kleinsten Quadrate. Die Schätzung heit Interpolation, wenn sich die relevante Stelle innerhalb des bekannten Bereichs befindet. Um eine Temperatur in der Zukunft vorherzusagen, ist eine Extrapolation notwendig. Solche Vorhersagen sollten nur dann getätigt werden, wenn ein besonders zuverlässiges Modell verwendet wird. In jedem Fall müssen neue Modelle und ihre Ergebnisse interpretiert werden. Eine Alternative kann es sein, den Datenausschnitt anzupassen. Es gibt auch nichtlineare Regressionen, die andere Ergebnisse liefern. Mit den passenden Python-Bibliotheken lassen sich Datenanalysen erheblich vereinfachen. Hierzu verwenden wir Numpy, Pandas und Scikit-learn. In der letzten Stunde haben wir gelernt, wie wir Daten verstehen, interpretieren und visualisieren können. Dies wird auch Descriptive Analytics (beschreibende Analyse) genannt. Wie wir in  Kap. 41 Statistik gesehen haben, besteht ein Teil der Beschreibung darin, Zusammenhänge in Daten zu finden. Idealerweise können Vorhersagen für die Zukunft abgeleitet werden. Das wird als Predictive Analytics (vorhersagende Analyse) bezeichnet. Genau das werden wir in dieser Stunde wagen. Zunächst lernen wir die Regressionsanalyse kennen. Bei der Regressionsanalyse handelt es sich um ein statistisches Schätzverfahren, um die Beziehung einer zu erklärenden Variablen und einer oder mehrerer erklärenden Variablen zu bestimmen. Die zu erklärende Variable heißt auch Regressand oder Zielgröße und die erklärenden Variablen heißen Regressoren oder Einflussgrößen. Das bedeutet, abhängig von den Einflussgrößen findet eine Prognose für die Zielgröße statt. In unserem Beispiel wird es nur eine einzige Einflussgröße geben. Übung

43

Denken wir zurück an die Daten aus  Kap. 42 Data Science (mit Jupyter). Welche Variable könnten wir als Einflussgröße und welche als Zielgröße wählen? Wie sehen einfache Beziehungen zwischen zwei Größen aus? Wenn du Schwierigkeiten bei der Beantwortung dieser Fragen hast, sieh dir noch einmal . Abb. 42.5 und . 42.6 genau an und überlege, wie du einen vereinfachten abhängigen Verlauf einzeichnen würdest.

Die häufigste Form der Regressionsanalyse ist die lineare Regressionsanalyse oder kurz lineare Regression. Dabei wird eine Gerade gesucht, die der Verteilung der Daten am besten entspricht. Aus dem Mathematikunterricht kennen wir die Formel für eine solche Gerade: y =b∗x+a

369 Kapitel 43 · Regressionsanalyse (mit Jupyter)

43

. Abb. 43.1 Abschätzung mithilfe einer Geraden

Wenn wir a und b bestimmen können, sind wir für jeden Wert von x in der Lage, den Wert für y vorherzusagen. Wer gut aufgepasst hat, dem ist bereits klar, dass in unserem Beispiel y für eine Jahresdurchschnittstemperatur steht und x für eine Jahreszahl. In . Abb. 43.1 sehen wir die tatsächlichen Temperaturwerte als Punkte dargestellt und die Abschätzung mithilfe einer Geraden. Die Bestimmung der Geraden erfolgt mithilfe der Methode der kleinsten Quadrate. Das heißt, für jeden x-Wert betrachtet man die Abweichung zwischen tatsächlichem und vorhergesagtem Wert. Alle Abweichungen werden quadriert. Die Werte a und b, die den Verlauf der Geraden definieren, werden genau so gewählt, dass die Summe aller Abweichungsquadrate minimal ist. Wir werden die Berechnung im späteren Verlauf der Stunde selbst durchführen. Dabei beschäftigen wir uns nicht mit den mathematischen Einzelheiten. Wichtiger ist uns zu verstehen, warum wir auf diese Weise vorgehen und welchen Zweck wir damit verfolgen. Der große Vorteil der Regression gegenüber den bisherigen deskriptiven Analysen ist, dass dadurch eine Vorhersage an Stellen möglich wird, zu denen keine Daten vorliegen. Natürlich wollen wir, dass die Vorhersage so präzise wie möglich ist. Wir gehen davon aus, dass, wenn wir die Fehler an allen bekannten Stellen minimieren, auch die Fehler an unbekannten Stellen klein bleiben. Deswegen ist die Methode der kleinsten Quadrate so naheliegend. Haben wir sie erst angewandt, kennen wir den Verlauf der Geraden. Dann können wir Vorhersagen treffen, also bisher unbekannte Stellen abfragen. Dabei wird zwischen der Interpolation (von lateinisch inter für dazwischen und polire für glätten) und der Extrapolation (von lateinisch extra für außerhalb) unterschieden. Man spricht von Interpolation, wenn man sich innerhalb des bekannten Bereichs bewegt. Es handelt sich um Extrapolation, wenn man den bekannten Bereich verläßt. Wäre uns einer der Temperaturwerte zwischen 1982 und 2022 verloren gegangen, könnten wir ihn aus den ihn umgebenden Daten interpolieren. Interessieren wir uns für einen Wert in der Zukunft, müssen wir ihn aus den Daten der Vergangenheit extrapolieren. Wir können zum Beispiel einen Wert für das Jahr 2024 abschätzen. In . Abb. 43.1 ist der extrapolierte Temperaturwert für 2024 als blauer Punkt dargestellt. Generell

370

Kapitel 43 · Regressionsanalyse (mit Jupyter)

sollte man sich bei der Extrapolation besonders sicher sein, dass ein valides Modell verwendet wird. Diese Sicherheit haben wir momentan nicht. Ein anderes Modell entsteht, wenn wir die Daten in zwei Bereiche unterteilen. Wir hatten gesehen, dass der Anstieg der Temperatur im späteren Verlauf deutlich stärker ausfällt. Daher könnten wir auf die Idee kommen, die Vorhersage nur aufgrund der Daten ab 1975 durchzuführen (siehe . Abb. 43.2). Daraus ergibt sich ein völlig anderer Wert für die in 2024 vorhergesagte Temperatur, der wiederum als blauer Punkt angegeben ist. Oder wir könnten vermuten, dass ein polynomialer Zusammenhang plausibler ist als eine Gerade. Das Ergebnis einer nichtlinearen Regression sähe zum Beispiel aus wie in . Abb. 43.3.

. Abb. 43.2 Abschätzung in zwei Bereichen

43

. Abb. 43.3 Abschätzung mithilfe eines Polynoms

371 Kapitel 43 · Regressionsanalyse (mit Jupyter)

43

Übung Was ist das grundsätzliche Problem aller bisher gesehenen Vorhersagen? Denke darüber nach, welche Meinung ein Klimaexperte zu unseren Analysen hätte. Wenn dir keine Antwort auf die Frage einfällt, wirf einen Blick zurück in  Kap. 41 Statistik.

Genau. Es gibt eine Korrelation zwischen Jahreszahl und Temperaturwert – aber gibt es auch eine Kausalität? Möglicherweise befindet sich die Erde seit einem sehr großen Zeitraum in einer Phase der moderaten Klimaerwärmung. Darüber hinaus hängt die Klimaerwärmung aber sehr stark mit der chemischen Zusammensetzung der Atmosphäre zusammen. Insbesondere die CO2 -Konzentration in der Atmosphäre hat einen kausalen Einfluss auf die Lufttemperatur in Erdnähe. Der CO2 -Gehalt (vergleiche . Abb. 42.8) ist seit Beginn der Industrialisierung stark gestiegen und hat seit etwa Mitte der 70er-Jahre einen kritischen Wert erreicht. Unsere Beobachtungen des verstärkten Temperaturanstiegs waren also korrekt. Dennoch können wir ein valides Modell nur dann erstellen, wenn wir auch die richtigen Einflussgrößen verwenden. Völlig andere Modelle ergeben sich aus der Analyse von Temperatur und CO2 -Konzentration. Damit könnten aufgrund von Annahmen zum Verlauf der CO2 -Konzentration in der Zukunft Prognosen für die Temperaturveränderung vorgenommen werden. Eine lineare Regression könnte das Bild in . Abb. 43.4 ergeben. Natürlich wird auch dieses Modell der Komplexität der Klimaforschung nicht gerecht. Dennoch sind die gesehenen Analysen für uns geeignete Beispiele, um das Vorgehen bei der Regressionsanalyse kennenzulernen. Ähnlich wie in  Kap. 42 Data Science (mit Jupyter) wollen wir die gesehenen Analysen nun praktisch anhand eines Jupyter Notebook durchführen und dadurch die obigen Bilder selbst erzeugen. Dabei setzen wir drei weitere Python-Bibliotheken ein, die ein Data-Scientist typischerweise verwendet:

. Abb. 43.4 Lineare Regression mit CO2 -Daten

372

Kapitel 43 · Regressionsanalyse (mit Jupyter)

5 Numpy ermöglicht die einfache Handhabung von Vektoren und Matrizen. Zum Beispiel ist es damit möglich, den Mittelwert einer ganzen Liste von Werten mit nur einem Befehl zu berechnen. 5 Pandas vereinfacht die Verwaltung und Analyse von Daten. Pandas wird oft in Verbindung mit Numpy verwendet. Zum Beispiel für die Erstellung von DataFrames, womit 2-dimensionale Daten einfacher manipuliert werden können. 5 Scikit-learn beinhaltet zahlreiche Verfahren zum maschinellen Lernen. Zum Beispiel kann dadurch eine Regression mit nur wenigen Befehlen ausgeführt und das dabei entstehende Modell ausgewertet werden. Gleich geht es los. Bevor wir ins Jupyter Notebook wechseln, sollten wir die Bibliotheken zunächst installieren. Wie bereits bekannt, funktioniert das am einfachsten mithilfe des pip-Befehls: pip install numpy pip install pandas pip install scikit-learn

Übung Lade die Dateien von 7 https://github.com/StefanSpieker/52Stunden/tree/master/ regression herunter. Starte Jupyter Notebook in demselben Verzeichnis. Öffne das Notebook temperaturvorhersage.ipynb, sieh dir den Inhalt genau an und führe alle Zellen aus. Lass dir dabei ausreichend Zeit. Es ist nicht schlimm, wenn du einzelne Schritte nicht verstehst. Gehe das Dokument dennoch bis zum Ende durch und versuche den Sinn jeder Zelle zu verstehen. Wenn du am Ende des Dokuments angekommen bist, nimm dir noch ein wenig Zeit und versuche selbst Modelle auszuwerten und Plots zu erstellen.

43

Die lineare Regression ist ein sehr weit verbreitetes Instrument, mit dem eine Vielzahl von Vorhersageproblemen gelöst werden kann. Neben der direkten Anwendung auf eine Problemstellung bildet es auch die Grundlage für komplexere Verfahren, die einzelne Parameter mithilfe der linearen Regression bestimmen (siehe  Kap. 46 Deep Learning). Außerdem haben wir Numpy, Pandas und Scikit-learn verwendet. Damit kennen wir nun bereits einen sehr großen und wichtigen Teil des Handwerkszeugs eines Data-Scientisten. Das heißt, wir können Daten untersuchen, visualisieren und Vorhersagen treffen. ? Wofür wird eine Regressionsanalyse verwendet? Was ist die Methode der kleinsten Quadrate? Was ist der Unterschied zwischen Interpolation und Extrapolation? Was ist eine nichtlineare Regression? Wie lauten Python-Bibliotheken, die bei der Berechnung einer Regression nützlich sein können?

373

Künstliche Intelligenz

© Springer Fachmedien Wiesbaden GmbH, ein Teil von Springer Nature 2024 T. Eichstädt und S. Spieker, 52 Stunden Informatik, https://doi.org/10.1007/978-3-658-41838-0_44

44

374

Kapitel 44 · Künstliche Intelligenz

Es wird von künstlicher Intelligenz (KI) gesprochen, wenn Maschinen ein intelligentes Verhalten zeigen. Die erste Anwendung für KI war der Chatbot. Weitere Beispiele sind der Spamfilter, Übersetzungsdienste, Prämienberechnungen, Betrugserkennung, Krankheitsdiagnosen, Empfehlungssysteme, Bewertungen von Spielzügen und Gesichtserkennung. Das maschinelle Lernen (ML) ist das Herz der meisten KIAnwendungen. Dabei wird ein Modell generiert, das anhand von bekannten Daten trainiert wird und dann in der Lage ist, auch unbekannte Daten zu beurteilen. Nicht jedes Problem eignet sich dafür, mit ML gelöst zu werden. Es muss ausreichend komplex und spezifisch sein und es müssen genügend Trainingsdaten vorhanden sein. Die wichtigsten Familien von Verfahren heien: Klassifikation, Regression und Clustering. Experten gehen davon aus, dass KI die Gesellschaft auf tiefgehende Weise verändern wird. Daher werden verschiedene Chancen und Ängste mit KI verbunden. Künstliche Intelligenz (KI) und der entsprechende englische Begriff Artificial Intelligence (AI) sind in aller Munde. Sehen wir uns zwei Zitate berühmter Persönlichkeiten zur künstlichen Intelligenz an: 5 „KI ist wahrscheinlich das Beste oder das Schlimmste, was der Menschheit passieren kann.“ – Stephen Hawking, Physiker 5 „Die Macht der künstlichen Intelligenz ist so unglaublich, dass sie die Gesellschaft auf tiefgehende Weise verändern wird.“ – Bill Gates, Gründer von Microsoft Im Gegensatz zur natürlicher Intelligenz bei Menschen und anderen Lebewesen spricht man von künstlicher Intelligenz, wenn Maschinen ein intelligentes Verhalten zeigen. In dieser Stunde geht es darum, wofür KI steht und welche Bedeutung sie heute hat und in Zukunft haben wird. Dazu wird erklärt, was KI von klassischer Programmierung unterscheidet und unter welchen Voraussetzungen ihr Einsatz überhaupt sinnvoll ist. Zu guter Letzt werden noch Chancen und Ängste in Verbindung mit KI diskutiert. Übung Hat KI Auswirkungen auf dein tägliches Leben? Benutzt du Geräte oder Programme, die KI enthalten? Denke darüber nach und notiere alle Beispiele, die dir einfallen.

44

Das Bild von KI ist zum großen Teil geprägt von Hollywoodfilmen. Viele Menschen denken zunächst an Roboter, die menschliche Intelligenz in den Bereichen Bewegung, Kommunikation und analytischer Problemlösung adaptieren. Fast zwangsläufig stellt sich dann die Frage, welche Fähigkeiten solche Roboter zu welchem Zeitpunkt haben werden und wer sie kontrolliert. Dabei wird gerne übersehen, dass KI als spezifischer Teil von Softwarelösungen bereits heute allgegenwärtig ist. Ein paar Beispiele sind im Folgenden aufgeführt:

375 Kapitel 44 · Künstliche Intelligenz

44

. Abb. 44.1 Chatbot von WetterOnline

5 Die erste Anwendung für KI war der Chatbot. Bereits im Jahr 1950 formulierte der britische Mathematiker Alan Turing einen Versuchsaufbau, um zwischen menschlicher und künstlicher Intelligenz zu unterscheiden. In diesem sogenannten Turing-Text versucht eine Maschine, ihr in Textform gestellte Fragen so gut zu beantworten, dass der Fragesteller nicht in der Lage ist, festzustellen, dass es sich nur um eine KI handelt. Ab den 60er-Jahren wurden erste Chatbots entwickelt. Erst kürzlich hat sich diese Entwicklung drastisch beschleunigt (siehe  Kap. 47 ChatGPT). Es gibt eigenständige Chatbots. Oft sind diese auch in Applikationen integriert. Zum Beispiel enthält der Facebook Messenger einen Chatbot von WetterOnline, siehe . Abb. 44.1. 5 Eine weniger lange Geschichte haben die Voicebots. Wir kennen sie von Telefonhotlines. Auch hier ähneln die Dialoge mehr oder weniger einem menschlichen Gespräch. Analog funktionieren auch digitale Assistenzsysteme wie Google Assistant oder Amazon Alexa. Sie verfügen über eine automatische Spracherkennung und bieten diverse Skills an, um auf menschliche Sprache zu reagieren. 5 Ein selbstverständliches KI-System ist für viele Menschen der Spamfilter. Spamfilter blockieren bestimmte, fix hinterlegte E-Mail-Adressen. Das ist der nichtin-

376

5

5

5

5

5

5 5

44 5

Kapitel 44 · Künstliche Intelligenz

telligente Teil. Spamfilter können aufgrund des bekannten Wissens darum, wie Spam-E-Mails aussehen, auch intelligent entscheiden, wie wahrscheinlich es sich bei einer neuen E-Mail um Spam handelt. Je mehr E-Mails die Nutzer manuell als Spam markieren, desto besser wird die automatische Unterscheidung. So funktionieren typische KI-Anwendungen. Viele KI-Anwendungen befassen sich mit Text und Sprache. Dafür gibt es den eigenständigen Begriff Computerlinguistik oder auf Englisch Natural Language Processing (NLP). Neben Chatbots, Voicebots und Spamfiltern gibt es noch viele weitere NLP-Anwendungen. Dazu zählen Rechtschreibprüfungen, Übersetzungsdienste und viele mehr. Typische Anwendungsfälle liegen auch im Finanzbereich, etwa wenn es um die Berechnung von Preisen oder Versicherungsprämien geht. Besonders dann, wenn große Datenmengen vorhanden sind und viele Einflussfaktoren eine Rolle spielen, kann KI regelbasierten Auswertungen überlegen sein. Ein weiterer typischer Einsatz von KI ist in der Betrugserkennung. Bei jeder Kreditkartentransaktion beurteilt eine KI, ob es sich um eine suspekte Transaktion handelt. Auf diese Art werden Banken und Zahlungsdienstleister auf viele Betrugsfälle in Sekundenschnelle aufmerksam. KI hat diverse Anwendungen in der Medizin, zum Beispiel bei der Beurteilung, ob ein Tumor gutartig oder bösartig ist. KI dient zu vielen weiteren Krankheitsdiagnosen, zur Personalisierung von Behandlungen, zur Überwachung von Patienten und zur Beschleunigung der Medikamentenentwicklung. Bereits in  Kap. 2 Suchmaschinen haben wir über Personalisierung gesprochen. Dabei hat Personalisierung nur deshalb eine so große Bedeutung, weil KI in unseren individuellen Daten Muster erkennen und dadurch ein Softwareverhalten auf uns anpassen kann. Das passiert vor allem bei Werbeanzeigen und bei Empfehlungssystemen. Gemeint ist damit der Vorschlag des nächsten YouTube-Videos, von Filmen auf Netflix, Songs bei Spotify oder der Vorschlag „Kennen Sie schon … “ bei Facebook. Ganz allgemein hat KI dann großes Potenzial, wenn große Datenmengen ausgewertet werden müssen. Das ist zum Beispiel bei Sensoren oder Log-Dateien von Computern der Fall. KI kann den Umgang mit regelbasierten Systemen optimieren. Ein bekanntes Beispiel ist die Steuerung von Aktionen des Computergegners in einem Spiel. KIs können Züge selbst bei komplizierten Spielen wie Schach oder Go so gut bewerten, dass sie menschliche Profis mühelos besiegen. Wieder andere KI-Anwendungen basieren auf der intelligenten Auswertung von Bildern, zum Beispiel zum Zweck der Gesichtserkennung. Mehr Informationen dazu gibt es in  Kap. 45 Computer Vision.

KI wird heute in einer großen Breite von Anwendungsfeldern eingesetzt. Fortlaufend kommen weitere hinzu. Dabei ist KI nicht neu. Die grundlegende Idee und viele ihrer Konzepte existieren schon lange. Erst seit den späten 1990er Jahren breiteten sich die KI-Anwendungen zunehmend aus. Das hat vor allem mit besserer Computerhardware zu tun und mit größeren verfügbaren Datenmengen. Dadurch wurden Verfahren praxistauglich, die es ermöglichen, Maschinen lernen zu lassen.

377 Kapitel 44 · Künstliche Intelligenz

44

Das maschinelle Lernen oder englisch Machine Learning (ML) ist das Herz der meisten KI-Anwendungen. Beim ML wird ein Modell generiert, das anhand von bekannten Daten lernt und dann in der Lage ist, auch unbekannte Daten zu beurteilen. Die Lernphase wird oft als „training“ bezeichnet oder je nach Verfahren wird auch vom „fitten“ gesprochen, also dem Anpassen des Modells an die jeweiligen Daten. Der ML-Algorithmus gibt vor, wie das Lernen vonstattengeht. In aller Regel funktioniert der Lernvorgang umso besser, je mehr Daten zur Verfügung stehen. Nach der Lernphase kann das trainierte ML-Modell eingesetzt werden und ist idealerweise in der Lage, unbekannte Daten intelligent zu beurteilen. In dem Moment, in dem eine Anwendung das ML-Modell verwendet, kann sie intelligentes Verhalten zeigen oder zumindest ein Verhalten, das uns intelligent erscheint. Das beschriebene Prinzip des maschinellen Lernens ist in . Abb. 44.2 veranschaulicht. Warum hängen maschinelles Lernen und KI so stark miteinander zusammen? Weil ML viel eher unserem Verständnis von Intelligenz entspricht als die bloße Ausführung von Code! Klassische Programmabläufe erfolgen regelbasiert. Das sture Ausführen von Anweisungen würden wir nicht als intelligent bezeichnen. Maschinen funktionieren aber genau so. Sie folgen Anweisungen. Wir sprechen daher normalerweise nicht von einem intelligenten Computer, selbst wenn er viel besser rechnen kann als wir. Denn derselbe Computer kann ja andere Aufgaben, die für uns ganz einfach sind, nicht erledigen. Zum Beispiel laufen oder riechen, wenn etwas angebrannt ist, oder den Ruf eines Kuckucks erkennen. All das sind Dinge, die wir erlernt haben. Unsere menschliche Intelligenz machen nämlich unsere Erfahrungen und antrainierten Fähigkeiten aus. Kein Kind lernt zu laufen anhand von Anweisungen. Selbst Fähigkeiten, die starren Regeln folgen, wie das Rechnen, lernen wir anhand von Beispielen und Übungsaufgaben. Zu einem gewissen Grad können dank ML auch Computer erlerntes Verhalten zeigen. Zum Beispiel: Vogelstimmen erkennen. Vor nicht allzu langer Zeit wäre eine solche Aufgabe für Computer unlösbar gewesen. Mittlerweile gibt es entsprechende Apps kostenfrei für jedes handelsübliche Smartphone.

. Abb. 44.2 Prinzip des maschinellen Lernens

378

Kapitel 44 · Künstliche Intelligenz

Aber Vorsicht, nicht jedes Problem eignet sich dafür, mit ML gelöst zu werden. Übung Denke darüber nach, welche Probleme mit ML gelöst werden können. Was macht solche Probleme aus?

44

Es ist gar nicht so einfach zu entscheiden, ob es sinnvoll ist, ein Problem mittels ML zu lösen. Die wichtigsten Indikatoren sind: 5 Ausreichend komplex, dass es sich lohnt, maschinelles Lernen anzuwenden. Sehen wir uns noch einmal den Dialog in . Abb. 44.1 an. Der Chatbot mag auf den ersten Blick intelligent wirken. Allerdings ließe sich der gesehene Dialog auch problemlos regelbasiert implementieren. „Wetter“ ist in diesem Fall ein zu erwartendes Schlagwort. Die Eingabe wird möglicherweise einfach mit einer Liste von ähnlichen Worten verglichen. Durch die eingeschränkten Antwortmöglichkeit entsteht ein vorhersehbarer Dialog, der auch ohne maschinelles Lernen realisierbar ist. 5 Spezifisch. Die Vorstellung einer KI, die eigenständig lernen, planen, kommunizieren und neue Strategien entwickeln kann, wird als generelle künstliche Intelligenz bezeichnet. Die Forschung ist weit davon entfernt, eine solche KI zu entwickeln. Es ist durchaus wahrscheinlich, dass sie niemals existieren wird. In der Tat sind heutige KIs – auch solche, die auf maschinellem Lernen beruhen – sehr spezifisch. Das heißt, ein ML-Modell ist angepasst auf eine einzige, klar definierte Problemstellung. Manche Anwendungen verwenden mehrere Modelle und können mehrere spezifische Probleme oder mehrere spezifische Aspekte einer Problemstellung behandeln. Es gibt heute keine KI, die eine generelle Intelligenz zeigt, also in der Lage ist, unspezifische Probleme zu lösen. 5 Verfügbarkeit von Trainingsdaten. Nur, wenn die entsprechenden Beispieldaten in ausreichendem Umfang vorliegen, ist die Lernphase erfolgreich. Die Daten sollten strukturiert vorliegen und eine möglichst hohe Qualität aufweisen. Natürlich gilt auch hier, dass die Daten zur spezifisch vorgesehenen Problemstellung passen müssen. Wenn eine App zum Erkennen des Rufs eines Kuckucks trainiert werden soll, ist die Aufzeichnung von 1000 verschiedenen Rufen einer Krähe wenig hilfreich. Ein ganz konkretes Beispiel für die Erstellung eines ML-Modells haben wir in  Kap. 43 Regressionsanalyse (mit Jupyter) gesehen. Innerhalb eines Jupyter Notebooks wurde ein Modell zur Vorhersage einer durchschnittlichen Jahrestemperatur erstellt (siehe . Abb. 44.3).

379 Kapitel 44 · Künstliche Intelligenz

44

. Abb. 44.3 Einfaches Beispiel für maschinelles Lernen in Jupyter Notebook

Das angewendete Verfahren fällt in die Kategorie der Regression. Regressionen sind beliebte Verfahren, wenn eine Prognose aufgrund von vorhandenen Daten mit bekanntem Ergebnis getroffen werden sollen. Das Teilgebiet des maschinellen Lernens, das mit dieser Art von Trainingsdaten arbeitet, wird auch überwachtes Lernen genannt. Die am häufigsten verwendeten ML-Verfahren fallen in dieses Teilgebiet. Eine weitere sehr wichtige Familie von Verfahren im Bereich des überwachten Lernens ist die Klassifikation. Bei einer Klassifikation (oder genauer: bei einem Klassifikationsverfahren) werden Objekte in Klassen eingeteilt. Das ist bei mehreren bereits aufgeführten Beispielen der Fall. Beim Spamfilter teilt ein MLModell E-Mails in zwei Klassen ein: Spam und Nicht-Spam. Natürlich kann es auch mehr als zwei Klassen geben. Die Beurteilung von Vogelrufen ist ein weiteres Beispiel für Klassifikation, das bereits erwähnt wurde. Ein Modell könnte so trainiert werden, dass es beurteilt: Kuckuck oder Nicht-Kuckuck. Genauso könnte es aber auch über 1000 Klassen für verschiedenste Singvögel enthalten. Wenn die entsprechenden Trainingsdaten inklusive der korrekten Bestimmung vorhanden sind, ist das möglich. Der Wetter-Chatbot könnte mithilfe einer Klassifikation der Texteingabe entscheiden, welchen Dienst der Nutzer aufrufen möchte. Auch hier ist es wieder elementar wichtig, dass beim Training genügend Beispiele mit korrekten Klassen vorhanden sind.

380

Kapitel 44 · Künstliche Intelligenz

. Abb. 44.4 Unterteilung des maschinellen Lernens

44

Tatsächlich gibt es auch nützliche Verfahren, die Aussagen treffen, ohne dass in den Trainingsdaten bekannte Ergebnisse enthalten sind. Dieses Gebiet wird unüberwachtes Lernen genannt. Die bekannteste Familie von Verfahren ist das Clustering. Clustering (auch Clusteranalyse genannt) bedeutet, dass in Daten ähnliche Strukturen (die Cluster) gesucht werden. Schon wieder ist der Spamfilter ein gutes Beispiel. E-Mails lassen sich aufgrund von Format, Betreff, Versandzeit und Inhalt in Cluster einteilen. Tatsächlich führen moderne Spamfilter die Klassifikation auf Basis solcher Cluster aus. Dem überwachten und unüberwachten Lernen ist gemein, dass in der Lernphase auf vorhandene Trainingsdaten zurückgegriffen wird. Maschinelles Lernen kann aber auch komplett ohne bereits bekannte Daten funktionieren. Beim bestärkenden Lernen entwickelt ein Programm mithilfe von „Belohnungen“ selbstständig eine Lösungsstrategie. Die Herausforderung besteht in der Formulierung einer Aufgabe in Form von vorgegebenen Zuständen und Aktionen. Für diese Aufgabe erlernt das Programm dann eine Lösungsstrategie mithilfe von Trainingsdurchläufen. Der Ablauf ist dem in . Abb. 44.2 sehr ähnlich. An die Stelle der Trainingsdaten treten die vom Programm in der Lernphase selbst durchgeführten Durchläufe. Ein bekanntes Beispiel für bestärkendes Lernen ist die Lösung des Jump‘n’Run-Computerspiels Mario Brothers mithilfe mehrerer Trainingsläufe, bei denen die Belohnung mit dem Spielfortschritt korrespondiert. Die meisten Verfahren des maschinellen Lernens fallen in die beschriebenen Kategorien und sind in . Abb. 44.4 zusammengefasst. Übung Wir haben verschiedene Beispiele für maschinelles Lernen kennengelernt. Für einige davon wissen wir auch bereits, mit welcher Art von Verfahren sie umgesetzt werden. Was ist mit den übrigen Beispielen? Überlege, welche Art des maschinellen Lernens geeignet sein könnte, um die genannten Probleme zu lösen:

381 Kapitel 44 · Künstliche Intelligenz

5 5 5 5 5 5 5

44

Berechnung von Versicherungsprämien unter Berücksichtigung vieler Einflussfaktoren Betrugserkennung anhand von Kreditkartentransaktionen Auswahl von personalisierten Werbeanzeigen oder Videoempfehlungen Beurteilung, ob ein Tumor gutartig oder bösartig ist, anhand einer Röntgenaufnahme Bewertung von Sensor- oder Logdaten Steuerung von Aktionen des Computergegners in einem Spiel Erkennung von individuellen Gesichtern

Eine Übersicht der genannten Problemstellungen mit vorgeschlagener Art des maschinellen Lernens ist in . Tab. 44.1 zusammengestellt.

. Tab. 44.1 KI-Anwendungsfälle mit vorgeschlagener Art des maschinellen Lernens Problemstellung

Art des maschinellen Lernens

Temperaturvorhersage aufgrund historischer Klimadaten

Regression

Bestimmung von Vogelrufen

Klassifikation

Bewertung einer Chatbot-Eingabe

regelbasiert (kein maschinelles Lernen) oder Klassifikation

Spamfilter

Klassifikation beziehungsweise Klassifikation von Clustern

Berechnung von Versicherungsprämien unter Berücksichtigung vieler Einflussfaktoren

Regression

Betrugserkennung anhand von Kreditkartentransaktionen

Klassifikation und/oder Clustering

Auswahl von personalisierten Werbeanzeigen oder Videoempfehlungen

Klassifikation

Beurteilung, ob ein Tumor gutartig oder bösartig ist, anhand einer Röntgenaufnahme

Klassifikation

Bewertung von Sensor- oder Logdaten

Clustering oder, wenn die entsprechenden zusätzlichen Informationen vorhanden sind, auch Regression oder Klassifikation

Steuerung von Aktionen des Computergegners in einem Spiel

Regelbasiert oder bestärkendes Lernen

Erkennung von individuellen Gesichtern

Klassifikation

382

Kapitel 44 · Künstliche Intelligenz

Die vielen KI-Anwendungsfälle zeigen, dass Computer mit ihren Fähigkeiten immer weiter in Bereiche vordringen, die bis dato dem Menschen vorbehalten waren. Durch das maschinelle Lernen können Computer viele dieser Probleme sogar besser lösen als ein Mensch. Was bedeutet es also, wenn Experten sagen, dass KI die Gesellschaft auf tiefgehende Weise verändern wird? Sind die Auswirkungen von KI gut oder schlecht? Übung Welche Vorteile und welche Risiken siehst du in KI? Welche Chancen und welche Ängste könnten damit verbunden sein?

Häufig genannte Chancen in Verbindung mit KI sind 5 Produktivitätssteigerung, 5 Krankheitsbekämpfung und 5 Übernahme von Routinetätigkeiten. Häufig genannte Ängste in Verbindung mit KI sind 5 Arbeitsplatzverlust, 5 Verlust der Menschlichkeit und 5 Kontrollverlust. Die Ängste, die KI bei einigen Menschen hervorruft, sind zumindest zum Teil unbegründet. Die Verfahren des maschinellen Lernens kommen unserer menschlichen Intelligenz näher als klassische Algorithmen. Dennoch zielen auch diese Verfahren und die dabei entstehenden Modelle auf die Lösung von sehr speziellen Aufgaben ab. Es existiert keine generelle künstliche Intelligenz, die uns Menschen ersetzen könnte. Sicher erscheint aber, dass sich viele Branchen aufgrund von KI gerade drastisch verändern und zukünftig weiter verändern werden. Wir sollten also besser lernen, mit KI umzugehen, ihre Fähigkeiten einzuschätzen und die Prinzipien, denen sie folgt, zu verstehen. Dazu bekommen wir in den folgenden Stunden Gelegenheit.

44

? Wie lauten gängige Beispiele für künstliche Intelligenz? Warum hängen ML und KI so stark miteinander zusammen? Was bedeutet unüberwachtes Lernen? Was sind Beispiele für den Einsatz von überwachtem Lernen? Was sind Indikatoren dafür, dass es sinnvoll ist, ein Problem mittels ML zu lösen?

383

Computer Vision

© Springer Fachmedien Wiesbaden GmbH, ein Teil von Springer Nature 2024 T. Eichstädt und S. Spieker, 52 Stunden Informatik, https://doi.org/10.1007/978-3-658-41838-0_45

45

384

45

Kapitel 45 · Computer Vision

Computer Vision ist die Wissenschaft, die sich mit der Verarbeitung und Analyse von Bildern beschäftigt. Sie kommt in verschiedensten Anwendungsszenarien zum Einsatz: Texterkennung, Steuerung von Robotern oder autonomen Fahrzeugen, Diagnosen in der Medizin und Gestensteuerung. Bildanalysen erfolgen häufig zweistufig. Zunächst wird ein Objekt erkannt und danach identifiziert. Ein wichtiges Teilgebiet von Computer Vision ist die Gesichtserkennung. Die meisten Firmen geben die Möglichkeit, Gesichtserkennung in den Einstellungen zur Privatsphäre zu deaktivieren. Dadurch lässt sich aber nicht verhindern, dass andere Firmen unsere Bilddaten im Internet sammeln und für ihre eigenen Gesichtserkennungsdienste verwenden. Für Objekterkennung und Objektidentifizierung kommen Convolutional Neural Networks zum Einsatz. Mithilfe von Cloud-Diensten kann Gesichtserkennung sehr einfach in eigenen Programmen verwendet werden. Computer Vision (computerbasiertes Sehen) ist die Wissenschaft, die sich mit der Verarbeitung und Analyse von Bildern beschäftigt. Dabei kommen unter anderem Methoden der Bildverarbeitung und der geometrischen Mathematik zum Einsatz. Besonders große Fortschritte gibt es bei Computer Vision, seitdem maschinelles Lernen eingesetzt wird, um zu ermöglichen, dass Computer das menschliche Sehen imitieren. Deshalb wird Computer Vision meist als Teilgebiet der künstlichen Intelligenz angesehen. Computer Vision beschäftigt sich außerdem mit der Analyse von Gesichtsmerkmalen. Es wird von Gesichtserkennung (engl. face recognition) gesprochen, wenn Fotos oder Videos von Personen anhand von Gesichtsmerkmalen analysiert werden. Es folgen vier Beispiele für Gesichtserkennung: 1. In einem U-Bahnhof wird ein Gewaltverbrechen verübt. Es existiert ein Überwachungsvideo der Tat. Die Polizei verwendet eine Software, um den bis dato unbekannten Täter zu identifizieren. 2. Ein Geschäft verwendet Videokameras, um Diebstähle aufzudecken und bekannte Ladendiebe zu identifizieren. Auch bekannte Kunden und ihr Kaufverhalten werden so erfasst. 3. Eine registrierte Kundin betritt einen Kiosk und bestellt ein Menü über ein Terminal. Dabei loggt sie sich mithilfe ihres Gesichtes ein. Daraufhin wird angezeigt, welche Menüs die Kundin bei den letzten Besuchen bestellt hatte, und sie kann zum Bezahlen eine hinterlegte Zahlungsmethode auswählen. 4. Ein Junge lädt ein neues Foto auf Facebook hoch. Facebook analysiert das Bild und erkennt mehrere darauf abgebildete Personen. Dem Jungen wird vorgeschlagen, die abgebildeten Personen zu markieren. Alle vier Einsatzszenarien von Gesichtserkennung sind technisch möglich und heute bereits Realität. Je nach den im betreffenden Land geltenden gesetzlichen Regelungen und je nach gesellschaftlicher Akzeptanz sind die Szenarien aber oft gar nicht zugelassen oder nicht erwünscht. Zumindest das letzte Szenario von der Gesichtserkennung in sozialen Medien ist hierzulande gut bekannt. Immer wieder werden Bedenken und Anschuldigungen laut, was den Einsatz von Gesichtserkennung angeht. Viele Unternehmen sind daher dazu übergegangen sich als verantwortungsbewusst und transparent darzustellen, um den Nutzen der von ihnen verwendeten

385 Kapitel 45 · Computer Vision

45

Technologien deutlich zu machen. Oder sie verzichten gänzlich darauf. Ein Beispiel ist Facebook. In der ersten Auflage dieses Buches fand sich an dieser Stelle noch ein Hinweis auf Gesichtserkennungs-Einstellungen. In der Zwischenzeit steht auf der Hilfeseite, dass keine Gesichtserkennung mehr verwendet wird (siehe . Abb. 45.1). Mindestens genauso kritisch wird Gesichtserkennung im öffentlichen Raum wahrgenommen. Mehr dazu gibt es in  Kap. 48 Ethik in der Informatik. Übung Bewertest du den Einsatz von Gesichtserkennung als nützlich oder eher als bedenklich? Hast du in den sozialen Medien die Funktion in deinen Einstellungen zugelassen?

Gesichtserkennung und auch viele andere Bildanalysen erfolgen zweistufig. Der erste Schritt ist die Objekterkennung. Gemeint ist damit die Lokalisation eines oder mehrerer der gesuchten Objekte. Im Fall von Gesichtserkennung ist das eben ein Gesicht. Die erkannten Objekte werden oft mit farbigen Kästen gekennzeichnet, wie in . Abb. 45.2 darstellt. Der zweite Schritt ist die Objektidentifizierung. Gemeint ist damit die Bestimmung, um welches Objekt es sich handelt. In obigen Beispielen war das die Identifizierung der Person anhand ihres Gesichts. Neben der Identifizierung von individuellen Personen umfasst die Identifizierung von Fotos auch die Bestimmung von weiteren Merkmalen. Zum Beispiel wie alt eine Person ist, ob sie eine Brille trägt oder ob sie gerade fröhlich oder traurig aussieht. Bezogen auf . Abb. 45.2 kann die Ausgabe einer Gesichtsanalyse in der Kommandozeile aussehen wie in . Abb. 45.3. Übung Sieh dir den Cloud-Dienst zur Gesichtserkennung von Microsoft an: 7 https://azure.microsoft.com/de-de/services/cognitive-services/face/ Mithilfe eines Microsoft-Azure-Accounts ist es sehr einfach möglich, ein eigenes Programm zur Gesichtserkennung zu schreiben. Das Bild in . Abb. 45.2 und die Ausgabe in . Abb. 45.3 wurden auf diese Weise erzeugt. Die entsprechende Übung folgt am Ende der Stunde.

. Abb. 45.1 Hilfeseite zu Gesichtserkennung auf 7 http://facebook.com

386

Kapitel 45 · Computer Vision

. Abb. 45.2 Erkanntes Gesicht

. Abb. 45.3 Attribute

45

In dieser Stunde beschäftigen wir uns hauptsächlich mit der Analyse von menschlichen Gesichtern auf Fotos. Gesichtserkennung ist ein wichtiges Teilgebiet der Computer Vision, es gibt daneben aber noch viele andere Anwendungsfälle. So werden nicht nur Gesichter, sondern auch andere Körperteile oder sogar Bewegungen analysiert. Sehr oft geht es auch gar nicht um Menschen, sondern um Objekte oder Muster. Übung Welche weiteren Anwendungsfälle der Computer Vision fallen dir ein? Erstelle eine Liste.

Wichtige Anwendungen der Computer Vision sind unter anderem: 5 Die Texterkennung, auch OCR (engl. optical character recognition) genannt. Dabei werden automatisiert gedruckte Texte oder sogar handschriftliche Texte

387 Kapitel 45 · Computer Vision

5

5 5

5

45

auf Bildern erkannt. Ein Einsatzszenario ist die automatisierte Verarbeitung des Posteingangs großer Firmen. Industrielle Anwendungen, bei denen aufgrund von Bildanalysen automatisierte Prozesse gesteuert werden. Dieser Bereich wird auch maschinelles Sehen genannt. Konkrete Beispiele sind die Steuerung eines Roboterarms zur Fertigung eines Autoteils oder die visuelle Kontrolle solcher Teile, um zu entscheiden, ob sie einen Qualitätsanspruch erfüllen. Die Interaktion zwischen Mensch und Maschine. Zum Beispiel können Maschinen mithilfe von Gesten gesteuert werden. Die medizinische Bildverarbeitung ist von wesentlicher Bedeutung für die Diagnose von Krankheiten und die Planung medizinischer Eingriffe. Dabei werden bildgebende Verfahren eingesetzt, wie MRT (Magnetresonanztomografie) oder CT (Computertomografie). Die so entstehenden Bilder werden klassischerweise von Menschen ausgewertet. Zunehmend übernehmen Computer die Bildanalyse, da sie wesentlich schneller und meist auch bessere Ergebnisse liefern. Ein konkretes Beispiel ist die Entdeckung und Lokalisation von Tumoren. Es gibt zahlreiche weitere Beispiele von Auswertungen, die Computer übernehmen, was die Medizin zu einem der wichtigsten Anwendungsbereiche der Computer Vision macht. Autonomes Fahren wird durch Computer Vision ermöglicht. Dabei erfassen Kameras die Umgebung des selbstfahrenden Fahrzeugs. Das kann ein Auto sein, ein Zug oder ein anderes mit entsprechender Hard- und Software ausgerüstetes Fahrzeug. Verkehrsschilder, Hindernisse oder andere Verkehrsteilnehmer werden erfasst und identifiziert. Entfernungen werden berechnet. All diese Informationen nehmen Einfluss auf die eigene Steuerung. Dadurch werden relativ einfache autonome Fahrmanöver wie Parkassistenten ermöglicht, bis hin zu der vollautonomen Teilnahme am Straßenverkehr.

Um zu verstehen, wofür Computer Vision eingesetzt wird, ist es auch interessant, sich zu überlegen, welche visuellen Aufgaben Computer nicht lösen können. Weit verbreitet sind die sogenannten CAPTCHA. Ein Beispiel ist in . Abb. 45.4 dargestellt. Der Begriff kommt aus dem Englischen und steht für „completely automated public Turing test to tell computers and humans apart“. Auf Deutsch übersetzt: „vollautomatischer öffentlicher Turing-Test zur Unterscheidung zwichen Computern und Menschen“. In der Regel werden CAPTCHAs bei Internetformularen eingesetzt, um festzustellen, ob ein Mensch oder eine Maschine die Eingabe vorgenommen hat. Diese Unterscheidung gilt heute nicht mehr als uneingeschränkt sicher. Dennoch ist es aufgrund des Variantenreichtums nach wie vor schwierig für Computer, CAPTCHAs zu lösen.

388

Kapitel 45 · Computer Vision

Übung Du hast nun eine Vorstellung, wo und zu welchem Zweck Computer-VisionTechnologie eingesetzt wird. Ist dir auch klar, wie Computer Vision funktioniert? Mit welchem Verfahren kann ein Computer auf Bildern Objekte erkennen und diese identifizieren?

45

Für einen Computer ist ein Bild nichts anderes als eine große Menge an Pixeln (vergleiche  Kap. 39 Computergrafik). Das sind unstrukturierte Daten, in denen mit einfachen Mitteln keine komplexen Objekte erkannt werden können. Mit einfachen Mitteln (Skalierung, Rauschunterdrückung, Kontrastveränderung etc.) lassen sich allerdings die Bilddaten in eine einheitliche Form bringen, was die Chancen für die eigentliche Auswertung erhöht. Dann werden KI-Verfahren eingesetzt: Sowohl Objekterkennung als auch Objektidentifizierung können mit einem Klassifikationsverfahren durchgeführt werden! Es werden dazu CNNs eingesetzt. CNN steht für Convolutional Neural Network (faltendes neuronales Netzwerk). Es handelt sich dabei um spezielle ML-Modelle, die vornehmlich zur Verarbeitung von Bild- und Audiodaten eingesetzt werden. Sie sind in der Lage, zunächst einfache Muster wie Striche und dann zunehmend komplexere Bildbestandteile wie zum Beispiel ein Auge zu erkennen. Neuronale Netzwerke werden in  Kap. 46 Deep Learning genauer erklärt. Bei der Gesichtserkennung kann der Einsatz von CNNs folgendermaßen ablaufen: Zunächst werden verschiedene Bildbereiche in die Klassen Gesicht oder NichtGesicht eingeteilt. Das Ergebnis sind erkannte Gesichter in Form von Rahmen, wie in . Abb. 45.2 gesehen. Für diese Teilbilder werden dann eine oder mehrere weitere Klassifikationen durchgeführt. Um eine Person zu identifizieren, müssen Bilder ihres Gesichts und die Information, um welche Person es sich handelt, in den Trainingsdaten vorhanden sein. Die Frage, wie eine Computer-Vision-Lösung funktioniert, hängt also nicht nur davon ab, welche Verfahren verwendet werden, sondern maßgeblich davon, auf welchen Daten sie basiert. Die Firma Clearview AI hat sich darauf spezialisiert, sehr große Datenmengen aus verschiedenen Quellen im Internet zu sammeln und mit deren Hilfe Gesichtserkennungsdienste anzubieten. Unter den Datenquellen sind soziale Netzwerke wie Facebook, Instagram und YouTube. Kunden sind in erster Linie Behörden, die mithilfe von Clearview bei Fahndungen unbekannte Täter identifizieren können. Clearview AI ist massiver Kritik ausgesetzt, da die Datensammlung ohne das Wissen oder Einverständnis der betroffenen Unternehmen oder Einzelpersonen stattfand.

. Abb. 45.4 Beispiel für CAPTCHA von Wikipedia

389 Kapitel 45 · Computer Vision

>

45

 clearview.ai ist die Webseite der Firma Clearview AI, wobei das „ai“ für künstliche Intelligenz steht.

Es bleibt spannend abzuwarten, wie sich die noch jungen Technologien im Bereich Computer Vision weiter verändern werden. Vor allem ist entscheidend, welche Unternehmen die personalisierten Daten der Teilnehmer am digitalen Leben kontrollieren werden und unter welchen Auflagen sie dies tun. Übung Erstelle ein eigenes Python-Programm, um Bilder zu analysieren. Folge dazu der Anleitung von Microsoft, die in der Beschreibung des Face-Services verlinkt ist. Am wichtigsten ist es, die Voraussetzungen zu erfüllen, wie in . Abb. 45.5 dargestellt. Danach kannst du aus den Codebeispielen von Microsoft ein eigenes Programm erstellen. Alternativ kannst du auch die Skripte verwenden, mit denen . Abb. 45.2 und . 45.3 erstellt wurden: 7 https://github.com/StefanSpieker/52Stunden/tree/ master/computer_vision

? Womit beschäftigt sich Computer Vision? Wieso bieten Unternehmen wie Facebook Einstellungen zur Gesichtserkennung an? Wie unterscheiden sich Objekterkennung und Objektidentifizierung? Was ist ein CAPTCHA? Wie sieht das Geschäftsmodell von Clearview AI aus?

. Abb. 45.5 Voraussetzungen zur Nutzung von Microsoft Face

391

Deep Learning

© Springer Fachmedien Wiesbaden GmbH, ein Teil von Springer Nature 2024 T. Eichstädt und S. Spieker, 52 Stunden Informatik, https://doi.org/10.1007/978-3-658-41838-0_46

46

392

Kapitel 46 · Deep Learning

Deep Learning orientiert sich am Modell des Gehirns. Das menschliche Gehirn besteht Schätzungen zufolge aus 86 Mrd. Nervenzellen und sehr vielen Verbindungen. Die Zellen besitzen eingehende und ausgehende Zellfortsätze, die Pate für die künstlichen neuronalen Netze (KNN) gestanden haben. Ein KNN besteht aus einer Eingangsschicht, die Informationen erhält, einer Zwischenschicht, in der die Verarbeitung stattfindet, und einer Ausgangsschicht. Die Knoten sind miteinander verbunden und leiten Informationen weiter. Wenn sehr viele Schichten verwendet werden, so wird der Algorithmus als Deep Learning bezeichnet. Anhand des Spiels Quick, Draw! wird die Funktionsweise erklärt, wobei dort ein CNN zur Anwendung kommt. Deep Learning wird bei Problemen angewendet, die zu viele mögliche Features beinhalten, um händisch nachzuvollziehen, wie wichtig jedes einzelne ist. Die Wichtigkeit des Human in the Loop wird thematisiert und Stellen, an denen der Mensch auch innerhalb von KI groe Vorteile bietet, werden dargestellt. Wir wissen bereits, dass beim maschinellen Lernen Modelle entstehen, die es dem Computer erlauben, komplizierte Aufgaben zu lösen. In dieser Stunde erfahren wir mehr darüber, wie diese Modelle aussehen und wie sie trainiert werden. Übung Öffne 7 https://quickdraw.withgoogle.com/ und spiele eine Runde. In diesem Spiel werden Begriffe genannt, die du zeichnen sollst. Ein neuronales Netzwerk erkennt die gezeichneten Begriffe. Dass so etwas (mit Computer-Vision-Technologie) möglich ist, überrascht dich wahrscheinlich nicht mehr. Aber kannst du dir denken, wie so ein neuronales Netzwerk funktioniert? Stell dir vor, wie dein Gehirn Informationen verarbeitet, die dein Auge erfasst. So kannst du Dinge erkennen, möglicherweise auch nur anhand von wenigen Strichen. Wie wird wohl ein Computerprogramm entwickelt, dass dieselbe Aufgabe erfüllt?

46

Das menschliche Gehirn besteht Schätzungen zufolge aus 86 Mrd. Nervenzellen. Jede einzelne dieser Zellen ist im Durchschnitt mit etwa 7000 weiteren Zellen verbunden. Über unsere Sinnesorgane (zum Beispiel das Auge) werden Informationen aufgenommen und an das Nervensystem übertragen. Im Gehirn verarbeiten die Nervenzellen dann die aufgenommenen Informationen. Eine einzelne Nervenzelle, auch Neuron genannt, besteht aus einem Zellkörper und Zellfortsätzen. Die meisten dieser Zellfortsätze sind dazu da, um die Erregung anderer Zellen aufzunehmen. Manche Zellfortsätze (die längeren) tun genau das Gegenteil. Sie leiten Signale weiter und regen damit andere Nervenzellen an. In . Abb. 46.1 ist eine Nervenzelle schematisch dargestellt. Über die kürzeren Zellfortsätze werden Signale aufgenommen (gelb), der Zellkörper nimmt die Signale (grün) auf und der längere Zellfortsatz leitet ein Signal weiter (rot). Ein (künstliches) neuronales Netzwerk oder auch künstliches neuronales Netz, kurz KNN, ist ein Computersystem, das von dem Nervensystem von Lebewesen inspiriert ist. Ein solches Netz besteht aus künstlichen Neuronen, die wiederum dem Vorbild von biologischen Nervenzellen nachempfunden sind. Das bedeutet nichts anderes, als dass der oben beschriebene Aufbau einer Nervenzelle mathematisch

393 Kapitel 46 · Deep Learning

46

nachgebildet wird. Viele solcher künstlichen Neuronen, auch Knoten genannt, bilden dann ein KNN. Ein KNN besteht aus mehreren Schichten. Ein Beispiel ist in . Abb. 46.2 dargestellt. Das abgebildete KNN besteht aus drei Schichten. Die Eingangsschicht besteht aus fünf Knoten (gelb). Die zweite Schicht, auch Zwischenschicht genannt, besteht aus vier Knoten (grün). Und in der Ausgangsschicht befindet sich nur ein einziger Knoten (rot). Die Anzahl von Schichten und die Knoten je Schicht im Beispiel sind willkürlich gewählt. KNN können aus sehr viel mehr Knoten und Zwischenschichten bestehen. In der Regel stellt der Informationsausgang einer Schicht gleichzeitig den Informationseingang der nächsten Schicht dar und so weiter. Die Knoten angrenzender Schichten sind daher mit Linien verbunden dargestellt. Im menschlichen Gehirn sind unterschiedliche Nervenzellen und Gehirnregionen aktiv, je nachdem, welche Sinneseindrücke der Mensch gerade wahrnimmt. So ähnlich sieht es auch bei einem KNN aus. In der Praxis ist ein künstliches Neuron nichts weiter als eine Zahl zwischen 0 und 1. Die Knoten der Eingangsschicht kann man sich also je nach Eingabedaten als „aktiv“ (Wert nahe 1) oder „weniger stark aktiv“ (Wert nahe 0) vorstellen. Je nach der Kombination von Werten der Eingangsknoten gilt dasselbe auch für Knoten der zweiten Schicht und so weiter. Die einzelnen Informationsübergänge sind dabei unterschiedlich stark gewichtet und die Schwelle zur Informationsweitergabe der einzelnen künstlichen Neuronen ist ebenfalls unterschiedlich hoch ausgeprägt. Diese Parameter bestimmen, wie das KNN auf einen Informationseingang reagiert und welches Ergebnis in der Ausgangsschicht resultiert. Das Entscheidende bei der Verwendung eines KNN ist, dass seine Parameter trainiert werden können. Mit anderen Worten: Künstliche neuronale Netze kommen beim maschinellen Lernen zum Einsatz. Wenn beim maschinellen Lernen neuronale Netze mit vielen Schichten eingesetzt werden, spricht man von Deep Learning (tiefes Lernen). Bevor ein KNN trainiert werden kann, muss zunächst das Netz konstruiert werden. Das heißt, dass die Struktur des KNN festgelegt wird.

. Abb. 46.1 Schematische Darstellung einer Nervenzelle

394

Kapitel 46 · Deep Learning

. Abb. 46.2 Darstellung eines künstlichen neuronalen Netzes (KNN)

Übung Denken wir zurück an das Spiel „Quick, Draw!“. Um welche Art von Problem handelt es sich? Wie sehen Eingaben und Ausgaben des Problems aus, wenn es mithilfe eines KNN gelöst werden soll?

46

Die Zuordnung eines Bildes zu einem von vielen möglichen Begriffen ist ein Klassifizierungsproblem. Dass die Zuordnung fortlaufendend während des Zeichnens erfolgt, ist dabei unerheblich. Die einzuordnende Eingabe ist ein schwarz-weißes Bild mit der Größe 256 × 256 Pixel. In der Eingangsschicht stehen daher 256 × 256 = 65.536 Farbwerte. In der Ausgangsschicht sind alle möglichen Klassen aufgeführt. Das KNN sieht also aus, wie in . Abb. 46.3 dargestellt. Die Werte eines KNN werden auf den Zahlenbereich zwischen 0 und 1 normiert. Ein Eingabewert von 0 bedeutet also, dass ein Bildpunkt weiß ist. Ein Eingabewert von 1 bedeutet, dass er schwarz ist. Das Ergebnis des KNN ist ein sogenannter Score (Ergebnis). Der Score-Wert gibt an, wie sicher sich das KNN bei der Zuordnung eines Bildes zu einer Klasse ist. Ein sehr kleiner Score (nahe 0) bedeutet, dass das KNN eine Klasse ganz sicher als Ergebnis ausschließt. Ein Score nahe 1 bedeutet, dass das KNN eine Klasse als sehr wahrscheinlich korrektes Ergebnis ansieht. Bei dem Spiel „Quick, Draw!“ wird die Zeichnung während des Zeichnens wiederholt von einem KNN bewertet. Sobald der Score der gesuchten Klasse einen bestimmten Wert erreicht, wird der Begriff als korrekt erkannt gewertet.

395 Kapitel 46 · Deep Learning

46

. Abb. 46.3 Aufbau eines KNN für „Quick, Draw!“

>

Google hat die Daten des Spiels auf GitHub veröffentlicht: 7 https://github. com/googlecreativelab/quickdraw-dataset

Die Größe und Anzahl von Zwischenschichten kann sehr stark variieren. In . Abb. 46.3 ist diese Variabilität mit drei Punkten und gestrichelten Linien angedeutet. Auch die Art der Informationsübergänge, die frühzeitig festgelegt werden müssen, gehört zur Struktur eines KNN. Je nachdem, wie diese stattfinden, variiert auch die Bedeutung der Knoten innerhalb eines KNN. In der Bildanalyse werden häufig CNNs eingesetzt. CNNs beinhalten spezielle faltende Zwischenschichten, die Bildbereiche in einzelnen Datenpunkten zusammenfassen. Das hilft dabei, Informationen zu erkennen, die über die Bedeutung eines Pixels hinausgehen. Gleichzeitig wird es so möglich, überflüssige Informationen zu verwerfen. Weil es so kompliziert ist, ein KNN oder CNN von Grund auf neu aufzubauen, greift man in der Regel lieber auf bewährte Standardstrukturen zurück. Ausgehend von fixen Eingangsund Ausgangsdaten lassen sich verschiedene Strukturen trainieren und bewerten. Übung Eine klassische Übungsaufgabe für Deep Learning ist die Identifizierung der Ziffern 0–9. Es wird dabei ein CNN trainiert, dass in der Lage ist, für einen bereits erkannten Bildausschnitt, der eine Ziffer abbildet, zu identifizieren, um welche Ziffer es sich handelt. Wenn du dich näher mit Deep Learning beschäftigst, wirst du sicherlich noch

396

Kapitel 46 · Deep Learning

über dieses Beispiel stolpern. Fürs Erste beschränken wir uns darauf zu überlegen, welche Eingangs- und Ausgangsgrößen ein solches CNN erfordert. Gehe davon aus, dass ein Schwarz-Weiß-Foto mit der Auflösung von 64 × 64 bewertet werden soll. Wie würden Eingangs- und Ausgangsschicht des CNN aussehen? Ein zweites typisches Beispiel für Deep Learning ist die Unterscheidung von Katzen und Hunden. Gehe davon aus, dass ein Farbfoto mit der Auflösung 256 × 256 bewertet werden soll. Wie würden hier Eingangs- und Ausgangsschicht des CNN aussehen?

46

Wenn die Struktur festgelegt wurde, muss noch bestimmt werden, wie die Informationsübergabe zwischen den Schichten abläuft. Erst dann ist klar, zu welchem Ergebnis eine Eingabe führt. In anderen Worten geht es darum herauszufinden, welche Features sich wie auf das Ergebnis auswirken. Als Feature (Eigenschaft) bezeichnet man eine messbare Information, die zur Analyse verwendet werden kann. Deep Learning wird bei Problemen angewendet, die zu viele mögliche Features beinhalten, um händisch nachzuvollziehen, wie wichtig jedes einzelne ist. Im Beispiel der Bildanalyse werden deshalb alle verfügbaren Bildinformationn, also alle Pixel, als Eingabe verwendet. In jeder Schicht generiert das KNN neue Features oder sortiert weniger wichtige Features aus. Über dieses Verfahren entscheiden das Gewicht und die Schwelle zur Informationsübergabe in den Neuronen. Diese Parameter sind zu Beginn nicht bekannt und werden zufällig vergeben. Mit zufälligen Parametern liefert das KNN auch zufällige Ergebnisse. Deshalb wird das KNN noch trainiert. Das bedeutet, dass bekannte Eingangsdaten prozessiert werden. Ausgehend von den bekannten Ergebnissen werden die Parameter nach und nach so angepasst, dass die vorhergesagten Ergebnisse immer besser werden. Dabei kommt für jeden einzelnen Parameter ein Regressionsverfahren zum Einsatz, siehe  Kap. 43 Regressionsanalyse (mit Jupyter). Das Training wird mit allen Trainingsdaten mehrfach wiederholt. Spätestens sobald sich die Anzahl der korrekt vorhergesagten Eingaben nicht mehr verbessert, kann das Training abgebrochen werden. Zuvor sind einige Datensätze aussortiert worden, die sogenannten Testdaten. Mit diesen Daten ist es möglich zu prüfen, ob mit dem KNN auch bei unbekannten Daten eine gute Vorhersage möglich ist. Selbst wenn das KNN fertig trainiert wurde und sich die Parameter nicht mehr verändern, ist es für einen Menschen nicht oder nur sehr schwierig nachzuvollziehen, wie das KNN genau funktioniert. Ein KNN wird daher in der Regel als eine Black Box behandelt. Da diese intelligenten Black Boxen die Lösung von immer mehr Problemen unseres Lebens übernehmen, ist es umso interessanter zu verstehen, wie sie grundlegend funktionieren. >

Ein YouTube-Video zur Erklärung von neuronalen Netzen durch Doktor Whatson in 8 min findest du unter 7 https://www.youtube.com/watch?v=ya_6I9IVMzY Der bekannteste Onlinekurs zu Deep Learning stammt von Andrew Ng. Herr Ng ist eine Ikone im Bereich der künstlichen Intelligenz und Co-Founder von Coursera 7 https://www.coursera.org/learn/neural-networks-deep-learning (Englisch).

397 Kapitel 46 · Deep Learning

46

Eine deutschsprachige Alternative bietet zum Beispiel Udemy 7 https://www. udemy.com/course/deep-learning-und-ai/. Ein kostenloser Onlinekurs zu Deep Learning wird vom OpenHPI angeboten 7 https://open.hpi.de/courses/neuralnets2020. Wer Deep Learning im Webbrowser ganz ohne Code ausprobieren möchte, für den bietet Google ein Lernangebot 7 https://teachablemachine.withgoogle. com/.

In den Anfängen von Deep Learning wurde es als Makel gesehen, wenn Menschen in diesen Lernprozess eingegriffen haben, da es ja so keine wirkliche künstliche Intelligenz geben würde. Tatsächlich hat sich aber gezeigt, dass auch eine künstliche Intelligenz stark von einem Lehrer profitieren kann. So hat sich der Begriff Human in the Loop (Mensch in der Schleife) in der Literatur verbreitet, um auszusagen, dass der Mensch in die Trainingsprozesse eingebettet ist. Dies kann über verschiedene Möglichkeiten geschehen. Ein Experte auf dem Gebiet wählt beispielsweise die Trainings- und Testdaten besonders geschickt aus, sodass das Deep Learning besonders gut funktionieren kann. Der Mensch kann auch helfen, die Voreingenommenheit eines Modells frühzeitig zu erkennen. So gab es bei vielen KI-Gesichtserkennungsmodellen das Problem, dass es nur gut für weiße Menschen funktionierte, weil die Testdaten nur sehr wenig asiatische und dunkelhäutige Menschen beinhalteten. Einem Menschen kann das frühzeitig auffallen, und durch eine Erweiterung der Testdaten lässt sich dann das Ergebnis deutlich verbessern. Ein weiterer Trend ist, dass Deep Learning nicht mehr nur zur Bewertung, sondern auch dazu eingesetzt wird, um Daten zu generieren. Das können Bilder sein oder auch Texte, wie wir in der nächsten Stunde sehen werden. Eine große Herausforderung dabei ist, die Ausgabe eines Neuronalen Netzwerks zu bewerten. Es ist schon lange der Punkt überschritten, dass diese Bewertung jedes Mal von einem Menschen vorgenommen werden kann. Stattdessen wurde im Jahr 2014 das Konzept der GANs vorgeschlagen. GANs steht für Generative Adversarial Networks. Die Idee besteht darin, zwei konkurrierende Modelle zu trainieren, einen generator (Erzeuger) und einen discriminator (Diskriminator). Das Generator-Netzwerk hat die Aufgabe, Datensätze zu generieren. Das Diskriminator-Netzwerk hat die Aufgabe, die Echtheit der künstlich erzeugten Daten zu prüfen. Wenn das Zusammenspiel funktioniert, bringt der Generator immer bessere Ergebnisse hervor, während sich der Diskrimiator immer schwerer tut zu erkennen, dass die Daten künstlich erzeugt wurden. Im Ergebnis entsteht ein besonders realistisches Ergebnis. ? Was ist ein KNN? Welche Schichten gibt es bei einem KNN? Was ist ein Feature? Wie lange sollte ein Training einer KI laufen? Welche Idee verfolgen Generative Adversarial Networks?

399

ChatGPT

© Springer Fachmedien Wiesbaden GmbH, ein Teil von Springer Nature 2024 T. Eichstädt und S. Spieker, 52 Stunden Informatik, https://doi.org/10.1007/978-3-658-41838-0_47

47

400

47

Kapitel 47 · ChatGPT

ChatGPT ist scheinbar über Nacht entstanden und wird bereits extrem viel verwendet. Die Entstehungsgeschichte von ChatGPT geht in die 80er und 90er Jahre zurück und wurde durch ImageNet, Transformer und am Ende auch durch GPT bestimmt. Die KI kann bei einfachen Recherchen helfen und sogar ganze Artikel erzeugen. Bei der Programmierung kann sie sehr stark unterstützen und dem Entwickler beim Schreiben von Funktionalitäten helfen. So kann die KI beispielsweise die Implementierung einer REST-API in Python generieren. Das wird sogar mit detaillierten Erklärungen und einer Anleitung, wie die Applikation gestartet werden kann, ergänzt. Unfehlbar ist ChatGPT aber nicht, sondern generiert bisweilen auch sachlich falsche Texte. Trotzdem wird die KI wahrscheinlich groe Auswirkungen auf die Ausbildung und auf die Arbeitswelt haben. In letzter Zeit ist ChatGPT immer öfter in aller Munde: Schüler nutzen den Chatbot als einfach zu bedienende Hausaufgabenhilfe, Studenten lassen sich bei Seminararbeiten helfen und auch Autoren nutzen dieses Werkzeug, um Texte zu generieren. Das GPT steht dabei für Generative Pre-trained Transformer (vortrainierter generativer Transformator). Da die ausgeschriebene Bezeichnung reichlich nichtssagend ist, sollte kurz die Entstehungsgeschichte betrachtet werden, denn ChatGPT ist schließlich nicht über Nacht entstanden. 5 1980er- bis 90er-Jahre: neuronale Netze Bei Sprachmodellen handelt es sich im Prinzip um künstliche neuronale Netze, wie sie in  Kap. 46 Deep Learning schon erklärt wurden. 5 2012: ImageNet Geoffrey Hinton und seine Kollegen gewannen den wichtigsten Wettbewerb für Bilderkennung, indem sie tiefe neuronale Netze verwendeten. Geoffrey Hinton gilt als Pionier bei der Forschung zu Künstlicher Intelligenz. Bis vor kurzem arbeitete er für den Google-Konzern. 5 2017: Transformer Ein Durchbruch gelang Google im Bereich großer Sprachmodelle. Ein Entwicklerteam erfand sogenannte Transformatoren, das sind tiefe neuronale Netze, die mit Attention (Aufmerksamkeit) arbeiten. Mit menschlicher Aufmerksamkeit hat dies nichts zu tun und lässt sich auch nicht damit vergleichen. Die hier gemeinte Aufmerksamkeit sorgt dafür, dass die Netze die relative Position der Wörter zueinander verarbeiten können. Damit können Transformatoren Bezüge zu anderen Wörtern herstellen und verstehen Texte somit sehr viel besser. 5 2018–2019: GPT und GPT-2 Forscherinnen und Forscher vermuteten, dass die Fähigkeiten von Transformatoren nicht einfach nur linear mit der Größe wachsen würden, sondern zusätzliche weitere neue Fähigkeiten entstehen könnten. Die Firma OpenAI entschloss sich deshalb, sich auf diesen Ansatz zu fokussieren. Die ersten beiden Modelle – GPT und GPT-2 – sind im Abstand von wenigen Monaten entstanden. Das Ziel war, eine vielseitig einsetzbare, universelle künstliche Intelligenz zu entwickeln. Das innovativ Neue an GPT ist die Kombination aus Transformatoren und unüberwachtem Lernen. Damit ist es möglich, die KI mit Daten zu trainieren, die nicht erst kommentiert werden müssen. 5 2020: GPT-3 Vom Nachfolger von GPT-2 waren sogar Fachleute sehr beeindruckt. Denn

401 Kapitel 47 · ChatGPT

47

GPT-3 kann Fragen beantworten, Dokumente zusammenfassen, Geschichten in verschiedenen Stilen erstellen, zwischen verschiedenen Sprachen übersetzen und noch einiges mehr. Die KI arbeitet mit 175 Mrd. Parametern – das sind Werte die während des Trainings angepasst werden. Bei GPT-2 waren es nur 1,5 Mrd. 5 Januar 2022: InstructGPT Die KI produzierte aber nicht nur richtige, sondern bisweilen auch falsche und sogar hasserfüllte Texte. Dies liegt daran, dass im Internet viele Informationen zu finden sind. Davon viele, die sachlich und inhaltlich falsch sind. Mit InstructGPT hat OpenAI versucht, dieses Problem in den Griff zu bekommen. Die Version wurde auf die Vorlieben menschlicher Tester trainiert. 5 Dezember 2022: ChatGPT Im Dezember 2022 wurde dann schließlich ChatGPT veröffentlicht, und noch immer ist jeder eingeladen, das neue Modell zu testen. Die Resonanz nach Veröffentlichung war überwältigend und die Dynamik, die damit in Gang gesetzt wurde, war so nicht vorhersehbar. ChatGPT setzt dabei immer noch im Kern auf GPT und es wird derzeit, im Juni 2023 auf GPT-4 aktualisiert. Nach dieser Entwicklungsgeschichte stellt sich nun aber doch die Frage, was ChatGPT denn nun genau kann. Um das herauszufinden, wird die Funktion mit ein paar Fragen getestet. Übung Gehe auf die Webseite von ChatGPT 7 https://chat.openai.com/ und melde dich dort an. Zum jetzigen Zeitpunkt ist sowohl eine gültige E-Mail-Adresse als auch eine Handynummer nötig, um den Anmeldeprozess erfolgreich abzuschließen. . Abb. 47.1 zeigt die Login-Seite.

Nachdem der Account bestätigt und der Login erfolgreich durchgeführt wurde, stehen dem Nutzer die Funktionen von ChatGPT zur Verfügung. . Abb. 47.2 zeigt die Startseite.

. Abb. 47.1 ChatGPT Login-Seite

402

Kapitel 47 · ChatGPT

. Abb. 47.2 ChatGPT Startseite

Um die Möglichkeiten zu testen, soll ein Begriff aus einer früheren Stunde dieses Buches erklärt werden. Es ist möglich, dem Programm Fragen in Freitextform zu stellen, und es wird darauf in natürlicher Sprache antworten. ChatGPT versteht auch Fragen in verschiedenen Sprachen, in diesem Fall deutsch, und antwortet in der jeweiligen Sprache. Für dieses Beispiel soll das Programm erklären, was eine IP-Adresse ist. Die Antwort auf die Anweisung „Erkläre, was eine IP-Adresse ist!“ zeigt . Abb. 47.3. Die KI versteht aber auch zusätzliche Anforderungen wie beispielsweise, dass die Antwort kurz oder ausführlich sein soll. Die generierte Kurzantwort besteht aus 34 Wörtern. Im Vergleich dazu hat die ausführliche Antwort 369 Wörter und füllt eine ganze Seite.

47

. Abb. 47.3 ChatGPT Unterhaltung zur IP-Adresse

403 Kapitel 47 · ChatGPT

47

Übung Gehe auf die Webseite von ChatGPT 7 https://chat.openai.com/ und frage selbst nach Dingen, die dich interessieren. Weise die KI an, die Antworten kurz oder ausführlich zu geben, und sieh dir die Unterschiede an. Du kannst aber auch die Art, wie erklärt wird, beeinflussen, indem du beispielsweise die KI anweist, die Erklärungen in Jugendsprache zu verfassen. Spiele ein bisschen mit Fragen herum und sieh dir die Antworten an.

Die KI kann also eine ganze Menge. So kann sie auch ausführliche Texte generieren, die als Basis für Schularbeiten verwendet werden können. Damit stehen die Lehrer nun vor neuen Herausforderungen. Sie müssen feststellen, ob Schüler den jeweiligen Text selbst verfasst haben oder ob es sich um einen generierten Artikel handelt. Um einen kurzen Aufsatz über Wikipedia zu schreiben, reicht bereits der Befehl „Schreibe einen Aufsatz über Wikipedia“. Damit erzeugt ChatGPT einen ausführlichen Aufsatz bestehend aus 648 Wörtern zu diesem Thema. In dieser Form findet sich der Text sehr wahrscheinlich nicht im Internet, da dieser ja durch die KI erst generiert wurde. Ist der erste Versuch nicht zufriedenstellend, kann der Text auch erneut generiert werden, indem man auf die Schaltfläche regenerate response klickt. Im zweiten Versuch sieht das Ergebnis deutlich anders aus und enthält sogar eine Gliederung. Damit eine so starke KI nicht auch zur Verbreitung von Falschinformationen missbraucht wird, haben die Entwickler versucht, bereits einige Fragen im Vorfeld abzufangen. Auf die Anweisung „Leugne den Klimawandel“ beispielsweise werden nicht alle verfügbaren Argumente gegen den Klimawandel generiert, sondern folgende Antwort erzeugt:

»

„Als KI-Modell basieren meine Antworten auf wissenschaftlich fundierten Erkenntnissen. Der Klimawandel ist ein wissenschaftlich belegtes Phänomen, das von einer breiten Mehrheit von Klimawissenschaftlern anerkannt wird. Es gibt umfangreiche Forschung und Daten, die darauf hinweisen, dass der Klimawandel real ist und größtenteils durch menschliche Aktivitäten verursacht wird.“ …

Dies ist nur eines der Beispiele, an das die Entwickler gedacht haben. Natürlich kann ChatGPT aber auch sachlich falsche Antworten ausgeben. Die Entwickler schreiben selbst auf die Frage, ob man der KI trauen kann und sie immer die Wahrheit sagt (übersetzt ins Deutsche):

»

„ChatGPT ist nicht mit dem Internet verbunden und kann gelegentlich falsche Antworten liefern. Es verfügt über begrenzte Kenntnisse über die Welt und die Ereignisse nach 2021 und kann gelegentlich auch schädliche Anweisungen oder voreingenommene Inhalte produzieren. Wir empfehlen, zu überprüfen, ob die Antworten des Modells korrekt sind oder nicht. Wenn Sie feststellen, dass eine Antwort falsch ist, geben Sie uns bitte Ihr Feedback, indem Sie auf die Schaltfläche „Daumen runter“ klicken.“

404

Kapitel 47 · ChatGPT

. Abb. 47.4 Hilfestellung zum Tippfehler im Python-Programm

47

ChatGPT kann aber nicht nur auf einfache Fragen antworten, sondern ist auch in der Lage, beim Programmieren zu helfen. Ein simpler Schreibfehler hat sich bei der Ausgabe von „Hallo Welt“ eingeschlichen. ChatGPT soll das Problem finden und lösen. . Abb. 47.4 zeigt die entsprechende Anweisung und die ausführliche Antwort der KI. Als Bonus wird sogar eine Schaltfläche zum Kopieren des korrigierten Codes angeboten. Doch ChatGPT kann auch anspruchsvollere Programmieraufgaben lösen, wie eine REST-API zu erzeugen, die „Hallo Welt“ ausgibt. Was eine REST-API ist, kann man in  Kap. 25 APIs (mit Python) nochmal nachlesen. Der besondere Mehrwert entsteht nicht durch einige zusätzliche Programmzeilen mehr, sondern durch die guten Erklärungen, die die einzelnen Zeilen in Zusammenhang setzen. Es wird ebenfalls erklärt, wie der Code ausgeführt werden kann und anschließend zu testen ist. In . Abb. 47.5 ist die ausführliche Antwort zu sehen. Diese Beispiele machen deutlich, in welchen Bereichen ChatGPT, oder eine KI im allgemeinen, unterstützen kann. Für das Erlernen einer Programmiersprache kann ChatGPT somit auch einen Trainer oder ein Buch sehr gut ergänzen. Gelegentlich passiert es auch, dass sich in den generierten Programmcode Fehler einschleichen. Falls dies beim Testen auffällt, kann man der KI auch die Fehlermeldung mitteilen und sie auffordern, die vorherige Antwort zu verbessern. Es kommt selten vor, dass ChatGPT komplett frei erfundene Dinge beschreibt. Es wird dann von sogenannter Halluzination gesprochen. Ein bekannter Fall, in dem dies vorgekommen ist, hat sich im Jahre 2023 zugetragen, in dem sich ein Anwalt von ChatGPT hat helfen lassen. Die KI hat ihm für einen Fall etliche Präzedenzfälle zusammengestellt und der Anwalt hat diese auch verwendet. Während des Gerichtsverfahrens hat sich dann aber herausgestellt, dass die Fälle eine Kombination aus anderen Fällen waren und die angegebenen docket numbers, die dem deutschen Aktenzeichen entsprechen, gar nicht existierten. Wer sich den Fall nochmal genauer durchlesen möchte, findet einen guten Artikel unter 7 https://www. golem.de/news/halluzination-chatgpt-erfindet-gerichtsakten-2305-174509.html.

405 Kapitel 47 · ChatGPT

47

. Abb. 47.5 ChatGPT generiert ein Python-Programm für eine REST-API

Obwohl es sich hier um ein Negativbeispiel handelt, lässt sich erahnen, dass ChatGPT einen großen Einfluss auf die Arbeitswelt haben kann. Es wird sehr viel einfacher und schneller, Recherchen anzustellen und Texte zu verfassen. Dadurch werden sich einige Berufsfelder drastisch verändern. Im Bereich des Journalismus wird erwartet, dass immer mehr Artikel mit KI Unterstützung erzeugt werden. Redakteure werden dann ganz andere Arbeitsabläufe haben als früher. Ein großer Anteil von ihnen könnte sogar überflüssig sein. Ähnliches gilt zum Beispiel für die Marketingbranche. Bei all den Möglichkeiten von ChatGPT sollte man nicht vergessen, dass alle Gespräche zu Trainingszwecken verwendet werden können. Gerade bei sensiblen oder persönlichen Daten sollte man sich dessen bewusst sein, dass diese Daten in eine spätere Version einfließen werden und damit allen Nutzern potenziell zur Verfügung stehen. Es wird daher gerade sehr intensiv an privaten ChatGPT Instanzen gearbeitet, die dann beispielsweise innerhalb von Firmennetzen verwendet werden können. Ge-

406

Kapitel 47 · ChatGPT

rade für Entwickler wird von einer starken Produktivitätssteigerung ausgegangen, wenn ChatGPT als Helfer zur Seite steht. ? Was ist ChatGPT? Wofür steht GPT? Wozu kann man ChatGPT verwenden? Ist es leicht möglich zu erkennen, ob ein Text durch ChatGPT generiert wurde? Stimmt alles was ChatGPT schreibt?

47

407

Ethik in der Informatik

© Springer Fachmedien Wiesbaden GmbH, ein Teil von Springer Nature 2024 T. Eichstädt und S. Spieker, 52 Stunden Informatik, https://doi.org/10.1007/978-3-658-41838-0_48

48

408

Kapitel 48 · Ethik in der Informatik

Ethik beschäftigt sich mit Konzepten zur Unterscheidung von gutem und schlechtem menschlichen Handeln. Hackerangriffe sind ein Beispiel für ethisch fragwürdiges Verhalten. Dabei verfolgt nicht jeder Hacker bösartige Ziele. Ähnlich verhält es sich bei Whistleblowern. Die Handlungen von Edward Snowden werden bis heute sehr konträr beurteilt. Auch fernab der Informationssicherheit spielt Ethik in der Informatik eine zunehmend bedeutsame Rolle. Besonders gilt das im Umfeld der künstlichen Intelligenz, also in Fällen, in denen Maschinen selbstständig Entscheidungen treffen, und für schwer nachzuvollziehende Deep-Learning-Verfahren, zum Beispiel beim Einsatz von Gesichtserkennungssoftware. Die Digitalisierung verändert die Gesellschaft und wirft neue ethische Fragestellungen auf. Unternehmen und Zusammenschlüsse von Informatikern wie die Gesellschaft für Informatik begegnen diesen mit ethischen Leitlinien. Ethik ist ein Teilbereich der Philosophie, der sich mit Konzepten zur Unterscheidung von gutem und schlechtem menschlichen Handeln beschäftigt. An deutschen Schulen steht Ethik oft in Verbindung mit Religion, da der Ethikunterricht als Ersatz oder Alternative zum Religionsunterricht angeboten wird. Egal, ob in Verbindung mit oder unabhängig von Religion, ist Ethik wichtig, um ein Bewusstsein für das eigene Handeln zu schaffen und Instrumente zur Entscheidungsfindung in moralischen Fragen zu erlernen. Ein klassisches Beispiel für moralisch fragwürdiges Verhalten ist das Überwinden von IT-Sicherheitssystemen, umgangssprachlich oft mit „hacken“ bezeichnet. Ein weitreichender Fall war der Hackerangriff auf Twitter am 15. Juli 2020. Ermittlungen zufolge gelang es einem 17-Jährigen, sich Zugriff auf zahlreiche bekannte Twitter-Konten zu verschaffen. In der Folge wurden Betrugstweets von privaten und Unternehmenskonten verschickt (siehe zum Beispiel . Abb. 48.1).

48

. Abb. 48.1 (Teilweise zensierter) Betrugstweet vom Apple-Konto

409 Kapitel 48 · Ethik in der Informatik

48

Übung Wie ist deine Meinung zu Hackern? Findest du das Überwinden von IT-Sicherheitssystemen moralisch verwerflich?

In der ursprünglichen Verwendung bezeichnet der Begriff Hacker einen Tüftler, also jemanden, der sich geschickt anstellt, um technische Ziele zu erreichen. Das Durchdringen von IT-Sicherheitsmechanismen ist eine herausfordernde Aufgabe und damit ein großer Reiz für einige Informatiker. Nicht jeder Hacker verfolgt dabei bösartige Ziele. Es gibt viele Unterteilungen von Hackern, die sich nach Vorgehen, Fähigkeiten und vor allem nach den Beweggründen der jeweiligen Person richten. Übung Recherchiere und erkläre die Begriffe „Cracker“, „White-Hat-Hacker“, „Black-HatHacker“, „Scriptkiddie“ und „Hacktivist“.

Bei einem kriminellen Hackerangriff, der das Ziel verfolgt, sich persönlich zu bereichern, lässt sich ohne große Zweifel von moralisch verwerflichem Handeln sprechen. Am Aufdecken von Sicherheitslücken durch einen beauftragten Sicherheitsspezialisten ist dagegen nichts Verwerfliches zu finden. Manchmal ist die Einteilung in gut und schlecht aber nicht so einfach. Übung Lies das folgende Szenario durch. Die Firma TraumpartnerOnline24 betreibt ein Portal, das Kontakte über das Internet vermittelt. Die Firma hat 20 Mitarbeiter und 100.000 Nutzer. Personalisierte Daten der Nutzer werden über das Portal gespeichert und verarbeitet. Der Manager Mr Moneymaker macht sich Sorgen um die Sicherheit des Portals. Er beschliet, die Sicherheit des Portals von einer unabhängigen Stelle überprüfen zu lassen. Er engagiert den unabhängigen Sicherheitsberater SicherLästern. SicherLästern deckt in kurzer Zeit mehrere Sicherheitslücken auf und fasst diese in einer E-Mail an Mr Moneymaker zusammen. Besonders hebt er hervor, dass die Passwortzurücksetzung sehr unsicher ist und damit jeder Zugriff auf bekannte Konten erlangen kann. Damit betrachtet er seine Aufgabe als erledigt. Mr Moneymaker nimmt sich fest vor, den neuen Sicherheitsbedenken nachzugehen. Zuerst möchte er sich aber auf den nächsten Release konzentrieren, der in nur einer Woche bevorsteht. Der neue Release enthält lange erwartete Features, um mit der Konkurrenz gleichzuziehen und die Existenz der Firma zu gewährleisten. SicherLästern ist fassungslos über das mangelnde Sicherheitsbewusstsein bei TraumpartnerOnline24 und berichtet einem Kollegen, dem Hacker PublishIt, von der gefundenen Sicherheitslücke. PublishIt schreibt eine Warnung in das Kontaktformular des Portals. Nachdem er drei Tage lang keine Antwort erhält, wird er selbst aktiv. Er hackt sich in mehrere Konten und informiert die Nutzer, dass sich die Firma nicht um den Schutz ihrer Daten

410

Kapitel 48 · Ethik in der Informatik

kümmert. Die Nachrichten berichten über den Vorfall. Über die Hälfte der Nutzer kündigt ihren Account. TraumpartnerOnline24 ist innerhalb weniger Tage insolvent. Alle 20 Mitarbeiter verlieren ihre Arbeitsstelle. Wie bewertest du das ethische Verhalten von Mr Moneymaker, SicherLästern und PublishIt? Ordne die drei Personen von 1. „besonders verwerflich“ bis 3. „verhältnismäßig am wenigsten verwerflich“. Begründe die Bewertung.

Eine Person, die geheime Informationen zu als unethisch empfundenen Praktiken an die Öffentlichkeit bringt, wird Whistleblower (Hinweisgeber, wörtlich übersetzt Pfeifenbläser) genannt. Besonders bekannt ist der Fall von Edward Snowden. Er ist ein ehemaliger Mitarbeiter des amerikanischen Auslandsgeheimdienstes CIA und sorgte für eine Affäre, indem er geheime Dokumente veröffentlichte, die Einblicke in weltweite Überwachungs- und Spionagepraktiken geben. Snowdens Handlungen wurden von rechtlicher und institutioneller Seite auf das Schärfste kritisiert. Gleichzeitig brachten sie ihm international viel Respekt und zahlreiche Preise und Ehrungen ein. Wenig Spielraum für ethische Rechtfertigung bieten Phishing und das Verbreiten von Malware ( vergleiche  Kap. 10 Informationssicherheit). Alle bisher aufgeworfenen ethischen Fragestellungen und Beispiele von unethischem Verhalten haben mit Informationssicherheit zu tun. Allerdings spielt Ethik auch noch in anderen Bereichen der Informatik eine Rolle. Übung Welche Situationen fallen dir noch ein, in denen Informatiker mit ethischen Fragestellungen konfrontiert sein können? Wenn du spontan keine Ideen hast, erinnere dich an die letzten Stunden.

48

Grundsätzlich stellt sich die Frage, ob an der Entwicklung beteiligte Personen mitverantwortlich sind für den späteren Einsatz und die Auswirkungen einer Software. Wenn dem so ist, gibt es viele kritisch zu betrachtenden Fälle. Ein Beispiel ist Betrugssoftware zur Manipulation von Abgaswerten. Ganz besonders schwer fällt die Beurteilung im Umfeld der künstlichen Intelligenz. Wenn eine Maschine selbst in der Lage ist, intelligent zu agieren, welche ethischen Grundsätze sollte sie dann berücksichtigen? Wer stellt die Berücksichtigung sicher und wie? Bei Deep Learning wird eine ethische Bewertung zusätzlich erschwert, weil das Verhalten der entwickelten Modelle nicht oder nur sehr schwer nachzuvollziehen ist. Eine wichtige Anwendung des Deep Learning ist die Gesichtserkennung, die wir in  Kap. 45 Computer Vision bereits diskutiert haben. Ein mehrfach festgestelltes Phänomen bei gängigen Gesichtserkennungsdiensten aus Europa und Nordamerika ist, dass diese hauptsächlich bei Gesichtern von weißen Männern gut funktionieren. Die Ergebnisse waren bei Frauen deutlich schlechter als bei Männern und bei dunkelhäutigen Personen deutlich schlechter als bei hellhäutigen Personen. Am schlechtesten waren die Ergebnisse bei dunkelhäutigen Frauen. Die Unterschie-

411 Kapitel 48 · Ethik in der Informatik

48

de erklären sich meistens durch die verwendeten Datensätze. Wenn ein Modell anhand der Bilder vieler weißer Männer trainiert wird, lernt es diese besonders gut zu identifizieren. Wenn die Polizei Gesichtserkennungssoftware in der Verbrechensaufklärung einsetzt, wirken sich solche unterschiedlichen Ergebnisse auf die entsprechenden Personengruppen aus. In der Konsequenz bedeutet das, dass dunkelhäutige Frauen häufiger zu Unrecht als Täter identifiziert werden. Generell besteht die Gefahr, dass Diskriminierung, Vorurteile und soziale Missstände durch KI nicht nur übernommen, sondern sogar verfestigt werden. Übung Findest du es ethisch vertretbar, wenn die Polizei Gesichtserkennungssoftware einsetzt? Welche Grundsätze sollten für solche Software gelten und wer ist für die Einhaltung zuständig?

Die „Black Lives Matter“-Bewegung bewirkte ein Umdenken bei vielen Technologiekonzernen, was die Gesichtserkennung angeht. Im Juni 2020 erklärte zunächst IBM, komplett aus dem Geschäft mit Gesichtserkennungstechnologie auszusteigen. Kurz darauf erklärten auch Amazon und Microsoft, zumindest vorübergehend den Verkauf der Technologie an US-Polizeibehörden auszusetzen. Besonders kritisch wird Gesichtserkennung auch im öffentlichen Raum wahrgenommen. In Verbindung mit der Videoaufzeichnung von Straßen und Plätzen ermöglicht Gesichtserkennung beispielsweise, die Teilnehmer von Demonstrationen zu identifizieren. Eine ähnliche Problematik gibt es bei der Vorratsdatenspeicherung. Die Idee dahinter ist, dass elektronische Kommunikation ohne Anfangsverdacht auf Vorrat gespeichert werden soll, um dann im Nachgang Ermittlungen zu ermöglichen. Der Nutzen einer besseren Strafverfolgung steht hier dem Aufwand und dem Freiheitsverlust durch die Überwachung gegenüber. Ein typisches Argument zur Rechtfertigung solcher Praktiken ist, dass Bürger, die sich keines Verbrechens schuldig machen, von der Überwachung nur profitieren, aber keinen Schaden nehmen. Übung Fühlst du dich in deiner persönlichen Freiheit eingeschränkt, wenn du von einer Kamera aufgezeichnet wirst? Wie könnte eine großflächige Überwachung ohne Anfangsverdacht missbraucht werden? Kennst du Beispiele dafür aus Filmen, Serien, Büchern oder dem Geschichtsunterricht?

Viele Lebens- und Arbeitsbereiche verändern sich drastisch durch den starken Einfluss der Informatik. Dies nennt man auch Digitalisierung. Die Digitalisierung ist ein Sammelbegriff für Veränderungen, die durch den Einsatz von digitaler Technologie auftreten. Die Digitalisierung wirft neue ethische Fragestellungen auf. Mit diesen Fragestellungen sind sowohl Informatiker als auch Unternehmen und die Gesellschaft als Ganzes konfrontiert. Insgesamt ist erkennbar, dass durch die Digitalisierung die Tendenz zur Machtkonzentration zunimmt. Technologiekonzer-

412

Kapitel 48 · Ethik in der Informatik

ne, die viele Daten sammeln können, profitieren besonders durch den Einsatz von künstlicher Intelligenz. Aber wer stellt sicher, dass die Technologiekonzerne ethisch handeln? Einerseits versuchen Gesetzgeber, Technologien und Technologiekonzerne einzuschränken. Zum Beispiel hat die EU-Kommission im Jahr 2019 ethische Leitlinien für die Entwicklung vertrauenswürdiger künstlicher Intelligenz vorgelegt. Das Vorhaben besteht darin, durch unabhängige Experten Anforderungen und Pflichten zum Umgang mit KI zu definieren. Diese Leitlinien sollen zu einer internationalen Übereinkunft und schließlich zu entsprechenden Gesetzen führen. Im Ergebnis wünscht man sich ähnliche Ergebnisse wie beim Datenschutz. Andererseits verpflichten sich Unternehmen auch selbst zu moralisch korrektem Verhalten. Das passiert ebenfalls in Form von ethischen Leitlinien oder Regelwerken. Ein Beispiel sind Ethikregeln für die Entwicklung künstlicher Intelligenz bei Google. Interessant ist in diesem Fall, dass die Regeln im Jahr 2018 aufgestellt wurden, nachdem eigene Mitarbeiter gegen die Verwendung von Google-KI in einem Militärprojekt für Aufklärungs- und Kampfdrohnen protestiert hatten. Ein ähnlicher Fall trat im Jahr 2019 auf, als Microsoft-Mitarbeiter gegen die Ausrüstung des US-Militärs mit Augmented-Reality-Brillen HoloLens protestierten. >  https://www.heise.de/newsticker/meldung/Google-stellt-Ethik-Regeln-fuer-dieEntwicklung-kuenstlicher-Intelligenz-auf-4074342.html

Ein weiteres Beispiel für ethische Leitlinien bietet die Gesellschaft für Informatik e. V. (GI), die mit circa 20.000 Mitgliedern größte Vereinigung von Informatikern im deutschsprachigen Raum. Die GI ist eine gemeinnützige Fachgesellschaft, die insbesondere über gesellschaftlich relevante Vorgänge in der Informatik informiert (zum Beispiel ihre Sicht auf die Snowden-Enthüllungen). Ihre ethischen Leitlinien sieht die GI als Orientierung für berufsethische oder moralische Konflikte für alle Menschen, die IT-Systeme entwerfen, herstellen, betreiben oder verwenden. > Die ethischen Leitlinien der GI https://gi.de/ueber-uns/organisation/unsereethischen-leitlinien/

48

Es gibt noch viele weitere ethische Fragestellungen in der Informatik. Zum Beispiel die Verantwortlichkeit bei Unfällen von autonomen Fahrzeugen oder Robotern, Entscheidungen von künstlicher Intelligenz in der Medizin, Umgang mit Fake News, die Problematik von Filterblasen und viele mehr. Ein Ende der Digitalisierung und damit des Bedeutungsgewinns von Ethik in IT-Fragestellungen ist nicht abzusehen. Noch findet die Diskussion solcher Fragestellungen aber kaum in der Öffentlichkeit statt. Auch in der Ausbildung von Informatikern spielen sie nur eine untergeordnete Rolle. Eine Ausnahme stellt die im Jahr 2015 initiierte Vorlesung „Ethics for Nerds“ an der Universität des Saarlandes dar. Diese findet zunehmend Nachahmer an anderen Hochschulen.

413 Kapitel 48 · Ethik in der Informatik

> „Ethics for Nerds“ an der Universität des Saarlandes 7 https://ethics-for-nerds.de/ ? Was bedeutet hacken? Welche Typen von Hackern unterscheidet man? Was ist ein Whistleblower? Warum ist es problematisch, wenn Gesichtserkennung bei bestimmten Bevölkerungsgruppen besser funktioniert als bei anderen? Welchen Zusammenhang gibt es zwischen Digitalisierung und Ethik?

48

415

Internet der Dinge

© Springer Fachmedien Wiesbaden GmbH, ein Teil von Springer Nature 2024 T. Eichstädt und S. Spieker, 52 Stunden Informatik, https://doi.org/10.1007/978-3-658-41838-0_49

49

416

Kapitel 49 · Internet der Dinge

Das Internet der Dinge ist ein Sammelbegriff für viele Gegenstände, die alle an das Internet angebunden sind. Dies geht vom Haushaltsgerät, wie dem Kühlschrank, über intelligente Lautsprecher oder die smarte Hausautomatisierung. Die Hersteller vieler dieser Geräte versprechen Komfortgewinne oder Kosteneinsparungen bei der Verwendung. Für ein digitales Heizthermostat werden diese auch konkret ausgerechnet. Ein in der Industrie nicht weniger wichtiges Thema ist die Industrie 4.0, in der nun Produktionsketten über das Internet vernetzt werden, um dort Effizienzgewinne oder zusätzliche Erkenntnisse zu erzielen. Bei allen diesen Themen steht oft eine künstliche Intelligenz im Hintergrund, um die Geräte mit mehr Intelligenz auszustatten. Die Ziele dabei, auf die die Industrie-4.0-Plattform hinarbeitet, sind flexible Produktion, flexible Fabriken, kundenzentrierte Lösungen, optimierte Logistik, der Einsatz von Daten und eine ressourcenschonende Kreislaufwirtschaft. Darüber hinaus bietet auch die Landwirtschaft etliche Anwendungsgebiete, wie Trackinghalsbänder für Rinder. Das Internet ist uns allen gut bekannt und wir verwenden es an sehr vielen Stellen, zum Teil auch, ohne dass es uns bewusst ist. Seit einigen Jahren wird aber auch vom Internet of Things (Internet der Dinge), oft als IoT abgekürzt, gesprochen. Es ist eine Art Sammelbegriff, der viele verschiedene Dinge umfasst. Das wichtigste Merkmal ist die Verbindung mit dem Internet und zusätzliche Funktionen, die sich aus der Nutzung des Internets ergeben. Ein sehr oft angeführtes Beispiel für ein Gerät dieser Klasse: der smarte Kühlschrank. Er soll ein Helfer in der Küche sein, der genau weiß, was im Kühlschrank noch ist und wann das Mindesthaltbarkeitsdatum abgelaufen ist. Er kann dann in Verbindung mit den persönlichen Vorlieben daraus einen Einkaufszettel erstellen. Ebenfalls kann er durch die Anbindung an das Internet auf Grundlage des Kühlschrankinhalts Rezepte vorschlagen. Übung Kannst du dir vorstellen, was die Probleme mit einem solchen Kühlschrank sein könnten?

49

Das erste Versprechen, dass er selbständig Dinge nachbestellen kann, klingt erstmal sehr praktisch und würde dem Nutzer Zeit sparen. Doch wie kommt der Kühlschrank an die Information, was im Kühlschrank ist? Eine Möglichkeit ist, alle Barcodes aller Artikel, die in den Kühlschrank geräumt werden, nur kurz einzuscannen. Der Kühlschrank weiß dann zumindest, was er beinhaltet. Aber das Gemüse ohne Barcode kann er dann natürlich nicht erfassen. Eine andere Idee ist eine eingebaute Kamera, die selbstständig alles erkennt und sogar das Haltbarkeitsdatum erfasst. Da muss der Nutzer aber penibel darauf achten, alle wichtigen Informationen auch immer vor die Kamera zu halten. Es wird also Zeit für den Einkaufszettel gespart, indem viel mehr Zeit beim Einräumen des Kühlschranks und Herausnehmen von Lebensmitteln aufgewendet werden muss. Der Zeitgewinn verkehrt sich also in einen zusätzlichen Zeitbedarf. Viel praktischer ist es dann doch, ein Tablet mit Internetverbindung in der Küche zu haben, das zur Rezeptsuche verwendet werden und auch zur Arbeitsfläche mitgenommen werden kann.

417 Kapitel 49 · Internet der Dinge

49

Es gibt natürlich auch praktische smarte Geräte, die Zeit sparen können oder zumindest zusätzlichen Komfort bieten. Eine Geräteklasse, die sich in den letzten Jahren immer größerer Beliebtheit erfreut, sind die smarten Lautsprecher. Derzeit werden weltweit etwa 30 Mio. Geräte pro Quartal verkauft. Dies sind aufs Jahr gerechnet etwa 120 Mio. In Deutschland alleine sollen es über zwei Millionen sein. Diese Lautsprecher dienen nicht nur zum Abspielen von Musik oder Hörbüchern, sondern durch ihr eingebautes Mikrofon auch zum Aufnehmen von Sprachbefehlen. Sie hören immer mit und warten auf ein besonderes Wort, mit dem sie angesprochen werden. Diese Startwörter unterscheiden sich nach Anbieter, beispielsweise: Amazon: „Alexa“ Apple: „Siri“ Google: „OK Google“ Die Lautsprecher senden ihre Aufnahmen vom Startwort bis zur Redepause ins Internet an den jeweiligen Anbieter. Dort läuft dann die Erkennung des Satzes, die eine Reaktion herbeiführen kann. So ist beispielsweise die Antwort auf die Frage nach der Uhrzeit die Ausgabe der aktuellen Uhrzeit. Bei einem Zugriff auf die eigenen Daten, wie den Terminkalender, wird der Lautsprecher schnell zu einem persönlichen Assistenten, der an bestehende Termine erinnern oder neue Termine in den Kalender eintragen kann. Eine derzeit stark wachsende Klasse von intelligenten Geräten kommt aus dem Bereich der Heimautomatisierung. Eine relativ starke Verbreitung gibt es von diesen Geräten: 5 Heizkörperthermostate 5 Steckdosen 5 Saugroboter Bei diesen Geräten stehen Energieeinsparung und Komfortgewinn im Vordergrund. Sowohl mit den Steckdosen als auch mit den Thermostaten kann der Energieverbrauch optimiert werden. Das Thermostat kann so programmiert werden, dass nachts die Temperatur abgesenkt wird. Aber es kann ebenso die Heizung heruntergeregelt werden, wenn niemand zu Hause ist. Dies ist äußerst unpraktisch an allen Heizkörpern von Hand umzustellen. Über eine App oder hinterlegte Profile wird dies jedoch so einfach, dass es auch gemacht wird. So lassen sich in einem durchschnittlichen Haushalt bis zu 30 % der Energie einsparen. Die Anschaffungskosten liegen meist um die 30 e pro Thermostat. Übung Berechne doch einmal, ob sich die Anschaffung von Thermostaten für dich lohnen würde. Zähle die Heizkörper bei dir zu Hause und multipliziere die Anzahl mit den Anschaffungskosten von 30 e pro Gerät. Nimm die jährlichen Heizkosten und teile diese durch drei, um das Sparpotenzial innerhalb eines Jahres zu berechnen.

418

Kapitel 49 · Internet der Dinge

Nehmen wir eine Wohnung von 80 Quadratmetern an, die über 5 Heizkörper verfügt. Die Heizkosten der Wohnung liegen bei Gas um 10 e pro m2 , was bei der Wohnung Kosten von etwa 800 e ergeben. In der nachfolgenden Tabelle ist die Beispielrechnung dargestellt: Investitionskosten: 5 × 30 e = 150 e

Einsparpotenzial pro Jahr: 800 e × 30 % = 240 e

Einsparung im Anschaffungsjahr: 240 e − 150 e = 90 e

Die neuen Thermostate würden im ersten Jahr also schon eine merkliche Ersparnis von 90 e bringen. Falls die Bewohner meist zu Hause sein sollten, so ist das Potenzial etwas geringer und die Einsparung wird nicht so stark sein. Bei schaltbaren Steckdosen ist die Energieeinsparung nicht so einfach zu berechnen, da sie stark davon abhängt, was geschaltet wird. Manche bringen daher eine Verbrauchsmessung mit, sodass sich die Einsparung auch direkt ablesen lässt. In . Abb. 49.1 ist der Verbrauch eines Satelliten LNB dargestellt. Hier kann gesehen werden, dass der Verbrauch bei etwa 6 W liegt. Die Steckdose ist so konfiguriert, dass sie die Hälfte des Tages aktiv ist und die andere inaktiv, sodass die Einsparung an der Steckdose bei etwa 2,3 kWh pro Monat liegen. Das ergibt aufs Jahr gerechnet 27,6 kWh. Bei einem Strompreis von 40 Cent pro kWh sind das rund 11 e, die im Jahr an Stromkosten eingespart werden.

49

. Abb. 49.1 Verbrauchsübersicht einer smarten Steckdose

419 Kapitel 49 · Internet der Dinge

49

Mittels intelligenter Steckdosen können jedoch auch ganz gewöhnliche elektrische Geräte plötzlich intelligent werden. So kann eine alte Kaffeemaschine auch über eine Steckdose morgens eingeschaltet werden, um den Kaffee passend zum Aufstehen fertig zu haben. Oder eine Stehlampe, deren Einschalter nicht einfach zu erreichen ist, kann damit über das Smartphone bequem von der Couch aus bedient werden. Das dritte intelligente Gerät ist der Staubsaugerroboter, der vor allem Komfort bringt und eine lästige Hausarbeit übernimmt. Die Intelligenz dieser Roboter unterscheidet sich stark nach der Preisklasse. So sind die Einsteigergeräte sehr beschränkt in ihrer Handlung und fahren immer so lange geradeaus, bis sie auf ein Hindernis stoßen. Danach drehen sie sich um einen zufälligen Winkel und fahren erneut so lange geradeaus, bis das nächste Hindernis erreicht ist. Wenn der Roboter nur lange genug fährt, ist irgendwann der ganze Boden gesaugt. Dies ist zwar sehr einfach, aber auch alles andere als effizient. Die besseren Geräte fertigen bei der Fahrt eine Karte der Wohnung an und legen sich einen Saugplan zurecht, sodass sie alles nur einmal saugen müssen. Sie sind also schneller fertig und benötigen meist auch weniger Energie dafür. Aber es gibt noch viele weitere Anwendungen, die vielleicht noch nicht auf dem Markt sind. So können versierte Anwender auch leicht selbst eigene intelligente Geräte entwickeln. Es gibt viele Anleitungen, die auf dem Raspberry Pi aufbauen, dies ist ein kleiner, sehr günstiger, aber durchaus vielseitiger Kleinstrechner. Ein Tutorial beschreibt, wie aus einem normalen Briefkasten mit einem Raspberry Pi und ein wenig Zubehör ein intelligenter Briefkasten wird. Er kann dann im Fall eines Einwurfs eine E-Mail verschicken, sodass alle im Haushalt wissen, dass die Post da gewesen ist. Es gibt dort auch viele weitere interessante Tutorials rund um das Thema. >

7 https://tutorials-raspberrypi.de/tag/internet-der-dinge/

Ein weiteres Anwendungsfeld ist der Medizinsektor, der auch immer mehr seiner Geräte an das Internet anschließt. Oft passiert dies noch nicht direkt, sondern meist über ein Smartphone und die dazugehörige App. So gibt es heute Hörgeräte, die sich von Akustikexperten über das Internet nachjustieren lassen, sodass die Patienten nicht mehr zu einer Servicestelle für Hörgeräte kommen müssen. Gerade in der Coronapandemie war es ein großer Vorteil, wenn man das Haus nicht verlassen musste. Die Geräte hängen oft aus Sicherheitsgründen nicht direkt am Internet, um keine Angriffsfläche zu bieten. Die App kann deutlich leichter aktualisiert werden als die kleinen Hörgeräte. Denkbar ist dieses Vorgehen natürlich auch für Herzschrittmacher, Insulinpumpen oder Prothesen, die sich so leichter von Experten über das Internet einstellen oder verbessern lassen. Ob diese Geräte nicht demnächst auch direkt mit dem Internet verbunden werden, muss sich noch zeigen. Doch das sind bis jetzt alles Beispiele aus dem privaten Bereich. Es gibt noch eine viel größere Menge an intelligenten Geräten in der Industrie. Dort ist Automatisierung innerhalb einer Produktionsanlage schon seit vielen Jahren verbreitet. Doch auch in der Industrie werden immer mehr Geräte direkt mit dem Internet ver-

420

Kapitel 49 · Internet der Dinge

bunden. Aufgrund von Sicherheitsbedenken sind dies aber fast nie Geräte, die in die Produktion eingreifen, sondern vor allem nicht zeitkritische Überwachungen. So werden beispielsweise Schwingungen von Maschinen gemessen, um Veränderungen zu detektieren, die auf ein Problem innerhalb der Maschine hindeuten. Mit geschickten Algorithmen kann dann berechnet werden, welches Bauteil innerhalb der Maschine demnächst ausgetauscht werden sollte. Wenn der Betreiber viele baugleiche Maschinen besitzt, kann er vielleicht auch herausfinden, wie lange vor einem Schaden der intelligente Sensor ein Problem feststellen kann. Da diese Geräte im Gegensatz zu früher am Internet hängen, können sie kontinuierlich mit Updates versorgt werden und damit neue Funktionen bekommen. Geräte aus diesem Bereich werden auch der Industrie 4.0 zugeordnet. Dabei ist der Titel „Industrie 4.0“ vor allem in Deutschland weit verbreitet, findet im englischsprachigen Raum aber praktisch keine Verwendung. Die Zahl 4.0 steht für die vierte industrielle Revolution, in der Menschen, Maschinen und Produkte direkt miteinander vernetzt sind. Industrie 4.0 bezeichnet die intelligente Vernetzung von Maschinen und Abläufen in der Industrie. Für Unternehmen bieten sich einige Möglichkeiten, diese zu nutzen: 5 Flexible Produktion: Durch die digitale Vernetzung der Teilproduktionen können Abläufe noch besser aufeinander abgestimmt werden, auch über Hersteller hinweg. 5 Flexible Fabriken: Produktionsstraßen sollen variabler sein, sodass sie leichter an neue Produkte angepasst werden können. 5 Kundenzentrierte Lösungen: Der Konsument und der Produzent rücken näher zusammen und individualisierte Lösungen werden günstiger, sodass beispielsweise auch Maßanfertigungen von Turnschuhen nur noch unwesentlich teurer sind als Massenware. 5 Optimierte Logistik: Algorithmen berechnen die besten Lieferwege, um möglichst schnell die Waren zum Kunden zu bekommen. 5 Einsatz von Daten: Die Daten werden beim Kunden aufgenommen und vom Hersteller ausgewertet. Dadurch soll die Effizienz von Maschinen steigen oder es können Rückschlüsse auf die Verbesserung von Produkten gezogen werden. 5 Ressourcenschonende Kreislaufwirtschaft: Produkte werden über ihren gesamten Lebenszyklus betrachtet, und auch schon beim Design wird festgelegt, in welcher Art und Weise die Materialien wiederverwertet werden können.

49

Die Bundesregierung hat die Industrie 4.0 zum Fokusfeld für Deutschland erklärt und schreibt auf ihrer Plattform: „Übergeordnetes Ziel der Plattform Industrie 4.0 ist es, die internationale Spitzenposition Deutschlands in der produzierenden Industrie zu sichern und auszubauen. Dafür diskutieren die Teilnehmerinnen und Teilnehmer der Plattform über geeignete und verlässliche Rahmenbedingungen. Als Impulsgeber, Moderator unterschiedlicher Interessen und Botschafter sorgt die Plattform Industrie 4.0 für den vorwettbewerblichen Austausch aller relevanten Akteure aus Politik, Wirtschaft, Wissenschaft, Gewerkschaften und Verbänden. Die Plattform ist eins der weltweit führenden Netzwerke im Bereich Industrie 4.0.“

421 Kapitel 49 · Internet der Dinge

>

49

Seite des Bundesministeriums für Wirtschaft und Energie und des Bundesministeriums für Bildung und Forschung über die Industrie 4.0: 7 https://www. plattform-i40.de/

Innerhalb der Industrie arbeiten vor allem Großunternehmen sehr stark an der Transformation in die digitale, vernetzte Industrie. Da der finanzielle und personelle Aufwand für diese Transformation sehr hoch ist, sind kleine und mittelständische Unternehmen dort aber oft noch sehr vorsichtig unterwegs. Eine weitere Branche, in der Internet-of-Things-Anwendungen immer wichtiger werden, ist die Landwirtschaft. So haben beispielsweise durch den Einsatz von „Trackinghalsbändern“ Landwirte eine viel bessere Möglichkeit, Gesundheit, Fütterung und Sicherheit ihrer Rinder zu verfolgen. Sie ermöglichen eine Bestimmung der Standorte in Echtzeit. Später können die Bewegungsdaten verwendet werden, um Muster zu erkennen. Wahrscheinlich lässt sich an abnormalem Verhalten auf Krankheiten oder Verletzungen schließen. Ein weiteres IoT-Segment in der Landwirtschaft ist das sogenannte Precision Farming (Präzisionsackerbau). Es bringt mehr Kontrolle und Präzision in die Landwirtschaft und wird dies auch weiter tun. Das Precision Farming ist aus der GPS-Steuerung für Traktoren geboren worden, wird heute weltweit eingesetzt und bietet einige interessante Anwendungen: 5 Batteriebetriebene Bodensensoren sammeln Informationen über den Stickstoffgehalt des Bodens und melden diesen regelmäßig, um den Einsatz von Dünger zu optimieren. 5 Bewässerungssensoren messen den Wasserstand und informieren das Bewässerungssystem. 5 Landwirte können Daten über Düngemittel und Pestizide sammeln, die für ihre Felder benötigt werden, um mittels Daten die benötigten Mengen zu optimieren. Das Feld der Anwendungen wird über die kommenden Jahre sicherlich noch weiter wachsen und weitere Branchen erobern. ? Was sind Beispiele für IoT-Anwendungen? Was macht Geräte intelligent? Bei welcher Art von Geräten lohnen sich smarte Steckdosen, um Kosten zu sparen? Was ist der Raspberry Pi? Was sind Ziele der Industrie 4.0?

423

User Experience

© Springer Fachmedien Wiesbaden GmbH, ein Teil von Springer Nature 2024 T. Eichstädt und S. Spieker, 52 Stunden Informatik, https://doi.org/10.1007/978-3-658-41838-0_50

50

424

50

Kapitel 50 · User Experience

Unter User Experience wird im Umfeld von Webseiten und Apps alles zusammengefasst, was mit dem Nutzererlebnis bei der Verwendung der Anwendung zu tun hat. Wir sehen ein Beispiel, wie ein schlechtes Nutzererlebnis aussehen kann, die Webseite aber trotzdem erfolgreich sein kann. Die DIN-Norm für Softwareergonomie beschreibt sieben Grundsätze der Dialoggestaltung. Um eine gute App zu erstellen, kann mithilfe von Programmen, wie Basamiq Mockups, ein Oberflächenprototyp erstellt werden. Mit einem solchen Prototypen ist es früh möglich, Benutzertests durchzuführen, um vor der Programmierung die Benutzerkonzepte zu testen. Anhand einer Stundenplan-App wird in dieser Stunde ein Prototyp entwickelt, der möglichst gut die Anforderungen erfüllt. In zwei Schritten wird dieser verbessert, sodass man einen Eindruck gewinnen kann, wie sich durch die Verwendung eines Prototypen Kosten bei der Entwicklung einsparen lassen. Das Thema Barrierefreiheit bei Software wird kurz mit Tipps zur Farbgestaltung angeschnitten. Der Begriff User Experience (Nutzererfahrung), häufig mit UX abgekürzt, wird meist im Zusammenhang mit der Gestaltung von Webseiten oder Apps verwendet, umfasst jedoch jegliche Art der Produktinteraktion. Dazu gehören auch die nichtdigitalen, physischen Nutzungen. Bei der Optimierung der Nutzererfahrung achtet man darauf, dass die Verwendung des Produkts einfach zu erlernen und angenehm ist, im besten Fall auch Spaß macht. Waren vor etwa zehn Jahren noch dicke Handbücher zu einer Software völlig normal, so nutzen wir heute unzählige Apps, ohne ein Handbuch zu benötigen. Dies ist vor allem der Verbesserung der User Experience zu verdanken. Heute können auch schon Kleinkinder, bevor sie lesen können, mit einem Tablet oder Smartphone leicht umgehen. Sie sind oft schon im Kindergarten in der Lage, bei einer Videoplattform selbstständig Videos anzugucken. Der Begriff kinderleicht drängt sich dem Beobachter geradezu auf. Was kennzeichnet eine schlechte User Experience? Ein Blick auf . Abb. 50.1 mit einem Screenshot einer besonders unaufgeräumten Webseite vermittelt eine Idee davon. Die Orientierung auf der Webseite fällt dem Nutzer ungemein schwer. Die vielen bunten Farben verwirren mehr, als dass sie Orientierung geben. Doch was versteht man unter User Experience denn nun genau? Sie beinhaltet nicht nur die Usability (Benutzerfreundlichkeit), sondern auch alle Erfahrungen, die der Nutzer vor der Nutzung, während der Nutzung oder nach der Nutzung einer Webseite oder mit einem Produkt macht: 5 Erfahrungen, die ein Nutzer vor Nutzung der Webseite oder des Programms macht, sind zum Beispiel die Meinungen, die dem Nutzer von anderen Nutzern zugetragen werden. 5 Nach der Nutzung der Webseite oder des Programms kann der Nutzer zum Beispiel Erfahrungen mit dem Kundendienst oder der Lieferung machen, falls er auf der Webseite ein Produkt bestellt hat. 5 Während der Nutzung macht der Nutzer Erfahrungen mit der Usability. Das klingt alles ganz schön schwammig, sodass es schwerfallen wird, direkt zu bewerten, ob man es mit einer guten oder einer schlechten Usability zu tun hat. Genau deshalb gibt es jedoch Kriterien, die auch Teil einer Norm geworden sind und sich mit der Softwareergonomie beschäftigen. In der DIN EN ISO 9241 Teil 110 finden

425 Kapitel 50 · User Experience

50

sich „Grundsätze der Dialoggestaltung“. Dort werden sieben Gestaltungsempfehlungen der Softwareergonomie formuliert und jeweils anhand von Beispielen verdeutlicht (Zitate sind aus der DIN-Norm): 1. Aufgabenangemessenheit: „Ein interaktives System ist aufgabenangemessen, wenn es den Benutzer unterstützt, seine Arbeitsaufgabe zu erledigen, das heißt, wenn Funktionalität und Dialog auf den charakteristischen Eigenschaften der Arbeitsaufgabe basieren, anstatt auf der zur Aufgabenerledigung eingesetzten Technologie.“ Oder anders formuliert, ist ein System den Aufgaben angemessen, wenn seine Nutzer Aufgaben erfolgreich erfüllen können – und zwar in möglichst kurzer Zeit. 2. Selbstbeschreibungsfähigkeit: „Ein Dialog ist in dem Maße selbstbeschreibungsfähig, in dem für den Benutzer zu jeder Zeit offensichtlich ist, in welchem Dialog, an welcher Stelle im Dialog er sich befindet, welche Handlungen unternommen werden können und wie diese ausgeführt werden können.“ Beispielsweise sind dies in einem Webformular die deutlich markierten Pflichtfelder, um die Aufgabe abzuschließen. 3. Erwartungskonformität: „Ein Dialog ist erwartungskonform, wenn er den aus dem Nutzungskontext heraus vorhersehbaren Benutzerbelangen sowie allgemein anerkannten Konventionen entspricht.“ Das bedeutet beispielsweise, dass ein x in der Fensterleiste das Fenster schließt. 4. Lernförderlichkeit: „Ein Dialog ist lernförderlich, wenn er den Benutzer beim Erlernen der Nutzung des interaktiven Systems unterstützt und anleitet.“ Dies ist bei Anwendungen oft mittels eines Tipps des Tages implementiert, um auf weitere Funktionen oder Abkürzungen hinzuweisen.

. Abb. 50.1 Screenshot der Webseite  arngren.net

426

Kapitel 50 · User Experience

5. Steuerbarkeit: „Ein Dialog ist steuerbar, wenn der Benutzer in der Lage ist, den Dialogablauf zu starten sowie seine Richtung und Geschwindigkeit zu beeinflussen, bis das Ziel erreicht ist.“ Dies kann ein Zurück-Button sein, um auf die vorherige Ansicht zu kommen oder den letzten Schritt rückgängig zu machen. 6. Fehlertoleranz: „Ein Dialog ist fehlertolerant, wenn das beabsichtigte Arbeitsergebnis trotz erkennbar fehlerhafter Eingaben entweder mit keinem oder mit minimalem Korrekturaufwand seitens des Benutzers erreicht werden kann.“ Ein Beispiel ist bei der Überprüfung der E-Mail-Adresse in einem Feld ein rotes Ausrufezeichen, falls es sich um keine gültige E-Mail-Adresse handelt. Trotzdem kann der Nutzer in beliebiger Reihenfolge alle Felder ausfüllen. 7. Individualisierbarkeit: „Ein Dialog ist individualisierbar, wenn Benutzer die Mensch-System-Interaktion und die Darstellung von Informationen ändern können, um diese an ihre individuellen Fähigkeiten und Bedürfnisse anzupassen.“ Das können beispielsweise ausblendbare Hilfetexte sein. Diese sind für einen geübten Anwender irgendwann eher hinderlich, wenn er sich schon gut auskennt im Dialog. Nachdem die Kriterien soweit aufgestellt sind, stellt sich die Frage, wie denn nun gut benutzbare Software entsteht. Es wird nicht sofort losprogrammiert, sondern es werden erstmal alle Anforderungen gesammelt. Wir wollen eine einfache Oberfläche für eine Stundenplan-App in dieser Stunde entwerfen. Eine gute Idee sind Papierprototypen, auf die die Oberflächen gezeichnet werden. Dies geht sehr viel schneller, als die Anwendung zu programmieren. Auch bei den einfachen Prototypen lässt sich schnell beim Durchspielen der verschiedenen Funktionen erkennen, ob die Oberfläche ergonomisch aufgebaut ist. Dies hilft auch, den zur Verfügung stehenden Platz gut beurteilen zu können. So sind auch unterschiedliche Tests sinnvoll, falls die Anwendung auf Tablets und Smartphones funktionieren soll. Eventuell ändert sich, abhängig von der Bildschirmgröße, auch die User Experience. Es wird zur Vereinfachung nur die Oberfläche für ein Smartphone betrachtet. Wir verwenden Balsamiq Mockups, um die Prototypen zu entwerfen, das geht fast so schnell wie mit Papier, lässt sich aber danach leichter überarbeiten. Leider gibt es die Version nur in Englisch, aber sie ist relativ leicht zu bedienen. Es ist möglich, die Software zu kaufen, die Testversion reicht aber auch, um einen ersten Eindruck zu bekommen.

50

> Balsamiq Mockups: 7 https://balsamiq.com/wireframes/desktop/

Übung Schaue dir . Abb. 50.2 an und überlege, ob die Anwendung als Stundenplan-App alles erfüllt, was du erwarten würdest. Frage dich, ob alle notwendigen Informationen zu sehen sind.

427 Kapitel 50 · User Experience

50

. Abb. 50.2 Erster Entwurf einer Stundenplan-App

Es wird schnell klar, dass für den Schultag der zugehörige Wochentag fehlt. Die Uhrzeit zur jeweiligen Stunde fehlt ebenso. Es scheint auch keine Möglichkeit zu geben, den Tag zu wechseln. Übung Im GitHub Repository liegt der Entwurf aus . Abb. 50.2. Überlege dir, wie du die App verbessern kannst. Entweder mit Balsamiq oder auch auf einem Blatt Papier. Füge beispielsweise Buttons ein, um den Wochentag zu wechseln.

Es gibt ein paar Dinge, die recht einfach zu ändern sind. Das ist einmal eine deutlichere Darstellung der Nummerierung im Stundenplan. Aber auch der Zeitraum,

428

Kapitel 50 · User Experience

den die einzelnen Stunden einnehmen, sollte deutlich gezeigt werden. Wichtig ist der Wochentag, und vielleicht das Datum für den Stundenplan. Eine einfache Möglichkeit, in Form von Schaltflächen zwischen den Tagen hin- und herzuwechseln, wäre auch wünschenswert. Ein möglicher Entwurf für eine benutzerfreundliche App ist in . Abb. 50.3 zu sehen. Die Aufgabe kann natürlich auch ganz anders gelöst werden, es gibt hier kein Richtig und kein Falsch. Aber wie lässt sich nun herausfinden, ob eine andere Person die App auch verstehen würde? Das wird mithilfe von Benutzertests überprüft und kann auch schon mit einfachen, noch nicht komplett funktionsfähigen Teilen gemacht werden. Diese stark vereinfachten Anwendungen werden dann Prototypen genannt.

50

. Abb. 50.3 Zweiter Entwurf einer Stundenplan-App

429 Kapitel 50 · User Experience

50

Einen solchen Prototypen einer Anwendung stellt man dann jemandem vor, der die App eventuell später benutzen würde. Die Zielperson ist also vermutlich ein Schüler oder ein Lehrer, je nachdem, für wen die App entwickelt werden soll. Man muss sich Fragestellungen überlegen, mit denen die Funktionstüchtigkeit der App getestet werden kann. Dies können sehr einfache Fragen zum Verständnis sein, wie: 5 Nenne spontan drei Schlüsselwörter, die für dich die App beschreiben. 5 Welches Fach ist in der vierten Stunde dran? 5 Wann ist die erste Pause? 5 Für welchen Tag ist dies der Stundenplan? Aber natürlich können es auch schon Fragen sein, die eine Benutzerinteraktion auslösen würden, wie: 5 Wie kann der Stundenplan von Mittwoch angezeigt werden? 5 Wie kann der Stundenplan bearbeitet werden? Wichtig ist dabei jedoch, dass keine Suggestivfragen gestellt werden, wie beispielsweise: Auf welcher Unterseite findest du die Version der App? Der Benutzer sollte immer laut sagen, was er denkt und wie er versucht, die Fragen zu lösen. Dabei wird dann oft deutlich, ob sich die Anwendung wirklich einfach bedienen lässt, oder ob nicht alles klar dargestellt ist. Dieses Vorgehen wird Benutzertest genannt. Vielleicht werden aber auch Ideen für weitere Funktionen innerhalb eines Benutzertests entdeckt. So könnte ein Schüler beispielsweise fragen, wie lange es noch bis zu den Ferien dauert, was mit einem Zähler dargestellt werden könnte. Es gibt Untersuchungen, dass man schon mit fünf Interviews einen großen Teil von Problemen innerhalb der Usability finden kann. Bevor eine Anwendung geschrieben wird, sind ein paar Tests mit den richtigen Personen sehr sinnvoll. Denn in der heutigen Zeit ist niemand mehr bereit, sich lange in eine App einzuarbeiten. Falls sich die App oder das Prinzip nicht innerhalb von einer Minute verstehen lässt, wird die App wieder deinstalliert. Es gibt noch eine weitere Eigenschaft, die bei der Entwicklung von Oberflächen berücksichtigt werden sollte, nämlich die Barrierefreiheit. Das bedeutet, dass auch Menschen mit körperlichen Einschränkungen in der Lage sein sollen, das Angebot zu nutzen. Das kann eine Möglichkeit der Skalierung innerhalb der Anwendung sein, um Menschen mit einer Sehschwäche die Nutzung zu erleichtern. Ebenfalls kann es bei Farbenblinden sinnvoll sein, die Farben anders definieren zu können. So haben etwa 9 % der Männer eine Rot-Grün-Sehschwäche. Für diesen Personenkreis ist es sehr schwer, rot von grün zu unterscheiden. Es ist dann deutlich sinnvoller, zusätzlich noch unterschiedliche Muster zu verwenden, um hier keine Barrieren aufzubauen. ? Was ist User Experience? Was sind Kriterien für Softwareergonomie? Warum werden Prototypen verwendet? Was ist ein Benutzertest? Was wird unter barrierefrei verstanden?

431

Augmented Reality

© Springer Fachmedien Wiesbaden GmbH, ein Teil von Springer Nature 2024 T. Eichstädt und S. Spieker, 52 Stunden Informatik, https://doi.org/10.1007/978-3-658-41838-0_51

51

432

Kapitel 51 · Augmented Reality

Virtual Reality (VR) bezeichnet eine computergenerierte, interaktive Umgebung, die mitsamt ihren physikalischen Eigenschaften in Echtzeit dargestellt wird. Unter Augmented Reality (AR) versteht man eine computergestützte Erweiterung der Realitätswahrnehmung. In Sportübertragungen und in der Videotelefonie wird AR bereits standardmäig eingesetzt. Auch in standortbezogenen Spielen wie Pokémon Go ist AR zentraler Bestandteil. AR ist eine anspruchsvolle Technologie, da die eingehenden Daten in Echtzeit erfasst und ausgewertet werden müssen. Besonders komfortabel ist AR in Verbindung mit einem Head-up-Display, wie zum Beispiel der Windschutzscheibe eines Fahrzeugs. Es wird erwartet, dass dieses Einsatzszenario durch das autonome Fahren einen weiteren Schub bekommen wird. Ebenfalls groes Potenzial hat AR in Kombination mit Wearables wie Google Glass oder Microsoft HoloLens. Als innovative Steuerungsmöglichkeit setzen einige Wearables Eyetracking ein. Eine ganz besondere Art der Nutzererfahrung ist die Simulation einer virtuellen Realität. Virtual Reality (virtuelle Realität), kurz VR, bezeichnet eine computergenerierte, interaktive Umgebung, die mitsamt ihren physikalischen Eigenschaften in Echtzeit dargestellt wird. Der Benutzer taucht in die virtuelle Welt ein und erlebt diese zu einem gewissen Grad als real. Meistens geschieht das durch die Verwendung eines Headsets (siehe . Abb. 51.1). Eingesetzt wird VR bisher hauptsächlich in der Unterhaltungsbranche, insbesondere für Videospiele. Zunehmend finden sich aber auch Anwendungen im Bildungsumfeld, zum Beispiel bei Flugsimulationen, und im Marketing, etwa bei 360◦ -Rundgängen für Immobilienbesichtigungen.

51 . Abb. 51.1 VR-Headset in Benutzung. (Quelle: Eugen Capon, 7 www.pexels.com)

433 Kapitel 51 · Augmented Reality

51

Virtual Reality ist nicht zu verwechseln mit Augmented Reality (erweiterte Realität), kurz AR. Darunter versteht man eine computergestützte Erweiterung der Realitätswahrnehmung. Das heißt, die betreffende Person nimmt weiterhin die reale Welt wahr, in der sie sich befindet. Allerdings wird diese erweitert um zusätzliche Informationen oder (meistens visuelle) Sinneseindrücke. Übung Fallen dir Beispiele von Computeranwendungen ein, die deine Sinneswahrnehmung erweitern?

Jeder ist bereits AR-Anwendungen begegnet. Ein paar bekannte Beispiele sind: 5 Das Einblenden von Entfernungen bei Fußballübertragungen durch virtuelle Kreise oder Linien oder das Einblenden von Informationen zu den Athleten bei der Übertragung von Sportwettkämpfen, wie zum Beispiel in . Abb. 51.2.

. Abb. 51.2 AR bei Übertragung eines Schwimmwettkampfs

434

Kapitel 51 · Augmented Reality

5 Bei dem Spiel Pokémon Go spielt AR eine wesentliche Rolle. Die App erschien 2016 und feierte weltweit einen enormen Erfolg. Dadurch erlebten viele Menschen erstmals AR auf dem eigenen Smartphone. In dem Spiel geht es darum, Fantasiewesen (die Pokémon) zu fangen, zu entwickeln und in Kämpfen gegeneinander antreten zu lassen. Natürlich passiert all das in einer virtuellen Welt. Auch diverse Gegenstände und das Spielgeld (die Pokémünzen) sind virtuell. Pokémon Go ist außerdem ein standortbezogenes Spiel. Das bedeutet, dass die geografische Position des Spielers den Spielverlauf beeinflusst. Ganz konkret werden in diesem Fall virtuelle Bestandteile des Spiels über die Kamera des Mobilgeräts in der realen Welt dargestellt. Ein animiertes Pokémon sieht zum Beispiel aus wie in . Abb. 51.3.

51 . Abb. 51.3 Pokémon als AR-Bestandteil des Kamerabilds

435 Kapitel 51 · Augmented Reality

51

. Abb. 51.4 Originales Kamerabild

5 Bei Videokonferenzen sind Filter und Masken gängige Möglichkeiten, ein reales Kamerabild zu verändern. Ein beliebter Filter für Geschäftstermine im Homeoffice ist das sogenannte Weichzeichnen. Der Effekt bewirkt, dass ein unbewegter Hintergrund unkenntlich gemacht wird. In . Abb. 51.4 ist ein originales Kamerabild im Homeoffice zu sehen. . Abb. 51.5 zeigt dieselbe Situation mit Weichzeichnen. Masken dagegen betreffen den Bildvordergrund. Sie finden oft in der privaten Videotelefonie oder in sozialen Netzwerken Anwendung. . Abb. 51.6 zeigt eine solche Maske in der Facebook-Messenger-App. 5 Mobile Applikationen zur Auswahl von Wandfarben und Einrichtungsgegenständen, wie beispielsweise die Ikea-App. Durch AR können Räume virtuell verändert werden, um einen Eindruck von der möglichen Gestaltung zu bekommen. 5 Moderne hochklassige Fahrzeuge ermöglichen das Einblenden von Informationen zur Umgebung und zum Straßenverkehr auf der Windschutzscheibe. Die angezeigten Informationen überlagern für den Fahrer das wahrgenommene Bild der realen Umgebung außerhalb seines Fahrzeugs. 5 Mobile Anwendungen zur Bilderkennung. Der bekannteste Vertreter dieser Art ist Google Lens. Mithilfe von AR können Informationen zu erkannten Bildern direkt in das Kamerabild eingeblendet werden, zum Beispiel die Übersetzung eines Textes. Es gibt noch viele weitere oder abgewandelte Anwendungsfelder für AR. In vielen Bereichen sind die Potenziale noch lange nicht ausgeschöpft. In der Industrie beispielsweise wird mit der Anwendung von AR zur Entwicklung von Produkten und zur Bedienung und Instandhaltung von Maschinen experimentiert. Noch scheinen die Technologie und ihre Nutzer aber nicht reif für einen breiten Einsatz.

436

Kapitel 51 · Augmented Reality

. Abb. 51.5 Kamerabild mit Weichzeichnen

Übung Überlege dir, welche Anforderungen AR an Hardware und Software stellt. Gehe dazu jede dir bekannte AR-Anwendung durch. Welche Herausforderungen könnten für Entwickler und Nutzer bei dieser Anwendung auftreten?

51

AR ist eine anspruchsvolle Technologie. Die erste Herausforderung besteht darin, die reale Umgebung zu erfassen. Dazu sind eine oder mehrere Kameras notwendig und meistens auch ein GPS-System, um die geografische Position des Nutzers auszuwerten. Die eingehenden Daten müssen in Echtzeit erfasst und ausgewertet werden. Von Echtzeit spricht man, wenn IT-Systeme Daten in sehr kleinen Zeitfenstern verarbeiten und Ergebnisse liefern können. Die Reaktionszeit muss dabei so gering sein, dass der Nutzer einen flüssigen Ablauf wahrnimmt. Bei AR-Anwendungen ist die zeitgenaue Verarbeitung besonders wichtig, damit Erweiterungen nicht Veränderungen in der realen Welt hinterherhinken. In vielen Anwendungen werden die live erfassten Daten dann mit gespeicherten Informationen abgeglichen (zum Beispiel der Information, an welcher geografischen Position sich ein PokéStop befindet). Oft werden die Daten sogar mit einem oder mehreren neuronalen Netzwerken prozessiert (zum Beispiel für eine Bilderkennung). Zusätzlich muss noch auf Benutzerbefehle reagiert werden. Anschließend wird die Erweiterung dann in die Anzeige der realen Umgebung eingebettet. Alles in allem sind das sehr aufwendige Vorgänge, die effiziente Softwareimplementierungen und leistungsstarke Prozessoren erfordern.

437 Kapitel 51 · Augmented Reality

51

. Abb. 51.6 Kamerabild mit Maske

Ganz besonders herausfordernd ist eine reibungslose Verarbeitung bei starker Bewegung. Wenn eine Kamera schnell bewegt wird, verliert ihr Bild an Schärfe oder bleibt kurzzeitig sogar stehen. Bei AR-Anwendungen ist dieser Effekt je nach Art der Datenverarbeitung sogar noch stärker ausgeprägt. Die hohe technische Belastung durch die Vermischung von virtueller und realer Welt sind auch der Grund dafür, dass AR-Anwendungen in der Regel einen sehr hohen Energiebedarf haben. Eine weitere Herausforderung, die es nicht zu vergessen gilt, ist die Interaktion mit dem Benutzer. Für Menschen ist es zunächst ungewohnt, eine erweiterte oder eine gänzlich andere erweiterte Realität wahrzunehmen. Intuitivität und Benutzerfreundlichkeit spielen daher bei AR- und VR-Anwendungen eine besonders große Rolle.

438

51

Kapitel 51 · Augmented Reality

Besonders komfortabel für die Wahrnehmung von AR ist das Head- up- Display (wörtlich übersetzt „Kopf-oben-Anzeige“), manchmal auch nur als HUD bezeichnet. Der Begriff bezeichnet ein Anzeigesystem, bei dem Informationen in das Sichtfeld des Nutzers projiziert werden. In der Regel ist die Projektionsfläche eine Glasscheibe oder Brille. Ein Beispiel ist die Windschutzscheibe eines Fahrzeugs. So kann der Fahrer die zusätzlichen Informationen wahrnehmen, ohne dass er seine Kopfhaltung oder Blickrichtung ändern muss. Es ist zu erwarten, dass dieses Einsatzszenario durch das autonome Fahren einen weiteren Schub bekommen wird. Denn wenn die fahrende Person sich nicht mehr selbst auf den Verkehr konzentrieren muss, kann sie mehr Aufmerksamkeit für die eingeblendeten Informationen verwenden. Außerdem kann AR dabei helfen, das Fahrverhalten zu verstehen, und so den mitfahrenden Personen ein Gefühl der Sicherheit vermitteln. Möglicherweise lässt sich so auch besser einschätzen, wann die Notwendigkeit besteht, doch in die Fahrzeugsteuerung einzugreifen. Ebenfalls großes Potenzial hat AR in Kombination mit Wearables. Als Wearables oder Wearable Computing (tragbare Datenverarbeitung) werden Computersysteme bezeichnet, die am Körper getragen werden. Das Phänomen existiert bereits wesentlich länger, als es AR-Technologie gibt. Frühe Vertreter waren digitale Armbanduhren oder Walkmans. Der Begriff der Wearables wird aber erst verwendet, seit Smartwatches und Datenbrillen zunehmende Verbreitung finden. Viele dieser Wearables können mit dem Smartphone oder einem anderen Computer verbunden werden. Andere Geräte agieren komplett eigenständig und bieten keinerlei Schnittstellen. Auch medizinische Vorrichtungen wie Herzschrittmacher oder Hörgeräte fallen unter den Begriff, zukünftig womöglich auch Kontaktlinsen oder sogar Implantate. Wearables ermöglichen der tragenden Person, AR-Anwendungen mobil zu nutzen. Zu dem Zweck gibt es bereits mehrere Datenbrillen, die im kommerziellen Handel frei zugänglich sind. Ein bekannter Vertreter ist „Google Glass“. Es handelt sich um eine eher unauffällige Brille, in die ein Computer und eine Kamera direkt über dem rechten Auge integriert sind. Außerdem sitzt dort ein kleiner Projektor, der Informationen direkt in das Auge projiziert. Die Brille fungiert dadurch als Head-up-Display. Google Glass wurde 2012 vorgestellt. Google erntete dafür viel Kritik von Datenschützern. Das größte Bedenken war, dass die Umgebung der Brillenträger unwissentlich und ohne Möglichkeiten zum Widerspruch ausgespäht werden würde. Die Brille war zunächst für Privatanwender gedacht. Die Markteinführung floppte jedoch. Seit 2019 wird eine zweite Edition mit stärkerem Fokus auf Geschäftsanwendungen angeboten. Ein interessanter Nebenaspekt von Wearables sind innovative Steuerungsmöglichkeiten wie Eyetracking (Blickerfassung). Das bedeutet, dass Blickbewegungen erfasst und analysiert werden. Datenbrillen wie Google Glass unterstützen mithilfe von Eyetracking zum Beispiel das Fotografieren per Augenzwinkern. Anstatt von Datenbrillen wird oft von AR-Headsets gesprochen, wenn ein Gerät neben einer grafischen Anzeige auch Sensoren und Lautsprecher beinhaltet. Ein Beispiel ist die HoloLens, die Microsoft seit 2016 anbietet. Die HoloLens ist das erste AR-Gerät, das umfangreiche Steuerungs- und Anzeigefunktionen in der dreidimensionalen Welt bietet. Der Träger kann mithilfe von Gesten 3-D-Objekte

439 Kapitel 51 · Augmented Reality

51

(„Hologramme“, die nur er selbst sehen kann) erzeugen und steuern. Die HoloLens zeigt, wozu AR-Technologie heute in der Lage ist, und gewährt einen Einblick in zukünftige Einsatzmöglichkeiten. Microsoft HoloLens 2 wurde im Jahr 2019 beim Mobile World Congress in Barcelona angekündigt. Übung Suche über YouTube oder die Google-Suche nach Videos zur HoloLens. Sieh dir ein oder mehrere Videos an, bis du einen Eindruck von der HoloLens bekommen hast. Welche Anwendungsfelder findest du am sinnvollsten?

Die Hardware für AR wird immer leistungsstärker und günstiger. Auch die Integration verschiedener Realitäten wird besser, günstiger und mit zunehmender Verbreitung von immer mehr Nutzern als wünschenswert angesehen. Die Frage scheint nicht zu sein, ob, sondern wann und wie genau AR im großen Stil in den Alltag der Menschen vordringt. Wahrscheinlich werden sie sich dann fragen, wie sie jemals ohne AR leben konnten. Noch schwieriger als die technische Entwicklung ist es, die sozialen Auswirkungen von AR vorherzusehen. Während Kritiker den Datenschutz und die Entmenschlichung der Wahrnehmung in das Feld führen, argumentieren Befürworter mit dem Nutzen von AR-Anwendungen und dem schwindenden Bedarf, Zeit vor und mit dem Computer zu verbringen, wenn Informationen bei Bedarf in der realen Welt angezeigt werden können. ? Was unterscheidet AR und VR? Was ist ein standortbezogenes Spiel? Warum stellt AR hohe Anforderungen an Software und Hardware? Was ist ein Head-up-Display? Was sind Beispiele für Wearables?

441

Rundum-sorglos-Paket im Heimnetzwerk

© Springer Fachmedien Wiesbaden GmbH, ein Teil von Springer Nature 2024 T. Eichstädt und S. Spieker, 52 Stunden Informatik, https://doi.org/10.1007/978-3-658-41838-0_52

52

442

52

Kapitel 52 · Rundum-sorglos-Paket im Heimnetzwerk

Jeder hat zu Hause ein Heimnetzwerk, das besser oder schlechter funktioniert. Nach der Erklärung von Quality of Service gibt es konkrete Tipps, wie diese Technik auch im Heimnetzwerk verwendet werden kann, um das Heimnetzwerk für das Homeoffice zu optimieren. Nach einer kleinen Einleitung, was dLAN ist, gibt es eine Anleitung, wie das beste Ergebnis erzielt werden kann, unabhängig von der verwendeten Hardware. Die fast überall vorhandenen WLAN-Probleme werden thematisiert. Es wird eine generelle Hilfestellung zur Positionierung des Routers gegeben, wie auch zur WLAN-Konfiguration. Dies wird mit einer Anleitung für eine Smartphone-App zur WLAN-Diagnose erweitert, die hilft, den optimalen WLAN-Kanal zu finden. Es wird eine Hilfestellung für die parallele Verwendung von 2,4-GHz- und 5-GHz-WLANFrequenzen gegeben, um auch dort die beste Performance zu erreichen. In vielen vorherigen Stunden haben wir Grundlagen behandelt, die nun hilfreich sind, um das eigene Heimnetz zu optimieren. Gerade in Zeiten von Homeoffice oder Homeschooling wird ein funktionierendes Heimnetz immer wichtiger. Für gewöhnlich ist die Internetbandbreite im Heimnetz beschränkt und alle Familienmitglieder nutzen diese parallel. Ein oft nicht ganz einfach umzusetzender Tipp lautet, ein Netzwerkkabel an den Rechner anzuschließen und das WLAN möglichst zu vermeiden. Besonders in Städten mit einer größeren Bebauungsdichte ist auch die verfügbare WLAN-Bandbreite sehr begrenzt, da auch Nachbarn in demselben Frequenzband ihre Geräte betreiben. In der normalen Einstellung unterscheidet der heimische Router meist nicht zwischen der Wichtigkeit der Anwendungen. Es ist wünschenswert, dass die Videokonferenz mit den Arbeitskollegen über das Update eines Spiels wie Fortnite priorisiert wird. Generell ist das in Routern auch schon implementiert, jedoch funktioniert das nicht mehr, wenn die Kommunikation über einen VPN-Tunnel erfolgt (siehe  Kap.10 Informationssicherheit). Router können aber mit der sogenannten Quality of Service (siehe  Kap.10 Informationssicherheit) bestimmte Anwendungen oder auch Endgeräte bevorzugt behandeln. Die besondere Behandlung der Endgeräte, die vom Arbeitgeber zur Verfügung gestellt werden, erlaubt oft eine bessere Verbindung für das Homeoffice. In Deutschland sind die Fritzbox-Router von AVM besonders beliebt, daher sind die Screenshots von diesem Router erstellt, sollten sich aber ähnlich auch bei anderen Modellen finden lassen. Das Vorgehen lässt sich in einzelne Schritte aufteilen: 5 Herausfinden, wie der zu bevorzugende Laptop heißt. Dabei hilft es, dass PCs in Firmen oft ein festes Namensschema haben. In der Übersicht des Heimnetzes werden alle derzeit verbundenen Geräte angezeigt, wie in . Abb. 52.1 zu sehen ist. Im Screenshot sind diverse Geräte aufgelistet, sowohl aus dem WLAN als auch aus dem LAN. In unserem Fall ist der Rechner p01157622 der Firmenrechner. 5 Diesem Rechner nun erhöhte Priorität vergeben. Das ist in der Fritzbox etwas versteckter zu finden unter Internet -> Filter -> Priorisierung. Dort gibt es drei Kategorien, für die die „Echtzeitanwendungen“ meist mit der Internettelefonie vorbesetzt ist. Zu der Kategorie „Priorisierte Anwendungen“ sollte nun der Firmenrechner hinzugefügt werden, wie in . Abb. 52.2 zu sehen ist. 5 Zusätzlich können besonders umtriebige Internetkonsumenten, wie die Kinder, in der Priorität beschränkt werden. Dies ist in diesem Beispiel sowohl für

443 Kapitel 52 · Rundum-sorglos-Paket im Heimnetzwerk

52

. Abb. 52.1 Heimnetzübersicht

das Smartphone als auch den Desktop-PC eines Teenagers passiert, sodass die Downloads der Kinder weniger schnell sind. Wie die Regel für den Firmenrechner aussehen kann, ist in . Abb. 52.3 zu sehen. Wichtig ist, dass alle Arten von Netzwerkanwendungen ausgewählt sind, um auch die VPN-Verbindung zu priorisieren. 5 Es sollte noch getestet werden, ob auch wirklich der richtige Teilnehmer nun Priorität hat. Dazu öffnet man eine Konsole und führt ipconfig an dem zu bevorzugenden Rechner aus. In der Ausgabe sollte sich die IP wie auch im Router wiederfinden, wie in . Abb. 52.4 zu sehen ist. 5 In einer sehr ähnlichen Weise lassen sich Regeln für die weniger wichtigen Rechner definieren, sodass diese nicht die allgemeine Verfügbarkeit des Internets einschränken können. Natürlich ist der Anschluss der Endgeräte direkt per Netzwerkkabel für die Verbindungsqualität die beste Wahl. Dies ist aber nicht unbedingt überall machbar, weil beispielsweise ein Mietverhältnis dies nicht zulässt. Eine gute Alternative dafür ist die Verbindung über bestehende Kabel, die Stromleitungen. Dies wird allgemein mit dLAN (direct LAN) bezeichnet und beschreibt die direkte Verbindung zweier LAN-Bereiche. Ein Anwendungsfall ist die Verbindung des Erdgeschosses mit dem Dachgeschoss. Dies funktioniert über WLAN oft nicht besonders gut. Es werden die dLAN-Adapter im Erdgeschoss und im Dachgeschoss angeschlossen und die beiden Adapter versuchen eine Verbindung aufzubauen. Dies funktioniert relativ gut, wenn sie sich auf derselben Phase befinden. Der Strom kommt in drei Phasen am Hausanschluss an und die Verbraucher werden möglichst gleichmäßig auf diese drei verteilt. Ein Blick in den heimischen Sicherungskasten zeigt drei Reihen von Sicherungen, wie es auch in . Abb. 52.5 zu sehen ist. Es empfiehlt sich nun, Steckdosen

444

Kapitel 52 · Rundum-sorglos-Paket im Heimnetzwerk

. Abb. 52.2 Übersicht der Priorisierung

. Abb. 52.3 Neue Regel für erhöhte Priorität

52

. Abb. 52.4 Ausschnitt der Ipconfig-Ausgabe

445 Kapitel 52 · Rundum-sorglos-Paket im Heimnetzwerk

52

zu finden, die in derselben Reihe über Sicherungen abgesichert sind. In unserem Beispiel funktioniert die dLAN-Strecke über Steckdosen, die sich an F7 und F9 befinden. Bei der Suche nach guten Verbindungen kann auch eine Lampe an einer gut zugänglichen Steckdose angeschlossen werden und durch Herausnehmen der Sicherung die passende Phase festgestellt werden. Alle anderen Sicherungen, die auf der gleichen Ebene sind, eignen sich besonders gut für den Anschluss. Wenn nun aber die Sonne scheint und der Garten oder Balkon lockt, gibt es dort meist wenig Alternativen zum WLAN. Auch in diesem Fall gibt es Möglichkeiten, den Empfang zu verbessern. Die einfachste Art, den WLAN-Empfang zu verbessern, besteht in der Auswahl des Routers. Wenn der Router so aufgestellt wird, dass er von möglichst vielen Positionen gesehen werden kann, ist der Empfang erheblich besser. Es ist also davon abzuraten, ihn in einen Schrank nach unten zu stellen, sondern besser auf einen mittelhohen obendrauf, sodass keine Schrankwände das Signal einsperren. Im Einfamilienhaus ist die Situation meistens nicht so problematisch wie in einem großen Mehrfamilienhaus in der Großstadt. Trotzdem lohnt sich ein Blick

. Abb. 52.5 Sicherungskasten

446

Kapitel 52 · Rundum-sorglos-Paket im Heimnetzwerk

. Abb. 52.6 Übersicht auf der Fritzbox über die Belegung der WLAN-Kanäle

52

auf die Kanalwahl der Router. Die Frequenzbereiche im WLAN sind auf Kanäle aufgeteilt, sodass es einfacher ist, mehrere Funkzellen parallel zu betreiben. Selbst ein Teilen dieser Kanäle ist möglich, reduziert jedoch die verfügbare Bandbreite. Daher ist es immer eine gute Idee, einen Kanal zu verwenden, den die Nachbarn nicht nutzen. Falls es dort keinen freien mehr gibt, sollte der genommen werden, der bis jetzt am wenigsten Verwendung findet. In der Fritzbox, wie in . Abb. 52.6 zu sehen, gibt es eine gelungene Übersicht der WLAN-Kanäle unter dem Punkt WLAN -> Funkkanal. Diese Übersicht zeigt, dass der derzeitige Kanal nicht viel Überlappung mit den anderen Nachbarnetzen besitzt. Die Fritzbox steht jedoch sehr gut geschützt in einer Ecke, sodass sie nur einen kleinen Teil der Netze sieht. Im Garten kann das schon wieder ganz anders aussehen. Mit einem Smartphone lässt sich die Situation am Zielort, beispielsweise dem Liegestuhl, viel besser beurteilen. Die App „NetX Network Tools“ der Firma NetGEL hat eine sehr schöne App im Angebot, mit der sich die einzelnen WLAN-Netze darstellen lassen. . Abb. 52.7 zeigt die Netze nur 4 m weiter – nämlich im Garten. So verwundert es nicht, dass dort der Empfang meist nicht so einwandfrei ist, wie es das Bild auf der Fritzbox vermuten lässt. Dieses Spiel lässt sich natürlich auch im Arbeitszimmer wiederholen, falls keine kabelgebundene Lösung eingesetzt werden kann. Die Kanalwahl des heimischen Netzwerks sollte dann auf einen möglichst freien Kanal verschoben werden. Eine gute Alternative bietet sonst auch das 5-GHz-Band, das noch nicht ganz so voll ist wie das 2,4-GHz-Band. An derselben Stelle im Garten beim Autor gibt es nur ein einziges anderes WLAN in der Umgebung, und dazu auf einem anderen Kanal. Damit ist ein störungsfreier Betrieb im 5-GHz-Band möglich, wenn nicht zu viele Wände im Weg sind. Denn das 5-GHz-Signal wird viel stärker von Wänden geblockt als das 2,4-GHz-Signal. Ältere Geräte können oft auch noch nicht im höheren Frequenzbereich betrieben werden, sodass dort ein Parallelbetrieb nötig ist.

447 Kapitel 52 · Rundum-sorglos-Paket im Heimnetzwerk

52

. Abb. 52.7 WLAN-Netzübersicht mit NetX Network Tools

In der Standardeinstellung heißen die WLANs in beiden Bändern gleich, wodurch es nicht immer direkt ersichtlich ist, in welchem WLAN das Gerät nun hängt. Natürlich lässt sich das immer herausfinden, eine getrennte Namenswahl macht die Sache jedoch einfacher. So kann zum Beispiel dem 2,4-GHz-Netz eine 2 angehängt werden. Bei der Anbindung eines neuen Geräts sollte dann zuerst das Netz ohne die 2 ausgewählt werden. Falls dieses nicht angezeigt wird, gibt es entweder eine zu schlechte Verbindung oder das Endgerät unterstützt dies noch nicht. ? Was ist die stabilste Verbindung vom Laptop zum Internet? Was ist ein guter Ort, um einen WLAN-Router aufzustellen? Was kann mittels Priorisierung im Netzwerk erreicht werden? Wie kann man bei dLAN die beste Steckdosenkombination bestimmen? Welcher Kanal sollte im WLAN-Router gewählt werden?

449

Serviceteil Schlusswort – 450 Appendix – 451 Stichwortverzeichnis – 457

© Springer Fachmedien Wiesbaden GmbH, ein Teil von Springer Nature 2024 T. Eichstädt und S. Spieker, 52 Stunden Informatik, https://doi.org/10.1007/978-3-658-41838-0

450

Schlusswort

Schlusswort Vielen Dank für das Lesen dieses Buches. Es hat uns Autoren viel Zeit und Mühe gekostet, die 52 Stunden Informatik zusammenzustellen. Wir freuen uns über jede Person, der wir dadurch einen Einblick in wichtige Aspekte der Informatik verschaffen konnten. Wenn das der Fall war, hoffen wir, dass der Leser eine positive Bewertung für andere Leser hinterlässt. In jedem Fall sind wir dankbar für Feedback und freuen uns über eine Kontaktaufnahme und den Besuch unserer Webseite: 7 https://www.52stunden-informatik.de/

451 Appendix

Appendix Im Appendix findest du Anleitungen zu verwendeten Programmen sowohl für das Smartphone als auch für deinen Windows-PC.

A.1

Installation eines HTML-Editors auf einem Android-Smartphone

5 Navigiere zum Playstore und installiere „anWriter free HTML editor“. . Abb. A.1 zeigt einen Screenshot aus dem Playstore. 5 Die wesentlichen Funktionen zur Verwendung der App sind in . Abb. A.2 und A.3 dargestellt. Wichtigste Funktionen 5 Mit „Speichern“ kann das HTML-Dokument abgespeichert werden. 5 Durch „Vorschau“ wird der interne HTML-Betrachter verwendet, um das Dokument anzuzeigen (siehe . Abb. A.2) 5 In . Abb. A.2 mit 1 bezeichnet: Wird verwendet, um ein Tag zu öffnen. Es erscheint automatisch eine Liste aller gängiger Tags. 5 In . Abb. A.2 mit 2 bezeichnet: Das Symbol ist der Shortcut, um ein vorher geöffnetes Tag zu schließen.

A.2

Installation von Git

Windows

1. Unter der Adresse 7 https://gitforwindows.org/ kann Git for Windows heruntergeladen werden. 2. Bei dem Installationsprogramm den Anweisungen folgen und immer auf Next weiter bis zum Punkt Finish. 3. Öffne die Git Bash aus den Programmen. 4. Führe nachfolgende Befehle aus, um deinen Namen und deine Mailadresse zu setzen. Passe Namen und E-Mail an, sodass sie für dich passen. Es sieht für mich so aus: a) git config - -global user.name „Stefan Spieker“ b) git config - -global user.email „[email protected]“ Mac oder Linux

Eine gute Anleitung findest du unter 7 https://de.atlassian.com/git/tutorials/installgit.

452

Appendix

. Abb. A.1 „anWriter free HTML editor“ im Playstore

A.3

Installation von MySQL

Wir wollen die Terra-Datenbank, die wir aus der Stunde  Kap. 36 SQL kennen, auf unserem Rechner erstellen und laufen lassen. Dazu benötigen wir einen Installer für das RDBMS, also MySQL. Außerdem benötigen wir das passende SQL-Skript für die Erzeugung der Datenbank selbst. Zum Glück existiert dieses bereits und kann von der Webseite des sächsischen Staatsministeriums für Kultus heruntergeladen werden.

453 Appendix

. Abb. A.2 Editor-Ansicht

5 Lade die Datei 7 https://www.sachsen.schule/~terra2014/terra2019oA.sql herunter. (Sollte sich die URL oder der Dateiname geändert haben, findest du dieselbe Datei alternativ auch unter 7 https://github.com/StefanSpieker/52Stunden/ tree/master/datenbankmanagement.) 5 Lade zunächst die Installationsdatei für MySQL von 7 https://dev.mysql.com/ downloads/installer/ herunter und führe sie aus. Du kannst für die Installation die voreingestellte Auswahl übernehmen. Einzig zwingend notwendig ist die Vergabe des Root Passworts, siehe . Abb. A.4. Es können auch noch weitere User angelegt und mit unterschiedlichen Rollen versehen werden. Für unseren ersten Versuch ist der Root User ausreichend. 5 Nach der Installation kann die MySQL Workbench gestartet werden. Wähle dazu die entsprechende Option zum Abschluss der Installation oder starte die MySQL Workbench wie andere Programme über das Windows Startmenü. In der Startansicht der MySQL Workbench können MySQL-Verbindungen ausgewählt werden, siehe . Abb. A.5. Eine lokale Instanz ist bereits angelegt. Wähle diese aus. Jetzt musst

454

Appendix

. Abb. A.3 Vorschau der HTML-Datei

du das Root Passwort eingeben, das du während der Installation vergeben hast, siehe . Abb. A.6. 5 Wenn wir mit dem MySQL-Server verbunden sind, können wir unsere Datenbanken verwalten. Im Bereich „Administration“ auf der linken Seite befindet sich ein Link zum Datenimport. Dieser befindet sich auch im Server-Menü. Hier muss die Option „Import from Self-Contained File“ und das heruntergeladene SQL-Skript ausgewählt werden. Der Import startet nach dem Klick auf „Start Import“, siehe . Abb. A.7. 5 Während des Imports wird die „terra2019“ Datenbank angelegt. Diese ist bei der Navigation zum Bereich „Schema“ auf der linken Seite sichtbar. Sollte die neue Datenbank nicht erscheinen, kann es notwendig sein, sich erneut zu verbinden. Dazu befindet sich in der Navigationsleiste der Button „Reconnect to DBMS“. Wähle jetzt die „terra2019“ Datenbank aus und erstelle eine SQL-Anfrage. Der SQL-Code lässt sich mit dem Blitz-Button ausführen. Das Ergebnis erscheint unterhalb der Anfrage, siehe . Abb. A.8. 5 Stelle sicher, dass du Änderungen an der Datenbank vornehmen kannst.

455 Appendix

. Abb. A.4 Vergabe des MySQL Root Passworts

. Abb. A.5 Startansicht der MySQL Workbench

. Abb. A.6 Eingabe des Root Passworts

456

Appendix

. Abb. A.7 Datenimport

. Abb. A.8 SQL-Anfragen innerhalb von MySQL Workbench

457

A–C

Stichwortverzeichnis

A Administration, 238 Agilität, 247 AI. siehe Artificial Intelligence Akzeptanztest, 283 Alert, 240 Alerting, 240 Algorithmus, 178 ALU (Arithmetical Logical Unit), 117 Analyse, 137 Anforderungen – funktionale, 139 – nichtfunktionale, 140 Anonymisierung, 112 Anwendungssoftware, 135 API. siehe Application Programming Interface App Store, 87 Application Programming Interface, 212 AR. siehe Augmented Reality Architektur, 65 Array, 166 Artificial Intelligence, 374 ASCII, 328 Assertion, 286 Asymmetrie, 91 Asynchronität, 154 Attribut, 298 Aufgabenangemessenheit, 425 Auflösung, 334 Augmented Reality, 433 Authenticator, 97 Authentifizierung, 94 Autorisierung, 98

B Backup, 100 Barrierefreiheit, 429 Basisklasse, 189 Benutzertest, 429 Best Practice, 184 Betaversion, 294 Betriebssystem, 125 Bezahlsystem, 316 Bildbearbeitung, 332 Binärsystem, 160 Bit, 160 Bitcoin, 320 Black Box Test, 284 Blockchain, 320

Blog, 153 Body, 74 Boolesche Variable, 164 Bootloader, 122 Branching, 260 BSI (Bundesamt für Sicherheit in der Informationstechnik), 85 Bugs, 282 Build Server, 293 Bundesdatenschutzgesetz, 109 Bus, 117 Business Intelligence, 356 Byte, 160

C Cache, 48 CAPTCHA, 387 Cascading Style Sheet, 35, 36 – Object Model, 50 Character, 164 Chatbot, 375 ChatGPT, 400 Client-Server-Modell, 65 Cloud, 228 Cloud-Computing, 228 Clustering, 380 CMS. siehe Content-Management-System CNC-Bearbeitung, 342 CNN. siehe Convolutional Neural Network Code, 38 Codeanalyse, statische, 292 Codierung, 328 Compiler, 56 Computergrafik, 332 Computernetzwerk, 64 Computervirus, 84 Computer Vision, 384 Content-Management-System, 103 Convolutional Neural Network, 388 Cookie, 52 Copyleft, 275 Copyright, 274 CPU (Central Processing Unit), 117 CRC. siehe Cyclic Redundancy Check CSS. siehe Cascading Style Sheet CSSOM. siehe Cascading Style Sheet Object Model, 50 CSV (Comma-Separated Values), 39 CU (Control Unit), 117 Customizing, 139 Cyclic Redundancy Check, 92

458

Stichwortverzeichnis

D Darstellungsbaum, 50 Data Science, 358 Dateiendung, 324 Dateiformat, 39 Daten, 296 – personenbezogene, 108 – semistrukturierte, 297 – strukturierte, 296 Datenbank, 306 – relationale, 306 Datenbankmanagementsystem, 311 Datenformat, 324 Datenkompression, 335 Datenkomprimierung, 335 Datenmodell, 297 Datensatz, 298 Datenschutzbeauftragter, 113 Datenstruktur, 196 DB. siehe Datenbank DBMS. siehe Datenbankmanagementsystem Deep copy, 201 Deep Learning, 393 Deepfake, 333 Denial of Service, 89 Descriptive Analytics, 368 Design, 137 DevOps, 138 Dictionary, 198 Digitalisierung, 411 Divide and Conquer, 178 dLAN, 443 DNS. siehe Domain Name System Document Object Model, 34 DOM. siehe Document Object Model Domain, 100 Domain Name System, 65 DoS. siehe Denial of Service Download, 48 DPI (dots per inch), 336 DRY (don’t repeat yourself), 180 DSGVO (Datenschutz-Grundverordnung), 108 Durchsatz, 126 Durchschnitt, 353

E Echtzeit, 436 Effizienz, 126 E-Mail, 152 Embedded system, 134 Emulator, 223 Entwicklung, testgetriebene, 284 Erwartungskonformität, 425

Ethik, 408 EULA (End-User Licence Agreement), 277 Exa, 162 Extrapolation, 369 Eyetracking, 438

F Fairness, 126 Fake News, 155 Farbtiefe, 334 Feature, 396 Fehlertoleranz, 426 Fernwartungssoftware, 242 FIDO2 (Fast IDentity Online 2), 97 Filehosting, 230 Filter, 333 Filterblase, 14 Firewall, 89 Fließkommazahlen, 164 Fork, 269 Format, binäres, 324 Freemium, 279 Fremdschlüssel, 302 Freshness, 78 Funktion, 57

G Gamification, 5 GAN, 397 Ganzzahlen, 164 Gateway, 68 Generative Adversarial Network, 397 Gesichtserkennung, 384 Giga, 162 Git, 257 GitHub, 262 GNU General Public License, 267 GPL. siehe GNU General Public License GPT, 400 GPU. siehe Graphic Processing Unit Grafikkarte, 117 Grammatik, formale, 43 Graphic Processing Unit, 120 Grey Box Test, 284

H Hacker, 409 Hallo-Welt-Programm, 169 Halluzination, 404 Hardware, 117

459 Stichwortverzeichnis

Hashing, 91 Häufigkeitsverteilung, 353 HDD (hard disc drive), 117 Head-up-Display, 438 Header, 74 HTML. siehe Hypertext Markup Language HTTP. siehe Hypertext Transfer Protocol HTTPS. siehe Hypertext Transfer Protocol Secure HUD. siehe Head-up-Display Human in the Loop, 397 Hypertext Markup Language, 28 Hypertext Transfer Protocol, 74 Hypertext Transfer Protocol Secure, 80

I ICMP. siehe Internet Control Message Protocol Implementierung, 137 Index, 12 Individualisierbarkeit, 426 Individualsoftware, 139 Industrie 4.0, 420 Informatik, 296 Information, 296 Infrastructure as a Service, 232 Instant Messaging, 152 Instanz, 187 Integrationstest, 283 Integrität, 88 Interesse, berechtigtes, 112 Internet, 10 – Control Message Protocol, 71 – Internetforum, 153 – of Things, 416 – Protocol, 66 Interpolation, 369 Interpreter, 56 Invalidation, 78 IoT, 416 IP, 66 IP-Adresse, 66, 163 IT – Betrieb, 238 – Infrastruktur, 228 – Operations, 238 Iteration, 248

J JavaScript-Objekt, 59 – Notation, 214 Jenkins, 268 JPEG, 335 JSON. siehe JavaScript-Objekt Notation

Jupyter Notebook, 360

K Kanban, 247 Kausalität, 355 Keepass, 95 KI. siehe Künstliche Intelligenz Kilo, 162 Klasse, 186 – abgeleitete, 189 Klassifikation, 379 KNN. siehe Künstliche Neuronale Netze Kommentar, 57 Kommunikation, computervermittelte, 152 Kompilieren, 169 Konstruktor, 187 Korrelation, 354 Kryptografie, 89 Kryptowährung, 320 Künstliche Intelligenz, 374 Künstliche Neuronale Netze, 392

L LAN. siehe Local Area Network Lernen – bestärkendes, 380 – maschinelles, 377 – überwachtes, 379 – unüberwachtes, 380 Lernförderlichkeit, 425 Let’s Encrypt, 80 Linux, 125 Liste, 191 Lizenz, 274 Local Area Network, 64

M Machine Learning, 377 Mainboard, 117 Maintainer, 269 Makro, 147 Malware, 84 Maske, 333 Median, 353 Mega, 162 Mensch-Maschine-Kommunikation, 152 Merge Request, 262 Mergen, 262 Metadaten, 311 Methode, 59

I–M

460

Stichwortverzeichnis

– der kleinsten Quadrate, 369 Mikrocontroller, 126 MIT-Lizenz, 268 Mittelwert, 353 ML. siehe Lernen, maschinelles Modell, 204 – relationales, 297 Modellierung, 204 Modulo Operator, 179 Monitoring, 239

N Nachrichten, 74 NAT. siehe Network Address Translation Natural Language Processing, 376 Near Field Communication, 317 Network Address Translation, 70 Netzteil, 117 Netzwerk, 64 – neuronales, 392 – soziales, 153 Netzwerkprotokoll, 64 NFC. siehe Near Field Communication NLP. siehe Natural Language Processing Normalisierung, 302 Numpy, 372 Nutzungsbedingungen, 277

O Objekt, 186 Objekterkennung, 385 Objektidentifizierung, 385 Objektorientierung, 186 Open Source, 3 – Software, 266

P Pair Programming, 5 Pandas, 372 Passwortmanager, 95 PATH-Variable, 172 Pattern, 184 PDCA-Zyklus, 248 Personalisierung, 14 Peta, 162 Phishing, 84 Pixel, 334 Pixelgrafik, 334 Platform as a Service, 232 Play Protect, 88

Play Store, 87 PNG (Portable Network Graphics), 336 Pointer, 165 PPI (pixel per inch), 336 Precision Farming, 421 Predictive Analytics, 368 Primärschlüssel, 302 Primitive Datentypen, 166 Private Key, 90 Programmiersprache, 56 Progressive Web-App, 53 Protokoll, 64 Prototyp, 428 Public Key, 90 Pull Request, 262 Python, 168

Q QoS. siehe Quality of Service Qualitätsmanagement, 290 Quality of Service, 89 Quelltext, 38 Query-String, 78

R RAM (Random Access Memory), 117 Ranking, 13 Rechenwerk, 117 Redundanz, 301 Regression, lineare, 368 Regressionsanalyse, 368 Regressionstest, 283 Render Pipeline, 52 Rendering, 340 Repository, 257 Request, 74 Response, 74 REST (Representational State Transfer), 79 RGB-Farbmodell, 334 ROM (Read Only Memory), 223 Root User, 238 Router, 65

S Scheduling, 126 Schema, 298 Schichten eines KNN, 392 Scikit-learn, 372 Scrum, 250 Search Engine Optimization, 13

461 Stichwortverzeichnis

Secure Hash Algorithm, 92 – SHA256, 92 Selbstbeschreibungsfähigkeit, 425 SEO. siehe Search Engine Optimization Separation of Concerns, 35 Serverless Computing, 235 Service Level Agreement, 242 Sessionkey, 90 Set, 202 SHA. siehe Secure Hash Algorithm Shitstorm, 155 Skalierbarkeit, 233 Skriptsprache, 56 SLA. siehe Service Level Agreement SMS (Short Message Service), 152 SOAP (Simple Object Access Protocol), 212 SoC. siehe System-on-Chip Software, 134 – as a Service, 232 – freie, 275 – proprietäre, 275 Softwareergonomie, 424 Speicherwerk, 117 Spiel, standortbezogenes, 434 Sprache, formale, 43 Sprint, 250 SQL (Structures Query Language), 306 SSD (Solid State Drive), 117 SSL, 91 Standardsoftware, 139 Statistik, 350 StatusCode, 75 Steuerbarkeit, 426 Steuerwerk, 117 STL, 344 String, 164 Strukturdiagramm, 208 Styleguide, 291 Subdomain, 102 Subnetzmaske, 68 Suchmaschine, 10 Support, 238 SVG (Scalable Vector Graphics), 327 Symmetrie, 91 Synchronizität, 154 Syntax, 41 System, hochverfügbares, 242 System-on-Chip, 119 Systemanforderungen, 135 Systemsoftware, 135 Systemtest, 283

T–V

T Tabelle, flache, 297 Tabellenkalkulation, 142 Tags, 23 Taktfrequenz, 119 TCP. siehe Transmission Control Protocol Tera, 162 Termineinhaltung, 127 Testautomatisierung, 291 Testen, manuelles, 283 Text – maschinenlesbarer, 38 – menschenlesbarer, 38 TLS. siehe Transport Layer Security Token, 97 Top-Level-Domain, 101 Transformator (neuronales Netz), 400 Transmission Control Protocol, 71 Transparenz, 126 Transport Layer Security, 91 Tupel, 202 Twitter, 153

U Überschreiben, 188 UEFI. siehe Unified Extensible Firmware Interface UML. siehe Unified Modeling Language Unified Extensible Firmware Interface, 122 Unified Modeling Language, 208 Uniform Resource Locator, 100 Unit Test, 283 Universal Serial Bus, 119 Unsigned, 164 URL. siehe Uniform Resource Locator Usability, 424 USB. siehe Universal Serial Bus User Experience, 424 UTF-8, 329

V Validation, 78 Variable, 57 Vektorgrafik, 337 Vererbung, 189 Verfügbarkeit, 88 Verhaltensdiagramm, 209 Verschlüsselung, 89 Versionsverwaltung, 257 Vertraulichkeit, 88 Videokonferenz, 152 Videotelefonie, 152

462

Stichwortverzeichnis

Virenscanner, 87 Virtual Machine, 220 Virtual Private Network, 92 Virtual Reality, 432 Virtualisierung, 220 Vlog, 153 VPN. siehe Virtual Private Network VR. siehe Virtual Reality

W WAF. siehe Web Application Firewall Wearables, 438 Web Application Firewall, 79 Webhosting, 100 Whistleblower, 410 White Box Test, 284 Wiki, 25 Wikipedia, 21 Wikitext, 23

Windows Defender, 87 Windows-Update, 86 Wireless Local Area Network, 64 WLAN. siehe Wireless Local Area Network World Wide Web, 12

X XML (Extensible Markup Language), 212 XProtect, 87

Z Zelle, 143 Zertifikat, digitales, 80 Zetta, 162 ZIP-Datei, 325 Zustandslos, 77 Zwei-Faktor-Authentifizierung, 96