Die Forderung:
Der Prozessor muss die Darstellung, in der ein Algorithmus
ausgedrückt ist, "verstehen", damit er ihn ausführen kann.
Dabei können Fehler unterschiedlicher Art und auf verschiedenen
Ebenen auftreten.
Syntaxfehler
Ein Programm ist dann syntaktisch fehlerfrei, wenn die in der Sprache
festgelegten Symbole und Regeln richtig angewandt wurden.
program fehlertest.pas ;
begin
writeln ('Alles ok');
end. |
pogram
fehlertest.pas ;
begin
writeln ('Alles ok');
>> Syntax error
<== ( end. fehlt)
|
Semantikfehler
Semantik ist die inhaltliche Bedeutung, die eine Sprache, ein Satz
oder ein Wort hat. Die angewendete Sprache kann syntaktisch völlig
fehlerfrei, aber semantisch falsch sein.
Beispiele:
-
Der Elefant fraß die Erdnuss.
-
Die Erdnuss fraß den Elefanten.
-
Farblose grüne Ideen schlafen wild.
In einem Algorithmus, der sicher völlig fehlerfrei ausgeführt würde,
steht
Schreibe den Namen des 1. Monats im Jahr
Anders bei dieser Anweisung:
Schreibe den Namen
des 13. Monats im Jahr
Wenn der Compiler Kenntnis über die Monate hat (z. B.
durch einen entsprechenden Typ), würde eine Fehlermeldung kommen können
(z. B. Bereichsüberschreitung), sonst käme Unsinn heraus.
Wenn das nicht so ist, dann würde folgender Fehler
sicher lange unentdeckt bleiben:
Denke Dir eine Zahl zwischen 1 und
13 aus
Bezeichne diese Zahl mit N
...
Schreibe den Namen des N-ten Monats im Jahr
Logikfehler
Die Logik bezieht sich auf richtige Aussagen,
Folgerungen, Algorithmen.
Neben Semantikfehlern gehören Logikfehlern zu denen,
die am schwierigsten zu finden sind. Ein Programm würde klaglos bis in
alle Ewigkeit den Algorithmus ausführen
Umfang := Radius * Pi
bis es jemandem auffiele, dass dabei falsche
Ergebnisse herauskommen.
Prüfung der Korrektheit
Die Prüfung der Fehlerfreiheit von Programmen ist eines
der schwierigsten Probleme der Informatik. Es gibt kein Programm, das sich
selbst auf Fehlerfreiheit prüfen kann. Es bleiben daher im wesentlichen
zwei Wege:
TESTEN |
BEWEISEN |
mit sinnvollen Testdaten
und Testverfahren
- Praxistest
- Schreibtischtest
anhand der Spezifikation und der Dokumentation |
dass alle
zugelassenen Daten und möglichen Anweisungen richtig sind.
Das dürfte schon bei Programmen mittlerer Größe wegen des
Aufwandes nicht mehr durchführbar sein. |
-------------------
Literatur: Goldschlager/Lister: Informatik. Eine moderne
Einführung. Carl Hanser Verlag. |