2.7.4 Softwarefehler


Ein Softwarefehler tritt dann auf, wenn ein Softwareprodukt etwas anderes leistet, als der Benützer erwartet. Im Fall numerischer Software ist die Frage, ob ein Programmfehler vorliegt, oft nicht einfach und manchmal überhaupt unmöglich zu beantworten. Diese Schwierigkeit ist nicht oder nur teilweise auf mangelhafte Dokumentation, sondern auf verwendete Heuristiken durchzuführen. Heuristik bezeichnet hier die Teile von Algrithmen, dei nicht auf mathematischen-naturwissenschaftlichen Analysen und Prinzipien beruhen, sondern vom Programmierer eher intuitiv hinzugefügt werden. Numerische Software enthält fast immer heuristische Abschnitte.

Testen

Das Testen, das sich auf eine endliche (und im allgemeinen sehr kleine) Stichprobe beschränken muß, kann nicht einmal in einem statischen Sinn Aussagen über die Qualität von Algorithmen oder Programmen liefern.

Software-Verifikation

Für die Software-Verifikation müssen folgende Grundnahmen erfüllt sein:
· Es gibt eine formale (mathematische) Spezifikation dessen, was das zu untersuchende Programm leisten soll.
· Es gibt analytische Mechanismen, mit denen man die Korrektheit von Anweisungen verifizieren kann, die eine Transformation der Eingabewerte in die gewünschten Ausgabewerte vornehmen.

Die erste Annahme ist bei Programmen, die Heuristiken verwenden, im allgemeinen nicht erfüllt. Die erste Voraussetzung ist auch in allen Fällen nicht erfüllt, in denen eine präzise mathematische Beschreibung des Problembereichs, den ein Softwareprodukt abdecken soll, nicht möglich.

Die zweite Voraussetzung ist im allgemeinen auf Grund der Größe und Komplexität numerischer Programme nicht erfüllt. Auch für automatische Verifikationssysteme sind numerische Programme in den meisten Fällen viel zu komplex.