Flugschreiber für Programme

21.10.2004
Identify hat eine Lösung entwickelt, die der Ursache von Softwarefehlern auf die Spur kommen soll.

Anwendungsentwicklung ist gleichbedeutetend mit Anwendungsproblemen." Auf diesen einfachen Nenner bringt Oren Modai, Vice President European Operations bei Identify, ein Problem, das viele Unternehmen plagt. Kaum eine Anwendung läuft fehlerlos, IT-Verantwortliche sehen sich immer wieder mit Programmhängern oder softwarebedingten Systemabstürzen konfrontiert. Ihre nicht einfache Aufgabe ist es dann, die Ursache der Störung herauszufinden und zu beheben.

Diese Arbeit will der Anbieter Identify mit seinem Produkt "Appsight 5.0" erleichtern. Zwar kann das Tool keine Fehler verhindern, es ist laut Hersteller jedoch in der Lage, die Zeit für das Auffinden der für die Programm- und Systemabstürze verantwortlichen Ursachen um bis zu 60 Prozent zu reduzieren.

Black Box zeichnet Fehler auf

Das geschieht, indem die Software mit einer von Identify entwickelten und zum Patent angemeldeten Black-Box-Technik nach dem Prinzip eines Flugschreibers arbeitet: Sie überwacht das jeweils in Frage kommende Programm und zeichnet auf mehreren Ebenen minutiös auf, was während seiner Ausführung geschieht. Dazu gehören einerseits Eingaben durch den Anwender über Maus oder Tastatur, andererseits aber auch Systemereignisse wie zum Beispiel Schreib- beziehungsweise Lesezugriffe auf den Speicher oder Aufrufe bestimmter DLLs. Parallel dazu verfolgt das Tool, wie der Code abgearbeitet wird. Sämtliche Auffälligkeiten werden in einer Log-Datei festgehalten, die die IT-Experten später auswerten können. Um datenschutzrechtliche Probleme zu vermeiden, werden anwenderbezogene Daten beziehungsweise Eingaben (etwa Passwörter) während der Analyse vom Programm maskiert.

Modai unterscheidet drei wichtige Phasen während des Arbeitens mit Appsight: Auf das Sammeln der Informationen folgt die Weitergabe der so gewonnenen Daten an alle Beteiligten und anschließend die Analyse mit dem Ziel, das Kernproblem zu identifizieren. Den Experten hilft das Tool, indem es optisch hervorhebt, an welchen Stellen des Programms Probleme aufgetreten sind.

Geringe Systembelastung

Das System unterstützt Windows-basierende Applikationen sowie verschiedene Architekturen wie .NET oder J2EE. Um Appsight nutzen zu können, müssen Anwendungen nicht extra angepasst werden, sie lassen sich sogar im laufenden produktiven Einsatz überwachen. Die Kontrollsoftware hat laut Hersteller eine Größe von etwa 4 MB und erhöht die Auslastung des zu überwachenden Systems angeblich um lediglich ein bis drei Prozent.

Wie stark die Belastung ist, hängt nicht zuletzt davon ab, welche Informationen die Administratoren aufgezeichnet haben möchten und über welchen Zeitraum die Daten erfasst werden sollen. Um Speicherplatz zu sparen, lassen sich Aufzeichnungen zunächst in einem begrenzten Ringpuffer ablegen, der in bestimmten Intervallen wieder überschrieben wird. Dauerhaft speichert Appsight nur dann, wenn tatsächlich ein Problem auftrittt.

Für eine tief gehende Analyse auf Programmierzeilenebene, müssen Unternehmen im Besitz des betreffenden Sourcecodes sein. Das ist bei Open-Source-Lösungen der Fall oder dann, wenn Firmen die Applikationen selbst entwickelt haben. Liegt der Quellcode nicht vor, lassen sich Probleme aber dennoch auf Anwender- und Systemebene untersuchen.

Problemrekonstruktion entfällt

Appsight soll insbesondere dem User Helpdesk helfen: Um einem Fehler auf den Grund zu gehen, müssen die Spezialisten das Problem nun nicht mehr mühevoll nachstellen, sondern können von der zentralen Appsight-Konsole aus über das Netz eine Black Box auf dem Rechner des betroffenen Anwenders installieren. Diese sammelt beim nächsten Auftreten des Problems alle notwendigen Informationen und schreibt sie in eine Log-Datei. Über die Konsole lassen sich die vor Ort gemachten Aufzeichnungen dann beliebig oft abspielen.

Einer der prominentesten Kunden von Identify ist Microsoft: Die Redmonder nutzen die Software innerhalb der weltweit elf Microsoft Technology Center (MTC), um die Problemlösung bei .NET-Anwendungen zu beschleunigen.