Mittwoch, 24. April 2024

Archiv


Rolle rückwärts

Rekompilieren, so steht es auf allen Lizenzverträgen für Software, ist untersagt. Denn die Analyse der Software lässt Rückschlüsse auf die Kniffe der Hersteller zu. Andererseits lassen sich so auch Programmierfehler aufspüren und beseitigen.

Von Holger Bruns | 08.07.2006
    Moderne Softwaresysteme sind meist komplexe Produkte. Gerne schleichen sich hier Fehler ein, die so genannten Bugs. Diese Bugs führen oft zu unerwünschten Programmeigenschaften und manchmal sogar zu Rechnerabstürzen mit spektakulären Folgen. Man denke beispielsweise an den Erstflug der Ariane 5, die vor ziemlich genau zehn Jahren in der Luft explodierte, weil die Software des Bordcomputers der Trägerrakete kläglich versagte. Bis heute bleibt die Forderung nach zuverlässigen Softwaresystemen ein wichtiges Thema in der Informatik, sagt der Softwaretechniker Professor Rainer Koschke von der Universität Bremen.

    "Also einerseits gibt es statische Methoden. Man kann also das Programm, ohne es auszuführen, analysieren, oder eben das Ganze dynamisch machen. Dynamisch heißt, wir protokollieren mit, welche Objekte im Programm herumlaufen und was für Operationen darauf jeweils angewandt werden."

    Die Analyse existierender Software ist meist aufwändig und verursacht hohe Kosten. Rainer Koschke will maschinell unterstützt verstehen, wie ein zu untersuchendes Softwaresystem funktioniert, um auf diese Weise auch die enthaltenen Fehler zu finden. Der Debugger, ein Tool zur schrittweisen Ausführung eines Programms, ist hier zwar ein gängiges Entwicklungswerkzeug, aber eines, das in der Regel nicht den Überblick über das gesamte Konzept eines komplexen Softwaresystems liefert. Das Team von Rainer Koschke geht deshalb einen anderen Weg. Ihr Analysewerkzeug protokolliert das Verhalten von Objekten innerhalb einer Software. Wie werden Variablen benutzt? Welche Operationen werden auf welchen Modulen ausgeführt? Am Ende steht eine grafische Darstellung des Innenlebens einer Software, die eine sehr fundierte Fehleranalyse zulässt.

    "Die Erfahrung zeigt, wenn man also zu Softwarefirmen geht, dass sie in der Regel wenig Dokumentation haben, beziehungsweise die Dokumentation, die sie haben, obsolet ist. Und dann steht ein neuer Programmierer, der neu ins Projekt kommt, vor dem Problem, dass er gar nicht weiss, wie er die Komponente zu benutzen hat. Und es gibt Statistiken, die zeigen, dass die Programmierer zu fünfzig Prozent mit ihrer Zeit einfach nur dasitzen und versuchen, dass Programmm überhaupt erst zu verstehen, bevor sie tatsächlich eine Änderung machen. Und die Zeit wollen wir eben verkürzen mit diesen Analysen."

    Im Kern geht es also um Reverse Engineering und damit um die Frage, welche Algorithmen in welcher Weise in einer Software verwendet werden. Softwarehersteller verbieten dies ihren Kunden zwar meist ausdrücklich, um ihr Knowhow zu schützen, aber es gibt Ausnahmen; dann nämlich, wenn einem der Quellkode sowieso selbst gehört, oder wenn die Schnittstellen einer Softwarekomponente offen gelegt werden sollen, damit sich diese Komponente innerhalb einer Organisation auch benutzen lässt. Die daraus hergeleitete Re-Dokumentation gibt den Programmierern eines Softwaresystems sogar oft erst die Möglichkeit, ihr Produkt wenigstens zu warten. Rainer Koschke:

    "Bauhaus ist der Name für das Forschungsprojekt. Und die Idee "form follows function" von Bauhaus ist genau das, was wir als Maxime in der Softwaretechnik auch verfolgen."

    Eine Maxime, die auf der Hand liegt, denn natürlich beschreibt der Kode einer Software genau, was ein System tun soll. Die präzise Ergründung dessen, was der Kode eigentlich beschreibt, versetzt den Programmierer in die Lage, nicht mehr blind ein paar Änderungen zu probieren, die dann plötzlich irgendwie magisch doch zu funktionieren scheinen. Rainer Koschke glaubt jedenfalls, dass wir in Zukunft ganz allgemein mit wesentlich stabilerer Software zu rechnen haben, und an dieser Entwicklung haben seine Werkzeuge zum Verstehen von Software einen sichtbaren Anteil.

    "Wenn es uns gelingt, die Kosten zu reduzieren, und genau das ist unser Ziel, wird die Software erstens billiger. Zweitens, unsere Analysen decken Fehler auf, so dass auch das einen Vorteil hat im Bezug auf Qualität. Die Software sollte dann langfristig auch weniger Fehler enthalten."