Skript Einführung in die Informatik

Werbung
Einführung in die Informatik für andere
Fachrichtungen
Johann Schlichter
Institut für Informatik
TU München, Munich, Germany
April 2013
Vorlesungsunterlagen
(Student Script1 )
1 Script
generated by Targeteam; Not for general Distribution
Inhaltsverzeichnis
1
2
3
Übersicht
2
1.1
Vorwort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
1.2
Zielsetzung der Vorlesung . . . . . . . . . . . . . . . . . . . . .
3
1.3
Behandelte Themen . . . . . . . . . . . . . . . . . . . . . . . . .
3
1.4
Literatur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
1.4.1
Begleitende Literatur . . . . . . . . . . . . . . . . . . . .
4
1.4.2
Weiterführende Literatur . . . . . . . . . . . . . . . . . .
4
Einführung
5
2.1
Was ist Informatik? . . . . . . . . . . . . . . . . . . . . . . . . .
5
2.2
Computer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
2.3
Darstellung von Information . . . . . . . . . . . . . . . . . . . .
9
2.3.1
Information und Nachrichten . . . . . . . . . . . . . . . .
9
2.3.2
Bits und Bytes . . . . . . . . . . . . . . . . . . . . . . .
12
Datenbanken und Informationssysteme
14
3.1
Dateisysteme . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14
3.2
Datenbanksysteme . . . . . . . . . . . . . . . . . . . . . . . . .
15
3.2.1
Allgemeines . . . . . . . . . . . . . . . . . . . . . . . .
15
3.2.2
Beispiele aus der Praxis . . . . . . . . . . . . . . . . . .
17
3.2.3
Anforderungen an ein DBS . . . . . . . . . . . . . . . . .
17
Datenbankentwurf . . . . . . . . . . . . . . . . . . . . . . . . . .
18
3.3.1
Miniwelt . . . . . . . . . . . . . . . . . . . . . . . . . .
19
3.3.2
Wie entwirft man eine Datenbank? . . . . . . . . . . . . .
19
3.3.3
Datenmodell . . . . . . . . . . . . . . . . . . . . . . . .
19
3.3
i
Schlichter, TU München
3.3.4
3.4
3.5
4
ER-Modell . . . . . . . . . . . . . . . . . . . . . . . . .
20
Relationale Datenbanksysteme . . . . . . . . . . . . . . . . . . .
24
3.4.1
Relationales Modell . . . . . . . . . . . . . . . . . . . .
24
3.4.2
Tabellendarstellung . . . . . . . . . . . . . . . . . . . . .
24
3.4.3
Normalisierung . . . . . . . . . . . . . . . . . . . . . . .
26
3.4.4
Umsetzung des ER-Modells . . . . . . . . . . . . . . . .
30
3.4.5
Sichten . . . . . . . . . . . . . . . . . . . . . . . . . . .
32
3.4.6
Abfragesprache SQL . . . . . . . . . . . . . . . . . . . .
33
3.4.7
Beispielsysteme
. . . . . . . . . . . . . . . . . . . . . .
35
WWW - Informationssystem . . . . . . . . . . . . . . . . . . . .
36
3.5.1
Hypertext . . . . . . . . . . . . . . . . . . . . . . . . . .
36
3.5.2
Einführung in HTML . . . . . . . . . . . . . . . . . . . .
37
3.5.3
Cascading Style-Sheets (CSS) . . . . . . . . . . . . . . .
41
Rechnerarchitektur
42
4.1
Aufbau eines Rechners . . . . . . . . . . . . . . . . . . . . . . .
42
4.1.1
Struktureller Aufbau eines Rechners . . . . . . . . . . . .
43
Maschinenbefehle . . . . . . . . . . . . . . . . . . . . . . . . . .
45
4.2.1
Befehlsvorrat . . . . . . . . . . . . . . . . . . . . . . . .
46
4.2.2
Beispielprogramm in Maschinensprache (Assembler) . . .
46
Befehlszyklus . . . . . . . . . . . . . . . . . . . . . . . . . . . .
47
4.3.1
Sequentielle Bearbeitung . . . . . . . . . . . . . . . . . .
47
4.3.2
Fließband Bearbeitung (Pipelining) . . . . . . . . . . . .
48
Interndarstellung von Information . . . . . . . . . . . . . . . . .
49
4.4.1
Codierung . . . . . . . . . . . . . . . . . . . . . . . . . .
49
4.4.2
Codierung ganzer Zahlen . . . . . . . . . . . . . . . . . .
50
4.4.3
Codierung von Text . . . . . . . . . . . . . . . . . . . . .
54
4.4.4
Codierung von Bildern und Tönen . . . . . . . . . . . . .
55
4.4.5
Komprimierung . . . . . . . . . . . . . . . . . . . . . . .
57
4.2
4.3
4.4
5
INHALTSVERZEICHNIS
Systemsoftware
58
5.1
Einführung . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
58
5.1.1
58
Aufgaben des Betriebssystems . . . . . . . . . . . . . . .
ii
Schlichter, TU München
6
INHALTSVERZEICHNIS
5.1.2
Hardware-Software Struktur . . . . . . . . . . . . . . . .
60
5.1.3
Betriebssysteme versus Benutzeroberflächen . . . . . . .
60
5.1.4
Wesentliche Komponenten eines Betriebssystems . . . . .
61
5.1.5
Aktuelle Betriebssysteme . . . . . . . . . . . . . . . . . .
61
5.2
Dateiverwaltung . . . . . . . . . . . . . . . . . . . . . . . . . . .
62
5.3
Prozessorverwaltung / Prozessorzuteilung . . . . . . . . . . . . .
65
5.3.1
Prozesse . . . . . . . . . . . . . . . . . . . . . . . . . . .
65
5.3.2
Prozessorzuteilung . . . . . . . . . . . . . . . . . . . . .
67
5.3.3
Prozess-Unterbrechungen (interrupt) . . . . . . . . . . . .
67
Grundlagen der Programmierung
69
6.1
Einführung . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
69
6.1.1
Sicht des Programmierers . . . . . . . . . . . . . . . . .
70
Algorithmus . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
71
6.2.1
Spezifikation als Ausgangspunkt für ein Programm . . . .
71
6.2.2
Begriff des Algorithmus . . . . . . . . . . . . . . . . . .
71
6.2.3
Komponenten eines Algorithmus . . . . . . . . . . . . . .
74
6.2.4
Darstellung von Algorithmen . . . . . . . . . . . . . . .
76
6.2.5
Algorithmus und Programm . . . . . . . . . . . . . . . .
77
6.3
Datentypen und Ausdrücke . . . . . . . . . . . . . . . . . . . . .
79
6.4
Programmkonstrukte . . . . . . . . . . . . . . . . . . . . . . . .
81
6.4.1
Zuweisungen . . . . . . . . . . . . . . . . . . . . . . . .
81
6.4.2
Alternativanweisungen . . . . . . . . . . . . . . . . . . .
81
6.4.3
Schleifen . . . . . . . . . . . . . . . . . . . . . . . . . .
82
6.5
Objektorientierte Programmierung . . . . . . . . . . . . . . . . .
83
6.6
Modularisierung von Programmen . . . . . . . . . . . . . . . . .
86
6.6.1
Allgemeines . . . . . . . . . . . . . . . . . . . . . . . .
87
6.6.2
Beispiel Zerlegung . . . . . . . . . . . . . . . . . . . . .
88
6.6.3
Strukturierung von Algorithmen . . . . . . . . . . . . . .
90
6.6.4
Module . . . . . . . . . . . . . . . . . . . . . . . . . . .
92
6.6.5
Prozedurales / Objektorientieres Programmieren . . . . .
93
Rekursion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
95
6.2
6.7
iii
Schlichter, TU München
7
Datenstrukturen und Algorithmen
7.1
7.2
7.3
7.4
8
9
INHALTSVERZEICHNIS
100
Datenstrukturen . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
7.1.1
Listen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
7.1.2
Queue - Warteschlange . . . . . . . . . . . . . . . . . . . 102
7.1.3
Graphen . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
Suchverfahren . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
7.2.1
Mengen von Datensätzen . . . . . . . . . . . . . . . . . . 104
7.2.2
Lineare Suche . . . . . . . . . . . . . . . . . . . . . . . . 104
7.2.3
Binäre Suche . . . . . . . . . . . . . . . . . . . . . . . . 104
Sortierverfahren . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
7.3.1
Sortierverfahren - Beispiel Bubble Sort . . . . . . . . . . 105
7.3.2
Sortierverfahren - Beispiel Insert-Sort . . . . . . . . . . . 106
7.3.3
Rekursives Sortierverfahren - Beispiel Quicksort . . . . . 106
7.3.4
Sortierverfahren Animation . . . . . . . . . . . . . . . . 108
Komplexität . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
7.4.1
Komplexität von Algorithmen . . . . . . . . . . . . . . . 108
7.4.2
Komplexitätsklassen . . . . . . . . . . . . . . . . . . . . 109
Software-Entwicklung
111
8.1
Programmiersprachen . . . . . . . . . . . . . . . . . . . . . . . . 111
8.2
Software-Engineering . . . . . . . . . . . . . . . . . . . . . . . . 114
8.2.1
Software/Engineering - Definition des Ideals . . . . . . . 114
8.2.2
Komplexität von Software-Projekten . . . . . . . . . . . . 115
8.2.3
Vorgehensmodelle . . . . . . . . . . . . . . . . . . . . . 116
8.2.4
Strukturierte Programmierung . . . . . . . . . . . . . . . 118
8.2.5
Modellierung . . . . . . . . . . . . . . . . . . . . . . . . 118
8.2.6
Modelle für Analyse und Entwurf . . . . . . . . . . . . . 120
Grundlagen von Rechnernetzen
126
9.1
Einführung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
9.2
Übertragungsmedien . . . . . . . . . . . . . . . . . . . . . . . . 130
9.2.1
9.3
Kriterien zur Kategorisierung . . . . . . . . . . . . . . . 130
Lokale Netze (LAN) . . . . . . . . . . . . . . . . . . . . . . . . 131
iv
Schlichter, TU München
9.4
9.3.1
LAN - Netztopologien . . . . . . . . . . . . . . . . . . . 131
9.3.2
Zugriffsverfahren des Ethernet - CSMA/CD . . . . . . . . 132
9.3.3
Wireless LAN . . . . . . . . . . . . . . . . . . . . . . . 134
WAN - Wide Area Network . . . . . . . . . . . . . . . . . . . . . 136
9.4.1
9.5
INHALTSVERZEICHNIS
Internet . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
Referenzmodell . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
9.5.1
TCP/IP Referenzmodell . . . . . . . . . . . . . . . . . . 140
9.5.2
IP-Adresskonzept . . . . . . . . . . . . . . . . . . . . . . 142
9.5.3
Sicherung gegen Fehler . . . . . . . . . . . . . . . . . . . 143
10 Anwendungen von Rechnernetzen
145
10.1 Verteilte Anwendungen . . . . . . . . . . . . . . . . . . . . . . . 145
10.1.1 Entwicklung hin zu verteilten Anwendungen . . . . . . . 145
10.1.2 Verteilte Systeme . . . . . . . . . . . . . . . . . . . . . . 146
10.1.3 Client-Server-Modell . . . . . . . . . . . . . . . . . . . . 146
10.1.4 Beispiel-Services . . . . . . . . . . . . . . . . . . . . . . 148
10.1.5 World Wide Web . . . . . . . . . . . . . . . . . . . . . . 149
10.2 Sicherheit in verteilten Systemen . . . . . . . . . . . . . . . . . . 150
10.2.1 Sicherheitsanforderungen . . . . . . . . . . . . . . . . . 150
10.2.2 Arten von Schadsoftware . . . . . . . . . . . . . . . . . . 151
10.2.3 Verschlüsselung . . . . . . . . . . . . . . . . . . . . . . . 151
10.2.4 Identitätsprüfung . . . . . . . . . . . . . . . . . . . . . . 154
11 Zusammenfassung
156
v
Schlichter, TU München
INHALTSVERZEICHNIS
• Prof. J. Schlichter
– Lehrstuhl für Angewandte Informatik / Kooperative Systeme
Fakultät für Informatik, TU München
E-Mail: [email protected] (URL: mailto:[email protected])
Tel.: 089-289 18654
URL: http://www11.in.tum.de/
1
Kapitel 1
Übersicht
Ziel dieser Vorlesung ist eine inhaltlich abgestimmte Vorstellung der Grundlagen
der Informatik sowie deren mögliche Nutzung. Die Vorlesung richtet sich an
Nicht-Informatik-Studierende.
1.1
Vorwort
Informatik soll praktisch sein
• Wie schreibe ich einen Text in Microsoft Word ?
• Wie führe ich Berechnungen in Microsoft Excel durch ?
• Wie gestalte ich eine Web Seite ?
• Wie gestalte ich eine Präsentation ?
• Wie verwalte ich meine Daten ?
• und vieles andere .....
Wissen über Bedienung ist meist produktabhängig, und hat damit nur beschränkte
Lebensdauer.
2
Schlichter, TU München
1.2
1.2. ZIELSETZUNG DER VORLESUNG
Zielsetzung der Vorlesung
Ziel der Vorlesung ist es nicht:
dass Sie Programmieren wie eine Informatiker lernen;
dass Sie einen Computer selbst zusammenbauen können;
dass sie einen Einführungskurs (Tutorial) in Werkzeuge wie Microsoft Word
oder Excel erhalten.
Ziel der Vorlesung ist vielmehr,
• dass Sie eine Übersicht über die wichtigsten Konzepte der Informatik, auch
Programmierkonzepte, bekommen;
• dass Sie Informatik-Konzepte kennenlernen, die Sie möglicherweise auf andere
Bereiche übertragen können.
• dass Sie eine Einführung in wichtige Informatik-Themenbereiche wie Datenbanken, Informationssysteme und Rechnernetze erhalten.
1.3
Behandelte Themen
• Datenbanken und Informationssysteme
• Grundlagen der Programmierung und Software-Entwicklungstechnik (Software Engineering)
• Datenstrukturen, Algorithmen und Codierung von Information
• Rechnerarchitektur
• Betriebssysteme
• Rechnernetze und Verteilte Systeme mit Client-Server-Architekturen
1.4
Literatur
Als Basis für die Vorlesung wurden die nachfolgenden Bücher verwendet.
3
Schlichter, TU München
1.4.1
1.4. LITERATUR
Begleitende Literatur
Begleitend zur Vorlesung können (alternativ) verwendet werden:
1. H.-P. Gumm, M. Sommer: "Einführung in die Informatik", 9. Auflage,
Oldenbourg Verlag, 2011
2. Helmut Herold, Bruno Lurz, Jürgen Wohlrab, "Grundlagen der Informatik",
Pearson Studium, 2012 (2. Auflage)
1.4.2
Weiterführende Literatur
Für Fortgeschrittene zur Vertiefung:
• Robert Sedgewick, Kevin Wayne, "Einführung in die Programmierung mit
Java", Pearson Studium, 2011
• Andrew S. Tanenbaum, "Moderne Betriebssysteme", Pearson Studium, 2009
• Andrew S. Tanenbaum, "Computernetzwerke", Pearson Studium, 2003
• Andrew S. Tanenbaum, "Computerarchitektur", Pearson Studium, 2005
• Alfons Kemper, Andre Eickler, "Datenbanksysteme - Eine Einführung",
Oldenbourg Verlag, 2011
4
Kapitel 2
Einführung
Hier werden einige allgemeine Themen aus der Informatik als Grundlage
behandelt.
• Fragestellungen dieses Kapitels
– Übersicht über die verschiedenen Aspekte der Informatik
∗ Mit welchen Bereichen beschäftigt sich Informatik?
∗ Was gehört alles zu einem Computersystem?
– Darstellung von Information
∗ Was ist ein Byte?
∗ Information und Nachricht
2.1
Was ist Informatik?
Der Begriff Informatik leitet sich vom Begriff "Information" und "Automatik" ab.
Bei Informatik geht es grundsätzlich um die Erfassung, Verbreitung, Be-/ Verarbeitung und Speicherung von Information. Dabei werden hauptsächlich technische Lösungen betrachtet, die Teilaufgaben des Gesamtprozesses automatisiert
übernehmen oder unterstützen können.
• Informatik ist die Wissenschaft, Technik und Anwendung der maschinellen
Verarbeitung, Speicherung und Übertragung von Information.
• Die Beschäftigung mit der Technik zur Verarbeitung von Informationen
(Rechnertechnik, Technik des Programmierens) ist ein wichtiger Teil der
5
Schlichter, TU München
2.1. WAS IST INFORMATIK?
Informatik. Zusätzlich spielt aber auch die Beschäftigung mit Information
an sich eine Rolle (wo kommen sie her, wie kann man sie darstellen, wie
können Menschen motiviert werden sie zu liefern, wie können Menschen
damit umgehen). Hier gibt es enge Verbindungen zur Betriebswirtschaftslehre,
Psychologie und Soziologie.
• Der Begriff ist in den 60er Jahren entstanden. Im Englischen entstand
der Begriff "Computer Science". Von der Ausrichtung her konzentriert sich
die "Computer Science" mehr auf die Technik, während die "Informatik"
zusätzlich grundlegende Fragen im Zusammenhang mit Information und
Informationsverarbeitung mit einschließt.
• Was arbeitet ein Informatiker?
Datenmodell/Ablaufmodell
Anforderungen
hat
Kunde
Kredit
Verfügt über
reales oder
geplantes
System
betreut
Konto
Angestellter
betreut
Entwurfsspezifikation
Feedback
Test
externer
Nutzer
Testdaten
Implementierung
Der Informatiker beschäftigt sich mit der Konstruktion von informationsverarbeitenden Systemen für allgemeine und spezielle Anwendungen. Dies umfasst
die Spezifikation der Anwendungsanforderungen, den Entwurf und die Analyse
von Verfahren zur Lösung der gestellten Aufgaben, die Entwicklung von Datenstrukturen und Algorithmen, deren Implementierung in Software und Hardware
und den Nachweis dafür, dass das so konstruierte System die gestellten Anforderungen erfüllt. Die Fähigkeit, sich auf wechselnde Aufgabengebiete einstel6
Schlichter, TU München
2.1. WAS IST INFORMATIK?
len zu können, ist dabei für Informatiker unerlässlich.
• Das Gebiet der Informatik ist sehr breit und wird deshalb in mehrere Teilgebiete
untergliedert:
Angewandte Informatik
Technische Informatik
Praktische Informatik
Theoretische Informatik
– Technische Informatik
∗ Rechnerarchitektur
Befasst sich mit der technischen Konstruktion von Computern, also mit
physikalischen Komponenten wie Prozessoren, Speicherchips, mit der
Konstruktion von Peripheriegeräten und Geräten zur Realisierung von
Netzkomponenten, z.B. Router und Modems.
∗ Systemsoftware
Hier geht es um die Konzeption und Implementierung von Systemsoftware, d.h. Hardware-naher und Anwendungs-unspezifischer Software; also
Software zur Steuerung der technischen Hardware. Beispiele für Systemsoftware sind Betriebssysteme, Netzsoftware, Software zur Steuerung von
Verteilten Systemen (Client/Server), Software zur Steuerung der Benutzerschnittstelle.
– Praktische Informatik
Befasst sich mit der Programmierung ganz allgemein. Beispiele für
Themen sind Programmiersprachen, Übersetzerbau, das Vorgehen bei der
Softwareentwicklung (Software Engineering). Außerdem beschäftigt sich
die Praktische Informatik noch mit Standard-Anwendungsprogrammen oder
Middleware wie Datenbank- und Wissensbanksystemen.
– Theoretische Informatik
Befasst sich mit den theoretischen Grundlagen des Gebietes. Dazu zählen
formale Sprachen, Automatentheorie, Semantik und Logik, Komplexitätsabschätzungen von Algorithmen.
– Angewandte Informatik
Befasst sich mit dem Einsatz von Rechnern in verschiedenen Anwendungsbereichen; die Lösungen können universell einsetzbar sein (z.B. Textverarbei7
Schlichter, TU München
2.2. COMPUTER
tungssysteme oder Tabellenkalkulation) oder gezielt für einen Anwendungsbereich entwickelt werden (z.B. Flugbuchungssystem).
∗ Für manche Anwendungsbereiche haben sich spezielle Ausprägungen
der Informatik herausgebildet, sogenannte Informatik-Ableger, z.B. Wirtschaftsinformatik, Medizinische Informatik, Bioinformatik, Geoinformatik.
∗ Angewandte Informatik ist häufig interdisziplinär. Neben der Disziplin
des Anwendungsbereichs sind meist beteiligt: Betriebswirtschaftslehre,
Psychologie, Soziologie.
∗ Beispiele für Anwendungsbereichs-unabhängige Teilbereiche der Angewandten Informatik sind Rechnergestützte Gruppenarbeit (CSCW:
Computer Supported Cooperative Work, Groupware) und CommunitySupport/Social Software (Flickr, Youtube, FaceBook).
2.2
Computer
Eng mit dem Begriff Informatik verbunden ist der Begriff Computer (oder
Rechner).
• Computer sind technische Geräte, die umfangreiche Informationen mit hoher
Zuverlässigkeit und großer Geschwindigkeit automatisch verarbeiten und
sicher aufbewahren können.
• Im Gegensatz zu Automaten (wie Kaffeemaschinen) kann die Vorschrift,
nach der der Computer arbeiten soll, jeweils neu vorgegeben werden.
Solche Vorschriften oder Handlungsanweisungen nennt man Algorithmen.
Wenn Algorithmen in einem präzisen Formalismus beschrieben werden, dann
bezeichnet man sie als Programme.
• Struktur eines Rechner-/Computersystems
Ein Rechnersystem umfasst sowohl den eigentlichen Rechner oder Computer
(die Hardware) als auch Software. Schnittstelle zwischen Hard- und Software ist die Maschinensprache des im Computer eingesetzten Prozessors (CPU).
Die Maschinensprache ist spezifisch für die jeweilige CPU. Ein Maschinenprogramm besteht aus einer Folge von Bits.
8
Schlichter, TU München
2.3. DARSTELLUNG VON INFORMATION
Anwendungssoftware ist Software, die Aufgaben des Anwenders mit Hilfe eines Computersystems löst (unter Rückgriff auf Systemsoftware). Beispiele sind Textverarbeitungsprogramme, Tabellenkalkulation, Zeichenprogramme, Datenbanken. Systemsoftware (z.B. Betriebssystem) steuert und
kontrolliert den Ablauf auf dem Computersystem und stellt dem Benutzer/Anwendungsprogrammen elementare Dienste zur Verfügung.
2.3
Darstellung von Information
Dieser Abschnitt beschäftigt sich mit Information und ihrer Darstellung im
Computer
2.3.1
Information und Nachrichten
Information tritt in vielen Formen auf. Sie ist immer an eine Repräsentation
(Darstellung) gebunden, entweder im Gehirn oder z.B. an Schallwellen oder die
Zeichen eines geschriebenen Textes. Die Übertragung zwischen verschiedenen
Repräsentationen nennt man auch Codierung.
9
Schlichter, TU München
2.3. DARSTELLUNG VON INFORMATION
Information-/Datenverarbeitung
Um Information in einem Rechner speichern und verarbeiten zu können, muss
eine geeignete Darstellung verwendet werden.
• Für den menschlichen Anwender bedeutsame Informationen werden im
Rechner als (binäre) Daten repräsentiert. Man spricht deshalb auf der Ebene
des Benutzers von Informationsverarbeitung, während auf der Rechnerebene
von Datenverarbeitung gesprochen wird.
• Daten werden im Rechner als eine Folge von Bits dargestellt.
Darstellung von Information
Dieselbe Information lässt sich auf verschiedene Arten darstellen, z.B. Sitzverteilung im Bundestag. Die Daten werden im Rechner trotz unterschiedlicher Darstellungen auf identische Weise gespeichert.
10
Schlichter, TU München
2.3. DARSTELLUNG VON INFORMATION
Sitze
Partei
Sitze
SPD
298
CDU
198
CSU
47
FDP
43
Grüne
47
PDS
36
350
300
Si tze
250
200
Sitze
150
SPD
CDU
100
CSU
FDP
50
Gr üne
PDS
0
SPD
CDU
CSU
FDP
Grüne
PDS
Die Daten werden zwar auf 3 verschiedene Arten dargestellt, jedoch im Rechner
existieren sie nur einmal.
Nachrichten
Im Kontext der Übertragung spricht man oft von Nachrichten anstelle von Daten.
iMac
iMac
• Eine Nachricht ist eine Folge von Zeichen, oft aus sinnesphysiologischen oder
technischen Gründen in Worte unterteilt.
• Soll eine Nachricht von einem Sender zu einem Empfänger gelangen, muss
11
Schlichter, TU München
2.3. DARSTELLUNG VON INFORMATION
zwischen beiden ein Übertragungskanal bestehen, z.B. eine Verbindung über
ein Rechnernetz.
• Um übertragbar oder speicherbar zu sein, muss eine Nachricht eine Repräsentation haben, i.a. als Bitfolge.
2.3.2
Bits und Bytes
Bits (und Bytes) bilden die Grundlage der Darstellung, die für Information in
Rechnern verwendet wird. Damit setzen sich alle Daten aus Bits zusammen.
Bits
Abkürzung für „Binary digits“.
• Ein Bit ist die kleinstmögliche Informationsheit. Ein Bit lässt zwei mögliche
Werte auf eine Frage zu, z.B. Ja oder Nein, Wahr oder Falsch, Links oder
Rechts.
• Oft werden in diesem Zusammenhang die beiden Werte 0 und 1 benutzt.
Technisch werden die beiden Werte durch elektrische Ladungen (0 = ungeladen,
1 = geladen), elektrische Spannungen (0 = 0 Volt, 1 = 5 Volt) oder
Magnetisierungen dargestellt.
• Bitfolgen werden benötigt, falls zur Darstellung mehr als zwei Werte notwendig
sind (z.B. die Beantwortung einer Frage enthält mehr als zwei mögliche
Antworten, wie "Woher kommt der Wind?" - Süd, West, Ost oder Nord).
Bitfolge
000
001
010
011
100
101
110
111
Himmelsrichtung
Süd
West
Nord
Ost
Südost
Nordwest
Nordost
Südwest
• Jedes zusätzliche Bit in einer Folge verdoppelt die Anzahl der möglichen,
unterschiedlichen Bitfolgen, d.h. es gibt genau 2N mögliche Bitfolgen der
Länge N.
12
Schlichter, TU München
2.3. DARSTELLUNG VON INFORMATION
Byte
Ein Byte umfasst acht Bit, ist also eine Bitfolge der Länge 8. Diese Größe hat sich
im Computerbereich als wichtigste Grundeinheit eingebürgert.
• Häufige Abkürzungen für größere Einheiten:
– 1 KB = 1024 Bytes = 210 Bytes (Kilo)
– 1 MB = 1024 * 1024 Bytes = 220 Bytes (Mega)
– 1 GB = 1024 * 1024 * 1024 Bytes = 230 Bytes (Giga)
– 1 TB = 1024 * 1024 * 1024 * 1024 Bytes = 240 Bytes (Tera)
– 1 PB = 1024 * 1024 * 1024 * 1024 * 1024 Bytes = 250 Bytes (Peta)
– 1 EB = 1024 * 1024 * 1024 * 1024 * 1024 * 1024 Bytes = 260 Bytes (Exa)
– Als nächste zwei Stufen sind „Zetta“ und „Yotta“ gebräuchlich, allerdings
nicht offiziell standardisiert.
Hinweis
Die Definition über Zweierpotenzen ist eine spezielle im Bereich der
Informationstechnik übliche Variante. In anderen Gebieten bezeichnen die
Kürzel Zehnerpotenzen in Dreierschritten (103 = 1000 ist ungefähr 1024 = 210)
13
Kapitel 3
Datenbanken und
Informationssysteme
• Fragestellungen des Abschnitts:
– Was unterscheidet Dateisysteme von Datenbanksystemen?
– Wie kann die Struktur der Daten in einem Datenbanksystem dargestellt
werden?
– Was sind relationale Datenbanksysteme?
– Was sind die grundlegenden Konstrukte von HTML?
3.1
Dateisysteme
Dateisysteme bieten die Möglichkeit, eine Menge von Bytes unter einem
symbolischen Namen (Dateinamen) anzusprechen.
• Neben lokalen Dateisystemen gibt es immer mehr verteilte Dateisysteme, die
es Benutzern von mehreren Rechnern aus (teilweise über Web-Browser) erlauben, auf verteilt gespeicherte Dateien zuzugreifen. Zusatzfunktionen: Volltextsuche, Notifikation bei Änderungen, Workflowunterstützung, Dokumentenmanagementsysteme.
• Strukturierte Daten können abgelegt werden, indem sie Datensatz für Datensatz
(sequentiell) in die Datei geschrieben werden. Zum Auslesen muss wieder
Datensatz für Datensatz gelesen werden.
• Probleme mit Dateisystemen
14
Schlichter, TU München
3.2. DATENBANKSYSTEME
– Die Interpretation der Inhalte (und der Struktur) bleibt den einzelnen
Anwendungen überlassen (Dateiformate).
∗ Das Modell für die Struktur ist fest in die benutzende Anwendung
integriert, d.h. die Datenstrukturen und Programme sind voneinander
abhängig. Eine Änderung der Datenstruktur zieht meist auch eine
Änderung des Programms nach sich.
∗ Schwierigkeiten Dateien zwischen unterschiedlichen Anwendungen auszutauschen. Die Anwendungen müssen jeweils die interne Struktur kennen.
∗ Alle Anwendungen lösen wiederholt die gleichen Aufgaben: Speicherverwaltung, Änderungsdienst, Lesen und Speichern von Daten, Zugriffsschutz.
– Neben diesem Hauptproblem mit Dateien ergeben sich besonders bei der
Verwaltung großer Mengen strukturierter Daten weitere Probleme.
∗ Zugriff auf und Änderung von Daten ist nur ineffizient implementierbar
(wegen Sequentialität der Daten).
∗ Ein gleichzeitiger Zugriff mehrere Benutzer (Prozesse) auf eine Datei ist
nicht möglich.
∗ Für das Rücksetzen nach Systemabstürzen stehen nur die Sicherheitskopien der kompletten Datei zur Verfügung.
∗ Datenschutz nur auf die gesamte Datei anwendbar (nicht möglich ist beispielsweise, dass die Sekretärin nur Adressen in den Mitarbeiterdatensätzen sehen darf, nicht aber das Einkommen).
3.2
Datenbanksysteme
Wir leben in einer Informationsgesellschaft. Zugriff, Verarbeitung, Ablage und
Weitergabe von Information spielen in unserem Leben eine immer größere
Rolle. Durch das rasante Anwachsen der angebotenen Informationsmenge wird
es u.a. immer schwieriger, die gewünschte Information schnell und zielgerichtet
zu beschaffen. Zur Lösung dieses Problems greift man deshalb verstärkt auf
Datenbanksysteme zurück.
3.2.1
Allgemeines
• Problem der Datenspeicherung und -organisation wird zentral (anwendungsübergreifend) gelöst.
15
Schlichter, TU München
3.2. DATENBANKSYSTEME
• Datenbank = Menge von Daten, für die ein globales Modell bzgl. ihrer Struktur
festgelegt ist (Datenbankschema oder Datenmodell).
• Datenbanksystem (DBS) besteht aus einer Sammlung gespeicherter Daten
(Datenbank) sowie der Software, welche Dienste zur Speicherung und zum
Zugriff auf strukturierte Daten bereitstellt.
– Operationen zum Eintragen, Löschen, Suchen und Verknüpfen von Daten.
Wichtig ist die Verwaltung von Daten mit langer Lebensdauer sowie der
effiziente Zugriff auf große Mengen von Daten (GBytes, TBytes).
– Logischer Aufbau
– Datenbankmanagementsystem
Das Datenbankmanagementsystem (DBMS) ist die Gesamtheit aller Programme für den Umgang mit den Daten. Es ist verantwortlich für
∗ die sichere und einheitliche Verwaltung persistenter (langlebiger) Daten,
∗ den Datenaustausch zwischen Datenbank und Anwendungsprogrammen,
∗ die Verhinderung von unkontrollierten Zugriffen auf den Datenbestand
und
16
Schlichter, TU München
3.2. DATENBANKSYSTEME
∗ die effiziente Zugriffsmöglichkeit auf die in der Regel sehr großen
Datenbestände.
3.2.2
Beispiele aus der Praxis
• Universitätsdatenbank
Die Universitätsdatenbank ist die Sammlung aller für die Abwicklung der an einer Universität anfallenden Verwaltungsaufgaben benötigten Daten. Eine Universität gliedert sich i.a. in mehrere Fachbereiche, denen sowohl die Studenten
als auch die Professoren und Mitarbeiter zugeordnet sind. Die Studenten belegen verschiedene Vorlesungen von Professoren und legen bei ihnen Prüfungen
ab. Typische Anwendungen sind z.B.: Immatrikulation der Studienanfänger,
Rückmeldung der Studenten, Ausfertigen von Studentenausweisen und Studienbescheinigungen, Stundenplanerstellung und Planung der Raumbelegung,
Ausstellen von (Vor-)diplomzeugnissen, Exmatrikulation, Statistiken über Hörerzahlen, Raumauslastung, Prüfungsergebnisse, etc.
• Datenbank einer Fluggesellschaft
Eine Fluggesellschaft fliegt verschiedene Flughäfen an. Auf diesen Flugstrecken werden Flugzeuge bestimmter Typen mit dafür ausgebildetem Personal eingesetzt. Die Piloten haben Flugscheine jeweils nur für einige wenige
Flugzeugtypen. Außer den Piloten gibt es noch anderes Bord- sowie Bodenpersonal. Die Flugbuchungen der Passagiere sowie das Anfertigen der Passagierlisten werden ebenfalls automatisiert durchgeführt. Typische Anwendungen
sind z.B.: Flugbuchungen von Passagieren, Personaleinsatzplanung, Materialeinsatzplanung, Flugplanerstellung, Überwachung der Wartefristen, Gehaltsabrechnung.
3.2.3
Anforderungen an ein DBS
Kontrolle über Daten
Alle Daten können/müssen gemeinsam benutzt werden
keine verstreuten privaten Daten
Entwicklung neuer Anwendungen auf der existierenden Datenbank
Querauswertungen aufgrund inhaltlicher Zusammenhänge
Erweiterung und Anpassung der Datenbank
• Eliminierung der Redundanz, damit Vermeidung von Inkonsistenzen
17
Schlichter, TU München
3.3. DATENBANKENTWURF
• Datenbankadministrator hat zentrale Verantwortung für Daten
Kontrolle der Datenintegrität
• Automatisierte Zugriffskontrollen (Datenschutz).
• Erhaltung der logischen Datenintegrität, d.h. Überprüfung der Richtigkeit von
Daten.
• Notwendigkeit des kontrollierten Mehrbenutzer-Betriebs, d.h. die parallel
zugreifenden Benutzer sollen sich nicht gegenseitig in die Quere kommen bzw.
gegenseitig behindern (vgl. Synchronisation von Prozessen).
Leichte Handhabbarkeit der Daten
Darunter fallen das einfache Datenmodell zur Beschreibung der logische Aspekte
der Daten (deren Bedeutung und Zusammenhänge), eine leicht erlernbare Sprache
zum Zugriff bzw. Speichern von Daten in der Datenbank (z.B. SQL). SQL
("Structured Query Language") ist eine standardisierte Sprache für Datenbanken.
Datenunabhängigkeit
Darunter versteht man, dass die Anwendungen von der Organisation und
Speicherungen der Daten unabhängig sind.
3.3
Datenbankentwurf
Daten repräsentieren Informationen über die reale Welt. Sie beschreiben damit
entweder konkrete Objekte oder aber Beziehungen zwischen diesen Objekten. Die
Daten in einem Datenbanksystem sind folglich das Spiegelbild einer Situation
der realen Welt auf dem Rechner. Aufgrund der Vielgestaltigkeit und des
Beziehungsgeflechtes ist die reale Welt aber ein komplexes System, das in vielen
Fällen nicht vollständig auf einen Rechner abbildbar ist.
18
Schlichter, TU München
3.3.1
3.3. DATENBANKENTWURF
Miniwelt
In der Regel reicht es, nur einen Ausschnitt der realen Welt, die sogenannte
Miniwelt, zu betrachten.
Durch Vernachlässigung unnötiger Informationen wird diese Miniwelt
abstrahiert (vereinfacht).
3.3.2
Wie entwirft man eine Datenbank?
Man geht schrittweise vor
1. Erstellung eines Modells der Daten und der Beziehungen zwischen diesen
Daten ⇒ Datenmodell, z.B. ER-Modell
2. Abbildung des Datenmodells auf eine Menge von Tabellen (relationales
Modell)
3. Normalisierung: Entfernen aller Redundanzen. Eine Redundanz liegt vor,
wenn dieselbe Information an mehreren Stellen eingetragen ist, z.B. die
PLZ in verschiedenen Tabellen der Datenbank. Bei einer Änderung der PLZ
müssen alle Stellen in der Datenbank geändert werden; bei Vergessen einer
Änderungsstelle können Fehler auftreten.
4. Eintragen der Daten in die Tabellen.
5. Realisierung der möglichen Abfragen ⇒ Sichten auf die Daten in den Tabellen.
3.3.3
Datenmodell
Die Daten in einem Datenbanksystem bilden ein abstrahiertes Spiegelbild einer
Miniwelt. Um die Informationsstruktur dieser Miniwelt darstellen zu können,
basieren Datenbanksysteme auf sogenannten Datenmodellen.
19
Schlichter, TU München
3.3. DATENBANKENTWURF
Definition: Ein Datenmodell ist ein (oft mathematischer) Formalismus
mit einer Notation zur Beschreibung und Definition der Datenobjekte und
deren Struktur,
einer Menge von Operationen zur Manipulation der Daten.
Nicht beschrieben werden Abläufe, Interaktion zwischen Objekten oder zeitliches
Verhalten.
• Beispiele
Entity-Relationship-Modell (ER-Modell), Objektorientiertes Modell, Hierachisches Modell.
3.3.4
ER-Modell
Das Entity-Relationship-Modell ist ein Datenmodell, das sich gut zur Darstellung
des konzeptuellen Datenbankschemas für relationale Datenbanksysteme eignet.
Kardinalität
1
N
• Graphisches Hilfsmittel zur semantischen Modellierung eines Anwendungsgebietes, d.h. zum Entwurf einer Datenbank, unabhängig vom konkreten DBS.
• Dient vor allem zur Kommunikation zwischen DB-Designer und Auftraggeber.
• Grundidee: Reale Welt (Mini-Welt) läßt sich durch Objekte und Beziehungen zwischen Objekten beschreiben (Objekte: Entities, Beziehungen: Relationships).
• Gleichartige Entities (Objektinstanzen) werden zu Entity-Typen (vergleichbar
Klassen) bzw. Relationships zu Relationship-Typen zusammengefasst.
Beispiele: Entity-Typ: "Bibliotheksbenutzer", "Buch", und RelationshipTyp: "entleiht".
20
Schlichter, TU München
3.3. DATENBANKENTWURF
• Entities und Relationships können Attribute besitzen, z.B. Attribut "Name" bei
Entity "Bibliotheksbenutzer", "Entleihdatum" bei Relationship "entleiht".
• Entity-Typ
Ein Entity-Typ fasst eine Menge von gleichartigen Objektinstanzen, die durch
gleiche Attribute charakterisiert sind, zusammen.
entleiht
Kundennr: 5
Vorname: Josef
Nachname: Mayr
Ort: München
......
entleiht
Kundennr: 2
Vorname: Ernst
Nachname: Schmidt
Ort: Dachau
......
Inventarnr: 10
Titel: Informatik
Verlag: Springer
......
Inventarnr: 5
Titel: Mathematik
Verlag: Vieweg
......
Abstraktion
Kunde
Kundennr
Vorname
Nachname
Ort
......
entleiht
Kundennr
Inventarnr
Datum
Buch
Inventarnr
Titel
Verlag
......
– Schlüssel
Wahl eines oder mehrerer Attribute, die eine Entity (Objektinstanz) eindeutig
identifiziert, z.B.
Kundennr identifiziert eindeutig einen einzelnen Kunden.
⇒ Primärschlüssel.
∗ Ein Primärschlüssel kann aus mehr als einem Attribut bestehen.
∗ Die Entscheidung für einen bestimmten Primärschlüssel geschieht
während der Modellierung des Anwendungsbereiches.
falls kein Attribut eindeutig ist, wird ein künstliches Attribut
eingeführt, z.B. eine fortlaufende Nummer für jeden Eintrag.
∗ Primärschlüssel werden im ER-Modell durch Unterstreichung gekennzeichnet.
• Relationship-Typ
21
Schlichter, TU München
3.3. DATENBANKENTWURF
Ein Relationship-Typ umfasst die Menge gleichartiger Relationships. Ein
Relationship-Typ R stellt die Beziehung zwischen Entity-Typen E1 und E2 her,
d.h. R ⊆ E1 * E2.
– Ein wichtiges Charakteristikum von 2-stelligen Relationship-Typen ist ihre
Kardinalität. Dadurch wird zum Ausdruck gebracht, mit wie vielen Entities
ein gegebenes Entity in Beziehung stehen kann.
– Man kann verschiedene Kardinalitätsarten unterscheiden
1:1, ein Entity aus E1 kann mit höchstens einem Entity aus E2 über R in
Beziehung stehen kann und umgekehrt.
n:1, ein Entity aus E1 kann mit höchstens einem Entity aus E2 , aber ein
Entity aus E2 mit beliebig vielen Entities aus E1 über R in Beziehung
stehen.
1:n, ein Entity aus E1 kann mit beliebig vielen Entities aus E2 , aber ein
Entity aus E2 mit höchstens einem Entity aus E1 über R in Beziehung
stehen.
Beispiel: 1 Kunde kann n Bücher ausleihen; 1 Buch kann nur von
einem Kunden ausgeliehen werden.
n:m, ein Entity aus E1 kann mit beliebig vielen Entities aus E2 über R in
Beziehung stehen und umgekehrt.
E1
1:1
E2
E1
1:n
E2
E1
n:1
E2
E1
n:m
E2
22
Schlichter, TU München
3.3. DATENBANKENTWURF
• Erweiterung auf n-stellige Beziehungen
Relationship-Typen können nicht nur 2-stellig (binär), sondern auch n-stellig
sein. Beispiel für einen 3-stellige Relationship-Typen
m
Studierende
n
Vorlesung
prüfen
Note
1
Professor
Darstellung der Funktionalität der Beziehung
prüfen: Studierende * Vorlesung ⇒ Professor.
Mehrere Studierende können über den Stoff von mehreren Vorlesungen von
einem Professor geprüft werden.
• Modellierung einer Datenbank findet auf der Ebene von Entity-Typen,
Relationship-Typen und Attributen statt.
• Generalisierung
Generalisierung dient beim Konzeptentwurf zur übersichtlicheren Strukturierung der Entity-Typen
Name
Uni-Mitglieder
is-a
MatrNr
Studierende
Angestellte
PersNr
is-a
Fachgebiet
Assistenten
23
Professoren
Rang
Raum
Schlichter, TU München
3.4
3.4. RELATIONALE DATENBANKSYSTEME
Relationale Datenbanksysteme
Mit Entity-Relationship-Diagrammen läßt sich das logische Modell einer
Datenbank darstellen. Wird diese Datenbank in einem DBS implementiert, dann
ist dieses logische Modell in ein physikalisches Modell zu transformieren.
Ein Beispiel für ein physikalisches Datenbankmodell ist das relationale
Datenbankmodell.
3.4.1
Relationales Modell
Schema: legt die Struktur der in der Datenbank gespeicherten Daten fest.
Darstellung mit Hilfe von Relationen
Relation R ⊆ Wertebereich (Attribut 1) * ... * Wertebereich (Attribut n)
• Beispiel der Relation Telefonbuch
Telefonbuch ⊆ Text * Text * Zahl
Darstellung als Schema
Telefonbuch: {[Name: Text, Adresse: Text, Telefonnr: Zahl]}
• Relationale Darstellung von Entity-Typen:
Kunde: {[Kundennr: Zahl, Vorname: Text, Nachname: Text, Ort: Text]}
Kundennr ist der Primärschlüssel zur Identifizierung der einzelnen Kunden.
• Relationale Darstellung von Relationship-Typen:
entleiht: {[Kundennr: Zahl, Inventarnr: Zahl, Datum: Datum]}
Kundennr und Inventarnr dient zur Identifizierung eines Entleihvorgangs.
3.4.2
Tabellendarstellung
In relationalen Datenbanken "sieht" der Benutzer die Information in Form von
Tabellen (Relationen). Jede dieser Tabellen besteht aus Zeilen und Spalten;
Spalten repräsentieren die Attribute von Entities.
• Die Daten werden in einer Menge von Tabellen gespeichert. Normalerweise
eine Tabelle je Entity-Typ und eine Tabelle je Relationship-Typ (bei manchen
1:1 und 1:n Relationships sind Optimierungen möglich, die ohne eine eigene
Tabelle auskommen).
24
Schlichter, TU München
3.4. RELATIONALE DATENBANKSYSTEME
• Jede Tabelle hat einen Tabellennamen ("Relationenname") sowie Spalten und
Zeilen.
• Jede Zeile repräsentiert einen zusammengehörigen Datensatz; Zeile wird als
Tupel einer Relation aufgefasst; Spalten werden als Attribute bezeichnet.
• Jede Tabelle hat einen Primärschlüssel, durch den eine Zeile (Datensatz)
eindeutig identifiziert ist.
z.B. jeder einzelner Kunde wird durch Kundennr identifiziert.
• Die Ordnung der Zeilen ist ohne Bedeutung; durch ihre Reihenfolge wird keine
für den Benutzer relevante Information ausgedrückt.
• Die Ordnung der Spalten ist ohne Bedeutung, da sie einen eindeutigen Namen
(Attributnamen) tragen.
• Alle für den Benutzer bedeutungsvolle Informationen sind ausschließlich als
Datenwerte in den Tabellen ausgedrückt.
• Weisen zwei Tabellen je eine Spalte auf, die das gleiche Attribut beschreiben,
kann eine Beziehung zwischen den beiden Tabellen hergestellt werden. Damit
können Daten verschiedener Tabellen einander zugeordnet werden.
• Beispiel
Kundennr
Vorname
Nachname
Ort
......
Kundennr
Inventarnr
Datum
Inventarnr
Titel
Verlag
......
– Tabelle Kunde
Die Tabelle Kunde modelliert den Entity-Typ Kunde, d.h. jede Zeile
repräsentiert einen Kunden; Primärschlüssel ist die Kundennr.
Kunde: {[Kundennr: Zahl, Vorname: Text, Nachname: Text, PLZ: Zahl,
Ort: Text, Straße: Text]}
25
Schlichter, TU München
Kundennr
3.4. RELATIONALE DATENBANKSYSTEME
Vorname
Nachname
PLZ
Ort
Straße
– Tabelle Buch
Die Tabelle Buch modelliert den Entity-Typ Buch, d.h. jede Zeile
repräsentiert ein Buch; Primärschlüssel ist die Inventarnr.
– Tabelle Entleihe
Die Tabelle Entleihe modelliert den Relationship-Typ "Kunde leiht Buch
aus", d.h. jede Zeile repräsentiert ein von einem Kunden ausgeliehenes
Buch; Primärschlüssel ist das Paar (Kundennr, Inventarnr). Kundennr. bzw
Inventarnr. sind jeweils Verweise auf Zeilen in der Tabelle Kunde bzw. Buch.
3.4.3
Normalisierung
Mehrfache Speicherung derselben Information in gleicher oder mehreren Tabellen
kann zu Konsistenzproblemen bei Änderungen führen.
Name
Huber
Vorname
Franz
PLZ
83022
26
Ort
Rosenheim
Schlichter, TU München
3.4. RELATIONALE DATENBANKSYSTEME
dieselbe Information ist mehrfach dargestellt: 83022 ist die PLZ von
Rosenheim
⇒ Lösung: Normalisierung
Redundanz - Anomalien
Unter Redundanz versteht man die überflüssige Mehrfachspeicherung von Daten:
verschwendet Speicherplatz
kann bei Änderungen zu Inkonsistenzen oder Fehler führen (Anomalien).
Nr
1
2
3
Name
Huber
Huber
Meyer
Vorname
Franz
Franz
Christa
PLZ
83022
83022
86321
Ort
Ware
Rosenheim Hemd
Rosenheim Hose
Ganselham Bluse
Preis
22,50
78,90
45,30
• Update-Anomalie: bei einer Änderung von Daten werden Datensätze übersehen.
Beispiel: Adresse von F. Huber ist mehrfach in Datenbank gespeichert; sie
wird jedoch nicht an allen Stellen geändert.
• Delete-Anomalie: beim Löschen gehen Informationen verloren, die man später
eventuell wieder benötigt.
Beispiel: Einträge von Huber werden gelöscht ⇒ Information über die
Postleitzahl von Rosenheim geht verloren.
• Insert-Anomalie: neue Datensätze lassen sich nicht eintragen, da Teile des
Primärschlüssels fehlen.
1. Normalform
Eine Tabelle ist in 1. Normalform, falls alle Attribute nur atomare Werte
annehmen können. Mengen, Aufzählungen dürfen nichts als Attribute auftreten.
27
Schlichter, TU München
3.4. RELATIONALE DATENBANKSYSTEME
Name
Vorname
Adresse
Müller
Anna
Sudentenstr. 18, 83022 Rosenheim
Huber
Karl
Hauptstr. 4, 86321 Ganselham
Normalisierung
Name
Vorname
Straße
PLZ
Ort
Müller
Anna
Sudentenstr. 18
83022
Rosenheim
Huber
Karl
Haupstr. 4
86321
Ganselham
2. Normalform
Funktionale Abhängigkeit von Attributen
1222
Fräulein Smilla
Peter Hoeg
01
Gut
ja
1222
Fräulein Smilla
Peter Hoeg
02
mittel
nein
1222
Fräulein Smilla
Peter Hoeg
03
schlecht
nein
Primärschlüssel ist das Paar (TitelNr, ExNr).
Mit jedem Exemplar werden Informationen zum Titel erneut eingetragen, z.B.
Titelname, Autor.
Titelname und Autor sind nur von TitelNr abhängig, nicht jedoch von ExNr.
• Umwandlung in 2. Normalform
Eine Tabelle befindet sich in 2. Normalform
wenn sie sich in 1. Normalform befindet, und
28
Schlichter, TU München
3.4. RELATIONALE DATENBANKSYSTEME
jedes Attribut, das nicht zum Schlüssel gehört, nur vom gesamten Schlüssel
und nicht bereits von einem Teil des Schlüssels abhängt
TitelNr
Titelname
Autor
ExNr
Zustand
Verliehen
1222
Fräulein Smilla
Peter Hoeg
01
Gut
ja
1222
Fräulein Smilla
Peter Hoeg
02
mittel
nein
1222
Fräulein Smilla
Peter Hoeg
03
schlecht
nein
Normalisierung
TitelNr
Titelname
Autor
1222
Fräulein Smilla
Peter Hoeg
TitelNr ExNr
Zustand
Verliehen
1222
01
Gut
ja
1222
02
mittel
nein
1222
03
schlecht
nein
3. Normalform
Trotz Einhaltung der 2. Normalfall treten noch Redundanzen auf,
nämlich transitive funktionale Abhängigkeiten
Kundennr → PLZ → Ort
Attribut Ort enthält redundante Daten, da bereits PLZ den Wert von Ort
eindeutig festlegt
Kundennr
Name
Vorname
Straße
PLZ
Ort
00012
Müller
Anna
Sudentenstr. 18
83022
Rosenheim
00013
Huber
Karl
Hauptstr. 8
86321
Ganselham
00014
Meier
Kurt
Körberweg 11
83022
Rosenheim
• Umwandlung in 3. Normalform
29
Schlichter, TU München
3.4. RELATIONALE DATENBANKSYSTEME
Eine Tabelle befindet sich in 3. Normalform
wenn sie sich in 2. Normalform befindet, und
kein Nichtschlüssel-Attribut transitiv abhängig von einem Schlüsselattribut
ist
Kundennr
Name
Vorname
Straße
PLZ
Ort
00012
Müller
Anna
Sudentenstr. 18
83022
Rosenheim
00013
Huber
Karl
Hauptstr. 8
86321
Ganselham
00014
Meier
Kurt
Körberweg 11
83022
Rosenheim
Normalisierung
Kundennr
Name
Vorname
Straße
PLZ
PLZ
Ort
00012
Müller
Anna
Sudentenstr. 18
83022
83022
Rosenheim
00013
Huber
Karl
Hauptstr. 8
86321
86321
Ganselham
00014
Meier
Kurt
Körberweg 11
83022
Zusammenfassung
Bei der Normalisierung werden Tabellen so zerlegt, dass keine Redundanzen mehr
auftreten
1. Normalform: sämtliche Attributwerte sind atomar, d.h. nicht aus mehreren
Elementen zusammengesetzt.
2. Normalform: 1. Normalform und jedes nicht zum Primärschlüssel gehörige
Attribut ist von diesem voll funktional abhängig.
3. Normalform: 2. Normalform und es existieren keine transitiven Abhängigkeiten.
3.4.4
Umsetzung des ER-Modells
Jeder Entity-Typ wird zu einer eigenen Tabelle
die Attribute des Entity-Typs werden zu den Spalten.
30
Schlichter, TU München
3.4. RELATIONALE DATENBANKSYSTEME
ein Attribut (oder eine Kombination von Attribute) wird als Primärschlüssel
definiert.
eine Tabellenzeile repräsentiert eine Instanz des Entity-Typs (Objektinstanz,
Entität)
Umsetzung von Relationship-Typ: 1:1
Eine 1:1 Beziehung kann (wahlweise) in eine der beiden Tabellen der beteiligten
Entity-Typen eingebaut werden.
Schlüsselattribut einer Tabelle wird als Attribut in die zweite Tabelle
aufgenommen (Fremdschlüssel)
Kunde
1
1
belegt
Sitzplatz
Kundennr
Name
Vorname
Sitznr
Lage
Kundennr
00012
Müller
Anna
15A
Fenster
00012
00013
Huber
Karl
15B
Mitte
00013
00014
Meier
Kurt
15C
Gang
00014
Fremdschlüssel
Umsetzung von Relationship-Typ: 1:n
Eine 1:n Beziehung wird direkt umgewandelt
das Schlüsselattribut der 1-Seite wird als Fremdschlüssel in die Tabelle der
n-Seite aufgenommen.
31
Schlichter, TU München
3.4. RELATIONALE DATENBANKSYSTEME
n
Kunde
1
wohnt
Wohnort
Kundennr
Name
Vorname
Straße
PLZ
PLZ
Ort
00012
Müller
Anna
Sudentenstr. 18
83022
83022
Rosenheim
00013
Huber
Karl
Hauptstr. 8
86321
86321
Ganselham
00014
Meier
Kurt
Körberweg 11
83022
Fremdschlüssel
Umsetzung von Relationship-Typ: n:m
Jede n:m Beziehung muss in einer eigenen Tabelle dargestellt werden
aufgebaut aus den Schlüsselattributen der Tabellen der beteiligten EntityTypen
n
Autor
m
verfasst
Buchtitel
Autornr
Name
Autornr
Titelnr
Titelnr
Buchtitel
Jahr
00012
Karl Müller
00012
12340
12340
Informatik
2002
00013
Peter Huber
00013
12340
22300
Physik
1991
00014
Ernst Meier
00013
55521
55521
Geschichte
1978
00014
22300
3.4.5
Sichten
Oft benötigt man bei einer Anfrage aber nicht die Daten der ganzen Tabelle,
sondern nur einen Ausschnitt daraus. In Sichten oder Views werden Teilmengen
der in der Datenbank gespeicherten Information bereitgestellt.
32
Schlichter, TU München
3.4. RELATIONALE DATENBANKSYSTEME
Beispiel für eine Sicht: Vorname und Nachname von Kunden, die in München
wohnen.
Views sind damit nichts anderes als benannte Such-Abfragen (z.B. SQL-Anfragen
in MS ACCESS mit Namen).
3.4.6
Abfragesprache SQL
"Structured Query Language": Suche und Ändern von Tabelleneinträgen; seit
1989 international genormt; für fast alle relationalen Datenbanken verfügbar;
Abfrage liefert als Ergebnis alle gefundenen Lösungen (d.h. mengenorientiert).
Elementare Operationen bei Abfragen
Bei der Auswertung von Datenbanken will man
bestimmte Attributwerte
aus bestimmten Datensätzen
einer Tabelle oder einer Kombination von Tabellen
Beispiele:
• Liste der Wohnorte aller Kunden,
• alle Kontonummern mit aktuellem Kontostand und Kundennummer
• ISBN und Titelname aller Werke eines bestimmten Autors, etc.
Relationen
n-spaltige Tabellen repräsentieren Relationen, d.h. Relationen sind Mengen, auf
denen die Mengenoperationen ausgeführt werden können.
• Mengenoperationen dienen als Basis für die Definition von Zugriffsoperationen
auf Datenbanken.
33
Schlichter, TU München
3.4. RELATIONALE DATENBANKSYSTEME
Attribut a Attribut b Attribut c
Selektion
Projektion
Natürlicher Join
a1
a2
a3
b1
b1
b2
Tabelle 1
b1
b2
b3
c1
c2
c3
Tabelle 2
Ausgangstabellen
Tabelle
a1
a2
a3
b1
b1
b2
c1
c1
c2
Tabelle
Ergebnistabelle
Tabelle
Beide, Tabelle 1 und Tabelle 2 haben das Attribut b. Es werden in beiden
Tabellen die Zeilen herausgesucht, wo die Attributwerte für b gleich sind. Diese
Zeilen (zusammen mit den zugehörigen Werten für Attribut a und Attribut c)
werden in die Ergebnistabelle übernommen.
• Selektion: Auswahl von Zeilen einer Tabelle über Prädikate, z.B. allen Zeilen
mit Attribut Ort = ’München’.
• Projektion: Auswahl der Spalten einer Tabelle, z.B. aus der Tabelle Kunde die
Spalte mit den Nachnamen.
• Natürlicher Join: Gleichverbund über alle gleichen Attribute und Projektion
über die verschiedenen Attribute; Attribute sind durch Übereinstimmungsbedingung gegeben.
• Abfragen in der Datenbank lassen sich in die Teilfunktionen Selektion und
Projektion zerlegen ⇒ eine Abfrage ist eine Verkettung von Selektion und
Projektion.
INSERT (Einfügen)
INSERT INTO Entleihe VALUES (300, 100, ’01/12/97’)
UPDATE (Aktualisierung)
UPDATE Kunde SET PLZ = "80330" WHERE Strasse = ’Arcisstrasse’
34
Schlichter, TU München
3.4. RELATIONALE DATENBANKSYSTEME
SELECT (Abfrage)
Finde alle Kunden, die in der Arcisstraße in München wohnen:
SELECT Vorname, Nachname, Straße FROM Kunde WHERE Ort =
’München’ AND Straße = ’Arcisstraße’ ORDER BY Nachname
Aggregatfunktionen und Gruppierung
Aggregatfunktionen führen Berechnungen durch und liefern als Ergebnis einen
einzelnen Wert
SELECT AVG(GebJahr) FROM Mitarbeiter; # liefert das DurchschnittsGeburtsjahr
SELECT SUM(GebJahr) FROM Mitarbeiter; # liefert die Summe aller Geburtsjahre
SELECT COUNT(GebJahr) FROM Mitarbeiter; # liefert die Anzahl der
Mitarbeiter, die Geburtsjahr angegeben haben
SELECT MIN(GebJahr) FROM Mitarbeiter; # liefert den jüngsten Mitarbeiter
SELECT MAX(GebJahr) FROM Mitarbeiter; # liefert den ältesten Mitarbeiter
SELECT AVG(GebJahr) FROM Mitarbeiter WHERE PersNr > 2000;
# liefert das Durchschnitts-Geburtsjahr mit Personalnummern höher als 2000
SELECT AbtID, AVG(GebJahr) FROM Mitarbeiter GROUP BY AbtID;
# liefert das Durchschnitts-Geburtsjahr in den einzelnen Abteilungen
SELECT AbtID, AVG(GebJahr) FROM Mitarbeiter GROUP BY AbtID HAVING
COUNT(*) > 1;
# liefert das Durchschnitts-Geburtsjahr zu den Abteilungen, die mehr als einen
Mitarbeiter haben
3.4.7
Beispielsysteme
mySQL (Open Source), Microsoft Access, Microsoft SQL Server, Oracle, DB2
(IBM), Sybase, Informix
Microsoft Access
MS ACCESS stellt zum Erstellen von Tabellen, Abfragen usw. im Allgemeinen
Assistenten zur Verfügung. Trotzdem ist auch das direkte Arbeiten mit SQL
möglich!
35
Schlichter, TU München
3.5. WWW - INFORMATIONSSYSTEM
• Ansichten in MS Access
MS ACCESS unterscheidet bei Tabellen und Anfragen grundsätzlich:
– die Datenblattansicht: Anzeige der Instanz einer Basistabelle bzw. der
Ergebnistabelle einer Anfrage; erlaubt auch die Eingabe, die Änderung und
das Löschen von Daten in einer Basistabelle.
– die Entwurfsansicht: interaktives Erzeugen von Tabellen bzw. Anfragen
"ohne" SQL.
– die SQL-Ansicht: direktes Arbeiten mit SQL.
• SQL-Ansicht
Die SQL-Ansicht erlaubt
die Definition von Tabellen (CREATE TABLE),
das Ändern von Tabellen (ALTER TABLE),
das Löschen von Tabellen (DROP TABLE),
das Einfügen von Daten in Tabellen (INSERT INTO),
das Ändern von Daten in Tabellen (UPDATE),
das Löschen von Daten in Tabellen (DELETE) und
die Erstellung von SQL-Anfragen (SELECT).
3.5
WWW - Informationssystem
Das World Wide Web (WWW bzw. Web) ist ein über das Internet abrufbares
Informationssystem, basierend auf dem Hypertext-Ansatz.
3.5.1
Hypertext
Der Begriff „Hypertext“ beschreibt nichtlineare Texte, die als Netzwerk von
Informationseinheiten aufgebaut sind.
36
Schlichter, TU München
3.5. WWW - INFORMATIONSSYSTEM
Querverweise zwischen Informationseinheiten (Web-Seiten, Dokumente) werden
als links bezeichnet.
Arten von Informationsinhalten: Text, Graphik, Bilder, Audio, Video, Animationen.
Beschreibung der Inhalte mittels HTML (HyperText Markup Language).
Markup: Zusatzinformation wird in den Text selbst eingebettet.
<tagname>...text....</tagname>
Beispiel: <html>dokumentinhalt</html>
HTML ist eine Layoutsprache.
3.5.2
Einführung in HTML
HTML dient in erster Linie dazu, textuelle Information zu repräsentieren. Der
Text lässt sich strukturieren, i.w. in Paragrafen, Listen und Tabellen.
ein ausführliches Tutorial stellt selfhtml (URL: http://de.selfhtml.org/) bereit.
HTML Befehle bestehen fast immer aus einem Starttag und einem Entag.
37
Schlichter, TU München
3.5. WWW - INFORMATIONSSYSTEM
Beispiel
<html>
<head>
<title>Ziel der Vorlesung</title>
</head>
<body>
<p>Diese Vorlesung gibt eine Einführung in die Informatik. Sie
behandelt Themen wie</p>
<ul>
<li>Algorithmen und Datenstrukturen</li>
<li>Programmierung von Softwaresystemen</li>
<li>Datenbanken</li>
<li>Rechnernetze</li>
</ul>
</body>
</html>
Struktur-Tags
Struktur-Tags dienen zur Beschreibung der Struktur von HTML-Dokumenten.
<html>....</html> umrahmt das gesamte HTML-Dokument.
<head>....</head> markiert den Dokumentenkopf.
<title>....</title> definiert den Titel des gesamten HTML-Dokuments.
<body>....</body> umrahmt den eigentlichen Inhalt des HTML-Dokuments.
<p>....</p> kennzeichnet einen Absatz.
6 Stufen von Überschriften: h1 ... h6, z.B.
<h1>.....</h1>
<hr> spezifiziert eine Trennlinie.
Listen
Listen erlauben eine echte hierarchische Schachtelung von Paragraphengruppen
in beliebiger Tiefe. Eine Liste ist eine Folge von Paragraphengruppen, die selbst
wieder Listen enthalten können.
• ungeordnete Liste: <ul>;
• geordnete Liste: <ol>;
• Listenelemente: <li>;
38
Schlichter, TU München
3.5. WWW - INFORMATIONSSYSTEM
Tabellen
Tabellen erlauben die Anordnung von Paragraphengruppen in einem zweidimensionalen Gitter.
<table> ..... </table>: Klammerung der gesamten Tabelle.
<tr> ..... </tr>: Klammerung einer Tabellenzeile.
<td> ..... </td>: Klammerung einer Tabellenzelle.
<th> ..... </th>: Klammerung einer Kopfzelle der Tabelle.
Beispiel
<table>
<tr>
<th>Kopfzeile
<th>Kopfzeile
<th>Kopfzeile
</tr>
<tr>
<td>1.Zeile /
<td>1.Zeile /
<td>1.Zeile /
</tr>
<tr>
<td>2.Zeile /
<td>2.Zeile /
<td>2.Zeile /
</tr>
</table>
/ 1. Spalte</th>
/ 2. Spalte</th>
/ 3. Spalte</th>
1. Spalte</td>
2. Spalte</td>
3. Spalte</td>
1. Spalte</td>
2. Spalte</td>
3. Spalte</td>
<table>
<th>..
</th>
<tr> <td>..
</td>
<tr> <td>..
</td>
<tr>
<th>..
</th>
<td>..
</td>
<td>..
</td>
<th>..
</tr>
</th>
<td>.. </tr>
</td>
<td>.. </tr>
</td>
</table>
Attribute in <table> bzw. <td> zur Gestaltung von Tabellen, z.B.
<table border="..">: Dicke des sichtbaren Rahmens.
<table cellpadding="..">: Abstand des Zelleninhalts vom Rand der
Tabellenzelle.
39
Schlichter, TU München
3.5. WWW - INFORMATIONSSYSTEM
<table width="..">: bestimmt die Breite der gesamten Tabelle.
<td align=".." valign="..">: horizontale und vertikale Ausrichtung des Inhalts
innerhalb einer Zelle.
Grafiken
In HTML-Dokumente können Grafiken eingebunden werden, wobei verschiedene
Formate unterstützt werdeb, z.B.
GIF, JPEG, PNG, BMP, etc
Grafiken werden in Dateien gespeichert.
Einbindung durch das <img> Tag.
<img src="luftbild.jpg" alt="Luftbild">
Attribute zur Gestaltung der Grafik durch den Browser
<img src=".." width=".." height="..">: Breite und Höhe der Grafik.
<img src=".." border="..">: Dicke des Rahmens für die Grafik.
Hyperlinks
Sie sind das wesentliche Element, um Querverweise zwischen HTMLDokumenten zu definieren. Hyperlinks werden im Text eingebettet.
• Markieren des Verweisziels
<a name="nameziel">Text</a> und hier weiterer Text
• Verweise innerhalb des gleichen Dokuments
<a href="#nameziel">Text des Hyperlinks</a> und hier weiterer Text
• Verweise auf andere lokale Dokumente
<a href="Dateiname#nameziel">Text des Hyperlinks</a> und hier
weiterer Text
• Verweise auf andere nicht lokale Dokumente
<a href="http://servername/pfad#nameziel">Text des Hyperlinks</a>
und hier weiterer Text
40
Schlichter, TU München
3.5.3
3.5. WWW - INFORMATIONSSYSTEM
Cascading Style-Sheets (CSS)
Mit Style-Sheets kann man die Formateigenschaften von HTML-Tags festlegen.
interpretieren durch den Browser zum Formatieren und Positionieren von
HTML-Elementen auf dem Nutzerrechner.
Einbettung von CSS-Formaten in die Web-Seite oder als separate Datei, die
von Web-Seite referenziert wird.
Eigenschaften werden mit Hilfe von Regeln spezifiziert, eine Regel besteht aus
Selektor, der Eigenschaft sowie dem ihr zugewiesenen Wert.
• Beispiel
BODY { font-size: 20px;
font-family: Helvetica;
margin-left: 0.5em}
TD { font-family: inherit; font-size: 20px;
vertical-align: top; }
P { font-family: Helvetica;
font-size: 20px;
margin-bottom: 0.5em; margin-top: 0em; }
H1 { font-family: Helvetica;
font-size: 24px; }
H2, H3, H4, H5, H6 { font-family: Helvetica;
font-size: 20px;
margin-bottom: 0.5em; margin-top: 0.5em; }
41
Kapitel 4
Rechnerarchitektur
In diesem Abschnitt werden die Hardware-nahen Komponenten eines Rechners
behandelt. Dabei geht es insbesondere um den Aufbau eines Rechners aus
einzelnen Komponenten und dem Aufbau der einzelnen Rechnerkomponenten
sowie um die Möglichkeiten der Steuerung des Ablaufs, z.B. den Befehlszyklus
und den beispielhaften Aufbau einer Maschinensprache.
• Fragestellungen des Abschnitts:
– Aus welchen (Hardware-)Elementen setzt sich ein Rechner zusammen?
– Wie kommunizieren die einzelnen Komponenten eines Rechners?
– Wie sieht die Schnittstelle zwischen Hardware und Software aus (d.h.
Maschinenbefehle)?
– Wie werden Zahlen, Text, Bilder, und Töne intern dargestellt?
4.1
Aufbau eines Rechners
Die Hardware eines Computersystems besteht aus dem Rechner und einer
Menge von Peripheriegeräten, z.B. Tastatur, Maus, Bildschirm, Drucker,
Scanner. Bezüglich der Rechner gibt es entsprechend ihrer Funktionalität und
Leistungsfähigkeit sehr unterschiedliche Klassen, z.B. PDA ("personal digital
assistant", Palm V), Notebook/Laptop, Schreibtisch PC, Server, Großrechner und
Höchstleistungsrechner.
Beispiel eines Supercomputers
42
Schlichter, TU München
4.1.1
4.1. AUFBAU EINES RECHNERS
Struktureller Aufbau eines Rechners
Tastatur
Monitor
Festplatte
Netzkarte
Netz
Geräte
bus
Prozessor
(CPU)
Register
Arbeitsspeicher
(RAM)
Ein/AusgabeController
Datenbus
Prozessor
bus
Adressbus
Steuerbus
Komponenten eines Rechners
• Im Prozessor finden die Rechen- und Umformvorgänge statt. Gleichzeitig
steuert und kontrolliert der Prozessor den Ablauf des Rechenvorgangs, und
damit den Ablauf der Programme.
– Ein Prozessor kann aus mehreren Kernen bestehen. Jeder Prozessorkern
führt Rechen- und Umformvorgänge aus. Üblich sind heute Dual-CoreProzessoren (Doppelkernprozessoren) und Quad-Core-Prozessoren.
43
Schlichter, TU München
4.1. AUFBAU EINES RECHNERS
– Register sind spezielle Speicherzellen im Prozessor zur Speicherung von
Operanden und Zwischenergebnissen. Register sind sehr schnell, jedoch
teuer.
• Der Arbeitsspeicher (ASP; "main memory") ist eine Reihung von adressierbaren Speicherzellen der Größe 8 Bit zur Ablage von Programmen und binären
Daten. Jede Speicherzelle kann über seine Adresse (eindeutiger Identifikator),
nämlich die Nummer der Speicherzelle, direkt angesprochen werden.
• Ein/Ausgabe-Controller sind Komponenten, die Nachrichten auf dem Gerätebus für Ein/Ausgabe-Geräte umsetzen und deren Eingaben den anderen Komponenten zur Verfügung stellen. Über den Gerätebus werden Graphikkarten,
Netzwerkkarten etc angeschlossen.
• Den Ablauf der Informationsverarbeitungsvorgänge im Rechner steuern
Programme.
Busse zur Kommunikation
Die Komponenten eines Rechners kommunizieren über Prozessorbus und
Gerätebus miteinander.
Prozessorbus: schnelle Übertragung
Gerätebus (z.B. PCI): etwas langsamer, da Geräte langsamer als CPU oder
Arbeitsspeicher.
• Der Prozessorbus unterteilt sich in
– Adressbus: zur Übergabe einer Adresse (32 oder 64 Bit)
– Datenbus: zur Übermittlung von Daten (32 oder 64 Bit)
– Steuerbus: mehrere Steuerleitungen
Kommunikation zwischen Arbeitsspeicher und CPU
CPU und Arbeitsspeicher arbeiten nicht synchron im gleichen Takt. Deshalb muss
der Vorgang des Datenaustausches zwischen Arbeitsspeicher und CPU koordiniert
werden.
• Beispiel: Übertragung von Daten aus dem Arbeitsspeicher zum Prozessor
(CPU).
44
Schlichter, TU München
4.2. MASCHINENBEFEHLE
1. CPU legt die ASP-Adresse des gewünschten Datenelements auf den
Adressbus.
2. CPU legt das Signal "Lesen" auf eine bestimmte Leitung im Steuerbus.
3. CPU legt das Signal "Adresse gültig" auf eine bestimmte Leitung im
Steuerbus.
4. ASP ist passiv, "hört" aber auf Adress- und Steuerbus mit.
5. ASP erkennt, dass eine Adresse gültig ist und prüft, ob er mit dieser Adresse
gemeint ist. Falls ja, führe Schritte 6-12 aus.
6. ASP prüft das Transportrichtungssignal im Steuerbus (es erkennt das Signal
"Lesen").
7. ASP sucht die adressierte Speicherzelle und holt die Daten.
8. ASP legt die (adressierten) Daten auf den Datenbus.
9. ASP legt das Signal "Daten bereit" auf eine bestimmte Leitung im Steuerbus.
10. CPU hat gewartet, bis das Signal "Daten bereit" erscheint und übernimmt
Daten vom Bus in das Zielregister.
11. CPU legt das Signal "Daten übernommen" auf eine bestimmte Leitung im
Steuerbus.
12. ASP deaktiviert daraufhin den Datenbus und das Signal "Daten bereit".
13. Sobald das Signal "Daten bereit" vom ASP weggenommen wird, deaktiviert
die CPU die von ihm verwendeten Adress- und Steuerleitungen.
• Ein solcher Ablauf aus Aktions- und Kommunikationsschritten zwischen
Kommunikationspartnern heißt ein Protokoll. Das Protokoll definiert die
Syntax, Semantik und die Reihenfolge der auszutauschenden Information.
• Der oben geschilderte Ablauf heißt Busprotokoll.
4.2
Maschinenbefehle
Einfache Kommandos, die die CPU ausführen kann; Setzen sich zusammen aus
Operationsteil und Operandenteil (Adressteil). Der Operandenteil bestimmt die
Daten, auf denen die Operation ausgeführt werden soll.
45
Schlichter, TU München
4.2.1
4.2. MASCHINENBEFEHLE
Befehlsvorrat
• Transportbefehle
z.B. LOAD, STORE. LOAD: Transportieren von Daten vom Arbeitsspeicher in
ein Register; STORE spezifiziert den umgekehrten Weg.
• Arithmetische und logische Befehle
z.B. ADD (Addition), SUB (Subtraktion), AND (logische und-Operation), OR
(logische oder-Operation), CMP (Compare - Vergleichen von zwei Werten)
• Schiebebefehle
z.B. SH (Shift links, rechts), ROT (Schieben im Kreis)
• Sprungbefehle
z.B. JMP (Jump), JGT (Jump Greater Than) - (bedingte) Änderung der
Ablaufreihenfolge
• Sonderbefehle
Behandlung von Unterbrechungen (z.B. Alarm bei Division durch 0),
Änderungen des Maschinenstatus, Rückmeldungen von E/A Geräten, Laden
von Prozessbeschreibungen, Synchronisationsbefehle bei Speicherzugriff etc.
4.2.2
Beispielprogramm in Maschinensprache (Assembler)
Darstellung in Maschinensprache
0100
0102
0104
0106
0108
010a
010c
010e
0110
0112
0114
0116
0118
011a
LOAD 0118 -- lade Inhalt der Speicherzelle 118 in CPU
STORE 0116
LOAD 0114
JUMPZERO 011a
SUB 0118
STORE 0114
LOAD 0116
ADD 0116
STORE 0116
JUMP 0104
#2 -- Wert von x, d.h. die Zahl 2
#0
#1 -- Wert von y, d.h. die Zahl 1
STOP
46
Schlichter, TU München
4.3. BEFEHLSZYKLUS
Die erste Zahl (in Hexadezimal), z.B. 0100, gibt die Adresse der Speicherzelle an,
in dem der Befehl (in diesem Fall LOAD 0118) abgespeichert ist. LOAD 0118
bedeutet:
lade den Inhalt der Speicherzelle 0118 in die CPU.
Darstellung in Hochsprache
y = 1;
while (x!=0) {
x = x - 1;
y = y + y;
}
• Das Programmstück berechnet y = 2x. "!=" bedeutet hier die Ungleichheit, z.B.
ist im Programmbeispiel "x ungleich 0". "=" ist kein mathematisches Symbol,
sondern bezeichnet hier die Zuweisung eines Wertes an eine Variable.
4.3
Befehlszyklus
Für die Ausführung eines Maschinenbefehls durchläuft die CPU immer wieder ein
festes Schema von Schritten, das der Bereitstellung des Befehls, dem Bereitstellen
seiner Operanden, seiner Entschlüsselung und schließlich seiner Ausführung
dient. Dieses Schema wird Befehlszyklus genannt.
4.3.1
Sequentielle Bearbeitung
47
Schlichter, TU München
4.3. BEFEHLSZYKLUS
Falls gerade kein Programm zur Ausführung ansteht, wird der Leerlaufprozess
mit dem Maschinenbefehl NOP ("No Operation") ausgeführt.
4.3.2
Fließband Bearbeitung (Pipelining)
Eine Pipeline ist ein Fließband, auf dem sich die als nächstes abzuarbeitenden
Maschinenbefehle befinden. Jeder Befehl besteht aus einer Reihe von Phasen.
Während noch die letzten Phasen der vorderen Befehle in der Pipeline
abgearbeitet werden, kann bereits mit den ersten Phasen der hinteren Befehle
begonnen werden, d.h. es ergibt sich eine quasi-parallele Ausführung mehrerer
Maschinenbefehle.
48
Schlichter, TU München
4.4. INTERNDARSTELLUNG VON INFORMATION
Pipelining Animation
Link zu Information
4.4
4.4.1
Interndarstellung von Information
Codierung
Codierung ist allgemein die Zuordnung (oder Abbildung) der Werte eines
Zeichenvorrats auf Werte eines anderen Zeichenvorrats.
• Beispiele von Codierungen
In der Praxis gibt es eine Reihe von Codierungen, mit denen wir tagtäglich zu
tun haben.
Barcode
QR-Code
– Barcode (Strichcode): befindet sich auf fast jedem Artikel.
wird nicht intern vom Rechner verwendet, kann jedoch vom Rechner
dekodiert werden.
– QR-Code ("Quick Response"): entwickelt von Denso Wave (1994)
quadratische Matrix aus schwarzen und weißen Punkten, die die
kodierten Daten binär darstellen.
∗ Viele Smartphones verfügen über eine eingebaute Kamera und eine
Software, die das Interpretieren von QR-Codes ermöglicht.
• Zeichen: Ausprägung (Form, Wert) eines Signals; häufig spricht man auch von
Symbolen, z.B. Buchstaben.
• Zeichenvorrat: Menge der Zeichen (d.h. Formen, Werte), die ein bestimmtes
Signal annehmen kann.
49
Schlichter, TU München
4.4. INTERNDARSTELLUNG VON INFORMATION
• Codierung erfolgt für bestimmten Zweck:
– Speicherung
– Übertragung
– Komprimierung, z.B. von Bildern oder Video
– Verschlüsselung
– Veranschaulichung
• Eine Codierung ist z.B. notwendig, da die für den Menschen verständliche
Information auf eine für den Rechner verständliche oder speicherbare
Darstellung abgebildet werden muss. Hier Zuordnung von Symbolen, die für
den Menschen Sinn machen, zu Bitfolgen.
• Die einer Codierung zugrundeliegende Abbildung muss berechenbar, eindeutig
und (in der Regel) umkehrbar sein.
4.4.2
Codierung ganzer Zahlen
Ganze Zahlen werden auf Basis des Binärsystems codiert. So wie im
Dezimalsystem jede Ziffer die Anzahl einer Zehnerpotenz (1, 10, 100, 1000, ...)
angibt, gibt im Binärsystem jede Ziffer die Anzahl einer Zweierpotenz (1, 2, 4, 8,
16, 32, ...) an. Während im Zehnersystem zehn Ziffern erforderlich sind, reichen
im Binärsystem zwei Ziffern (0, 1) aus (genannt „Bit“, von „binary digit“).
Beispiel
Dezimalsystem: 148 = 1 * 102 + 4 * 101 + 8 * 100
Binärsystem: 1010 = 1 * 23 + 0 * 22 + 1 * 21 + 0 * 20(= 10 im Dezimalsystem)
Formel für Wert einer Binärsystem-Zahl
W =
n−1
X
bi × 2n−1−i
i=0
mit den Binärziffern bi ∈ {0, 1} und n ist die Anzahl der verwendeten Bits (d.h.
eine n-stellige Zahl). Beachte, es wird die Folge b0 b1 ... bn-1 betrachtet.
Beispiel
eine ganze Zahl sei als 8 bit lange Zahl zur Basis 2 dargestellt
W (000011012 ) = 0×27 +...+0×24 +1×23 +1×22 +0×21 +1×20 = 8+4+1 = 1310
50
Schlichter, TU München
4.4. INTERNDARSTELLUNG VON INFORMATION
Verfahren zur Umwandlung
Umwandlung einer Dezimalzahl w in eine Dualzahl z
dividiere w durch 2: Ergebnis w1 und Rest r0
dividiere w1 durch 2: Ergebnis w2 und Rest r1
fahre fort, bis das Ergebnis der Division 0 und Rest rk ist.
Die Dualzahl ist z = rk rk−1 ...r1 r0
• Beispiel
Dezimalzahl w = 23
23 : 2 = 11 mit Rest 1
11 : 2 = 5 mit Rest 1
5 : 2 = 2 mit Rest 1
2 : 2 = 1 mit Rest 0
1 : 2 = 0 mit Rest 1
Die Dualzahl lautet: z = 00010111 (in 8-Bit Darstellung)
Feste Ziffernanzahl
Typischerweise werden Zahlen durch eine Bitfolge fester Länge codiert (ggf.
mit führenden Nullen auffüllen). Die Anzahl der Bits ist meist ebenfalls
eine Zweierpotenz, z.B. 4 Bit, 16 Bit, 32 Bit oder 64 Bit. In aktuellen
Rechnerarchitekturen werden für die Darstellung einer ganzen Zahl entweder 32
oder 64 Bit verwendet. Bei Verwendung von n Bit sind die Zahlenwerte 0 bis 2n-1
codierbar.
Negative Zahlen
Positive ganze Zahlen werden immer durch ihre Darstellung im Binärsystem codiert. Für die Codierung negativer ganzer Zahlen gibt es mehrere Möglichkeiten.
• Vorzeichen-Darstellung
Das erste Bit der Zahlencodierung wird als Vorzeichenbit interpretiert (0
entspricht +, 1 entspricht -) die restlichen Bits codieren den Absolutwert der
Zahl im Binärsystem. Damit sind Zahlen von -(2n-1-1) bis 2n-1-1 möglich. Es
51
Schlichter, TU München
4.4. INTERNDARSTELLUNG VON INFORMATION
gibt jedoch zwei Nullen, d.h. eine positive (000...00) und eine negative Null
(100...00).
Beispiel
Für n = 4 sind die Zahlen von -7 bis +7 codierbar:
0 = 0000
1 = 0001
2 = 0010
3 = 0011
4 = 0100
5 = 0101
6 = 0110
7 = 0111
-0 = 1000
-1 = 1001
-2 = 1010
-3 = 1011
-4 = 1100
-5 = 1101
-6 = 1110
-7 = 1111
• Zweierkomplement-Darstellung
Beim Zweierkomplement existiert eine negative Zahl mehr als die Anzahl der
positiven Zahlen; Zweierkomplement hat den Vorteil der einfachen Umsetzung
der Grundrechenarten Addition und Subtraktion.
– Beispiel für 4 bit Darstellung
Zweierkomplement-Darstellung mit 4 bit für eine ganze Zahl
52
Schlichter, TU München
4.4. INTERNDARSTELLUNG VON INFORMATION
W+ =
3
X
bi × 23−i (positive Zahl)
i=1
3
W− = −2 +
3
X
bi × 23−i (negative Zahl)
i=1
mit bi ∈ {0, 1}
positive Zahl: erstes Bit ist 0
negative Zahl: erstes Bit ist 1
– Formel für Wert einer Zweierkomplement-Zahl
n−1
W = −b0 × 2
+
n−1
X
bi × 2n−1−i
i=1
mit bi ∈ {0, 1}. n ist hier die Anzahl der Bitstellen.
∗ Beispiel
Wert der Zahl W: -1
Binärdarstellung mit 4 Bit: 1111
W = −23 + 22 + 21 + 20 = −8 + 7 = −1
– Rechnen mit Zweierkomplement-Zahlen
Negativbildung und Grundrechenarten sind einfach durchführbar.
∗ Negativbildung einer Zahl
Die Berechnung der negativen Zahldarstellung aus der entsprechenden positiven Zahldarstellung erfolgt durch die Komplementbildung (Bits werden
invertiert), anschließend wird 1 addiert. Dies ergibt die Zweierkomplement
Darstellung der zur positiven Zahl zugehörigen negativen Zahl.
Beispiel
Zweierkomplement-Codierung mit 8 Bit für -14:
14 =
00001110
Komplement:
11110001
1 addiert:
11110010
∗ Addition von zwei Zahlen
Stellenweise mit Übertrag, analog zum Dezimalsystem.
53
Schlichter, TU München
4.4. INTERNDARSTELLUNG VON INFORMATION
∗ Differenzbildung von zwei Zahlen
Realisierbar durch Addition mit negativer Zahl.
Beispiel
Berechnung 17 - 14:
dezimal
dual
17
00010001
+(-14)
11110010
=3
00000011
4.4.3
Codierung von Text
Alphanumerische Daten - ISO-ASCII 8-bit-Code
Darstellung von alphanumerischen Zeichen (Buchstaben A-z, 0,..,9 und Sonderzeichen) in einer 8-Bit Folge, d.h. Codierung eines Zeichens durch eine (Binär)zahl zwischen 0 und 255.
• ISO = International Standards Organisation
• ASCII = American Standard Code for Information Interchange
• Kleinbuchstaben sind in alphabetischer Reihenfolge durchnummeriert (97 122)
• Großbuchstaben sind in alphabetischer Reihenfolge durchnummeriert (65 - 90)
• Ziffern 0 bis 9 sind in aufsteigender Reihenfolge dargestellt (48 - 57)
• Darstellung von Sonderzeichen, z.B. CR (Carriage Return = Absatzende), LF
(Linefeed = Neuzeile)
• Zu den entsprechenden Zeichen des ASCII Codes wird der jeweilige
Zahlenwert zur Basis 10 angegeben.
Zeichen
a
A
b
B
0
?
CR
Dezimal
97
65
98
66
48
63
13
Binärdarstellung
01100001
01000001
01100010
01000010
00110000
00111111
00001101
54
Schlichter, TU München
4.4. INTERNDARSTELLUNG VON INFORMATION
Einige Systeme arbeiten bei der Netzübertragung noch mit 7-bit ASCII Code.
Dieser enthält viele spezielle, sprachspezifische Zeichen wie ü, ä oder ö nicht.
Diese Zeichen müssen daher in eine 7-bit Darstellung konvertiert werden
(Verwendung eines „Escape-Zeichens“ zur Einleitung von zusätzlichen Zeichen).
Unicode
Ein neuer Standard (Unicode) codiert jedes Zeichen mit zwei Bytes. Damit
sind 65536 verschiedene Zeichen möglich. Unicode verwendet diese Menge um
Zeichen aus allen vorkommenden Alphabeten gemeinsam zu codieren.
4.4.4
Codierung von Bildern und Tönen
Komplexe Informationen wie Bilder und Töne erfordern geeignete Vorgehensweisen bei der Codierung.
Graphiken
Man unterscheidet bei Graphiken zwischen Rastergrafik (Bilder) und Vektorgrafik
Eigenschaft
Dokument besteht aus
Rastergrafik
Folge von Pixeln
Eignung
Platzbedarf DIN A4, 16
Mio Farben, 600dpi
Formate
Fotos
ca 95 MB
BMP, GIF, JPG, PNG
Vektorgrafik
Menge von geometrischen Objekten
Zeichnungen
je nach Umfang ca 10
KB - 1 MB
WMF, VSD, CDR
Rastergrafik - Bilder
Problem: Information gleichmäßig über Fläche verteilt.
• Auflösung des Bildes in Rasterpunkte. Bei Bildern für Bildschirmdarstellung je
nach Auflösungsgrad 60 bis 360 Bildelemente (pixel) pro Zoll (1 Zoll (inch) =
2,54cm).
• Darstellung der Eigenschaften eines Pixels (Grauwert, Farbe, Helligkeit) durch
eine Bitfolge (normalerweise ein oder zwei Byte).
55
Schlichter, TU München
4.4. INTERNDARSTELLUNG VON INFORMATION
• Darstellung von Farbinformation mittels RGB (rot-grün-blau) oder anderen
Codierungen.
• VGA: 640 * 480 * (8 bit pro Pixel / 8 bit pro Byte) = 307200 Byte
• SVGA: 1024 * 768 * (8 bit pro Pixel / 8 bit pro Byte) = 786432 Byte
• Graphics Interchange Format (GIF): häufig vorkommende Folgen von Bytes
werden in Tabelle eingetragen; im Bild Verweis auf Tabelleneintrag.
The rain in Spain falls mainly on the plain, while the rain in the Amazon
just falls ⇒ 85 Zeichen
Abkürzungen: W = the, X = ain, Y = on, Z = falls
W rX in SpX Z mXly Y W plX, while W rX in W AmazY just Z ⇒ 57
Zeichen
• Joint Photographic Expert Group (JPG): Farben des Bildes werden analysiert;
weglassen von Information, die für menschliches Auge nicht wichtig erscheint
(Achtung: Verlust von Information).
Töne
Information gleichmäßig über Zeitdauer verteilt.
111
110
101
100
011
010
001
000
101 111 111 111 110
• Diskretisierung und Digitalisierung, je nach erforderlicher Qualität in 100, 1000
und mehr Werte pro Sekunde. Also Unterteilung der Amplitude in Bereiche,
denen jeweils eine Bitfolge zugeordnet wird.
• Darstellung der Eigenschaften des Tonelements durch ein oder zwei Byte
• Sprache wird beim Telefon 8000 mal pro Sekunde (8kHz) abgetastet.
56
Schlichter, TU München
4.4.5
4.4. INTERNDARSTELLUNG VON INFORMATION
Komprimierung
Kompression von Daten (vor allem bei Bildern und Tönen) um Speicher- und
Übertragungskosten zu reduzieren.
• Verlustfreie Kompression
Ausnutzung von Mustern und Redundanzen in den Daten; Ausnutzung der
Häufigkeit von Symbolen durch Änderung der Codierung.
• Verlustbehaftete Kompression
Ausnutzung von Medien- und Wahrnehmungseigenschaften, z.B. bei MP3 die
Nutzung von psychoakustischen Eigenschaften und des Hörverhaltens von
Menschen.
57
Kapitel 5
Systemsoftware
Ohne Programme ist die Hardware nicht arbeitsfähig. Bei den Programmen werden zwei Klassen unterschieden: Systemprogramme und Anwendungsprogramme. Die Systemprogramme, insbesondere das Betriebssystem, stellen dem Benutzer und Anwendungsprogrammen elementare Dienste zur Verfügung.
• Fragestellungen des Abschnitts:
– Was sind die Aufgaben eines Betriebssystems?
– Welche Dienste bietet ein Betriebssystem zur Arbeit mit Massenspeichern
(Festplatte)?
– Was sind Prozesse (im Gegensatz zu Programmen)?
– Wie wird der Arbeitsspeicher verwaltet?
5.1
Einführung
Betriebssysteme verwalten (knappe) Ressourcen eines Rechners und schirmen
Anwendungsprogramme von den genauen Eigenschaften der Hardware ab.
Beispiele dafür sind die Ausführung mehrerer Programme mit einem Prozessor
(CPU), die Zuweisung von Speicher an die Programme und die transparente
Verwaltung verschiedener Drucker und Massenspeicher (z.B. Festplatten).
5.1.1
Aufgaben des Betriebssystems
Sichten
1. Top-Down-Sicht
58
Schlichter, TU München
5.1. EINFÜHRUNG
Abschirmung von der Komplexität und den genauen Eigenschaften der
Hardware. Das Betriebssystem ist eine virtuelle Maschine, die für den
Anwendungsprogrammierer einfacher zu programmieren ist als die darunter
liegende Hardware.
2. Bottom-Up-Sicht
Das Betriebssystem ist ein ’Betriebsmittelverwalter’. Es steuert alle internen
Abläufe (Prozesse) im Rechner, stellt Dienste für den Mehrbenutzerbetrieb zur
Verfügung und koordiniert die Betriebsmittel des Rechners (Arbeitsspeicher,
Platte, Terminal, Drucker, ...).
Aufgaben
1. Startet und beendet Rechnerbetrieb
2. Lädt Programme, startet und beendet sie
3. Verwaltet Arbeitsspeicher für gleichzeitige Nutzung durch mehrere Programme
4. Steuert Prozessorzuteilung im Falle eines Mehrprogrammbetriebs
5. Stellt Grunddienste für Transport von Daten zwischen Arbeitsspeicher und
E/A-Geräten
6. Verwaltet Dateien auf externem Speicher
7. Prüft Zugangsberechtigung von Benutzern
8. Sammelt Daten für Nutzungsabrechnung und Leistungsoptimierung
Beispielabläufe
• Der Benutzer schreibt einen Text in einem Textverarbeitungsprogramm, hört
zur selben Zeit Musik (über den Computer) und druckt eine Tabelle aus einer
Tabellenkalkulation aus. Am Rechnersystem werden zur selben Zeit mehrere
Geräte genutzt und der Anwender erwartet, dass alles einwandfrei funktioniert.
Die Steuerung aller Abläufe ist eine der Aufgaben des Betriebssystems.
• Nun möchte der Anwender den Text ausdrucken, obwohl der Ausdruck der
Tabelle noch nicht beendet ist. Das Betriebssystem muss hier sicherstellen, dass
erst die Tabelle zu Ende gedruckt wird, und dann der Text.
59
Schlichter, TU München
5.1.2
5.1. EINFÜHRUNG
Hardware-Software Struktur
Benutzer/Anwender
Anwendungssoftware
graphische Benutzerschnittstelle
Dienstprogramme
Betriebssystemkern
Hardware
• Das Betriebssystem besteht aus folgenden Komponenten
– Dienstprogramme: machen Betriebssystemfunktionen und -Parameter dem
Benutzer direkt zugänglich, z.B. Zugriff auf die aktuelle Systemkonfiguration.
– Hardware-unabhängiger Teil
– Hardware-abhängiger Teil mit Treiberprogrammen (z.B. Druckertreiber,
Graphikkartentreiber)
– (Graphische Benutzerschnittstelle: stellt Anwendungsprogrammen und
Dienstprogrammen des Betriebssystems Dienste zur Interaktion mit dem Benutzer zur Verfügung) - nicht Teil des engeren Betriebssystems.
• Das Betriebssystem ist üblicherweise auf der Festplatte gespeichert. Zum Laden
des Betriebssystems von der Festplatte muss ein Basis Ein/Ausgabesystem
(BIOS = "Basic I/O System") existieren, um die Festplatte anzusprechen. Das
BIOS wird auf einem eigenen Chip, und nicht auf der Festplatte gespeichert.
5.1.3
Betriebssysteme versus Benutzeroberflächen
Abgrenzung zwischen Betriebssystemen und (graphischen) Benutzeroberflächen
60
Schlichter, TU München
5.1. EINFÜHRUNG
Betriebssystem
• ist ein Programm, das dem Benutzer und Anwendungsprogrammen elementare
Dienste zur Verfügung stellt
• abstrakte Schnittstelle zur Hardware (d.h. Betriebssystem abstrahiert die
Eigenschaften der Hardware)
• Verwaltung der Ressourcen des Rechners (Arbeitsspeicher, Zugriff auf E/AGeräte, Prozessor)
Graphische Benutzeroberfläche / Fenstersystem
• Bereitstellung einer komfortablen Schnittstelle zur Bedienung von Anwendungsprogrammen und zum Aufruf von Betriebssystemdiensten (Dienste, welche die Anwendungsprogramme und Dienstprogramme des Betriebssystems
nutzen können)
• Bildliche Umsetzung von Betriebssystemdiensten (z.B. Mülleimer, Verschieben mit der Maus)
• Desktop-Metapher (Nachbildung eines Schreibtisches)
5.1.4
Wesentliche Komponenten eines Betriebssystems
• Dateiverwaltung (externer Speicher): Transparente Verfügbarmachung von
externen Speichermedien; auf Festplatte werden Informationen in Dateien
gespeichert.
• Prozessverwaltung: Aufteilung des Prozessors auf mehrere gleichzeitig
laufende Aufgaben.
• Speicherverwaltung (interner Speicher): Aufteilung des Arbeitsspeichers auf
mehrere gleichzeitig laufende Aufgaben (Programme).
• Ein/Ausgabegeräte-Verwaltung: Abstraktion der Geräteeigenschaften und Behandlung konkurrierender Zugriffe.
5.1.5
Aktuelle Betriebssysteme
• DOS / Windows für Arbeitsplatzrechner/Clients und Arbeitsgruppen-Server,
MacOS
61
Schlichter, TU München
5.2. DATEIVERWALTUNG
• Unix (Linux, Solaris, HPUX, Irix, ...) für Server (insbes. Web-Server) und
Arbeitsplatzrechner
• MVS (IBM) für Großrechner/Server
• BS2000 (Siemens) für Großrechner/Server
• PalmOS, Windows Mobile für PDAs (Handhelds)
5.2
Dateiverwaltung
Ein Beispiel für die Aufgaben des Betriebssystems ist die Verfügbarmachung von
externen Speichermedien für die laufenden Programme. Damit die Anwendungsprogrammierer und Benutzer nicht mit Sektoren usw. umgehen müssen, werden
die Speichermedien in Dateien organisiert.
• Dateien haben einen Namen, einen Inhalt und eine Menge von Attributen (z.B.
Zugriffsrechte, Länge, Erzeugungs-/Modifikationszeit)
• Datei-Inhalt
Der Inhalt einer Datei ist eine Folge von Bytes, die von einem Programm
interpretiert werden, z.B. als Text, als Zahlen, als Bild oder als Folge von
Maschinenbefehlen. Die Art der Interpretation hängt vom jeweiligen Programm
ab.
• Operationen mit Dateien
Typische Operationen mit Dateien sind: Lesen, Schreiben, Ändern (Editieren),
Kopieren, Ändern des Dateinamens, Ändern der Dateiattribute.
• Dateisysteme
1. erlauben das Ansprechen von Dateien durch logische Namen (anstatt durch
physikalische Adressen auf der Festplatte).
2. erlauben Verwaltung von Dateien (create, delete, open, close, read, write,
append, copy, move)
3. gruppieren Dateien in Verzeichnissen (Directories); hierarchisches (baumartiges) Dateisystem, z.B. Windows
62
Schlichter, TU München
5.2. DATEIVERWALTUNG
4. erlauben Spezifikation und Durchsetzung von Zugriffsschutz (z.B. Einrichtung von Benutzergruppen)
5. Informationen zu Dateien
Dateien werden verschiedene Informationen zugeordnet, z.B. Name, Größe,
Typ
Name
Größe
progamme
RN.zip
Dateiordner
954 KB
Recycler
CColorSD
S
H
R
A
Typ
WinZip File
Dateiordner
1 KB
Datei
Geändert
am
03.07.00
13:31
24.04.00
10:01
28.11.99
11:29
30.10.00
18:33
Attribute
A
HS
HA
Systemdatei
versteckte Datei (Hidden)
schreibgeschützte Datei
zu archivierende Datei
• Physikalische Datei-Speicherung
Eine Datei wird als eine Folge von Blöcken gespeichert. Jeder Block besteht
wiederum aus einer Folge von Bytes. Die Größe der Blöcke ist abhängig von
dem jeweiligen Datei-/Betriebssystem, z.B. 1 KB, 16 KB, oder 32 KB.
63
Schlichter, TU München
5.2. DATEIVERWALTUNG
– Es werden immer ganze Blöcke zur Dateispeicherung verwendet, auch wenn
der Platz vom Dateiinhalt nicht komplett benötigt wird. Beispielsweise
benötigt auch eine Datei mit nur einem Byte als Inhalt immer einen ganzen
Block ⇒ Verschwendung von Speicherplatz; der nicht benötigte Teil des
Blockes kann von keiner anderen Datei verwendet werden.
01000110100101001110101111011000110101001011010111
gesamte Platte
Partition 1
primärer und
sekundärer
Bootsektor
Partition 2
Partition 3
Wurzelverzeichnis
FAT
Dateiallokationstabelle
Datenblöcke
– Die read-Zugriffsmethode des Betriebssystems liefert dem aufrufenden Programm logische Sätze beliebiger Länge. Zwischen Datei- und Arbeitsspeicher werden aber immer nur Blöcke übertragen.
– Partitionen verhalten sich wie eigene Festplatten.
– Bei Festplatten werden Blöcke in den Sektoren gespeichert.
– File Allocation Table (FAT)
Ein zentraler Bereich der Festplatte wird benutzt um die Zuordnung von
Dateien zu Blöcken und den Zustand von Blöcken (belegt oder nicht belegt)
zu speichern. Bei Windows ist dies z.B. der FAT (File Allocation Table), bei
Unix der Superblock eines Filesystems.
∗ Eine FAT-Zelle entspricht jeweils einem Block, der einer Datei zugeordnet
ist. In einer FAT-Zelle steht entweder die Nummer der nächsten FATZelle (d.h. des nächsten Dateiblocks) oder eine negative Zahl. Letzteres
bedeutet, dass es keinen nachfolgenden Dateiblock gibt, die aktuelle FATZelle entspricht dem letzten Dateiblock.
64
Schlichter, TU München
5.3. PROZESSORVERWALTUNG / PROZESSORZUTEILUNG
∗ Unterschiedliche Varianten:
FAT16: ca. 216 verschiedene Blöcke.
FAT32: ca. 228 verschiedene Blöcke.
NTFS (New Technology File System) ist ein alternatives Filesystem für
Windows.
5.3
Prozessorverwaltung / Prozessorzuteilung
Aufgabe der Prozessverwaltung ist die Koordination mehrerer gleichzeitig
laufender Programme.
5.3.1
Prozesse
Ein Prozess ("process, task") ist ein Ablauf eines Programms, der von dem
Betriebssystem verwaltet wird. Der Ablauf ist bestimmt durch die Befehle und
Daten des Programms.
Eigenschaften
• "Programm in Ausführung" (Folge von Maschinenbefehlen eines Programms
das gerade durch den Prozessor (CPU) ausgeführt wird).
• Prozess hat einen Zustand und wird durch einen Kontext beschrieben
(Prozesskontrollblock).
65
Schlichter, TU München
5.3. PROZESSORVERWALTUNG / PROZESSORZUTEILUNG
• Verwaltungseinheit des Betriebssystems.
• Operiert in einem "eigenen" Teil des Arbeitsspeichers (Prozessadressraum).
• Konkurriert mit anderen Prozessen um Betriebsmittel (z.B. Arbeitsspeicher,
Prozessor, Zugriff auf Festplatte).
• Kommuniziert mit anderen Prozessen über Nachrichten.
• Unterscheidung zwischen
– Benutzerprozessen: vom Benutzer gestartete Programme.
– Systemprozessen: erbringen System-Dienste des Betriebsystems, beispielsweise Drucken.
Zustände eines Prozesses
Im Zustand "laufend" ist dem Prozess die CPU zugeteilt, d.h. er kann Befehle
ausführen. Der Zustand "wartend" tritt ein, wenn der Prozess auf das Ende
der E/A-Übertragung wartet, d.h. während dieser Zeit kann ein anderer Prozess
rechnen.
laufend
(running)
zuteilen
(dispatch)
entziehen
(interrupt)
bereit
(ready)
erzeugen
(create)
melden
(wake up)
anhalten
(block)
wartend
(waiting)
• Nur das "Anhalten" liegt in der Zuständigkeit der Prozesse selbst. Die anderen
Übergänge werden von Betriebssystemkomponenten bewirkt (Dispatcher,
Scheduler).
• Das Betriebssystem verwaltet Listen der Prozesse im Zustand "bereit" oder
"wartend".
66
Schlichter, TU München
5.3. PROZESSORVERWALTUNG / PROZESSORZUTEILUNG
• In jedem Zustand kann der Prozess gelöscht, und damit aus dem System
entfernt werden.
5.3.2
Prozessorzuteilung
Laufenden Prozessen ist der Prozessor (CPU) als exklusives Betriebsmittel
zugeteilt. Bei einem Zeitmultiplexverfahren erhält der Prozess für eine gewisse
Zeit den Prozessor zur Ausführung. Nach Ablauf der Zeitscheibe wird dem
Prozess der Prozessor wieder entzogen. Er wird in die Warteschlange der
rechenbereiten Prozesse eingereiht.
Swap In
Swap Out
Suspendierte Prozesse
Warteschlange(n)
rechenbereiter Prozesse
starten
E/A
CPU
zuteilen
(dispatch)
E/A-Warteschlangen
• In die E/A-Warteschlangen werden alle diejenigen Prozesse eingereiht, die
momentan auf Ein-/Ausgabe warten, d.h. bis das E/A-Gerät fertig ist. Während
dieser Zeit können die Prozesse nicht rechnen und würden die CPU blockieren,
falls sie die CPU zugeteilt bekommen würden. Damit alle Prozesse einen
vernünftigen Anteil an der CPU-Nutzung und am Arbeitsspeicher bekommen,
müssen langrechnende Prozesse gelegentlich suspendiert werden, damit auch
andere Prozesse eine Chance bekommen => Auslagern von Prozesse auf die
Festplatte (Swap-In und Swap-Out)
5.3.3
Prozess-Unterbrechungen (interrupt)
Unterbrechungen dienen dazu, die Prozessausführung aufgrund von Ereignissen
zu stoppen und gegebenenfalls nach Durchführung einer Ereignisbehandlung
fortzusetzen. Beispiele: Rückmeldung eines E/A-Gerätes, Auftreten eines Alarms
(z.B. Division durch 0), Ende einer Zeitscheibe (Taktgeber).
67
Schlichter, TU München
5.3. PROZESSORVERWALTUNG / PROZESSORZUTEILUNG
• Unterbrechungen werden durch Hardware generiert (nur im Sonderfall
abhängig von laufendem Prozess, z.B. Division durch 0).
• Ablauf der Unterbrechungsbehandlung
1. Während Prozess A rechnet, tritt eine Unterbrechung auf.
2. Der Prozessor setzt seine Programmausführung im Betriebssystem fort
(Unterbrechungsbehandlung)
3. Der Zustand von Prozess A wird in den Prozess-Kontrollblock gespeichert
4. Die Unterbrechungsbehandlung wird ausgeführt (falls nötig)
5. Ein neuer (rechenbereiter) Prozess B wird ausgewählt (vom Scheduler)
6. Der Zustand von Prozess B wird geladen (Dispatcher)
7. Die Bearbeitung von Prozess B wird fortgesetzt (Sprung in den Programmcode von B)
• Unterbrechungsverarbeitung
Der Interrupt-Handler (Unterbrechungsbehandlungsroutine) identifiziert den
Typ der Unterbrechung und wählt Programm zur Behandlung aus.
68
Kapitel 6
Grundlagen der Programmierung
In diesem Kapitel wird kurz in die „Kunst des Programmierens“ eingeführt. Dazu
werden die grundlegenden Aspekte hinsichtlich Datenstrukturen, Programmkonstrukte, objekt-orientierte Programmierung sowie Strukturierung von Programmen behandelt.
• Fragestellungen des Abschnitts:
– Was ist ein Algorithmus?
– Welche elementaren Datenstrukturen gibt es?
– Was sind die grundlegenden Konstrukte einer Programmiersprache?
– Was ist unter Objekt-orientierter Programmierung zu verstehen?
– Was versteht man unter Modularisierung und Rekursion?
6.1
Einführung
Unter „Programmierung“ versteht man den Vorgang, in dem Anweisungen
für den Computer erstellt werden. Diese Anweisungen werden in Sprachen
geschrieben, welche Menschen verstehen können und werden für den Computer
in Maschinensprache übersetzt (z.B. C) oder vom Computer mit Hilfe
eines speziellen Interpreterprogramms interpretiert (z.B. Javascript, Makros bei
Word/Excel).
Programm = Daten + Algorithmus
Algorithmus legt die Operationen fest, die auf den Daten ausgeführt werden.
69
Schlichter, TU München
6.1.1
6.1. EINFÜHRUNG
Sicht des Programmierers
Aus der Sicht eines Programmierers ergibt sich folgender Ablauf:
Ablauf der Programmentwicklung
Übersetzen
Maschinenprogramm
Quellprogramm
Erstellen
Interpretieren
Objekt
code
Starten
Spezifikation
Prozess
Ausgaben
Eingaben
• Quellprogramm
Das Quellprogramm ist die Ausgangsform des Programms, z.B. in der
Programmiersprache C, Java oder Basic.
• Übersetzen (Compiler)
Mit Hilfe des Compilers (Übersetzungsprogramm) wird aus dem Quellprogramm ausführbarer Objektcode erzeugt, das „Maschinenprogramm“.
• Objektcode - Maschinenprogramm
Objektcode ist die Interndarstellung des Programms, die für den Computer
verständlich ist, d.h. das ausführbare Programm (Maschinenprogramm). Mit
einem sogenannten "Linker" kann der Objektcode aus mehreren Einzelteilen
zusammengesetzt werden: Ausgangspunkt ist dann ein Quellprogramm, das in
mehreren unterschiedlichen Dateien abgespeichert ist.
• Starten
Damit das Maschinenprogramm ausgeführt wird, muss es gestartet werden.
Das gleiche Programm kann mehrmals gestartet werden, um unterschiedliche
Eingaben zu verarbeiten.
70
Schlichter, TU München
6.2. ALGORITHMUS
• Prozess
Als „Prozess“ wird die Ausführung eines Objektcodes bezeichnet; hier werden
durch das Betriebssystem zusätzliche Daten dynamisch erzeugt, die für die
Ausführung notwendig sind.
• Interpretieren (Interpreter)
Ein Interpreter analysiert das Quellprogramm und führt die Anweisungen
gleich aus, ohne eine separate Datei mit dem Maschinenprogramm zu erzeugen;
deutlich langsamere Ausführungszeit des Programms im Vergleich zu einem
übersetzten Programm.
6.2
Algorithmus
Bevor man anfängt ein Programm, also eine Vorschrift zur Lösung einer Aufgabe,
zu schreiben, muss man zuerst das zu lösende Problem genau beschreiben, d.h.
spezifizieren.
6.2.1
Spezifikation als Ausgangspunkt für ein Programm
Eine Spezifikation ist eine vollständige, detaillierte und unzweideutige Problembeschreibung.
• vollständig: alle relevanten Informationen sind berücksichtigt.
• detailliert: alle Hilfsmittel und Grundaktionen sind aufgelistet, die zur Lösung
zugelassen sind.
• unzweideutig: klare Kriterien sind festgelegt, die bestimmen, wann eine Lösung
akzeptabel ist.
6.2.2
Begriff des Algorithmus
Nach der Spezifikation eines Problems geht es anschließend darum, einen
Lösungsweg zu entwerfen. Da die Lösung i.a. von einem Rechner ausgeführt
werden soll, muss jeder Schritt exakt vorgeschrieben werden. Dies erfolgt mit
Hilfe eines Algorithmus.
• Der Algorithmus ist eine der ältesten Beschreibungstechniken für Abläufe;
benannt nach dem Mathematiker Al-Khwarizmi (ca. 780-850), der am Hofe
des Kalifen von Bagdad wirkte.
71
Schlichter, TU München
6.2. ALGORITHMUS
• Informelle Charakterisierung eines Algorithmus
Ein Algorithmus ist eine detaillierte und explizite Vorschrift zur schrittweisen
Lösung eines Problems, d.h. eine Vorschrift zur Lösung einer Aufgabe, wobei
die Vorschrift
– präzise formuliert,
– in endlicher Form dargestellt und
– effektiv ausführbar ist.
Die Aufgabe kann aus vielen Anwendungsgebieten stammen, z.B. Berechnung
numerischer Werte, Text- und Bildverarbeitung, Handhabung von Objekten
(Robotik), Zuteilung von Ressourcen, Steuerung von Geräten.
• Formale Definition (nach H. Kübe):
Ein Algorithmus ist eine in der Beschreibung und Ausführung endliche,
deterministische und effektive Vorschrift zur Lösung eines Problems, die
effizient sein sollte.
– Hierin bedeuten:
∗ endlich in Beschreibung: der Algorithmus kann mit endlich viel Text
komplett aufgeschrieben werden.
∗ endlich in Ausführung: nach einer endlichen Zeit wird der Algorithmus
beendet.
∗ deterministisch: eindeutige Bestimmung des nächsten Schrittes.
∗ effektiv: eindeutige Ausführbarkeit der Einzelschritte.
∗ effizient: möglichst geringer Verbrauch an Ressourcen (z.B. Arbeitsspeicher).
– Ein Algorithmus heißt
terminierend, wenn seine Ausführung für jede mögliche Eingabe nach
einer endlichen Anzahl von Schritten endet.
determiniert, wenn er für eine bestimmte Eingabe bei allen Abläufen
immer dieselbe Ausgabe liefert
– Beispiel Personalführung
Eingabe: Liste aller Mitarbeiter
72
Schlichter, TU München
6.2. ALGORITHMUS
wiederhole solange die Liste nicht leer ist
wiederhole für alle Mitarbeiter
führe willkürlich einen der folgenden Einzelschritte aus:
belobige den Mitarbeiter
tadle den Mitarbeiter
entlasse den Mitarbeiter (entferne ihn aus der Liste)
Ende Willkür
Ende Wiederhole
Ende Wiederhole
Ausgabe: Ursprüngliche Liste aller (auch ehemaliger) Mitarbeiter mit Lobund Tadelvorgängen.
Algorithmus ist nichtdeterministisch, nichtterminierend, nichtdeterminiert.
• Formulierung eines Algorithmus
– Sprache
Die Formulierung kann in natürlicher oder formaler Sprache vorliegen
– Ausführung
Die Ausführung kann durch Menschen oder eine Maschine erfolgen.
Die Ausführung ist effektiv, wenn sie aus einer Folge von elementaren
Bearbeitungsschritten besteht, die für den beabsichtigten Ausführenden zur
Verfügung stehen.
– Beispiele für Algorithmen
∗ Nicht maschinell ausführbares Beispiel
Bestimme das Alter der ältesten Person im Raum
1.
2.
3.
4.
Gehe zur ersten Person
Frage Person nach dem Alter
Merke das Alter
Solange noch nicht alle Personen gefragt, wiederhole Schritte 4.a bis 4.c
a) gehe zur nächsten Person
b) frage nach dem Alter
c) wenn das Alter größer als das gemerkte Alter, dann merke Dir das
neue Alter
5. Älteste Person ist "gemerktes Alter" alt
∗ Maschinell ausführbares Beispiel
Bestimme die größte Zahl aus einer Menge von Zahlen
1. Lies die erste Zahl
2. Initialisiere Platzhalter/Variable z mit der gelesenen Zahl
73
Schlichter, TU München
6.2. ALGORITHMUS
3. Lies die nächste Zahl
4. Wenn diese Zahl größer z, dann setze z auf diese Zahl
5. Wenn noch Zahlen vorhanden, dann gehe zu Schritt 3
6. Gib den Wert von z aus
Dabei ist vorausgesetzt, dass die Menge der Zahlen so in der Maschine
organisiert ist, dass die Maschine den Zugriff auf die „erste“ Zahl und auf
die jeweils „nächste“ Zahl ausführen kann, z.B. als Liste.
6.2.3
Komponenten eines Algorithmus
Welche Bestandteile treten in einem Algorithmus auf, werden also benutzt um die
Vorschrift zu formulieren?
Objekte und Anweisungen
In ihrer allgemeinsten Form bestehen Algorithmen aus folgenden Bestandteilen:
• Objekte und
• Anweisungen, die Operationen an Objekten realisieren.
Beispiele
Objekte sind z.B. Zahlen, Adressen, Textdokumente. Operationen sind z.B.
Addition, Suche, Ausdrucken, Rechtschreibprüfung.
Die Operationen bewirken, dass die Objekte von einem ursprünglichen Zustand
(Anfangs- oder Eingangszustand) über eventuell notwendige Zwischenzustände
in einen Endzustand gebracht werden. (EVA-Prinzip: Eingabe -> Verarbeitung
-> Ausgabe)
Abstraktion
Bei der Beschreibung der Objekte und Operationen ist Abstraktion wichtig. Das
bedeutet den Übergang von konkreten Gegebenheiten in eine allgemein gültige
Strukturierung der Algorithmen:
• Die Abbildung der realen Objekte auf Daten und der Operationen auf einen
vorgegebenen Vorrat von Anweisungen und Kontrollstrukturen (z.B. Abbildung
einer Menge von Zahlen auf eine Liste mit den Operationen Einfügen, Löschen,
Sortieren und Suchen).
74
Schlichter, TU München
6.2. ALGORITHMUS
Abstraktion bedeutet: man konzentriert sich auf das Wesentliche; unwesentliche
Anteile werden weggelassen.
Struktur eines Algorithmus
Jeder Algorithmus kann soweit in detaillierte Einzelschritte zerlegt (verfeinert)
werden, bis er nur noch aus folgenden Grundstrukturen für die Operationen
besteht:
• elementarer Einzelschritt: nicht weiter zerlegbare Verarbeitung, z.B. "schalte
rotes Licht ein".
• Sequenz: Folge von Einzelschritten (Anweisungen); Einzelschritte können zu
Blöcken zusammengefasst werden. Beispiel
schalte rotes Licht ein;
warte eine Minute;
schalte gelbes Licht ein;
• Alternative: über eine Bedingung gesteuerte Verzweigung,
falls Bedingung
dann ja-Fall
sonst nein-Fall
Beispiel
falls b ungleich 0 dann berechne a/b und gib Ergebnis aus;
sonst melde Fehler
• Auswahl (Selektion): Verallgemeinerung der Alternative,
• Iteration: Wiederholung einer Menge von Einzelschritten.
wiederhole i = 1, .., n
verarbeite aktuelles Konto Ki;
– Beispiel: Berechnung Zinseszinsen
Zu Beginn des Jahres 2000 werde ein Kapital von 10000 Euro zu einem
Zinssatz von 3,75 % angelegt. Wie groß ist das Kapital am Ende des Jahres
2005 ?
75
Schlichter, TU München
6.2. ALGORITHMUS
Gewinn in 2000
Mit diesen Strukturen können alle Algorithmen beschrieben werden.
Blöcke
Operationen können zu Blöcken zusammengefasst werden. Damit ist strukturiertes oder systematisches Programmieren möglich. Der gesamte Block wird als
komplexe Anweisung verstanden und als Einheit in seiner Umgebung betrachtet, wobei Blöcke auch ineinander geschachtelt werden können. Blockbildung ist
eine Vorstufe zur Modularisierung. Für jeden einzelnen Block ist nur ein Eingang
und nur ein Ausgang notwendig. Die Klammerung von Operationen kann über
spezielle Schlüsselwörter oder auch durch Klammern erfolgen, z.B. {} in C oder
Java.
6.2.4
Darstellung von Algorithmen
Es gibt eine Reihe unterschiedlicher Darstellungsmethoden für Algorithmen: informelle textuelle Beschreibung, programmiersprachliche Beschreibung, graphische Beschreibung, z.B. Flussdiagramme oder Nassi-Shneiderman.
Flussdiagramm
Beispiel: Größter gemeinsamer Teiler von M und N
(Euklid’scher Algorithmus)
76
Schlichter, TU München
6.2. ALGORITHMUS
x und y sind Variablen/Platzhalter.
Animation größter gemeinsamer Teiler
Link zu Information
Programmiersprachliche Darstellung
x = M;
y = N;
while (x != y)
if (x > y) x = x - y;
else y = y - x;
z = x;
"x != y" bedeutet hier die Bedingung "x ungleich y".
6.2.5
Algorithmus und Programm
Programme sind spezielle Darstellungsformen für Algorithmen.
77
Schlichter, TU München
6.2. ALGORITHMUS
Zusammenhang
Der Zusammenhang zwischen einem Algorithmus und einem Programm läßt sich
folgendermaßen beschreiben:
• Ein Programm ist die Formulierung eines Algorithmus in einer Sprache, die der
Computer verstehen und abarbeiten kann.
• Aus der Sicht der „Maschine“ ist ein Programm eine abgeschlossene (also
endliche) Folge von ausführbaren Anweisungen.
• Damit ist eine Automatisierung des Algorithmus möglich.
• Programmiersprachen sind ein Hilfsmittel zur Abbildung der Daten- und
Kontrollstrukturen des Algorithmus in die Sprachkonstrukte des betreffenden
Computers (Maschinensprache, Arbeitsspeicher).
• Ausführbare Programme sind die Abbildung der Daten- und Kontrollstrukturen
in die Interndarstellung des betreffenden Computers. Man spricht hier von
Objektcode. Als Interndarstellung wird die Maschinensprache eines Rechners
verwendet; die Maschinensprache ist abhängig von dem jeweiligen Hersteller
des Prozessors.
Zeitlicher Zusammenhang zwischen Algorithmus und Programm
Spezifizieren
Algorithmisieren
Problem
Programmieren
Algorithmus
Quellprogramm
Mensch
Ausgaben
Eingaben
Maschine
Maschinenprogramm
Prozess
78
Schlichter, TU München
6.3
6.3. DATENTYPEN UND AUSDRÜCKE
Datentypen und Ausdrücke
In diesem und dem folgenden Abschnitt betrachten wir die Grundkonstrukte, die
in allen Programmiersprachen Verwendung finden.
• Informationen werden auf einem Rechner durch Daten repräsentiert. Die
Umsetzung von Daten in Information wird als Interpretation bezeichnet.
• Allgemeine Eigenschaften von Daten
1. Es existieren Basisdaten wie Zeichen, Wahrheitswerte (true, false), Zahlen
(natürliche Zahlen, ganze Zahlen, Gleitkommazahlen).
2. Daten können angeordnet und miteinander in Beziehung gesetzt werden (z.B.
hierarchische Datenstrukturen, Listen).
3. Algorithmen hängen in starkem Maße von der gewählten Datenstruktur
(d.h. dem Datentyp und die unterstützten Operationen) ab. Durch geeignete
Datenstrukturen können Algorithmen übersichtlicher und effizienter werden.
• Elementare Datentypen
Ein Datentyp ist die Zusammenfassung von Werten gleicher Art zu einer
Klasse, z.B. alle ganzen Zahlen, alle Gleitkommazahlen, alle Zeichen.
– Basis-Datentypen
Die Verwendung der Schlüsselwörter ("keywords") sind abhängig von der
jeweiligen Programmiersprache.
∗
∗
∗
∗
∗
int: Ausschnitt der ganzen Zahlen (im Rechner darstellbare ganze Zahlen)
float: Menge der Gleitkommazahlen
double: Menge der Gleitkommazahlen mit doppelter Genauigkeit
char: Menge der Zeichen
boolean: Werte true und false
– Datentyp Verbund (struct)
Ein Verbund entsteht durch die Zusammenfassung mehrerer zusammengehöriger Datenwerte zu einem komplexen Datenwert.
∗ Beispiel
In der folgenden Tabelle bildet jede Zeile einen komplexen Datenwert vom
Datentyp „Person“
Vorname
Fritz
Hans
Name
Müller
Albers
Adresse
Hauptstr. 7
Bahnhofstr. 4
79
Alter
38
63
Schlichter, TU München
6.3. DATENTYPEN UND AUSDRÜCKE
∗ Programmiersprachliche Darstellung
Beispiel gemäß der Programmiersprache C
struct person {
char vorname[30];
char name[30];
char adresse[100];
int alter;
}
Beispiel der Nutzung:
struct person p; /* Deklaration der Person p */
p.vorname = "Fritz"; /* Vorname von Person p */
p.name = "Müller"; /* Name von Person p */
∗ in Java: Zusammenfassung von zusammengehörigen Datenwerten zu
Objekten, d.h. jede Tabellenzeile entspricht einem Objekt.
∗ Im Gegensatz zu (Verbund-)Datentypen versteht man unter einer Datenstruktur den Datentyp zusammen mit der Menge von Operationen, die auf
den Werten dieses Datentyps erlaubt sind. Beispiele für solche Operationen sind Addition und Substraktion bei ganzen Zahlen sowie Einfügen und
Löschen bei Listen.
• Ausdrücke
Ausdrücke dienen dazu, Werte von Datentypen zu berechnen. Sie können aus
Konstanten, Variablen und Operationszeichen aufgebaut werden.
– Variable
Das Konzept der „Variable“ findet sich in den meisten Programmiersprachen.
Es wurde aus der Mathematik übernommen und dahingehend abgewandelt,
dass eine Variable nacheinander unterschiedliche Werte repräsentieren kann.
∗ Eine Variable ist eine mit Namen versehene Speicherzelle für Datenwerte;
Variable können gelesen und geschrieben werden. Im letzten Fall spricht
man auch von Zuweisen eines Wertes an eine Variable.
∗ Jeder Bezeichner (Name) einer Variablen muss i.a. vor seiner ersten
Benutzung deklariert werden. Dabei wird festgelegt, dass der Name für
eine Variable verwendet wird und meist wird der Variablen dabei ein
Datentyp zugeordnet.
Beispiele für Ausdrücke
2 + 15 * (10 - 6)
a + b
wobei a und b Variable sind.
80
Schlichter, TU München
6.4
6.4. PROGRAMMKONSTRUKTE
Programmkonstrukte
Ein Programm besteht aus einer Menge von Anweisungen, die entweder Werte an
Variable zuweisen oder den Kontrollfluss steuern. Der Kontrollfluss bestimmt die
Folge der Anweisungen, die bei einer Programmausführung ausgeführt werden.
6.4.1
Zuweisungen
In einer Zuweisung wird einer Variablen ein neuer Wert zugeordnet. Ein ggf.
vorhandener alter Wert wird dabei gelöscht („überschrieben“).
• Eine Variable entspricht einem Bereich im Arbeitsspeicher, der über einen
symbolischen Namen angesprochen werden kann (Speicherzelle). Variablen
können Daten beliebiger Datentypen speichern. Eine einzelne Variable ist aber
in vielen Programmiersprachen auf Daten eines Datentyps festgelegt.
• Beispiele
i = 2;
i = i + 2; /* Wert von i wird um 2 erhöht und wieder an i
zugewiesen */
x = x * (y + 1);
Zuweisungen werden folgendermaßen bearbeitet:
Zunächst wird die rechte Seite der Zuweisung ausgewertet.
Das Ergebnis wird anschließend der linken Seite als Wert zugeordnet.
Die linke Seite ist eine Variable und kein arithmetischer Ausdruck.
6.4.2
Alternativanweisungen
Die Alternativanweisung erlaubt die Auswahl von Alternativen abhängig von
einer Bedingung. Die Alternativen sind selbst wieder Anweisungen.
• Beispiel 1
if (a > b)
z = a; /* Zuweisung an die Variable z */
else
z = b;
• Beispiel 2 (Schachteln von Alternativen)
if (a > b) z = a;
else if (a < b) z = b;
else z = 0;
81
Schlichter, TU München
6.4. PROGRAMMKONSTRUKTE
• Neben einfachen Alternativanweisungen gibt es in den meisten Programmiersprachen noch das verallgemeinerte Konstrukt der Auswahl (switch, case).
6.4.3
Schleifen
Eine Schleife beschreibt die wiederholte Ausführung einer Anweisungsfolge.
Dabei wird zusätzlich festgelegt, wann die Wiederholung beendet werden soll.
• Beispiel 1
N = 10
sum = 0
for (i = 0; i < N; i=i+1) sum = sum + i;
– Bestandteile einer for-Schleife
Anfangswert der Laufvariable i, z.B. i =0
Endwert der Laufvariable i, z.B. i < N
Inkrementierung (Hochzählen) der Laufvariable i nach jedem Schleifendurchlauf, z.B. i = i + 1
Anweisungen, die bei jedem Schleifendurchlauf ausgeführt werden, z.B.
sum = sum + i
• Beispiel 2
sum = 1
while (i > 0) {
sum = sum * i;
i = i - 1;
}
• Beispiel 3
Einfache unendliche Schleife
while (true) {
......
}
• Neben der while-Schleife gibt es in manchen Programmiersprachen noch
andere Konstrukte, wie z.B. do-while/repeat-until, die die Bedingungen
erst am Ende der zu wiederholenden Anweisung überprüfen.
82
Schlichter, TU München
6.5
6.5. OBJEKTORIENTIERTE PROGRAMMIERUNG
Objektorientierte Programmierung
Bei der objektorientierten Programmierung (z.B. Sprache Java) wird ein
Softwaresystem durch eine Menge von Objekten realisiert, im Gegensatz zur
prozeduralen Programmierung (z.B. Sprache C), wo die Anweisungen im
Vordergrund stehen.
• Im objektorientierten Programmieren stehen die Daten im Vordergrund. Daten
werden in Objekten zusammengefasst ("Verkapselung"). Die Funktionen
können lokal zu den Objekten definiert werden.
• Die Funktionen werden Methoden genannt.
• Objekt - Klasse
Ein Objekt ist ein Exemplar (Instanz) eines Gegenstandes oder Begriffs der
Modellwelt; ein Objekt ist möglichst stark an Gegenstand oder Begriff der
realen Welt angelehnt.
– Objekt
Ein Objekt hat
1. eine Identität, z.B. vom Benutzer vergebene Namen.
2. einen Zustand, definiert durch Attribute und die zugehörigen Attributwerte
("Instanzvariable", private Daten).
3. ein Verhalten, spezifiziert durch eine Menge von Operationen (Methoden),
die auf den Attributen agieren und Operationen anderer Objekte aufrufen
können;
4. Beziehungen zu anderen Objekten.
Notation für den Zugriff auf die Objektdaten
Objektname.Attributname = Attributwert
– Klasse
Objekte mit gleichen Attributen (nicht Attributwerten) und gleichem
Verhalten werden zu Klassen zusammengefasst. Ein Objekt "weiß", zu
welcher Klasse es gehört. In der Klasse wird festgelegt: Die Algorithmen
für das Verhalten (Methoden) und welche Attribute die Objekte haben.
∗ Beispiel: Klasse Person, zu der die Objekte Schmidt, Mayer, Müller
gehören.
83
Schlichter, TU München
6.5. OBJEKTORIENTIERTE PROGRAMMIERUNG
∗ Beispiel: Klassendefinition
public class circle {
double x, y; // Koordinaten der Kreismitte
double r; //Radius des Kreises
// Konstruktor für die Erzeugung von Objekten:
public circle (double xcoord, double ycoord, double
radius)
{x = xcoord; y = ycoord; r = radius;}
// Methoden, die Umfang und die Fläche
// als Ergebnis liefern:
public double circumference(){return 2 * 3.14159 * r;}
public double area(){return 3.14159 * r * r;}
}
double bezeichnet eine Variable mit doppelter Genauigkeit.
∗ Schutzmechanismen
Kontrolle des Zugriffs auf Daten und Methoden von außen
public: Zugriff von außen möglich.
private: Zugriff nur von innerhalb der Klasse möglich.
• Erzeugen eines Objekts
Nach der Spezifikation einer Klasse können beliebig viele Objekte für
diese Klasse erzeugt werden => Erzeugen einer Objektinstanz. Jedes Objekt
hat seine eigenen privaten Daten (Attributwerte), während die Methoden
gemeinsam benutzt werden.
– Beispiel
circle kreis1, kreis2; // Vereinbarung zweier Variable
double flaeche, umfang;
kreis1 = new circle(2.0,2.0,1.0);
// Erzeugen des Objekts kreis1
// Mittelpunkt: (2,2), Radius: 1.0
// Abfragen der Fläche von kreis1:
flaeche = kreis1.area();
// Erzeugen des zweiten Kreises
kreis2 = new circle(4.0, -1.0, 10.0);
// Abfragen des Umfangs von kreis2:
umfang = kreis2.circumference()
..............
84
Schlichter, TU München
6.5. OBJEKTORIENTIERTE PROGRAMMIERUNG
• Vererbung
Vererbung ist ein Werkzeug zum Organisieren und Konstruieren von Klassen,
wobei existierende Klassen wiederverwendet werden können.
– Definition - Vererbung
Seien K und Ki, i = 1,..,n Klassen; Vererbung ist eine Beziehung zwischen
K und den Ki, wobei Struktur und Verhalten von K durch Struktur und
Verhalten der Ki bestimmt wird; K "erbt" von den Klassen Ki;
∗ Vererbung definiert eine Beziehung zwischen Klassen; K heißt Unterklasse
(Subklasse) von Ki; Ki nennt man Oberklasse (Superklasse) von K;
∗ Vererbung bewirkt, dass Unterklassen über alle Eigenschaften (Attribute,
Operationen und Beziehungen) der Oberklasse verfügen; Vererbung kann
über mehrere Stufen einer Hierarchie hinweg erfolgen. Vererbung bezieht
sich auf Attribute und Methoden;
Klasse
Klasse
Klasse
Fahrzeug
Auto
BMW
erbt von Fahrzeug
erbt von Auto
∗ Unterscheidung zwischen Einfachvererbung und Mehrfachvererbung
◦ Einfachvererbung: eine Klasse hat nur eine direkte Oberklasse, d.h. n=1.
85
Schlichter, TU München
6.6. MODULARISIERUNG VON PROGRAMMEN
◦ Mehrfachvererbung: eine Klasse hat mehrere direkte Oberklassen
– Beispiel
public class GraphicCircle extends circle {
// Es werden automatisch die Variablen und Methoden
// der Klasse circle geerbt;
// nur die neuen Informationen müssen hier
// aufgeführt werden:
// Die Farben für Rand und Füllfläche.
color o, f;
public GraphicCircle (double xcoord, double ycoord,
double radius, color outline, color fill)
{super(xcoord,ycoord,radius); o = outline; f = fill;}
public void draw(Window dw)
{dw.drawCircle(x, y, r, o, f;}
}
Objekt
Werte für x, y, r,
o und f
Klasse
GraphicCircle
Beschreibung
Klasse circle
Beschreibung
o, f
draw
x, y, r
circumference
area
Die Beschreibung der Klasse "circle" (Oberklasse) spezifiziert die privaten
Daten "x, y, r"; die Klasse "GraphicCircle" (Unterklasse) spezifiziert die
privaten Daten "o, f".
6.6
Modularisierung von Programmen
Die wichtigste Technik für den systematischen Aufbau von Programmen ist die
Modularisierung. Dabei wird das Programm in mehrere eigenständige Einheiten,
die Module zerlegt.
86
Schlichter, TU München
6.6.1
6.6. MODULARISIERUNG VON PROGRAMMEN
Allgemeines
Entwurf von Algorithmen
Beim Entwurf von Algorithmen ist folgende generelle Vorgehensweise sinnvoll:
• Spezifikation der Problemstellung
• Bestimmung der Definitionsbereiche und der Datentypen
• Suche nach / Vergleich mit bekannten Algorithmen, eventuell Erweiterung oder
Anpassung der bekannten Algorithmen
• Zerlegung
des
Problems
in
Teilprobleme ("divide and conquer"-Vorgehensweise); auf jeder Zerlegungsebene
Verwendung von
– Sequenz von Schritten
– Fallunterscheidung (Alternativen)
– Iteration von Schritten (Schleifen)
• Wiederhole diese Vorgehensweise für jedes Teilproblem
Schrittweises Verfeinern von Algorithmen
In vielen Fällen ist es schwierig, direkt und adhoc vorzugehen, da der Umfang des
Problems sehr groß ist und damit auch Lösungen sehr schwierig zu spezifizieren
sind. Bei komplexen Problemen ist es oft auch nicht klar, welche zusätzlichen
Aspekte mitberücksichtigt werden müssen.
• Problem: Unüberschaubarkeit bei komplexen Aufgaben
• Lösung: Zuerst in größeren, gröberen Einheiten denken, dann diese zerlegen
• Beispiel: Entwicklung eines Autos
87
Schlichter, TU München
6.6. MODULARISIERUNG VON PROGRAMMEN
• Übertragung dieses Ansatzes auf die Zerlegung von Algorithmen in kleinere
und überschaubarere Einheiten.
Algorithmen-Zerlegung
Teilproblem 1
Modul2a
komplexes
Problem
komplexer
Algorithmus
Teilproblem 2
Modul2b
Programmzeile 1
Programmzeile 2
Programmzeile 3
Teil-Algorithmus 2
Modul2c
Teilproblem n
6.6.2
Beispiel Zerlegung
Aufgabenstellung: Ermittle zu einem gegebenen Datum nach dem 1.1.1900
(gegeben als Tag im Monat, Monat im Jahr und Jahr AD) den Wochentag.
• Aufteilung der Aufgabe in mehrere Teilaufgaben
– Der 31.12.1899 war ein Sonntag
– Ermittle die Zahl der Tage zwischen dem 31.12.1899 und dem gegebenen
Datum (Modul)
88
Schlichter, TU München
6.6. MODULARISIERUNG VON PROGRAMMEN
– Dividiere diese Zahl durch 7 und ermittle den Rest der Division
– Wenn der Rest 0 ist, dann ist das Datum ein Sonntag, bei Rest 1 ein Montag,
bei Rest 2 ein Dienstag, ...
• Teilaufgabe 1: Zahl der Tage seit dem 31.12.1899
Teilaufgabe wird als Modul mit folgendem Ablauf realisiert:
– Setze Zähler auf 0
– Addiere für jedes Jahr (vor dem aktuellen Jahr) seit 1900 die Zahl 365 zum
Zähler, wenn Jahr ein Schaltjahr ist, dann addiere zusätzlich 1
– Addiere für jeden vollendeten Monat im aktuellen Jahr die Zahl der Tage im
Monat zum Zähler, wenn Monat Februar und Jahr Schaltjahr, dann addiere
zusätzlich 1
– Addiere die Zahl der vollendeten oder angebrochenen Tage im aktuellen
Monat zum Zähler
• Teilaufgabe 2: Ermittlung ob Schaltjahr (Modul)
Teilaufgabe wird als Modul mit folgendem Ablauf realisiert:
– Wenn nicht durch 4 teilbar, dann nein.
– Wenn nicht durch 100 teilbar, dann ja.
– Wenn nicht durch 400 teilbar, dann nein, sonst ja.
• Aufrufabhängigkeiten der Teilaufgaben
ermittle
Wochentag zu
Datum D
ermittle Zahl der
Tage seit
31.12.1899 bis D
ist betrachtetes
Jahr ein Schaltjahr
betrachte jedes Jahr
von 1899 bis D
• Beispiel für den 24.12.2000
– Zähler = 0
– Gehe von 1900 bis 1999 und addiere jeweils 365 oder 366; Ergebnis ist
36524.
89
Schlichter, TU München
6.6. MODULARISIERUNG VON PROGRAMMEN
– Gehe von Januar bis November und addiere 31, 28+1, 31, 30, 31, 30, 31, 31,
30, 31, 30 = 335
– Addiere 24
– Zähler = 36883
– 36883/7 = 5269
– Rest der Division ist 0, also ist der 24.12.2000 ein Sonntag
6.6.3
Strukturierung von Algorithmen
Zweck der Strukturierung
• Vereinfachung/Verkürzung der Darstellung eines Algorithmus und dadurch
höhere Lesbarkeit
• Ermöglichung der Wiederverwendung von Teilen des Algorithmus in anderen
Kontexten
• Beispielaufgabe
Zeichnen von zwei konzentrischen Quadraten
– Plotterfunktionen
Gegeben sind folgende Plotter-Grundfunktionen:
∗
∗
∗
∗
∗
Bewege (x): bewege Zeichenstift um Länge x in aktuelle Zeichenrichtung
Links (x): drehe Zeichenrichtung um x Grad nach links
Rechts (x): drehe Zeichenrichtung um x Grad nach rechts
Stift heben
Stift senken
– Teilaufgaben
Es existieren die folgenden beiden Teilaufgaben (wobei der Zeichenstift am
Start in der Mitte des inneren Quadrats ist).
90
Schlichter, TU München
6.6. MODULARISIERUNG VON PROGRAMMEN
∗ Position auf A; Quadrat 10 cm zeichnen
∗ Position auf B; Quadrat 20 cm zeichnen
– Definition eines Moduls
Kopf
public Quadratzeichnen(Größe)
Rumpf
Stift senken
wiederhole 4-mal
Bewege (Größe)
Links (90)
Stift heben
∗ Der Name des Moduls ist "Quadratzeichnen".
∗ Größe ist hier ein formaler Platzhalter; man bezeichnet ihn als formalen
Parameter. Er spezifiziert in unserem Fall die Länge einer Quadratkante.
Bei der Nutzung des Moduls muss dem formalen Parameter ein aktueller
Wert zugewiesen werden.
– Nutzung des Moduls (Hauptprogramm)
Links (45)
Bewege (10cm*1/2* sqrt(2))
Links (135)
Quadratzeichnen (10cm)
Rechts (135)
Bewege ((20cm-10cm)*1/2*sqrt(2))
Links (135)
Quadratzeichnen (20cm)
Rechts (180)
91
Schlichter, TU München
6.6. MODULARISIERUNG VON PROGRAMMEN
"sqrt(2)" berechnet die Wurzel von 2.
6.6.4
Module
In vielen Programmiersprachen (z.B. C, C++, Java) existieren Funktionen
(Prozeduren) als Mittel zur Strukturierung von Programmen.
Form
Jede Funktion hat die Form:
ergebnistyp funktionsname (parameterliste)
{
Deklarationen der lokalen Variablen;
Anweisungen
}
• Beispiel in Java (Kopf einer Methode)
public int zahl_tage (int tag, int monat, int jahr)
• Beispiel in Visual Basic (VBA)
public Function zahl_tage
(tag As Integer, monat As Integer, jahr As Integer) As
Long
92
Schlichter, TU München
6.6. MODULARISIERUNG VON PROGRAMMEN
Hauptprogramm bestehend aus Teilmodulen
Hauptprogramm
Anwendermodule
main()
{
/* berechne Gehalt */
...
get_name() {
...
readFromFile()
...
}
get_name()
...
berechne_netto() {
...
abzuege()
...
}
berechne_brutto()
...
berechnet_netto()
...
abzuege() {
...
}
gib_aus()
...
}
(Betriebs-)Systemmodule
....
6.6.5
Prozedurales / Objektorientieres Programmieren
Häufig wird zwischen prozeduraler Programmierung und objektorientierter
Programmierung unterschieden.
93
Schlichter, TU München
6.6. MODULARISIERUNG VON PROGRAMMEN
Prozedurales Programmieren
Objektorientiertes Programmieren
Anweisungen
des Programms
Daten
Anweisungen
zu den Daten
Objekte
Daten
Daten
Daten
Anweisungen
zu den Daten
Anweisungen
zu den Daten
Anweisungen in
einem großen Block
(getrennt von den
Daten)
Anweisungen jeweils
bei den zugehörigen
Daten
• Prozedurales Programmieren
Computer bekommt eine Sequenz von Anweisungen, die er ausführt, dann
wartet er auf nächste Eingabe. Drei Basiselemente: Sequenz, Auswahl (if-thenelse), Iteration. Trennung von Daten und Anweisungen.
• Objektorientiertes Programmieren
Nicht Mengen von Anweisungen, sondern Objekte. Ein Objekt hat Attribute,
Methoden und Ereignisbehandlung. Zusammenfassung von (zusammengehörigen) Daten und Anweisungen. Methoden entsprechen Funktionen; sie nutzen
und verändern die Attribute des Objektes. Ereignisse werden bei der Ausführung von Methoden ausgelöst. Beispiel eines Ereignisses ist die Division durch
0.
94
Schlichter, TU München
6.7
6.7. REKURSION
Rekursion
Unter Rekursion versteht man eine spezielle Form der Modularisierung, bei der
das zu definierende Modul auch in der Definition selbst benutzt wird.
• Bei bestimmten Algorithmen und Datenstrukturen ist mit Rekursion eine
„natürlichere“ Darstellung möglich.
• Beispiel Summe
Die Summe einer Folge von aufeinanderfolgenden Zahlen kann iterativ und
rekursiv berechnet werden.
Summe (n) =
iterativ: 1 + 2 + .... + (n-1) + n
rekursiv: Summe(n-1) + n
– Iterative Berechnung
int summe = 0;
for (int i = 1; i < n+1; i++)
summe = summe + i;
– Rekursive Berechnung
If (n == 0)
summe = 0;
else
summe = summe(n-1) + n;
• Der Programmierer muss dafür sorgen, dass eine rekursive Schachtelung von
Aufrufen gegen ein definiertes Ende läuft.
if (n > 0)
summe = summe(n-1) + n;
else summe = 0; /* definiertes Ende, wenn n <= 0 */
• Beispiel ’Fibonacci-Zahlen’
Bei den Fibonacci-Zahlen ist bereits die übliche mathematische Problemstellung rekursiv formuliert. Eine direkte Umsetzung als rekursiver Algorithmus
bietet sich daher an.
– Definition
fib(n) = fib(n-1) + fib(n-2) für n>2
fib(1) = fib(2) = 1
Wertebereich: n >= 1, mit n natürliche Zahl
95
Schlichter, TU München
6.7. REKURSION
– Algorithmus
Modul fib(n)
Falls n kleiner 3
dann Ergebnis = 1
sonst Ergebnis = fib(n-1) + fib(n-2)
– Implementierung in Java
static int fib(int n) {
if (n < 3) return 1;
else return fib(n-1) + fib(n-2);
}
Alternative Implementierung
static int fib(int n) {
return (n < 3) ? 1 : fib(n-1) + fib(n-2);
}
– Ausführungslauf, z.B. fib(4)
fib(4)
- fib(3)
-- fib(2) = 1
-- fib(1) = 1
- fib(3) = 2
- fib(2) = 1
fib(4) = 3
• Beispiel ’Größter gemeinsamer Teiler’
Gegeben seien zwei Zahlen a, b mit a>0 und b>0. Gesucht ist der größte
gemeinsame Teiler ggT(a, b) der beiden Zahlen. Berechnung mit dem
Algorithmus nach Euklid.
– Idee
96
Schlichter, TU München
6.7. REKURSION
Wenn a < b, dann ist der ggT(a,b) der gleiche wie ggT(a,b-a): Wenn die Zahl
x die Zahlen a und b teilt, dann auch b-a. Und wenn es einen größeren Teiler
von a und b gäbe, würde er auch b-a teilen.
– Algorithmus
Modul ggT(a ,b)
Falls a = b, dann Ergebnis = a
falls a < b dann Ergebnis = ggT(a, b-a)
falls a > b dann Ergebnis = ggT(a-b, b)
• Beispiel ’Türme von Hanoi’
Gegeben sind drei senkrechte Stäbe und n Scheiben verschiedener Größe.
Die Aufgabe lautet: Übertrage Turm von Scheiben von einem Stab auf einen
anderen, wobei stets nur eine Scheibe bewegt wird und nie eine größere Scheibe
auf einer kleineren liegt.
a (Ziel)
b (Quelle)
c (Zwischenlager)
– Rekursive Lösung für n Scheiben
übertrage n Scheiben von b nach a:
übertrage n-1 Scheiben von b nach c (d.h. in das Zwischenlager)
letzte Scheibe von b nach a
übertrage n-1 Scheiben von c nach a (d.h. vom Zwischenlager zum Ziel)
∗ Algorithmus
Die Definition von solveTvH beinhaltet einen Aufruf von solveTvH (mit
anderen Parametern)
97
Schlichter, TU München
6.7. REKURSION
Modul solveTvH(n, Quelle, Ziel, Zw)
/* Zw ist das Zwischenlager */
Falls n = 1
dann bewege Scheibe von Quelle nach Ziel
sonst
solveTvH(n-1, Quelle, Zw, Ziel);
bewege Scheibe von Quelle nach Ziel;
solveTvH(n-1, Zw, Ziel, Quelle);
/* ... */ bezeichnet einen Kommentar, und keine ausführbaren Anweisungen.
– Aufrufschachtelung für n=3
Aufruf solveTvH (3, b, a, c) führt zu den nachfolgenden Rekursionen:
∗ 3bac ( 2bca ( 1bac (b → a); b → c; 1acb (a → c) );
b → a;
2cab ( 1cba (c → b); c → a; 1bac (b → a) ) )
◦ 3bac entspricht dem Aufruf solveTvH (3, b, a, c)
◦ b → a entspricht: bewege Scheibe von b nach a
98
Schlichter, TU München
6.7. REKURSION
– Zahl der Schritte: 2n-1; n ist die Anzahl der zu bewegenden Scheiben.
– Anwendung in der Praxis
Das Lagerhaltungssystem des Hamburger Container-Hafens ermittelt, welche Portalkräne gerade frei, welche Positionen im Container-Lager noch
nicht belegt sind und ermittelt daraus den optimalen Platz, wobei der Ansatz von "Türme von Hanoi" Verwendung findet: Kein Container darf auf
einer anderen Kiste abgestellt werden, die zu einem früheren Zeitpunkt als
er selbst wieder abgeholt wird, zum Weitertransport per Bahn, LKW oder
wieder per Schiff.
Animation Türme von Hanoi
Link zu Information
99
Kapitel 7
Datenstrukturen und Algorithmen
In diesem Kapitel werden einige Klassen von Algorithmen vorgestellt, insbesondere Suchverfahren und Sortierverfahren.
• Fragestellungen des Abschnitts:
– Welche Möglichkeiten gibt es, Datenmengen im System darzustellen?
– Welche Möglichkeiten gibt es, in Datenmengen zu suchen?
– Welche Möglichkeiten gibt es, Datenmengen zu sortieren?
– Was versteht man unter der Komplexität eines Algorithmus?
7.1
Datenstrukturen
Informationen werden im Rechner als Daten gespeichert. Eine Menge von
Daten eines bestimmten Typs zusammen mit den auf der Menge ausführbaren
Zugriffsoperationen nennt man eine Datenstruktur. Zum Beispiel bilden die
Menge der natürlichen Zahlen zusammen mit den Grundrechenoperationen
(Addition, Subtraktion, ...) eine Datenstruktur. Datenstrukturen sind bei der
Programmierung ein wichtiges Hilfsmittel, die Daten für die maschinelle
Verarbeitung geeignet zu organisieren.
7.1.1
Listen
Eine Liste ist eine Folge von Elementen, die eine Reihenfolge haben (d.h. jedes
Element hat einen Vorgänger und Nachfolger).
100
Schlichter, TU München
7.1. DATENSTRUKTUREN
Anker
Graf
Listenanfang
Maier
Referenz
Müller
Referenz
Anker definiert Verweis auf 1. Element.
Referenz definiert Verweis auf nächstes Element.
Beispiele
• Wort: Liste von Zeichen.
• Personaldaten: Liste von Datensätzen, wobei jeder Datensatz eine Person
beschreibt.
Operationen auf Listen
Erzeugen einer Liste, Einfügen eines Listenelements, Suchen eines Listenelements mit bestimmten Eigenschaften, Löschen eines Listenelements.
Reihungen (Array)
Eine Reihung ist eine Liste mit bekannter (fester) Zahl von Elementen, wobei
jedes Element eine Nummer hat. Die Nummer der Elemente bestimmt die
Reihenfolge. Alle Elemente sind vom gleichen Typ. Eine Reihung kann als eine
1-spaltige Tabelle aufgefasst werden.
• Reihungen sind sehr einfache und nützliche Formen von Listen, daher gibt es
in vielen Programmiersprachen vorgegebene Sprachmittel zum Umgang mit
Reihungen.
• Deklaration durch:
boolean buffer[500]
101
Schlichter, TU München
7.1. DATENSTRUKTUREN
Allgemeine Listen
• einfach verkettete Listen
jedes Listenelement beinhaltet neben dem Inhalt auch eine Referenz auf das
nächste Listenelement.
• doppelt verkettete Listen
jedes Listenelement beinhaltet neben dem Inhalt auch eine Referenz auf das
nächste und das vorhergehende Listenelement.
– Beispiel
class elem {
elem previous;
char content;
elem next;
}
7.1.2
Queue - Warteschlange
Eine weitere grundlegende Datenstruktur sind Queues, die mit Warteschlangen
vergleichbar sind (FIFO-Prinzip, first-in-first-out).
put(): fügt ein Element am Ende der Warteschlange hinzu
get(): entnimmt ein Element am Anfang der Warteschlange und liefert es
zurück
put()
3
get()
3 8 2 5
3
8
2
5
5
Realisierung als verkettete Liste oder als Array (falls maximale Größe bekannt).
7.1.3
Graphen
Ein Graph ist ein Modell für Beschreibung von Objekten, die in Beziehung
zueinander stehen. Er besteht aus der Menge K von Knoten (Ecken bzw. Punkten)
und der Menge V von Verbindungen (Kanten), die die Knoten verbinden. Die
102
Schlichter, TU München
7.2. SUCHVERFAHREN
Knoten haben Namen und können Träger von Werten sein. Ein Graph G wird
durch das Paar (K, V) beschrieben, d.h. G = (K, V).
• gerichteter Graph
jede Kante im Graph hat eine Richtung, d.h. sie führt von einem Knoten zum
selben (Schleife) oder zu einem anderen Knoten.
• Weg
Ein Weg in einem Graphen ist eine Folge x = K1, K2, ... Kn = y, wobei jeweils
zwischen den K1 nach K2, K2 nach K3, ... eine Kante besteht.
• Beispiel
Straßenkarte wird durch einen Graph dargestellt:
Knoten = Städte
Kanten = Straßen zwischen den Städten
Nutzung des Graphen zur Bestimmung des kürzesten Weges zwischen 2
Städten.
• Baum
spezieller Graph mit den folgenden Eigenschaften
Wurzel: ausgezeichneter Knoten, der den Ursprung des Baums kennzeichnet.
keine Zyklen.
jeder Knoten (außer der Wurzel) hat genau einen Vorgänger.
Animation Graph Algorithmen
Link zu Information
7.2
Suchverfahren
Ausgangspunkt ist eine Menge von Datensätzen. Es wird nach einem Datensatz
mit einer bestimmten Eigenschaft gesucht.
103
Schlichter, TU München
7.2.1
7.2. SUCHVERFAHREN
Mengen von Datensätzen
Eine Menge von gleichartigen Datensätzen wird üblicherweise in einer Reihung
oder einer Liste gespeichert.
Bei den folgenden Such- und Sortierverfahren gehen wir immer davon aus, dass
die Daten in einer Reihung gespeichert sind.
7.2.2
Lineare Suche
Die Reihung mit den Datenelementen wird der Reihe nach durchsucht, bis das
gewünschte Element gefunden ist.
• Beispiel: Suche nach dem Wert 100
int zahlen[10];
for (i=0; i<10; i++)
if (zahlen[i] == 100) break;
• Im schlimmsten Fall muss die gesamte Reihung durchsucht werden. Bei großen
Datenmengen ist diese Vorgehensweise ungünstig und aufwendig.
7.2.3
Binäre Suche
Voraussetzung ist eine Ordnung auf den Datenelementen. Die Elemente werden
entsprechend ihrer Ordnung (z.B. entsprechend dem Wert von Zahlen) in einer
Reihung gespeichert, d.h. sie müssen aufsteigend oder absteigend geordnet sein.
• Sei int A[n] eine Reihung mit n Elementen, das aufsteigend sortiert ist.
• Gesucht wird ein Element mit dem Wert x; gesucht wird x im Bereich A[0] bis
A[n-1]. 0 ... n-1 sind die Nummern der Reihungselemente.
1. wähle m zwischen 0 und n-1; man wird m ungefähr in der Mitte zwischen 0
und n-1 wählen.
2. wenn A[m] == x, dann sind wir fertig, gib m als Ergebnis aus.
3. wenn x < A[m], dann suche weiter im Bereich A[0] bis A[m-1];
4. wenn x > A[m], dann suche weiter im Bereich A[m+1] bis A[n-1]
• Eine Verdopplung der Anzahl der Listenelemente führt bei binärer Suche zu
einem zusätzlichen Vergleich, während es bei linearer Suche im schlimmsten
Fall zu einer Verdopplung des Aufwandes führen kann.
104
Schlichter, TU München
7.3. SORTIERVERFAHREN
Suchverfahren Animation
Link zu Information
7.3
Sortierverfahren
Ziel ist es, eine Datenmenge entsprechend einem vorgegebenen Ordnungskriterium zu sortieren.
7.3.1
Sortierverfahren - Beispiel Bubble Sort
Sortieren durch Vertauschen von Elementpaaren. Jeweils benachbarte Elemente
werden vertauscht, wenn sie nicht wie gewünscht geordnet sind. Dabei steigt das
relativ größte Element wie eine Blase (bubble) im Wasser auf.
• Vollständiges Sortieren mittels mehrerer Durchgänge. Bei n Elementen
maximal n Durchgänge bis keine Vertauschungen mehr notwendig sind.
• Beispiel: alphabetisches Sortieren einer Menge von Namen
1. Sortierdurchgang mit jeweils paarweisen Vergleich
Jochen
Jochen
Karin
Karin
Franz
Franz
Franz
Karin
Bernd
Bernd
Karin
Karin
Sepp
Sepp
Jim
Jim
Sepp
Maria
Maria
Sepp
Bernd
Sepp
Jim
Maria
105
Schlichter, TU München
7.3. SORTIERVERFAHREN
Original
nach 1
nach 2
nach 3
Jochen
Karin
Franz
Bernd
Sepp
Jim
Maria
Jochen
Franz
Bernd
Karin
Jim
Maria
Sepp
Franz
Bernd
Jochen
Jim
Karin
Maria
Sepp
Bernd
Franz
Jim
Jochen
Karin
Maria
Sepp
7.3.2
nach
4
Schritten
Bernd
Franz
Jim
Jochen
Karin
Maria
Sepp
Sortierverfahren - Beispiel Insert-Sort
Einzelnes Einsortieren von Datenelementen in die bereits sortierte Teilreihung
nächstes Element
sortiert
unsortiert
x
x wird hier
eingefügt
• Insert-Sort hat geringe Laufzeit, wenn Reihung teilweise vorsortiert.
• Im Durchschnitt n2/4 Vergleiche und Vertauschungen.
7.3.3
Rekursives Sortierverfahren - Beispiel Quicksort
• Prinzip
106
Schlichter, TU München
7.3. SORTIERVERFAHREN
Teilen der Reihung in 2 Teilreihungen, Sortieren der beiden Teilreihungen
(mit demselben Verfahren, also rekursiv) und Wiedervereinigen der sortierten
Teilreihungen.
Algorithmus
1. wähle ein Element aus der Reihung aus, das sogenannte Pivot-element
2. teile das Feld in zwei Teilreihungen, in denen nur Elemente enthalten
sind, die größer bzw. kleiner dem gewählten Element sind (d.h. kopiere
die Elemente so, dass in vorderen Teil der Reihung (1. Teilreihung) alle
Elemente kleiner dem gewählten Element, im hinteren Teil der Reihung (2.
Teilreihung) alle Elemente größer dem gewählten Element sind)
3. sortiere die erste Teilreihung. Hier wird rekursiv derselbe Algorithmus
aufgerufen, jedoch nun auf der Teilreihung.
4. sortiere die zweite Teilreihung. Hier wird rekursiv derselbe Algorithmus
aufgerufen, jedoch nun auf der Teilreihung.
5. vereinige die beiden Teilreihungen.
• Beispiel
Karin
Jim
Bernd
Bernd
Bernd
Franz
Franz
Franz
Franz
Franz
Bernd
Bernd
Jim
Jim
Jim
Jochen
Jochen
Jochen
Jochen
Jochen
Sepp
Sepp
Sepp
Karin
Karin
Jim
Karin
Karin
Sepp
Maria
Maria
Maria
Maria
Maria
Sepp
• Quicksort läuft schneller und effizienter ab als Bubblesort (weniger Vergleiche
und Vertauschungen).
107
Schlichter, TU München
7.3.4
7.4. KOMPLEXITÄT
Sortierverfahren Animation
Link zu Information
7.4
Komplexität
Nicht alle berechenbaren Algorithmen lassen sich mit "vertretbarem" Aufwand
durchführen (Grenze der Durchführbarkeit, Praktikabilität). Bei der algorithmischen Lösung eines gegebenen Problems ist deshalb auch die Effizienz des zu
entwickelnden Verfahrens von großer Wichtigkeit.
7.4.1
Komplexität von Algorithmen
• Ein Algorithmus ist umso effizienter, je geringer der Aufwand zu seiner
Abarbeitung ist.
• Aufwand bezieht sich auf bestimmte Ressourcen, z.B. Rechenzeit, Speicherplatz, Anzahl der Geräte
• Nach der Ressource richten sich die verschiedenen Komplexitätsmaße. Am
wichtigsten sind dabei Zeitkomplexität, und Speicherplatzkomplexität, d.h.
wieviel Zeit und wieviel Speicherplatz wird benötigt.
• Zu unterscheiden ist die Komplexität eines Algorithmus von der Komplexität
eines Problems. Problem bezieht sich hier auf das Ziel, das man erreichen will.
Da es für dasselbe Problem viele Algorithmen gibt, setzt man Komplexität des
Problems gleich mit Komplexität des besten bekannten Algorithmus.
• Das Komplexitätsmaß für einen Algorithmus ist immer eine Funktion abhängig
von der Größe der Eingabewerte (mit geeigneter Definition dieser Größe).
Damit wird der Aufwand der Verarbeitung relativ zur Menge der zu
verarbeitenden Information gemessen. Dies ist ein geeignetes Maß für den
durch den Algorithmus bestimmten Aufwand.
– Beispiel
Das Komplexitätsmaß des Sortierens einer Liste ist beispielsweise abhängig
von der Anzahl der zu sortierenden Elemente. Das Komplexitätsmaß
des Brechens einer Verschlüsselung ist üblicherweise von der Länge des
Schlüssels abhängig.
108
Schlichter, TU München
7.4. KOMPLEXITÄT
• Algorithmen bewertet man relativ zu ihrer Komplexität.
7.4.2
Komplexitätsklassen
Komplexitätsklassen drücken eine relative Größenordnung (abzüglich konstantem
Faktor) aus, und zwar in Abhängigkeit von Zahl n der Wertelemente. Die Zahl
n ist dabei durch den jeweiligen Kontext bestimmt, z.B. n ist die Anzahl der
Eingabeelemente, oder n ist die Anzahl der zu untersuchenden Datenelemente.
• O steht hier für Ordnung: z.B. Wachstum der Laufzeit für einzelne
Komplexitätsklassen, und zwar in Abhängigkeit der Anzahl n der Eingabedaten.
• Definition
Sei f: N → N eine Funktion. Die Komplexitätsklasse O(f) ist definiert durch:
O(f) := { t: N → N | ∃ c > 0, m ≥ 0: ∀ n > m: 0 ≤ t(n) ≤ c*f(n) }
O-Notation dient dazu, das asymptotische Wachstum einer Funktion abzuschätzen.
– Sei t(n) die Funktion zur Bestimmung der Laufzeit des Programms.
– mit wachsendem n gewinnt die höchste Potenz von n in t(n) an Bedeutung.
• Übliche Komplexitätsklassen
Hauptsächlich verwendete Komplexitätsklassen
– konstant O(1)
– logarithmisch O(log n)
– linear O(n)
O(n) ⇒ Komplexität ist z.B. 3n + 10;
– überlinear O(n log n)
– quadratisch O(n2)
– polynomial O(nk), k > 2
– exponentiell O(kn), k >= 2
Grafische Darstellung
109
Schlichter, TU München
7.4. KOMPLEXITÄT
n
3
2
2
2
• Nicht-polynomiale (oder Nicht-deterministisch-polynomiale) Probleme gelten
als "harte" Probleme, da man sie nur in kleinen Bereichen lösen kann.
110
Kapitel 8
Software-Entwicklung
Dieses Kapitel behandelt grundlegende Aspekte für „den Entwurf und die
Realisierung“ von Softwaresystemen. Dazu werden verschiedene Modelle für
das Vorgehen bei der Software-Entwicklung sowie Modelle für die Analyse der
Ausgangssituation und den Entwurf des Soll-Systems vorgestellt.
• Fragestellungen des Abschnitts:
– Welche Kategorien von Programmiersprachen gibt es ?
interpretierte und übersetzte Sprachen
– Wie kann man bei der Konzeption und der Realisierung eines SoftwareProgramms geeignet vorgehen?
Modellierung der verschiedenen Aspekte, z.B. Daten, Abläufe und
Interaktion mit dem Benutzer.
8.1
Programmiersprachen
Auf der untersten Ebene verarbeitet ein Rechner Instruktionen, die in einer Maschinensprache spezifiziert sind. Zum besseren Umgang mit Maschinensprachen
wurden bereits frühzeitig sogenannte Assemblersprachen eingesetzt. Diese sind
jedoch sehr Hardware-nahe, und machen es schwierig komplexe Programme zu
schreiben . Deshalb wurden sogenannte höhere Programmiersprachen, z.B. C oder
Java bereitgestellt, die die Programmierung erleichtern sollen.
• Programme, die in einer höheren Programmiersprache erstellt wurden, müssen
in ein entsprechendes Programm einer Maschinensprache transformiert werden.
111
Schlichter, TU München
8.1. PROGRAMMIERSPRACHEN
• Interpretierer und Übersetzer
– Ein Interpretierer (Interpreter) ist ein Programmiersystem, das Anweisungen
schrittweise zergliedert, daraus zustandsähnliche Aktionen ableitet und
sofort ausführt (es wird jeweils nur eine Programmanweisung betrachtet,
und nicht das gesamte Programm; für jede Anweisung wird dann ein
Maschinensprache-Unterprogramm des Interpretierers aufgerufen, das der
Realisierung der Anweisung entspricht).
– Neben Interpretierern gibt es noch sogenannte Übersetzer oder Compiler,
welche die Anweisungen eines Programms in einem Durchlauf analysieren
und komplett in Maschinensprache umwandeln.
– Vorteile von Interpretierern
∗ Interpretierer sind einfacher zu realisieren als Übersetzer (Compiler)
∗ Ermöglicht Quellprogramm-bezogenes, inkrementelles Testen
– Nachteile von Interpretierern
∗ Ineffizient bei einfachen, häufig benutzten Funktionen
∗ Fehler, die sonst Übersetzer findet, werden erst zur Laufzeit entdeckt
– Beispiele für Interpretierer(sprachen)
∗ Basic
∗ Kommandosprachen von Betriebssystemen, z.B. Shell in DOS Eingabefenster
∗ Skriptsprachen (z.B. JavaScript)
• Scriptsprachen
Scriptsprachen ermöglichen dem Endanwender, innerhalb einer Applikation
(z.B. Textsystem) zu programmieren.
– Ziele von Scriptprogrammen
∗ Anpassen der Applikation an eigene Umgebung
∗ Definition von Macros zur Erleichterung der Eingabe.
∗ zur automatische Aktualisierung, z.B. von Feldern in einer Tabellenkalkulation
∗ zur Einbettung von Funktionen in Web-Seiten
– Funktionen/Programme erstellt mit Hilfe von Scriptsprachen werden nicht
übersetzt, sondern nach dem Programmaufruf direkt ausgeführt, d.h. der
Programmcode wird Zeile für Zeile gelesen und ausgeführt; Verwendung von
Interpretierer.
112
Schlichter, TU München
8.1. PROGRAMMIERSPRACHEN
– Tabellenkalkulation
Dokumente einer Tabellenkalkulation heißen Rechenblätter. Sie bestehen aus
Zellen, die in endlich vielen Zeilen und Spalten organisiert sind. Zellen
enthalten
Daten verschiedener Sorten (Zahl, Währung, Datum, Text, ...)
Formeln, die aus vordefinierten Funktionen zusammengesetzt sind
(Summe, Mittelwert, Runden, ...)
∗ variable Daten werden mit Hilfe von Verweisen auf andere Zellen in
Formeln eingegeben, z.B. Summe(A1:A4), Summe(A1;B1;C1)
∗ nur Funktionen mit einer Datenausgabeleitung, d.h. es gibt keinen
Datenspeicher
⇒ nicht jeder Algorithmus kann in einer Tabellenkalkulation dargestellt werden.
∗ Auswertung von Formeln bei Zellenänderung.
∗ Programmierung von Kommandobuttons, Textfelder und Dialogboxen.
• Auswahl einer Programmiersprache
Im Prinzip sind alle Programmiersprachen gleichwertig, d.h. sie erlauben die
Formulierung aller Algorithmen. In der Praxis gibt es aber Unterschiede, die
bei der Entscheidung für die Verwendung einer Programmiersprache in einem
Entwicklungsprojekt helfen.
– Empfehlungen
113
Schlichter, TU München
8.2. SOFTWARE-ENGINEERING
wenn ...
... dann
einfache Programme, Anwendungserweiterungen Basic, Visual Basic,
Python, Perl
Datenbank-Anwendung
Programmlogik
und
komplexe C, C++ , Java
Datenbank-Anwendung und einfache Programm- SQL, Reportgenerator
logik
Technisch-wissenschaftliche Anwendung und C, C++, Java
(Datenbank oder komplexe E/A-Strukturen) und
Portabilität
(System-Software oder PC-Anwendung) und Por- C, C++, Java
tabilität
Künstliche Intelligenz-Anwendung
Prolog, LISP
Internet-Anwendung und Portabilität
Java, PHP, Python
8.2
Software-Engineering
Softwareerstellung als Ingenieurdisziplin.
8.2.1
Software/Engineering - Definition des Ideals
Die Aufstellung und Befolgung guter Ingenieur-Grundsätze und ManagementPraktiken, sowie die Entwicklung und Anwendung zweckdienlicher Methoden
und Werkzeuge, mit dem Ziel, mit vorhersagbaren Mitteln, System- und SoftwareProdukte zu erstellen, die hohe, explizit vorgegebene Qualitätsansprüche erfüllen
(nach A. Marco & J. Buxton, 1987)
114
Schlichter, TU München
8.2.2
8.2. SOFTWARE-ENGINEERING
Komplexität von Software-Projekten
Maße für den Umfang von Software
• Zahl der Quelltextzeilen der Programme, aus denen das Softwareprodukt
besteht (LOC = Lines of Code).
• Zeit, die benötigt wird, um eine Programm zu erstellen (Messung in BearbeiterJahre (BJ)).
Klassifikation von Software-Projekten
Projektklasse
sehr klein
klein
mittel
groß
sehr groß
Quelltext-Zeilen
(LOC)
1 - 1.000
1.000 - 10.000
10.000 - 100.000
100.000 - 1 Mio.
1 Mio - ...
Bearbeitungsaufwand
(BJ)
0 - 0,2
0,2 - 2
2 - 20
20 - 200
200 - ...
Beispiele
Projektklasse
Quelltext-Zeilen (LOC)
Windows XP
ca. 40 Millionen
Windows Vista
ca. 50 Millionen
Windows 7
ca. 45 Millionen
Linux Kernel 2.6
ca 5.2 Millionen
Mac OS X 10
ca. 85 Millionen
Nutzung von LOC, um Programmierfortschritt zu messen, ist umstritten:„Measuring programming progress by lines of code is like measuring aircraft
building progress by weight (Bill Gates).“
Hauptanforderungen bei der Softwareentwicklung
• Entwicklung zuverlässiger (fehlerfreier) Software, d.h. Software verhält sich
- relativ zu vorgegebenen Toleranzwerten für Abweichungen - gemäß den
Anforderungen
115
Schlichter, TU München
8.2. SOFTWARE-ENGINEERING
• Entwicklung so, dass Software später problemlos geändert werden kann (z.B.
wenn Fehler entdeckt werden, neue Anforderungen gestellt werden, eine andere
Hardwareumgebung gewählt wird, ...). Durch die Änderung sollen nicht mehr
Fehler produziert werden, als behoben werden.
8.2.3
Vorgehensmodelle
Eine zentrale Frage beim Software Engineering betrifft das Vorgehen im Projekt,
das erstens eine Fortschrittskontrolle erlaubt und zweitens die Zusammenarbeit
mehrere Entwickler und der Entwickler mit dem Management und dem Kunden
erlaubt und unterstützt.
Code and fix-Verfahren
Unsystematische Vorgehensweise in der Frühzeit der Programmiertechnik:
Die Programmentwicklung begann mit dem Schreiben von Code und endete
mit dem langwierigen und mühseligen Austesten und Zusammenfügen der
Programmbausteine.
Wasserfall-Modelle
Einteilung des Entwicklungsprozesses in sequentiell aufeinander folgende
Phasen. Für jede Phase sind Ausgangspunkt und Vorgaben, durchzuführende
Tätigkeiten und Ergebnisse genau festgelegt.
• Problemanalyse und Anforderungsdefinition
• System Definition: fachlicher Entwurf des Datenmodells und des Anwendungsmodells (Funktionen)
• Systementwurf: Festlegung der Struktur der zu entwickelnden Software
• Implementierung: Programmierung und Modultest
• System-Integration und Systemtest
• Installation, Betrieb und Weiterentwicklung
• Graphische Darstellung
116
Schlichter, TU München
8.2. SOFTWARE-ENGINEERING
– jede Projektphase endet mit einem Validierungsprozess, in dem die
Ergebnisse der Phase überprüft werden. Das Wasserfallmodell geht von
einem sequentiellen Prozess aus; ein Rücksprung ist nur dann erlaubt,
wenn sich die Ergebnisse der vorhergehenden Phase als fehlerhaft erweisen.
Fatal ist es jedoch, wenn erst beim Systemtest festgestellt wird, dass die
Systemdefinition fehlerhaft ist.
Prototyping und Spiralmodelle
Systematische Abfolge von aufeinander aufbauenden Prototyp-Entwicklungen.
Lineare Abfolge der Phasen Analyse, Design und Realisierung jeweils mit den
Aktivitäten Zielbestimmung, Bewertung der Alternativen, Prototypentwicklung,
Verifikation.
117
Schlichter, TU München
8.2.4
8.2. SOFTWARE-ENGINEERING
Strukturierte Programmierung
Top-Down-Entwurf: Mit Hilfe einer schrittweisen Verfeinerung wird ein komplexes, nicht überschaubares Problem in mehrere Teilprobleme zerlegt. Dies wird
rekursiv fortgesetzt, bis man überschaubare Teilprobleme hat.
Eigenschaften
Top-Down-Entwurf ist generelle Vorgehensweise beim Entwurf von Softwaresystemen; man spricht auch gelegentlich von "divide-and-conquer"
• betrachtet zunächst das gesamte Programm global als eine Funktion (Operation), die nach und nach in Teilfunktionen aufgeteilt (verfeinert) wird;
• das Problem wird solange zerlegt, bis es beherrschbar wird;
• späte Festlegung der Datendarstellung.
Vorteile
• man löst Schnittstellenprobleme zuerst, d.h. Festlegung der Parameter von
Funktionen/Methoden.
• vermeidet dadurch, dass gleichzeitig an verschiedenen Stellen eventuell
widersprechende Schnittstellendefinitionen gemacht werden.
• erzwingt klärende Strukturierung des Programms (erleichtert Wartung und
Änderung).
8.2.5
Modellierung
Die Erstellung von geeigneten Modellen vor der Realisierung des Softwaresystems ist ein zentraler Aspekt der Softwareentwicklung
Wozu Modellierung?
Softwarefehler oder Fehlplanungen
1992: Rettungsleitstelle in London fällt 2-mal komplett aus: Schaden ca. 9
Mio Euro, mehrere Todesfälle
118
Schlichter, TU München
8.2. SOFTWARE-ENGINEERING
1993: Das Taurus-Projekt an der Londoner Börse (automatische Transaktionsabwicklung) wird nach 5 Jahren Laufzeit wieder eingestellt; Verlust 450 Mio
Pfund
1996: Ariane 5 muss wegen plötzlichen Neigens 39sec nach dem Start
gesprengt werden. Verlust der Sonnensatelliten (850 Mio DM).
2002: Ariane 5 gerät außer Kontrolle und muss in 96 km Höhe mitsamt zweier
Satelliten gesprengt werden (600 Mio. Euro)
2003: Toll Collect konnte wegen Unterschätzung der Komplexität der
notwendigen Software nicht wie geplant in Betrieb gehen; Verlust mehr als
1 Milliarde Euro.
Modellierung zwingt zu sauberer Planung des Systems.
• Modellierung vor Programmierung
Modellierung dient zur Strukturierung komplexer Systeme
Modelle strukturieren Systeme unabhängig von speziellen (zufälligen)
Rahmenbedingungen der Implementierungsplattform
durch Abstraktion Konzentration auf relevanten Teile; Ausblenden von
Details
intuitive Darstellung ermöglicht Lösung komplexer Probleme
kompakte Beschreibung des Systems; 5 - 10 Diagramme statt 20 Seiten
Text
Übersichtlichkeit und Verständlichkeit erleichtern Realisierung, Wartung
und Kommunikation über das System.
Was ist Modellierung in der Informatik
Definition: Ein Modell ist eine abstrahierte Beschreibung eines realen oder
geplanten Systems, welche die für eine bestimmte Zielsetzung wesentlichen
Eigenschaften des Systems wiedergibt.
Informatische Modellierung besteht aus
Abgrenzen: Identifikation der Grenzen.
Abstrahieren: Weglassen von nicht oder wenig bedeutsamen Details,
Sonderfällen, speziellen Ausprägungen.
Idealisieren: Korrigieren kleiner Abweichungen von idealen Eigenschaften in
Richtung einer leichteren Beschreibung.
Beschreiben: Anwendung spezieller Techniken zur Darstellung der wesentlichen Eigenschaften des Systems.
119
Schlichter, TU München
8.2. SOFTWARE-ENGINEERING
• Beispiel: Bankwesen
Aufgabe: Gesucht sind die Adressen und Betreuer von Kunden, deren Kredit
den Betrag von 10.000 Euro übersteigt.
– Abgrenzen: EDV Ausstattung, Werbeaktionen werden ignoriert
Betrachtung der Vorgänge zwischen Kunden und Betreuer
– Abstrahieren: Erscheinungsbild, Alter des Betreuers sind nicht relevant
wichtig sind seine Abteilung, seine Kunden
– Beschreiben: durch Diagramm
Kunde
hat_offen
verfügt_über
Konto
Kredit
betreut
betreut
Angestellter
gehört_zu
Abteilung
leitet
– Realisierung: mit Hilfe von Tabellen in einer Datenbank; Abruf von
Information
SELECT Kunde.Name FROM Kunde, Kredit
WHERE (Kredit.Betrag > 10000 AND Kredit.Kundennr =
Kunde.Nummer)
8.2.6
Modelle für Analyse und Entwurf
Für die Analyse des Problems, das gelöst werden soll, und den Entwurf des Softwaresystems (vor der Programmierung) existieren eine Reihe unterschiedlicher
Modelle.
Prozessmodell
Das Prozessmodell spezifiziert die Aktionen und den Datenfluss zwischen den
Aktionen. Es ergibt sich ein Datenflussdiagramm.
120
Schlichter, TU München
8.2. SOFTWARE-ENGINEERING
Datenflussdiagramm beschreibt den Fluss der Daten, nicht den Kontrollfluss; daher keine Programmkonstrukte wie Alternative oder Iteration im
Diagramm.
• Beispiel
Datenfluss
Datenmodell
Das Datenmodell bestimmt die im System auftretenden Entitäten (Entities), z.B.
Kunde, Auftrag, Artikel; im Modell (siehe auch → ER-Modell (siehe Seite 20) im
Abschnitt Datenbanken) werden nur die Entity-typen (Datenarten) festgehalten,
nicht jedoch die Instanzen (d.h. nicht jeder real auftretender Kunde mit Namen).
Entitäten sind fassbar. Zusammen mit den Entity-typen werden die Beziehungen
(Relationship-typen) zwischen ihnen dargestellt.
• Beispiel Kunden-/Auftragsverwaltung
121
Schlichter, TU München
8.2. SOFTWARE-ENGINEERING
• Spezifikation der Beziehungen zwischen den Entitäten
– 1 : 1 Beziehung: eine Entität vom Typ A ist genau mit einer Entität vom
Typ B verbunden und umgekehrt, z.B. ein Studierender hat genau eine
Matrikelnummer.
– 1 : n Beziehung: eine Entität vom Typ A ist mit mehreren Entitäten vom Typ
B verbunden, aber nicht umgekehrt, z.B. ein Kunde kann mehrere Aufträge
erteilen, aber ein Auftrag kommt immer von einem Kunden.
– n : m Beziehung: jede Entität vom Typ A ist mit mehreren Entitäten vom Typ
B verbunden und umgekehrt, z.B. n Studierende können auf m verschiedene
Dokumente im Internet zugreifen.
Dynamisches Modell
Das dynamische Modell spezifiziert die Zustandsübergänge in dem Softwaresystem; sie spiegeln Veränderungen des Programmzustandes wider. Zustandsübergänge werden durch das Eintreten von Ereignissen ausgelöst, z.B. Eingang eines
neuen Auftrags.
• Beispiel Auftragseingang
122
Schlichter, TU München
8.2. SOFTWARE-ENGINEERING
"kein Auftrag", "zu bestätigen" und "zu liefern" sind Zustände, während
"Auftragseingang", "Bestätigung" und "Lieferung" Ereignisse repräsentieren.
• Beispiel Getränkeautomat
Strom ein
Aus
Warte
zustand
Strom aus
Abbruchtaste
/Geld zurück
Ausgabe
/Restgeld zurück,
Getränkausgabe
Getränk
gewählt
50ct, 1€
2€
Limo, Cola
Abbruchtaste
/Geld zurück
Geld
erhalten
[Eingabe >= 1,50€]
50ct, 1€, 2€
[Eingabe < 1,50€]
Limo, Cola
wählen
"Aus", "Wartezustand", "Geld erhalten" und "Getränk gewählt" sind Zustände
123
Schlichter, TU München
8.2. SOFTWARE-ENGINEERING
des Getränkeautomaten.
Abstraktion: Übergänge finden (im Vergleich zur Dauer der Zustände) in
unendlich kurzer Zeit statt.
UML
UML (Unified Modeling Language) ist eine moderne Sprache und Notation, um
objektorientierte Systeme zu beschreiben.
Ansatz für eine modellbasierte Software-Entwicklung.
UML unterstützt eine Reihe von unterschiedlichen Diagrammen zur Modellierung der verschiedenen Aspekte des Systems.
• Diagrammtypen
– Klassendiagram: spezifiert die Objektklassen (Entitätstypen) und deren
hierarchischen Zusammenhänge.
z.B. Auto ist eine Unterklasse von Fahrzeug.
– statisches Beziehungsdiagramm: modelliert die statischen Beziehungen
zwischen Objekten.
Assoziation: gleichrangige Beziehung zwischen Objekten, z.B. einem
Menschen und einer Menge von Büchern, die er liest.
Aggregation: Zusammensetzung eines Objektes aus einer Menge von
Einzelteilen, z.B. eine Stadt hat eine Menge Häuser.
– Zustandsdiagramm: modelliert die Zustände von Objekten und wie sie von
einem Zustand in den nächsten übergehen.
– Anwendungsfalldiagramm (Use Case): zeigt den Zusammenhang zwischen
Anwendungsfällen und den daran beteiligten Akteuren.
z.B. eine Arztpraxis hätte die Akteure Arzt, Arzthelfern und Patient
sowie die Anwendungsfälle: Patient anmelden, Diagnose stellen und
Abrechnung.
– Sequenzdiagramm
modelliert den zeitlichen Ablauf und die nachrichtenbasierte Kommunikation zwischen ausgewählten Objekten.
124
Schlichter, TU München
8.2. SOFTWARE-ENGINEERING
Gesundheitskarte
Sende Patientenakte
Fordere Praxisgebühr
Bezahle Praxisgebühr
Quittung
125
Kapitel 9
Grundlagen von Rechnernetzen
• Fragestellungen des Abschnitts:
– Welche Übertragungsmedien gibt es?
– Was ist das Internet? Wie ist es aufgebaut?
– Wie werden Rechner im Internet addressiert?
– Wie sieht das Kommunikationsreferenzmodell für das Internet aus?
9.1
Einführung
• Computersysteme sind in der Regel vernetzt, d.h. sie können mit anderen
Computersystemen Daten austauschen.
• Zur Vernetzung müssen einzelne Computersysteme physikalisch durch Kabel
oder Funk miteinander verbunden werden. Die Kabel- und Funkstrecken
werden in ihrer Gesamtheit als Netz bezeichnet.
• Intranet und Internet
– Intranet verbindet Computersysteme eines Unternehmens
– Internet verbindet weltweit Intranets oder einzelne Computersysteme
• Internet - Übersicht
126
Schlichter, TU München
9.1. EINFÜHRUNG
logische Verbindung für
Datenpakete
Lokales Netz
(Ethernet)
physische
Verbindung
(ISDN, ADSL)
Virtuelles Netz
(Netz der Netze)
Router
Lokales Netz
(Ethernet)
Router
– Kommunikation zwischen Rechnern (Router) über verschiedene Teilstrecken
(Teilnetze)
– Internet = Netz der Netze
• Internet - Entwicklung
– Arpanet (1969)
∗ Als Möglichkeit zum Zugriff auf einige wenige entfernte Rechner
entwickelt (telnet)
∗ Tolerant gegenüber Ausfällen, deshalb Übertragung über mehrere Wege
(paketorientierte Datenübertragung)
∗ Anfangs nur einige Universitäten, Forschungsinstitute und Militäreinrichtungen
– NSFnet, nationale Netze (1980er Jahre)
∗ Trennung von Forschungs- und Militärnetz
∗ Entstehung regionaler, nationaler Netze für spezielle Nutzergruppen (z.B.
EARN, DFN)
∗ Übergänge zwischen den Teilnetzen schwierig und nur beschränkt möglich
– Internet (1990er Jahre)
∗ Zusammenschluss von vielen lokalen, nationalen, internationalen Rechnernetzen zum Internet = "Netz von Netzen"
∗ nahtloser, transparenter Übergang zwischen den Teilnetzen; Kommunikation der Rechner mittels eines einheitlichen Protokolls (TCP/IP)
127
Schlichter, TU München
9.1. EINFÜHRUNG
∗ lokale Verwaltung der Teilnetze
∗ Kommerzialisierung
– Entwicklung in Zahlen
Arpanet
NSFnet
1969
1984
ein Netz
wenige Netze
Internet
1990
3000 Netze
Internet
Internet
1998
2007
80 000 Netze
Internet
2010
10 Rechner
einige
100
Rechner
200 000 Rechner
40 Mio Rechner
ca. 1,4 Milliarden Nutzer
ca. 2 Milliarden
Nutzer
– Zugriff auf Daten - Früher / Heute
....
c:\> ftp 131.159.24.16
ftp:> cd docum/kworld
ftp:> get datei1.gif
ftp:> bye
c:\> showgif datei1.gif
• Internet - Technologie
Unter Internet-Technologie versteht man hauptsächlich Standards (Protokolle),
die es ermöglichen, dass Komponenten verschiedener Hersteller miteinander
kommunizieren können. Darunter fallen sowohl Komponenten für den
Netzbetrieb als auch Anwendungen, zur Realisierung der Dienste für den
Endbenutzer.
– Basisdienste
∗ E-Mail
128
Schlichter, TU München
∗
∗
∗
∗
9.1. EINFÜHRUNG
◦ elektronische Briefpost, die im Netz hierarchieweise verteilt wird;
Verteilerlisten, Antwortmodus
◦ Adressen: [email protected]
File Transfer
Datei-Transfer zwischen verschiedenen Rechnern; "anonymous ftp"
Newsgruppen
Diskussionsforen, für die man sich als Teilnehmer einschreibt; moderierte
und unmoderierte Foren
Telnet
Log-in in entfernte Systeme
WWW (World-Wide-Web)
◦ Konzept zur Vernetzung von Information und zum einheitlichen Zugriff
auf Information im Internet; Information kann sich transparent für
den Benutzer über mehrere Rechner und mehrere Kontinente hinweg
erstrecken; Zugriff über Browser; sehr einfache Bedienung.
◦ Unterscheidung zwischen Benutzer-Software (Browser) und Informationsserver.
◦ Information als formatierter Text mit Referenzen zu anderen Informationen.
◦ Strukturierung der Informationsmenge durch Verweisketten.
◦ Einheitliche Lokalisierung von Information.
◦ Web Browser wird immer mehr zur Benutzerschnittstelle für Anwendungen.
Internet aus Nutzersicht
129
Schlichter, TU München
9.2. ÜBERTRAGUNGSMEDIEN
∗ Social Software
Software Systeme im Internet, die der menschlichen Kommunikation, Interaktion und Zusammenarbeit dienen; basiert auf Web 2.0 Technologien.
Beispiele:
Wikis wie Wikipedia
Weblogs (Blogs), Netz-Logbuch für Jederman
Community Systeme zum Veröffentlichen von eigenen Daten, z.B.
Flickr (URL: http://www.flickr.com/) für Fotos, Youtube (URL:
http://www.youtube.com/) für Videos
Plattformen zum Aufbauen von Beziehungsnetzwerken, z.B. Xing,
Facebook.
9.2
9.2.1
Übertragungsmedien
Kriterien zur Kategorisierung
Einteilung der Übertragungsstrecken
130
Schlichter, TU München
9.3. LOKALE NETZE (LAN)
Übertragungsraten
Die Leistungsfähigkeit einer Verbindung in Rechnernetzen gibt man üblicherweise in Form einer Übertragungsrate an. Übertragungsraten werden in Bit pro Sekunde angegeben, d.h. pro Sekunde können über die Verbindung die genannte
Zahl von Bits übertragen werden.
Klassifizierung der Netze nach Datenrate und Entfernung
• LAN ("Local Area Network", lokales Netz) dient zur Verbindung von Rechnern
(PC’s etc) über kurze Entfernungen (Gebäude); Datenraten ab 100Mb/s und
höher.
• WAN ("Wide Area Network", Weitverkehrsnetz) dient zur Verbindung von
Rechnern oder lokalen Netzen über weite Entfernungen; Verwendung von
Punkt-zu-Punkt Verbindungen.
• MAN ("Metropolitan Area Network", Stadtverkehrsnetz) werden oft als Brücke
zwischen WAN und LAN verwendet; sie überbrücken Entfernungen bis zu
einigen 100km.
9.3
Lokale Netze (LAN)
Kommanikation im lokalen Netzbereich entweder
über ein Festnetz (elektrisches oder optisches Kabel), oder
drahtlos (WLAN, Bluetooth)
erfolgen.
9.3.1
LAN - Netztopologien
Bustopologie
131
Schlichter, TU München
9.3. LOKALE NETZE (LAN)
Ethernet
basiert auf Broadcast Verbindung;
• Beispiel: Ethernet
Hub-Topologie
Der Bus der Bustopologie ist im Hub zusammengefasst, d.h. kollabierter Bus ⇒
sternförmige Verkabelung.
• Hub bekommt zunehmend Vermittlungsfunktionalität (intelligente Hubs).
• Beispiel: Fast Ethernet; ähnliches Zugriffsverfahren wie bei Bus.
9.3.2
Zugriffsverfahren des Ethernet - CSMA/CD
Ausgangspunkt ist ein Übertragungsmedium, das von allen angeschlossenen
Komponenten gemeinsam und in Konkurrenz benutzt wird. Übertragungsmedium
wird jeweils exklusiv von einer Komponente zur Übertragung genutzt.
132
Schlichter, TU München
9.3. LOKALE NETZE (LAN)
• Abkürzungen: CS = Carrier Sense: vor dem Senden Lauschen auf der Leitung;
MA = Multiple Access: mehrere Rechner haben Zugriff; CD = Collision Detect:
Mithören während der Sendung, um Kollisionen zu entdecken.
• Ablauf des Zugriffsverfahrens
Station
sendebereit
(1)
Kanal
abhören
Warten
(7)
max
Anzahl der
Versuche
ja
belegt (3)
(6)
frei (2)
(4)
Daten senden
& Kanal abhören
Kollision
Störsignal
senden
Fehlermeldung
an höhere
Schicht
(5)
keine Kollision
1. Sendewillige Station (Rechner) überwacht Übertragungsmedium (Bus)
2. Übertragungsmedium frei, dann kann Übertragung beginnen
3. Während der Übertragung wird Kanal simultan abgehört; falls gesendete
Information und abgehörte Information unterschiedlich, dann wurde eine
Kollision festgestellt, d.h. ein anderer Rechner hat auch mit der Übertragung
begonnen. Von jedem Rechner führen 2 Leitungen zum Bus: eine
Sendeleitung zum Senden von Daten und eine Empfangsleitung zum
133
Schlichter, TU München
9.3. LOKALE NETZE (LAN)
Empfangen von Daten. Ein Rechner kann gleichzeitig Daten senden und
empfangen.
4. Bei Kollision Senden eines Störsignals
5. Warten gemäß Backoff Strategie; Berechnung der Wartezeit abhängig von
der Anzahl der Wiederholungen und von Zufallszahlen, d.h. Auswahl von
Zufallszahlen aus [0,1], [0,2], [0,4], [0,8],..
Animation CSMA/CD
Link zu Information
9.3.3
Wireless LAN
verwenden i.a. eine modifizierte Form von CSMA/CD ⇒ CSMA/CA (Carrier
Sense Multiple Access / Collision Avoidance).
alle Rechner eines bestimmten drahtlosen LAN senden auf der gleichen
Funkfrequenz (z.B. 2,4 Ghz Bereich).
Basisstation
Festnetz
Computer 2
Computer 4
Computer 1
Computer 3
Ablauf des Verfahrens, falls Computer 1 an Computer 2 senden möchte.
• Computer 1 überprüft, ob gerade ein anderer Rechner sendet.
• falls nein sendet Computer 1 eine Steuernachricht an Computer 2, in dem er
seinen Übertragungswunsch kundtut.
• Computer 2 antwortet mit einer Steuernachricht an Computer 1, in dem er seine
Bereitschaft kundtut.
bei Erkennen einer Steuernachricht warten alle anderen Rechner bis die
Übertragung der Nachricht von Computer 1 abgeschlossen ist.
134
Schlichter, TU München
9.3. LOKALE NETZE (LAN)
• Computer 1 sendet seine Nachricht an Computer 2.
Vernetzung von Automobilen
Vernetzung von fahrenden Fahrzeugen auf Basis der WLAN Technologie.
jedes Fahrzeug im erreichbaren Bereich empfängt Nachricht und propagiert
sie möglicherweise weiter
Ausbreitung von Nachrichten
jedes Fahrzeug fungiert als Router.
Es gibt keine zentrale Stelle ⇒ mobiles Adhoc Netz.
Anwendungen
• Sicherheitsinformation: Ölfleck auf Straße in 500 m, Gefahrenstelle.
• Stauinformation, Parkplatzinformation, Sperrung von Straßen, etc.
• Kommunikation auch mit festen Stationen möglich, z.B. Museum sendet
Information zu spezieller Ausstellung.
• Unterscheidung zwischen Car-2-Car, Car-2-Infrastructure, und Car-2-Home
• wichtig ist die Festlegung von Standards, damit auch Fahrzeuge unterschiedlicher Hersteller miteinander kommunizieren können.
135
Schlichter, TU München
9.4
9.4. WAN - WIDE AREA NETWORK
WAN - Wide Area Network
Über Weitverkehrsnetze (WAN) werden die lokalen Netze miteinander verbunden.
ein lokales Netz wird von einer Organisation verwaltet.
WANs werden i.a. nicht von einer einzelnen Organisation verwaltet.
9.4.1
Internet
Internet ist ein Verbund von Rechnernetzen auf der Basis der TCP/IP-Technologie.
Netzstruktur des Internet
Ethernet
Gateway
Hub
Router
Router
Backbone
Backbones sind Hochgeschwindigkeitsnetze zur Verbindung von Teilnetzen; sie
sind meist redundant ausgelegt, um Ausfälle zu tolerieren. Router im Internet sind
vergleichbar mit den Vermittlungsanlagen des Telefonnetzes.
Zugangsstruktur des Internet
136
Schlichter, TU München
9.4. WAN - WIDE AREA NETWORK
Neben der Internetkonnektivität kann ein ISP noch weitere Dienste bereitstellen,
u.a.:
Speicherplatz für persönliche Web-Seiten (Web-Hosting).
ein oder mehrere Email Accounts.
Betrieb von speziellen Anwendungsservern für den Nutzer (u.Umständen mit
Wartung und Datensicherung).
Propagierung von Nachrichten im Internet
Zerlegung der gesamten Nachricht in einzelne Pakete, die dann einzeln vom
Sender S zum Empfänger E übertragen werden. Auf dem Weg S bis zu E werden
die Pakete über mehrere Übertragungsrechner (Router) übertragen.
• Pakete können unterschiedliche Wege durch das Internet nehmen, und auch
unterschiedlich lange unterwegs sein, d.h. Pakete können in unterschiedlicher
Reihenfolge ankommen als sie abgeschickt wurden. Der Empfangsrechner
muss die empfangenen Pakete in der korrekten Reihenfolge zusammensetzen,
d.h. jedes Paket braucht eine Sequenznummer.
• In regelmäßigen Abständen werden Informationen über die angeschlossenen
Übertragungsstrecken ausgetauscht, d.h. ist Leitung gestört, ist Leitung
überlastet etc. Jeder Router hat eine Tabelle aufgrund der er entscheidet,
welchen weiteren Weg ein Paket zum Empfänger nehmen soll.
137
Schlichter, TU München
9.4. WAN - WIDE AREA NETWORK
Animation Routing
Link zu Information
Backbone des Deutschen Wissenschaftsnetzes (DFN)
Deutsches
Forschungsnetz
(DFN (URL: http://www.dfn.de/)); siehe auch das Münchner Wissenschaftsnetz
(MWN (URL: http://www.lrz-muenchen.de/services/netz/))
138
Schlichter, TU München
9.5. REFERENZMODELL
Monitoring Werkzeuge
Es stehen eine Vielzahl von Werkzeuge zur Verfügung, um beispielsweise die
Erreichbarkeit von Servern über das Netz, die Zuordnung von IP-Adressen zu
Namen oder den Weg von Nachrichten zu verfolgen.
Domaintools:
Informationen
http://whois.domaintools.com/).
über
Domains
(URL:
Verfolgung von Nachrichtenwegen mit traceroute.
Erreichbarkeit von Rechnern mit ping.
für Werkzeuge siehe auch unter Network-Tools (URL: http://network-tools.com/).
9.5
Referenzmodell
Ein Referenzmodell beschreibt den Aufbau und das Zusammenwirken der
Netzwerkprotokolle. Beispiele sind
ISO/OSI Protokollfamilie
TCP/IP Protokollsuite (Referenzmodell des Internet; TCP = Transmission
Control Protocol, IP = Internet Protokoll)
139
Schlichter, TU München
9.5.1
9.5. REFERENZMODELL
TCP/IP Referenzmodell
Das TCP/IP-Referenzmodell ist auf die Internet-Protokolle zugeschnitten. Es ist
der de-facto Standard;
• Zur Kommunikation zwischen Rechnern über ein Rechnernetz sind Protokolle
notwendig. Ein Protokoll besteht aus einer Menge von Datenstrukturen
(Nachrichtenaufbau) und Konventionen, wie der Ablauf der Kommunikation
stattfindet und wie die Informationen jeweils zu interpretieren sind, z.B. Syntax
der Nachrichten, Folge und Bedeutung von Nachrichten.
• Zur Reduzierung der Komplexität beim Entwurf eines offenen Rechnernetzes
wird das Netz in aufeinander aufbauende Protokoll-Schichten unterteilt.
• Prinzipien für Schichtung
Zur Gliederung der Kommunikationsaufgaben werden in Netzwerken funktionale Ebenen, so genannte Schichten (layer), unterschieden.
– jede Schicht repräsentiert eine Abstraktionsebene
– jede Schicht führt eine wohldefinierte Funktion aus
– schmale Schnittstellen zwischen Schichten, um Informationsfluss zu minimieren
– Funktion einer Schicht ist aufgrund von international spezifizierten Standardprotokollen definiert
• Aufbau des Internet-Schichtenmodells
140
Schlichter, TU München
9.5. REFERENZMODELL
Prozess P1
Prozess P2
sende E-Mail von P1 nach P2
Anwendung
Transport
Anwendung
sende (lange) Nachricht von E-Mail
Programm auf A nach E-Mail Programm
auf B
Transport
Internet
sende
Pakete
Internet
Internet
Netzzugriff
sende
Bits
Netzzugriff
Netzzugriff
Rechner A
Router
Rechner B
Gepunktete Pfeile repräsentieren logische Übertragungen.
• Bedeutung der Schichten
– Netzzugriff: bietet eine Übertragungsmöglichkeit einzelner Dateneinheiten
(Bits) unter bestimmten Zeitbedingungen an; Nachrichtenübertragung zwischen zwei benachbarten Rechnern.
∗ Aufgaben: transparente Übertragung von Bitsequenzen, Berücksichtigung
der Eigenschaften der Übertragungsmodi (elektrisch, Lichtwelle), Zusammenfassung von Bitsequenzen zu Rahmen (Frames), Fehlererkennung und
Fehlerkorrektur auf Rahmenebene
– Internet: fehlerfreie Übermittlung eines Pakets von einem Endrechner, über
ein Netz von Routern (Vermittlungsrechnern) hinweg, bis hin zum zweiten
Endrechner; beinhaltet Routing und Adressierung; fügt Netzwerk-Header
hinzu.
∗ Aufgaben: Zusammenschaltung von Teilstrecken zu einer End-zu-End
Verbindung, Wegewahl und Vermittlung, Transporteinheit abhängig von
der Vermittlungstechnik (bei Paketvermittlung Verwendung von Paketen)
– Transport: fehlerfreier Transport von Nachrichten zwischen zwei kommunizierenden Prozessen auf zwei Endrechnern; bildet die anwendungsorientierten Schichten auf die netz-abhängigen Schichten ab; fügt TransportHeader hinzu.
141
Schlichter, TU München
9.5. REFERENZMODELL
∗ Aufgaben: netzunabhängiger Transport von Nachrichten zwischen zwei
Endsystemen; passt die vom Anwendungssystem geforderte Übertragungsqualität an die vom darunterliegenden Transportnetz angebotene
Übertragungsqualität an
∗ Beispiele: Transmission Control Protocol (TCP: Internet), User Datagram
Protocol (UDP: Internet).
– Anwendung: es sind verschiedene Applikationsdienst-Elemente festgelegt;
deren Auswahl hängt von den ablaufenden Anwendungen ab, z.B. Dateizugriff (FTP), Fernverarbeitung (Telnet), Elektronische Post (SMTP), Name
Service, WWW (HTTP).
9.5.2
IP-Adresskonzept
Teil des TCP/IP-Referenzmodells ist die Festlegung der Adressierung von Rechnern im Netz. Dazu erhält jedes Computersystem eine eindeutige "Rufnummer",
seine IP-Adresse. Eine IP-Adresse besteht aus vier Byte. Diese werden üblicherweise dezimal durch Punkte getrennt geschrieben, z.B. 131.159.24.30
• Die weltweit eindeutige Vergabe von IP-Adressen übernehmen die NICs
(Network Information Center). In Deutschland ist das beispielsweise das
DENIC (URL: http://www.denic.de/).
• Adressklassen
IP-Adressen werden in Blöcke zusammengefasst um die Netzverwaltung zu
erleichtern. Die Adresse besteht dazu aus Netz-ID und Host-ID. Nur die NetzIDs werden zentral vom Network Information Center vergeben. Die Klasse gibt
an, wie groß der Byte-Anteil der Netz-ID ist.
8
bit 0
A
B
C
0 Netz 7
10
110
D 1110
E
16
11110
24
31
Host-ID
Netz-ID
Host-ID
14
Netz-ID
21
Host
Multicast-Adressen
reserviert
142
Subnetze
Hosts/pro Netz
126
16.777.214
16.382
65.534
64.547
254
Schlichter, TU München
9.5. REFERENZMODELL
– Klasse A: Adressbereich 1.0.0.0 - 127.255.255.255
– Klasse B: Adressbereich 128.0.0.0 - 191.255.255.255
– Klasse C: Adressbereich 192.0.0.0 - 223.255.255.255
– Klasse D: Adressbereich 224.0.0.0 - 239.255.255.255 (verwendet durch
Videokonferenzsysteme)
∗
– Klasse E: Adressbereich 240.0.0.0 - 247.255.255.255
• Neben den IP-Adressen können Computersysteme noch einen oder mehrere
einfach zu merkende Namen bekommen, wie z.B. www.in.tum.de. Die
möglichen letzten Silben (top level domain) sind global festgelegt, die
zweitletzte Silbe wird von jeweils zuständigen Stellen vergeben (für die .deDomäne beispielsweise DE-NIC)
• Durch den Boom des Internet werden die Adressen bereits knapp; deshalb
Erweiterung der IP-Adressen auf 128 Bit (IPv6 Adresskonzept).
• Eine Netzverbindung zwischen 2 entfernten Prozessen wird charakterisiert
durch:
verwendetes Protokoll, z.B. TCP.
Adresse des lokalen Prozesses, d.h. IP-Adresse und Portnummer des
lokalen Rechners.
Adresse des entfernten Prozesses, d.h. IP-Adresse und Portnummer des
entfernten Rechners.
9.5.3
Sicherung gegen Fehler
Eine Sicherung gegen Fehler wird sowohl bei der Speicherung als auch bei der
Übertragung von Daten angewandt. Beispielsweise in der Netzzugriffsschicht des
TCP/IP Referenzmodells, welche für die Übertragung zwischen zwei Rechnern
zuständig ist.
Verwendung eines Paritätsbit
Bildung einer binären Quersumme vom Codewort w: qs(w) = Anzahl der
"1" im Codewort w, Paritätsbit(w)=0 falls qs(w)=gerade, Paritätsbit(w)=1 falls
qs(w)=ungerade.
143
Schlichter, TU München
Ziffernsymbol
0
1
2
3
4
5
Parität
0
1
1
0
1
0
9.5. REFERENZMODELL
Bitkombination
0000
0001
0010
0011
0100
0101
144
Kapitel 10
Anwendungen von Rechnernetzen
• Verteilte Informationsverarbeitung nutzt die Verbindung mehrerer Rechner
durch Rechnernetze zum Aufbau komplexer Systeme, die mehr als einen
Rechner einbeziehen. Hier gehen wir näher auf Verteilte Anwendungen im
Allgemeinen und auf das momentan in diesem Zusammenhang wichtigste
Teilgebiet E-Commerce ein. Weiterhin werden Sicherheitsfragen bei Verteilten
Anwendungen behandelt.
• Fragestellungen des Abschnitts:
– Was versteht man unter dem Client/Server-Modell?
– Was ist E-Commerce? Welche verteilten Anwendungen spielen hier eine
Rolle?
– Was versteht man unter Verschlüsselung? Welche grundlegenden Verfahren
gibt es?
– Was versteht man unter digitalen Signaturen?
10.1
Verteilte Anwendungen
Aufteilung einer Anwendung in Komponenten (einzelne Programme auf
verschiedenen Rechnern), die miteinander kommunizieren um einen Dienst zu
erbringen.
10.1.1
Entwicklung hin zu verteilten Anwendungen
Die Zukunft wird eine weiter fortschreitende Vernetzung von heterogenen
Rechnern bringen. Anwendungen zur gemeinsamen Nutzung von Ressourcen
145
Schlichter, TU München
10.1. VERTEILTE ANWENDUNGEN
(Dateien, Drucker etc.), Kommunikation von Informationen (d.h. besserer
Informationsfluss) und zur Koordination von Aktivitäten (Steuerung von
Geschäftsvorgängen).
10.1.2
Verteilte Systeme
Arten der Verteilung
Es gibt mehrere Arten, ein informationsverarbeitendes System zu verteilen. Meist
werden mehrere dieser Arten kombiniert.
• Hardwarekomponenten
Hardwarekomponenten des Systems können auf verschiedene Rechner verteilt
sein, möglicherweise weil eine räumliche Verteilung erforderlich ist.
• Daten
Daten können sowohl auf verschiedene Rechner aufgeteilt (partitioniert) als
auch mehrfach gespeichert (repliziert) werden. Die Verteilung ist sowohl bei der
Generierung als auch bei der Verarbeitung der Daten innerhalb der Anwendung
zu beachten.
• Kontrolle/Steuerung
Bei verteilter Steuerung stimmen sich die steuernden Komponenten untereinander ab, es ist keine „Zentrale “ vorhanden, die Entscheidungen trifft. Z.B.
verteiltes Betriebssystem.
• Verarbeitung
Z.B. verteilte Ausführung einer Anwendung (in diesem Fall besteht eine
Anwendung aus mehreren autonomen Teilkomponenten, die gemeinsam ein
Problem/Aufgabe lösen.
10.1.3
Client-Server-Modell
Möglichkeit zur Strukturierung von (verteilten) Anwendungen: Server stellen
Dienste zur Verfügung, die von (den Servern) vorher unbekannten Clients in
Anspruch genommen werden können.
146
Schlichter, TU München
10.1. VERTEILTE ANWENDUNGEN
Client und Server
Client ruft Operation eines Servers auf; nach Ausführung der Operation wird
Ergebnis an den Client übergeben; während der Ausführung der Operation
wird der Ablauf des Client meist unterbrochen; leere Antwort ist möglich, falls
Operation kein Ergebnis liefert (z.B. Eintrag einer Informationseinheit in eine
Datenbank beim Server)
• Definition: Client
Ein Client ist ein Anwendungsteil, der i.a. eine Anforderung initiiert und den
geforderten Dienst von einem Server erhält.
– Clients sind meist a-priori beim Server nicht bekannt.
• Definition: Server
Ein Server ist ein Subsystem, das einen bestimmten Dienst für a-priori
unbekannte Clients zur Verfügung stellt.
– Client und Server kommunizieren über Nachrichten, wobei beide Systeme
auf unterschiedlichen Rechnern ablaufen können, die über ein Netz
miteinander verbunden sind.
– Antwort dient als Bestätigung, dass die Anforderung durch den Server
empfangen wurde.
147
Schlichter, TU München
10.1. VERTEILTE ANWENDUNGEN
– Server sind Prozesse, die kontinuierlich eine Schleife folgender Form
abarbeiten:
while (true) {
receive (empfangsport, anforderung)
führe anforderung aus und erzeuge antwort
send (sendeport, antwort)
}
10.1.4
Beispiel-Services
Datei-Service
Ein Datei-Service (File Service) stellt eine entfernte, zentralisierte Datenspeicherung für Arbeitsplatzrechner zur Verfügung, die über ein Kommunikationsnetz
verbunden sind; zentralisiert aus der Benutzer-Perspektive.
• Beispiel NFS (Network File System)
Clientmaschine
Servermaschine
Client-Prozess
Systemaufruf
virtuelles Dateisystem
lokal
virtuelles Dateisystem
entfernt
Unix
NFS Client
Dateisystem
NFS
Netz
NFS Server
Unix
Dateisystem
Protokoll
Namens-Service
Der Namens-Service (Directory-Service) stellt eine entfernte, zentralisierte
Namensverwaltung zur Verfügung. Namen beziehen sich auf Objekte; Beispiele
für Objekte sind Dateien, andere Server, Services, Drucker, aber auch Benutzer
148
Schlichter, TU München
10.1. VERTEILTE ANWENDUNGEN
Zeit-Service
Stellt eine synchronisierte Systemzeit für alle Rechner im Kommunikationsnetz
zur Verfügung.
10.1.5
World Wide Web
Das World Wilde Web ist organisiert nach der Client/Server Architektur.
• Zieladresse wird mit Hilfe einer URL angegeben
– Beispiel: http://www11.in.tum.de:80/lehre/vorlesungen/
– http:// gibt das Kommunikationsprotokoll für den Zugriff auf Web-Seiten an.
– www11.in.tum.de gibt den Web-Server an.
– lehre/vorlesungen/ gibt ein Verzeichnis/Dokument innerhalb des WebServers an.
– Standardport des Web-Servers: 80.
• Weitere Kommunikationsprotokolle
– https:// Kommunikationsprotokoll für den gesicherten Zugriff auf WebSeiten.
– file:// Zugriff auf Dateien am lokalen Rechner.
– ftp:// Zugriff auf Dateien an einem entfernten Rechner; Nutzung des
Filetransfer Dienstes.
– mailto: verschicken von Emails an die angegebene Adresse.
• Methoden des http Protokolls
– GET: anfordern einer Ressource (z.B. eine Web-Seite), die mittels einer URL
spezifiziert ist.
149
Schlichter, TU München
10.2. SICHERHEIT IN VERTEILTEN SYSTEMEN
– PUT: dient dazu eine Ressource (z. B. eine Web-Seite) unter Angabe der
Ziel-URL auf einen Webserver hochzuladen.
– POST: schickt unbegrenzte, je nach physikalischer Ausstattung des eingesetzten Servers, Mengen an Daten zur weiteren Verarbeitung zum Server.
• Anbindung einer Datenbank
Mit Hilfe von Informationen aus Datenbanken können Inhalte von Web-Seiten
dynamisch gestaltet werden; dazu Abruf der DB-Information über Servlets und
spezielle Schnittstellen, z.B. Java DB Connectivity (JDBC).
Servlet - Engine
Servlet
Web Browser
Web Server
Java Database
Connectivity (JDBC)
Datenbank
10.2
Sicherheit in verteilten Systemen
Ein wichtiger Aspekt eines Rechnersystems besteht darin, dass Daten nicht
von Unbefugten abgefragt werden können. Bei nicht-vernetzten Systemen läßt
sich dies durch eine Sicherung des physikalischen Zugangs zu den Rechnern
und einfache Passwortsysteme garantieren. Bei verteilten Systemen werden
zusätzliche Dienste benötigt.
10.2.1
Sicherheitsanforderungen
• Garantierung der Identität eines Absenders (Identitätsprüfung, Authentifizierung). Dies ist besonders wichtig für e-Commerce Anwendungen, z.B. wer hat
die Ware bestellt?
150
Schlichter, TU München
10.2. SICHERHEIT IN VERTEILTEN SYSTEMEN
• Verhinderung von Mithören (Verschlüsselung). Ein Beispiel dafür ist die
Verschlüsselung von Kontoinformation bei der Übertragung zur Bank.
• Sicherstellung der Integrität (Unverfälschtheit) von Nachrichten (Hash-Werte).
• Verhinderung des Wiedereinspielens von Nachrichten (Integritätssicherung und
Zeitstempel).
10.2.2
Arten von Schadsoftware
Schadsoftware ("Malware") sind Programme, die Aktionen ausführen, die
unerwünscht und meist schädlich sind.
• Computerviren: sich selbst verbreitende Programme, die sich in anderen
Programmen einschleusen.
• Computerwurm: vervielfältigt sich selbst, wenn die Software, in die es
eingebettet ist, ausgeführt wird.
• Trojanisches Pferd: Software, die vortäuscht eine nützliche Anwendung zu sein,
und somit dazu verführt, sie auszuführen.
• SPAM: unerwünschte Nachrichten, die dem Empfänger unverlangt zugestellt
werden.
• Spyware: forscht den Rechner und das Verhalten des jeweiligen Nutzers ohne
dessen Wissen aus und sendet die Daten an den Hersteller der Spyware.
• Phishing: Versuche, um an geheime Daten eines Nutzers zu gelangen.
• Adware: bei normaler Installation oder beim Herunterladen nützlicher Software
wird Reklamesoftware installiert.
• Dialer: bauen heimlich im Hintergrund über das Telefonnetz eine Wählverbindung zu teueren 0190 bzw. 0900-Nummern auf.
10.2.3
Verschlüsselung
Verschlüsselung bedeutet, dass man Daten für die Übertragung oder Speicherung
so codiert, dass sie nur vom beabsichtigten Empfänger wieder in "Klartext"
zurückcodiert werden können. Für alle eventuellen "Mithörer" bleiben die Daten
eine uninterpretierbare Bitfolge.
151
Schlichter, TU München
10.2. SICHERHEIT IN VERTEILTEN SYSTEMEN
• Web-Adresse: https://...... ⇒ Daten werden verschlüsselt zwischen Web
Browser und Web Server übertragen (z.B. für Online Bestellungen bei
Amazon).
• Es gibt zwei grundlegende Verfahrensklassen für die Verschlüsselung von
Daten: symmetrische Verschlüsselung und asymmetrische Verschlüsselung.
• Symmetrische Verschlüsselung
Beide Partner (Sender und Empfänger) kennen einen geheimen Schlüssel, der
zum Ver- und zum Entschlüsseln verwendet wird. Eine Kenntnis des Schlüssels
erlaubt Zugriff auf die Daten.
Schlüssel S
Klartext
Schlüssel S
Chiffre
Chiffre
Sender
Klartext
Empfänger
– Austausch des geheimen Schlüssels über einen anderen, sicheren Kommunikationskanal (z.B. persönlich, Brief)
– Für jede mögliche Verbindung wird ein eigener Schlüssel benötigt (Falls
derselbe Schlüssel für Nachrichten an B und C benutzt wird, könnte C
Nachrichten an B lesen).
– Beispiele: DES, Tripple DES, IDEA
Erweiterte Caesar-Chiffre
– Verschlüsselungsanweisung: Ersetze jeden Buchstaben im Originaltext durch
den Buchstaben, der n Stellen im Alphabet weiter hinten (rechts) steht.
– Entschlüsselungsanweisung: Ersetze jeden Buchstaben im verschlüsselten
Text durch den Buchstaben, der n Stellen im Alphabet weiter vorne (links)
steht.
– Schlüssel: n (natürliche Zahl zwischen 0 und 26)
– Beispiel
∗ Originaltext: "VENI VIDI VICI", Schlüssel = 3
∗ verschlüsselter Text: "YHQL YLGL YLFL"
152
Schlichter, TU München
10.2. SICHERHEIT IN VERTEILTEN SYSTEMEN
– Cäsar-Scheibe
• Asymmetrische Kryptosysteme
Zum Ver- und Entschlüsseln wird ein Schlüsselpaar (priv, pub) verwendet. Es
existiert ein personenbezogener privater Schlüssel priv und ein öffentlicher
Schlüssel pub, der allgemein zugänglich und jedem bekannt sein darf. Alle
Nachrichten, die mit einem Schlüssel codiert (chiffriert) worden sind, können
mit dem jeweils anderen Schlüssel wieder decodiert (dechiffriert) werden.
Schlüssel S(Empf,pub)
Klartext
Schlüssel S(Empf, priv)
Chiffre
Chiffre
Sender
Klartext
Empfänger
– Für sicheren Datenaustausch wird die Nachricht mit dem öffentlichen
Schlüssel des Empfängers S(Empf, pub) verschlüsselt. Dann hat nur der
Empfänger selbst mit seinem privaten Schlüssel S(Empf, priv) Zugang zum
Inhalt.
– Geheimer Schlüssel darf nicht aus dem öffentlichen Schlüssel ableitbar sein.
– Je länger der Schlüssel desto sicherer ist das System (Angriffsmöglichkeit
durch Ausprobieren aller möglichen Schlüssel).
153
Schlichter, TU München
10.2. SICHERHEIT IN VERTEILTEN SYSTEMEN
– Beispiel: RSA (Schlüssellänge für Home: 256 Bit, Standard: 512 Bit, Militär:
1024 Bit)
– Verschlüsselung mit asymmetrischen Verfahren ist üblicherweise langsamer
als mit symmetrischen Verfahren (RSA etwa um den Faktor 1000 langsamer
als DES). Deshalb werden die Verfahren in der Praxis oft kombiniert.
– Nutzung des asymmetrischen Kryptoverfahrens zum Austausch des geheimen Schlüssels.
10.2.4
Identitätsprüfung
• Allgemeine Möglichkeiten
– Prüfe etwas, das die Person weiß (z.B. Passwort)
– Prüfe etwas, das die Person besitzt (z.B. Ausweis, Chipkarte)
– Prüfe eine physikalische Charakteristik der Person (z.B. Fingerabdruck)
– Prüfe Ergebnis einer unbewussten Aktion der Person (z.B. Unterschrift)
• Grundproblem bei digitaler Übermittlung von Passworten oder anderen
Identitätsbeweisen in verteilten Systemen ist die Kopierbarkeit. Mögliche
Lösungen sind:
– Verschlüsselte Übermittlung des Passworts (immer noch kopierbar ...)
• Eine andere Möglichkeit ist die "digitale Unterschrift".
• Digitale Unterschrift
Durch Senden eines, mit dem privaten Schlüssel verschlüsseltem Datums
kann man sich eindeutig ausweisen (eine Entschlüsselung ist nur mit dem
öffentlichen Schlüssel der Person möglich).
– Digitale Unterschrift = Name oder das Paar [Name, Zeitstempel] mit
privatem Schlüssel verschlüsselt
– Probleme mit sicherem Austausch von öffentlichen Schlüsseln.
– Zertifikate
Lösung für das Austauschproblem: Zertifikate
154
Schlichter, TU München
10.2. SICHERHEIT IN VERTEILTEN SYSTEMEN
iMac
iMac
pub
priv
pub
∗ Zertifikat: öffentlicher Schlüssel Spubwird mit dem privaten Schlüssel
TCpriv einer vertrauenswürdigen Stelle (Trust-Center) verschlüsselt.
∗ Zertifikat wird mit digitaler Unterschrift des Trust Centers geschickt.
∗ Vorteil: Empfänger muss nur den öffentlichen Schlüssel des Trust-Centers
haben.
155
Kapitel 11
Zusammenfassung
Diese Lehrveranstaltung gab eine umfassende Einführung in die verschiedenen
Aspekte, Methoden und Technologien der Informatik, insbesondere
• Datenbanken und Informationssysteme
• Datenstrukturen, Algorithmen und Codierung von Information
• Grundlagen der Programmierung und Software-Entwicklungstechnik (Software Engineering)
• Rechnerarchitektur, Betriebssysteme
• Rechnernetze und Verteilte Systeme mit Client-Server-Architekturen
156
Herunterladen