Algorithmierung

Download Report

Transcript Algorithmierung

Algorithmierung
◦ Wirtschaftsinformatik



Wirtschaftsinformatik beinhaltet die
Schnittstelle zwischen Fachabteilung und
Programmierung.
Sie Erfordert aus diesem Grund Verständnis
für Geschäftsprozesse und Programmabläufe.
Kenntnisse der Algorithmierung sowie der
betrieblichen Anforderungen sind notwendig,
um eindeutige Arbeitsunterlagen für die
Programmierung zur Verfügung stellen zu
können.





Ein Algorithmus ist eine endliche, eindeutige
Folge von Arbeitsschritten, die eine Klasse von
gleichartigen Problemen lösen soll.
Ein Algorithmus ist eine Verfahrensweise zur
Lösung von Problemstellungen.
Algorithmierung ist ein kreativer Prozess, der
nicht automatisierbar ist.
Algorithmieren stellt das Programmieren im
Großen dar.
Durch Algorithmierung wird mit zulässigen
Arbeitsschritten ein allgemeiner Lösungsweg
erstellt.



Ein Programm ist ein in einer
Programmiersprache dargestellter Algorithmus.
Eine Programmiersprache überträgt die einzelnen
Schritte eines Algorithmus in die
Maschinensprache des Computers.
Programmiersprachen können nach den
Anforderungen ausgewählt werden. zB:
◦
◦
◦
◦
Naturwissenschaftlich-technische Anwendungen
Kaufmänische Aufgabenstellungen
Systemnahe Anwendungen
Wissensverabeitende Anwendungen.



Im Gegensatz zur Algorithmierung
(Programmierung im Großen), wird bei der
Programmierung im Kleinen je nach
Programmiersprache der Algorithmus
schrittweise verfeinert.
Programmierung bei denen das „Wie“ zur Lösung
der Problemstellung im Vordergrund steht wird
prozedurale Programmierung bezeichnet.
Diese Programmiersprachen werden Sprachen der
3. Generation genannt.

Schrittweise Verfeinerung
◦ Zerlegung in beherrschbare Teilaufgaben (Module)
◦ Ab einer bestimmten Modulgröße ermöglicht die
Programmiersprache eine Beschreibung der
Teilaufgabe.
◦ Module können abgeändert und wiederverwendet
werden.

Top-Down-Entwicklung
◦ Betrifft die zeitliche Abfolge der Algorithmierung
◦ Vollständige Problembeschreibung mit
zunehmenden Detaillierungsgrad
◦ Ab einer bestimmten Modulgröße ermöglicht die
Programmiersprache eine Beschreibung der
Teilaufgabe. (diese Module stehen an unterster
Stelle.

Ablaufsteuerung ist das Zusammenspiel der
einzelnen Lösungsschritte:
◦ Als Aufeinanderfolge (Sequenz)
◦ Als Wiederholung (Iteration)
◦ Als alternative Ausführung (Alternative)
◦ Zusammenfassung

Diese Prinzipien der Konstruktion werden
strukturierte Programmierung genannt.
◦ Ziel ist es einen Programmcode mit der
größtmöglichen Übersicht zu erstellen  defensiver
Ansatz des Programmierens (Nachvollziehbarkeit
durch Dritte)



Eine Prozedur kann durch Auswahl des
Algorithmus mit dem günstigsten
Zeitverhalten optimiert werden.
Ein Algorithmus kann durch die
Zeitkomplexität T(n) bewertet werden.
n stellt die Zahl der zu bearbeitenden
Datenelemente dar.
◦ T(n) ~O[f(n)]
Für zunehmendes n wächst die Zeit T in der gleichen Größenordnung (O)
wie f(n). F(n) stellt eine obere Schranke dar.

Bekannte obere Schranken ausgedrückt als
mathematische Funktionen sind:
◦
◦
◦
◦
◦

f(n)
f(n)
f(n)
f(n)
=
=
=
=
log n
n * log n
n
n²
f (n)  e
n
Die Zeitkomplexität O[f(n)] verhält sich wie:
O(logn)<O(n)<O(n*logn)<O(n²)< O ( e )
n

Nach einigen bekannten mathematischen Funktionen kann
man die Zeitkomplexität einteilen in:
◦ Logarithmische Komplexität
◦ Polynomische Komplexität
◦ Exponentielle Komplexität.
Verfahren mit
logarithmischer
Komplexität gelten
als ideal, mit
polynomischer als
durchführbar und
solche mit
exponentieller als
nicht akzeptabel.
◦ Durch einfache Darstellung der
Strukturelemente eines Algorithmus sollen
Beteiligte diese sinnvoll einsetzen können.

Der Pseudocode:
◦ Umgangssprachliche Formulierung der Lösungsschritte
◦ <Wenn><Bedingung><dann>…<andernfalls>…

Der Programmierablaufplan
◦ Auch Flussdiagramm genannt
◦ Aber: zahlreiche Verzweigungen, schwierige
Zerlegbarkeit, schlechte Änderungsfähigkeit.
Strukturierte Programmierung durch das
Blockkonzept mit Sequenz, Iteration und
Alternative




Schrittweise Verfeinerung und Zusammenfassung
inhaltlich zusammenhängender Lösungsschritte.
Verschiedene Strukturblöcke können völlig
unabhängig sein, oder völlig abhängig sein, indem sie
in anderen enthalten sind. Eine teilweise Überlappung
kommt nicht vor.
Ein Strukturblock hat genau einen Ein- bzw. Ausgang.
Jeder Block kann aufgrund seiner Funktion benutzt
werden. Kenntnisse über seine Realisierung sind nicht
notwendig.



Anweisungen werden üblicherweise in einem
Strukturblock zusammengefaßt.
Eine Anweisung wird auch Befehl oder
Command genannt.
Beispiele für Anweisungen sind:
◦
◦
◦
◦
◦
Variablenzuweisungen
Variablendeklarationen; zB Integer
Goto –Anweisungen
Ausgabeanweisungen: print, Show, WRITELN …
Bedingete Anweisungen: if then else
Das Prinzip der strukturierten
Programmierung



Unabhängige Strukturblöcke können nur
aneinandergereiht durchgeführt werden.
(Sequenz)
Ein neuer Strukturblock entsteht durch
Wiederholung eines inneren Strukturblocks
aufgrund einer Bedingung.
Ein neuer Strukturblock entsteht, da wegen einer
Bedingung nur einer von mehreren möglichen
Strukturblöcken durchgeführt wird.
Ein so dargestellter Algorithmus besteht stets aus einer Folge
von Strukturblöcken, die in sich strukturiert wieder aus einer
Folge , einer Wiederholung oder einer Alternative bestehen
können.
Symbole für Struktogramme
Anm.: Schleife wird mindestens
einmal durchlaufen.
Die Sequenz

Pseudocode:
Blockanfang BLOCK 1
Eingabe Faktoren
Führe aus Rechnen
Ausgabe Ergebnis
Blockende Block 1
Die Iteration (Wiederholung, Zyklus, auch
Schleife)



In Abhängigkeit einer Bedingung wird ein bestimmter
Strukturblock mehrfach ausgeführt, wobei die
steuernden Parameter sich ändern müssen.
Der Vorteil der Iteration liegt in der Möglichkeit die
gleiche Operation vielfach auszuführen.
Es gibt 4 Grundformen der Iteration:
• (1) Wiederholung mit vorausgehender Bedingungsprüfung
• (2) Wiederholung in Abhängigkeit einer Zählvariablen
• (3) Wiederholung mit nachfolgender Bedingungsprüfung
• (4) Wiederholung ohne Bedingungsprüfung
(1) Die Iteration mit vorausgehender
Bedingungsprüfung – kopfgesteuerte Iteration





Vor jedem Durchlauf wird die Bedingung überprüft.
Steuervariable muss einen zulässigen Wert haben.
Steuervariable wird in der Schleife verändert
Iteration bis Ausführungsbedingung erfüllt ist.
Beendigung erfolgt wenn Bedingung das erste Mal
erfüllt ist.
Die kopfgesteuerte Iteration wird angewandt wenn
gewisse Schritte erst gar nicht durchlaufen werden sollen.
Zum Beispiel Test einer Datei auf den Inhalt von
Datensätzen um die Bearbeitung einer leeren zu
vermeiden.

Pseudocode:
Blockanfang BLOCK 1
Führe aus BLOCK_VOR_SCHLEIFE
Wiederhole solange
Ausführungsbedingung erfüllt
BLOCK_IN_SCHLEIFE
Führe aus BLOCK_NACH_SCHLEIFE
Blockende BLOCK 1
(2) Die Iteration in Abhängigkeit einer
Zählvariablen


Ist ein Spezialfall der geschlossenen
(kopfgesteuerten) Iteration.
Abbruch bei Erreichen eines Endwertes. Zahl der
Durchläufe ist damit vorher bekannt.
FOR <Index> = Anfangswert TO Endwert STEP Schrittweite
DO <Strukturblock>.
(3) Die Iteration mit nachfolgender
Bedingungsprüfung – fußgesteuerte Iteration



Strukturblock wird vor der Bedingung
ausgeführt.
Strukturblock wird mindestens einmal
ausgeführt.
Wiederholung bis Endbedingung erfüllt ist.
Enthält zum Beispiel ein Strukturblock eine
Variableneingabe, kann diese im Anschluss auf Zulässigkeit
geprüft werden. Ist die Variable unzulässig wird die
Schleife wiederholt.
Beispiel: Wird die Eingabe einer österreichischen Postleitzahl
gefordert, so läuft die Schleife bis eine vorhandene die
Bedingung erfüllt.

Pseudocode:
Blockanfang BLOCK 1
Führe aus BLOCK_VOR_SCHLEIFE
Wiederhole BLOCK_IN_SCHLEIFE
bis Endbedingung erfüllt
Führe aus BLOCK_NACH_SCHLEIFE
Blockende BLOCK 1
(4) Die Iteration ohne Bedingungsprüfung



Die „Bedingung“ ist stets wahr, dadurch wird eine
Endlosschleife erzeugt.
Anwendungen finden sich in der Systemsteuerung
Durch spezielle Befehle kann innerhalb des
Strukturblocks die Schleife verlassen werden (Exit).
x=0
Wiederhole solange „wahr“
Blockbeginn
x=x+1
Wenn x gerade dann drucke x
Wenn x ungerade dann Rückkehr zum Schleifenanfang
Wenn x>15 dann verlasse Schleife
Blockende
Endlosschleife
Die Alternative (Selektion)



Bedingte Durchführung von Alternativen
Strukturblöcken in Abhängigkeit von Bedingungen.
If – then – else
Bei sich ausschließenden Alternativen kann „else“
weggelassen werden.
Falls Prozentsatz >= 96
dann Note=1
Sonst falls Prozentsatz >= 80
dann Note=2
Sonst falls Prozentsatz >= 66
dann Note=3
Sonst falls Prozentsatz >= 50
dann Note=4
Sonst Note = 5
Die Alternative (Selektion)

Bedingte Durchführung von Alternativen
Strukturblöcken in Abhängigkeit von Bedingungen.
Pseudocode:
Führe aus Block vor Alternative
Wenn Artikel vorhanden
Lieferung auslösen
Sonst
Ersatzangebot machen
Führe aus Block nach Alternative
Die Mehrfachalternative

Bei einer Fallunterscheidung wird genau der
Strukturblock ausgeführt, bei dem die
Bedingung zutrifft.
Case:
100>=Prozentsatz>=96: Note=1 (Strukturblock 1)
96>=Prozentsatz>=80: Note=2 (Strukturblock 2)
80>=Prozentsatz>=66: Note=3 (Strukturblock 3)
66>=Prozentsatz>=50: Note=4 (Strukturblock 4)
Prozentsatz<50: Note=5 (Strukturblock 5)
Endcase (Blockende)
Die Mehrfachalternative

Pseudocode:
Führe aus BLOCK_VOR_ALTERNATIVE
Fall: D<=7: Skonto gewähren
Fall: D<=28: Bruttobetrag
Sonst: Verzugszinsen
Führe aus BLOCK_NACH_Alternative
Rekursive Algorithmen


Ein Algorithmus ist rekursiv, wenn er sich
selbst aufrufen kann.
Damit sich so ein Algorithmus nicht selbst
unendlich oft aufruft muß er
◦ Das Niveau seiner Ausführung ändern können, also
sich in ständig kleinerem Maßstab aufrufen können.
◦ Er muß einfache Lösungsoperationen zulassen und
damit enden.
Zusammenfassende Fragen





Welche Darstellungsmittel für Algorithmen
kennen Sie?
Nennen Sie bekannte Symbole eines
Struktogramms!
Auf welchen drei Kontrollstrukturen baut die
strukturierte Programmierung auf?
Welche 4 Grundformen der Iteration gibt es?
Worin liegt der Unterschied zwischen einer
Sequenz und einer Mehrfachalternative?
Beispiel Struktogramm


Der Elektriker Sommer führt Wartungsarbeiten an EAnlagen vor Ort durch.
Den Kunden werden die Arbeiten nach folgendem Modus
verrechnet:
◦ Arbeitszeit € 40.-/h
◦ Materialkosten: nach Aufwand
◦ Anfahrt: € 1,2.- pro Kilometer, erst ab 20 km



Die Eingabe zur Erstellung der Rechnung soll über die
Positionen Arbeitszeit, Material, Anfahrt ab 20km erfolgen.
Anschließend soll die Summe gebildet werden.
Es sollen mehrere Rechnungen durch eine Nutzerbfrage
nacheinander erstellt werden können.
Erstellen Sie ein Struktogramm zur Erstellung der
Rechnungen.
•Nachfolgende
Bedingungsprüfung
•Do-until-Schleife
•Abfrage erfolgt
im Nachhinein
•Schleife wird
mindestens einmal
durchlaufen.
Beispiel zu den Bedingungen (Struktogramm)






Ein Personalwirtschaftssystem soll folgenden
Programmablauf ermöglichen:
Nach Eingabe des Bruttobezuges und des Namens
sollen der AN-Anteil und der AG-Anteil der
Sozialversicherung berechnet werden.
Der SV-Satz vom Bruttobezug beträgt:
◦ Bis 374.- An=0, AG= 2,93%
◦ Bis 4200.- AN=~18,07%, AG=~23,23%
◦ Ab 4200.- Protzentsatz von der Höchstbeitragsgrundlage.
Erneute Eingabe zur Berechnung mehrerer ANs soll
möglich sein.
Am Ende sollen die Gesamtsummen der AN-Beiträge
und AG-Beiträge ausgegeben werden.
Erstellen Sie bitte ein Struktogramm!
•Vorausgehende
Bedingungsprüfung
•Do-while-Schleife
•Abfrage erfolgt
eingangs
•Schleife kann auch
keinmal durchlaufen
werden.
Vom Algorithmus zum Programm
Grundlegende Operationen bei der
Datenverarbeitung


Daten müssen in Abhängigkeit von Bedingungen
eingelesen, verarbeitet, gespeichert und wieder
ausgegeben werden können.
Jede Programmiersprache muß daher folgende
Kategorien zur Verfügung stellen.
◦ Variablen: Darstellung von Veränderlichen
◦ Datentypen: Beschreibung der Eigenschaften von Objekten
◦ Operatoren: für die Eingabe, Veränderung, Speicherung,
Ausgabe.
◦ Kontrollstrukturen: Um die Abfolge von Schritten und
Blöcken darstellen zu können.
AlgorithmusProgrammierspracheMaschinencode

Editor:
◦ Dient zur Texterfassung von Programmen, dabei entsteht der
Quellcode (Sourcecode).

Compiler:
◦ Übersetzt ein Programm (einer höheren Programmiersprache) als
Ganzes in den Maschinencode. Die Objektdatei ist noch nicht
lauffähig.

Linker:
◦ Bindet die Systembibliothek ein und macht aus dem compilierten
Objektcode ein lauffähiges Programm.

Interpreter:
◦ Übersetzt eine höhere Programmiersprache Schritt für Schritt in
einen ausführbaren Maschinencode. Dabei entsteht kein
ausführbares Programm als Ganzes.
Erproben eines Algorithmus mittels Testdaten

Syntaktische Fehler
◦ Falsche Sprachregeln - werden vom Compiler angezeigt

Semantische Fehler
◦ Funktion weicht von der Vorgabe ab.

Trockentest:
◦ Code-Inspection am Schreibtisch in früher Phase
◦ zB Variablendeklarationen, Schleifenterminierungen,
fehlende Initialisierungen, Datentypenkonflikte.

Dynamischer Test: (setzt lauffähiges Programm
voraus)
◦ (1) Ablaufbezogen
◦ (2) Datenbezogen
◦ (3) Funktionsbezogenes Testen
(1) Ablaufbezogener Test, (2) datenbezogene Tests

Ablaufbezogene Tests, sogenannte WhiteBox-Tests beeinhalten:
◦ Die Ausführung aller Anweisungen
◦ Die Ausführung aller Ablaufzweige
◦ Erfüllung aller Bedingungen und Wiederholung aller
Schleifen
◦ Kombination aller Programmverzweigungen und
Programmschleifen, sog. Pfadtests.

Datenbezogene Tests:
◦ Fachabteilung und Spezialisten stellen sinnvolle
Datenkombinationen zum Testen zur Verfügung.
◦ zB. ein Wert der Mitte, Grenzwerte und unzulässige
Werte.
Einteilung nach Generationen oder nach
Programmierparadigmen.
Generation
Sprache
Beispiel
1
Binäre
Maschinensprache
2
Assemblersprache
3
Problemorientierte ,
prozedurale,
imperative Sprachen
BASIC, PASCAL,
FORTRAN, C
4
4GL-Sprachen
nichtprozedurale
Sprachen
SQL, DELPHI
Deklarative (KI)
Sprachen
LISP, PROLOG
5
Paradigma
Beispiele
Prozedural
BASIC; C; COBOL,
FORTRAN, PASCAL
Logisch/
prädikativ
PROLOG
objektbasiert
objektorientiert
JavaScript
Ada95, C++, Java,
Smalltalk
Es können auch Compiler- Bzw. Interpreterbasierte
Programmiersprachen unterschieden werden.



Mögliche Unterscheidungen sind
compilerbasierte oder interpreterbasierte
Sprachen.
Scriptsprachen wie Perl, Python, PHP sind für
die zunehmende Internetprogrammierung von
Bedeutung. (Kommandos werden in
Scriptform im Klartext miteinander
verbunden.)
HTML stellt keine eigene Programmiersprache
im engeren Sinn dar, da sie weder über
Variablen noch Kontrollstrukturen verfügt.
Ähnliches gilt für XML.
Aktuelle Entwicklungen


Plattformunabhängigkeit des Quellcodes. Die
Plattformanpassung erfolgt mittels
Interpreterlauf.
.Net Initiative von Microsoft
◦ Im komponentenbasierten Ansatz wird ein neutraler
Zwischencode erzeugt, der bei Aufruf in einen
betriebsystemspezifischen Code umgewandelt und
ausgeführt wird. Dieser neutrale Zwischencode oder
auch Intermediate Language genannt, soll aus den
unterschiedlichen .NET Programmiersprachen C#,
C++ und Visual Basic entstehen.
 Objektorientierung
 Grafische
Bedienoberflächen
(GUI, Graphical User Interfaces).
 Ereignissteuerung (Event
Handling).
 Arbeit in Projekten.
Objektorientierung




Die Objektmodellierung beginnt
bereits in den frühen Phasen.
Jede Variable in einem Programm
sowohl Bezeichnung als auch
Datentyp enthalten.
Eigenschaften werden in Form
von Attributen zu einer
Verbundvariablen
zusammengefasst.
Hier das Objekt Geschäftspartner:
struct Geschäftsp
artner
{
int Partner ID;
char Name[20];
char Ort[20];
...
__________ ________
LiesName
();
SetzName
(char NameNeu[20
LiesID ();
LiesOrt ();
SetzeOrt
.....
};
(char OrtNeu[20] ;
];
Objekte können auch in einer Klasse
zusammengefasst werden


Das Schlüsselwort class ermöglicht auch:



Kapselung
Information Hiding
Vererbung
Class Geschäftspartner
private:
<Attribute>
private:
<Methoden>
public:
<Methoden>
private: Zugriffbeschränkung
public: externe Schnittstelle,
kann von anderen
Komponenten aufgerufen werden.
Zusätzliche Mechanismen des Datentyps Klasse

Datenkapselung
◦ Attribute können nur über Zugriffsmethoden dieser
Klasse gelesen oder verändert werden - sie sind dadurch
geschützter.

Information Hiding
◦ Kenntnis über die Funktionalität der Schnittstelle PublicMethoden reicht aus um zugreifen zu können. Interne
Realisierung muß dabei nicht bekannt sein.

Vererbung
◦ Bereits vorhandene Klasse kann durch hinzufügen von
weiteren Attributen und Methoden zu einer neuen Klasse
entwickelt werden. Die bereits vorhandenen
Eigenschaften der Basisklasse bleiben dabei erhalten.
Graphische Nutzerschnittstellen





Zur Bedienung der Software gibt es grafische
Benutzerschnittstellen (GUI)
Toolboxen ermöglichen das einfügen von
Steuerelementen (links im Bild)
Im Eigenschaftenfenster können Einstellungen
vorgenommen werden (rechts unten)
Über einen Splittscreen können Formular und
Quellcode betrachtet werden.
Die Error-List gibt das Ergebnis des Debuggings
aus (unten)
Event Handling



Das System reagiert nur auf festgelegte
Ereignisse.
zB keyPressed, mouseClicked
Die Ereignisbehandlungsprozeduren werden dazu
in der Programmlogik verankert.



Stellen Sie die Schrittfolge zum Erstellen eines
lauffähigen Programms dar.
Nach welchen Kriterien können
Programmiersprachen eingeteilt werden.
Stellen Sie je eine Klassedefinition für
Elektroartikel und Lebensmittel auf und leiten
Sie gleiche sowie spezifische Attribute und
Methoden durch Generalisierung
(Ausklammern der gleichen Attribute) ab.


EditierenCompilierenLinkenlauffähiges Maschinenprogramm
oder:
EditierenInterpretierenausführbares Maschinenprogramm ohne
speicherbaren Objektcode.
Klassen mit
exemplarischen
Attributen:
class Artikel{
char Artikel_ID
[10];
char Name[20];
char Hersteller
_ID[20];
LiesArtike
lID ();
LiesName
();
SetzeName
(char NameNeu[20
LiesHErste
ller_ID
SetzeOrt
]);
();
(char OrtNeu[20]
);
...};
classLeben smittel : publicArti
char Verfallsda
tum[3];
Setze_Verf allsdatum
Lies_Verfa
kel {
llsdatum
class Elektroart ikel : public Artikel {
int Leistung;
(char VD[3]);
(); };
Setze_Leis
tung (int L);
Lies_Leist
ung (); };
Sortier- und Suchalgorithmen
 Bubblesort
 Quicksort
 Bisektion
Das Bubble-Sortverfahren

Benachbarte Schlüsselpaare werden verglichen
und gegebenenfalls umgetauscht. So steigt der
größere Schlüssel wie eine Blase auf.
Durchlauf
60
40
20
70
40
60
20
70
40
20
60
70
40
20
60
70
20
40
60
70
1. Durchlauf
2. Durchlauf
Das Quicksort-Verfahren – „Teile und herrsche!“


Nach Wahl eines Mittelwertes, wird links gesucht bis ein
Element größer als die Mitte ist und rechts bis ein Element
kleiner als die Mitte ist.
Danach kommt es zu einem rekursiven Aufruf und die grob
vorsortierten Hälften werden nach dem gleichen Verfahren
durchsucht.
Quicksort
19
3
18
22
6
6
3
18
22
19
Die Bisektion




Auch binäre Suche genannt, ist anwendbar auf
sortierte Datenbestände. (ähnlich wie in einem
Telefonbuch.)
Datenbestand wird in zwei Hälften geteilt um zu
prüfen ob der Schlüssel sich im oberen oder im
unteren Teil befindet usw. .
Die Suche endet wenn der Halbierungspunkt auf
den gesuchten Schlüssel fällt oder wenn der
Schlüssel nicht im Datenbestand vorhanden ist.
Die Zahl der Halbierungen ist auf log2 n
beschränkt.
Verschlüsselungsalgorithmen



Bei Geschäftsdaten jeglicher Art besteht meist
ein Interesse an Vertraulichkeit und Integrität.
Datensicherheit umfaßt:
◦ Zugangssicherheit
◦ Übertragungssicherheit
Praktisches Beispiel: Über EDI (Electronic Data
Interchange) kann der branchentypische
Geschäftsverkehr standardisiert über Netze
elektronisch übertragen werden. (Rechnungen,
Überweisungen, Mahnungen, Zollpapiere).

Sicherheitsanforderungen an den elektronischen
Geschäftsverkehr
Vertraulichkeit

Integrität (Unverfälschtheit)

Verbindlichkeit

Authentizität (Zurechenbarkeit)

Gültigkeit (Dokument mit Zeitstempel)
◦ Nachricht ist nur für Befugte, nicht für Dritte.
◦ Veränderung durch Dritte muß erkannt werden.
◦ Sende- und Empfangsbeweis.
◦ Nachweis der behaupteten Identität.
◦ Dokument ist keine Kopie und innerhalb der Zeit.
Sicherheitsmaßnahmen zur Erreichung der
Anforderungen

Vertraulichkeit
◦ Verschlüsselung mittels symmetrischer
Verfahren

Integrität (Unverfälschtheit)
◦ Kontrolle durch eine Prüfsumme - eindeutige
Zeichenkette wird mittels einer One-wayHashfunktion aus der Nachricht berechnet.
Sicherheitsmaßnahmen zur Erreichung der
Anforderungen

Authentizität (Zurechenbarkeit)
◦ Sender und Empfänger tauschen jeweils ein
Passwort oder einen Schlüssel aus, der nur
Ihnen bekannt ist, aber von der Gegenseite
überprüft werden kann. Eine vertrauenswürdige
Instanz (Trusted Third Party) muß dabei die
sichere Schlüsselübergabe gewährleisten.
Sicherheitsmaßnahmen zur Erreichung der
Anforderungen

Gültigkeit (Dokument mit Zeitstempel)
◦ Zur persönlichen Identifizierung und als Zeichen
der Integrität kann eine elektronische
Unterschrift mit dem Dokument übersendet
werden. (Vertraulichkeit wird dadurch nicht
gewährt!)
Prinzip der
elektronischen
Unterschrift:
Verschlüsselungsverfaheren


Chiffrieru
ng : Chiffrat
Dechiffrie
rung : Klartext
 f ( Klartext , Key 1)
 f(Chiffrat , Key 2)
Dechiffrierung ist die inverse Operation
der Chiffrierung
Je nach Art der Schlüssel unterscheidet
man:
◦ Symmetrische Verfahren
◦ Asymmetrische Verfahren
Symmetrisches Verfahren



Der gleiche Schlüssel ‚K-Privat‘ dient zum ver- wie zum
entschlüsseln.
Wie gelangt der Schlüssel sicher zum Empfänger?
Sicherheit hängt von der Länge des Schlüssels ab.
Asymmetrisches Verfahren

Es gibt einen öffentlichen und einen privaten Schlüssel.
K-Public kann zB in einem Verzeichnis öffentlich zugänglich gemacht
werden.
Beide Schlüssel besitzen die Eigenschaften, dass sich:

Aus diesem Grund braucht nur K-Privat geheim gehalten zu werden.


◦ K-Public aus K-Privat leicht ermitteln läßt
◦ K-Privat aus K-Public schwer ermitteln läßt
Hybride Verfahren


Asymmetrisches Verfahren ist bei großen
Datenmengen langsamer als symmetrisches.
Der symmetrische Schlüssel wird
asymmetrisch verschlüsselt und mit dem
chiffrierten Dokument gemeinsam versandt.
Digitale Signatur

Bei Authentifizierung und digitale Signatur spielt
der Key-Privat die Hauptrolle.
Authentifizierungsverfahren:

Digitale Signatur:

◦ Zufallszahl wird verschicktVerschlüsselung mit dem
privaten Schlüssel beim Empfänger Entschlüsselung
mit dem öffentlichen Schlüssel des ursprünglichen
Senders der Zufallszahl.
◦ Prüfsumme des Dokuments wird mit privatem Schlüssel
verschlüsselt und gemeinsam mit dem Dokument
versandt.
◦ Gegenseite entnimmt dem Dokument mit dem gleichen
Verfahren eine Prüfsumme (One-Way-Hashfunktion) und
vergleicht sie mit der mitgeschickten Prüfsumme.
Verlustfreie Kompression

Insgesamt werden nur geringe
Kompressionsraten erreicht.
Lauflängenkodierung (Run-Lenght-Encoding)

Statische Kodierung

Dictionary-Kodierung

◦ zB für Bilder mit großen gleichfarbigen Flächen
◦ Neben einem Wert wird die Anzahl der Wiederholungen
gespeichert.
◦ Häufig vorkommende Zeichen werden durch kurze
Bitfolgen codiert. (Gleiches Prinzip wie im
Morsealphabet)
◦ Längere Folgen von Zeichen werden mit kurzen Indizes
kodiert, die in einem Wörterbuch festgehalten werden.
◦ Der Datenstrom besteht dann nur mehr aus Indizes.
Verlustbehaftete Kompression


Das wieder dekomprimierte Dokument (Bild, Text,
Audio, Video) entspricht nicht mehr dem Original.
Informationsverluste werden dort zugelassen, wo es
am Wenigsten bemerkt wird. ZB
◦ Nicht mehr wahrnehmbare Farbnuancen
◦ Helligkeitsunterschiede werden eher wahrgenommen als
Farbunterschiede
◦ Kanten mehr als Flächen
◦ Laute Töne überdecken leise.
◦ Geringfügige Informationsänderung bei bewegten Bildern.
Somit brauchen nur mehr die Differenzen gespeichert
werden.

Insgesamt nehmen die Verluste bei steigenden
Kompressionsraten zu.
Verlustbehaftete Kompression

Prädikative Techniken (Vorhersagetechnik)

Frequenzorientierte Verfahren
◦ Vorhersage künftiger Werte aufgrund von bestehenden.
Übertragen werden nur die Differenzen zu den
vorhergesagten Werten.
◦ Verschiedene Frequenzen im hörbaren wie im
sichtbaren Bereich werden unterschiedlich stark
wahrgenommen.  Subbandverfaheren, Diskrete
KosinusTransformation.

Bedeutungsorientierte Verfahren
◦ Setzen voraus, dass man die unterschiedlichen
Bedeutungen kennt. Filterung, variable Bizuweisung,
Subsampling, Quantisierung.
Standbildkompression



JPEG (Joint Photographic
Expert Group) ist ein
Standard zur Kompression
von Farbbildern.
Redundanzen innerhalb
eines Bildes werden
reduziert.
Besteht aus verlustfreien und
verlustbehafteten
Kompressionsverfahren.
Videokompression



Bei der Videokompression kommt es zur
Reduktion von Redundanzen zwischen den
Bildern. (Interframekompression)
Da mehrere Bilder zusammen kodiert werden,
kann es zu Einschränkungen beim zB Schnitt
zur Folge.
MPEG1 (Motion Picture Expert Group)
komprimiert Audio- und Videosequenzen mit
1,5MBit/s
Videokompression




Mit MPEG2 (DVD, digitales Fernsehen) und MPEG4
werden auch höhere Datenraten erzielt.
Die komprimierten Dateien werden stückweise
ineinander geschachtelt (Interleaving) wodurch ein
einzelner Datenstrom erzeugt wird.
MP3 ist ein MPEG-Audio Layer III der
Frauenhofergesellschaft.
Es ist ein internetfähiges Austauschformat für
Audiodateien, mit guter Wiedergabequalität,
wodurch der einfache Austausch von Musiktiteln
übers Internet ermöglicht wurde, was zu
Problemen in der Musikindustrie geführt hat.