Software in gleichbleibend hoher Qualität zur Verfügung zu stellen und durch Test weiter zu verbessern sowie Entwurfsprozesse zu unterstützen sind die Ziele, die Dr. habil. Manfred Widera sich gesetzt hat. Nachdem er sich an der FernUniversität in Hagen in der Fakultät für Mathematik und Informatik mit einem entsprechenden Thema („Testing in Functional Programming“) habilitiert hat, ist er nun bereits in der Industrie als Berater für Software-Qualität und Software-Test tätig: „Ich habe auf der Basis meiner Habilitation einen reibungslosen Übergang in die Praxis geschafft“, freut er sich.
Als Mitarbeiter am Lehrgebiet Wissensbasierte Systeme von Prof. Dr. Christoph Beierle waren die Besonderheiten von Tests in funktionalen Programmiersprachen Schwerpunkt seiner Arbeit. Diese Sprachen sind, bedauert Widera, in der Praxis leider noch nicht sehr weit verbreitet. Beim Einsatz funktionaler Programmiersprachen kann man auf einem sehr hohen Abstraktionsniveau ausdrücken, was man machen will. Man braucht sich daher nur sehr wenige Gedanken darüber zu machen, wie der Computer die Vorgaben umsetzt.
Manfred Widera hat sich aufgrund der Vorteile den funktionalen Sprachen und den Tests für sie verschrieben. Charakteristisch für moderne Testverfahren ist ihr mehrstufiger Aufbau: Erst werden einzelne Programmmodule getestet. Diese Module müssen integriert werden, um das Gesamtprodukt zu erhalten. Für dieses erfolgen dann weitere Tests. Die Programmiersprache ist auf den höheren Stufen zweitrangig.
Wozu das in der Praxis gut ist, erläutert Widera am Beispiel von Einsendeaufgaben, mit denen Studierende der FernUniversität regelmäßig zu tun haben. Werden diese Aufgaben von einem menschlichen Korrektor geprüft, kann es leicht vorkommen, dass das Ergebnis u. a. auch durch den Postweg erst nach Wochen beim Studierenden ankommt. Bis dahin ist das Thema schon lange „abgehakt“.
Widera ging bei seiner Entwicklung davon aus, dass die Musterlösung ja schon die Problemlösung der Aufgabe enthält. In WebAssign – einer browserbasierten Software zum Herunterladen, Bearbeiten und Einsenden von Übungsaufgaben sowie zum anschließenden Herunterladen von Musterlösungen – vergleichen die Studierenden ihre Lösungen mit dem Muster. Wird ein Fehler festgestellt, muss dieser laut Vorgabe logischerweise bei den Studierenden vorliegen (die Wahrscheinlichkeit einer falschen Musterlösung ist vernachlässigbar gering). Stellt sich nun beim automatischen Vergleich eine Differenz zwischen den beiden Lösungen ein, bekommt der Studierende über WebAssign innerhalb von Sekunden einen Hinweis auf die richtige Lösung
Dieses Vergleichs-Programm hat Manfred Widera für die funktionale Programmierung entwickelt. „Der Test weist lediglich eine Abweichung zwischen Soll und Ist nach“, erläutert er. Der Studierende muss nun selbst überprüfen, wo der Fehler liegt. Die Rückmeldung ist also lediglich als Hilfe gedacht, um den Einsender oder die Einsenderin schrittweise zur richtigen Lösung zu führen, indem die Lösung mehrfach neu eingesandt wird.
Bei der Entwicklung musste Widera u. a. festlegen, wann beide Lösungen gleich sind. Beispielsweise können unterschiedlich aussehende Listen durchaus die gleiche Bedeutung haben, wenn die Elemente nur unterschiedlich angeordnet sind, die Reihenfolge aber für die Lösung der Aufgabenstellung unerheblich ist.
Ein menschlicher Betreuer erkennt dies sofort. Also muss das System dies auch schaffen können. Dazu lassen sich allgemeine Kriterien in das System eingeben, unter denen beide Lösungen als gleichwertig anzusehen sind. Das System kann diese Entscheidungen dann automatisch treffen und die Menschen entlasten.
Diese alles geschieht innerhalb von Sekunden, damit die Studierenden sofort aus dem Feedback der Maschine lernen und interaktiv mit dem System an ihrer Lösung arbeiten können: „Sie können sich eigenständig und unterstützt an die richtige Lösung heranarbeiten“, freut sich Widera über seine Entwicklung.
Seine Habilitationsarbeit hatte noch einen zweiten Aspekt: das Testen kleiner Module. Beim „White Box“-Testen werden die Tests entwickelt, indem man die innere Funktionsweise einzelner Module berücksichtigt. Dafür schaut man sich den Quellcode an und „baut“ die Ein- und Ausgabe so, dass jeder Teil aller Algorithmen einmal getestet wird. Bei imperativen Sprachen funktionierte das bereits, bei den Strukturen in funktionalen Sprachen noch nicht. Daher musste Widera „einiges ergänzen“. Genauer: Er hatte eine große Zahl von Detailproblemen zu lösen.
Für sicherheitskritische Programme des Flugbetriebes gibt es z. B. Normen, die die Nutzung von „White Box“-Tests vorschreiben. Also verhindern die Normen, dass funktionale Sprachen (für die bisher keine geeigneten Tests dieses Typs verfügbar waren) in solchen Anwendungsbereichen eingesetzt werden. Die Lösung: Es müssen geeignete Werkzeuge etc. zur Verfügung gestellt werden. Dieses Problem hat Widera in seiner Habilitation ebenfalls zu einem großen Teil gelöst.
FernUniversität in Hagen, 58084 Hagen, Telefon: +49 2331 987-01, E-Mail: fernuni@fernuni-hagen.de