Korrektheit von Programmen
2002-02-18 11:54
Faleiro
Auf Seite 172 im Skript sind Definitionen für Korrektheit von Programmen aufgeführt.
————————————-
Korrektheit
Ein Programm heißt korrekt, wenn es genau die Spezifikation erfüllt, also für alle Argumente des Definitionsbereichs die korrekten Resultate berechnet. (Züllighoven, 1995)
Partielle Korrektheit
Ein Programm heißt partiell korrekt, wenn es, sofern es terminiert, korrekte Resultate liefert.
Totale Korrektheit
Ein Programm heißt total korrekt, wenn es für alle Eingaben mit korrekten Resultaten terminiert.
————————————-
Wie ist die Struktur dieser Definitionen?
Sind sie unabhängig voneinander?
Oder teilt sich "Korrektheit" auf in die anderen beiden?
Oder soll das eine Steigerung von schwach nach stark darstellen, nach der also ein part. korr. Prog. automatisch korr. ist und ein tot. korr. Prog. automatisch auch die anderen beiden?
Wenn nun ein Programm für manche Argumente aus dem Definitionsbereich (!) nicht terminiert, würde es die erste Definition nicht erfüllen, könnte die zweite aber immer noch erfüllen, da diese nur für terminierende Berechnungen Forderungen stellt.
Das klingt aber nicht sehr wahrscheinlich, vielleicht denke ich zu haarspalterisch. ;-)
Und was ist in der dritten Definition ein "korrektes Resultat", wenn die Argumente nicht zur Definitionsmenge gehören? Eine Fehlermeldung? ;-)
————————————-
Korrektheit
Ein Programm heißt korrekt, wenn es genau die Spezifikation erfüllt, also für alle Argumente des Definitionsbereichs die korrekten Resultate berechnet. (Züllighoven, 1995)
Partielle Korrektheit
Ein Programm heißt partiell korrekt, wenn es, sofern es terminiert, korrekte Resultate liefert.
Totale Korrektheit
Ein Programm heißt total korrekt, wenn es für alle Eingaben mit korrekten Resultaten terminiert.
————————————-
Wie ist die Struktur dieser Definitionen?
Sind sie unabhängig voneinander?
Oder teilt sich "Korrektheit" auf in die anderen beiden?
Oder soll das eine Steigerung von schwach nach stark darstellen, nach der also ein part. korr. Prog. automatisch korr. ist und ein tot. korr. Prog. automatisch auch die anderen beiden?
Wenn nun ein Programm für manche Argumente aus dem Definitionsbereich (!) nicht terminiert, würde es die erste Definition nicht erfüllen, könnte die zweite aber immer noch erfüllen, da diese nur für terminierende Berechnungen Forderungen stellt.
Das klingt aber nicht sehr wahrscheinlich, vielleicht denke ich zu haarspalterisch. ;-)
Und was ist in der dritten Definition ein "korrektes Resultat", wenn die Argumente nicht zur Definitionsmenge gehören? Eine Fehlermeldung? ;-)