Wissenschaftsdisziplinen
Informatik (100%)
Keywords
-
SOFTWARE ENGINEERING,
DEBUGGING,
MODEL-BASED DIAGNOSIS
Das Projekt JADE Erweiterungen (engl. JADE Extensions, JADE-X) hat zum Ziel, ein intelligentes Werkzeug zu entwickeln, welches das Debugging von Programmen so weit als möglich automatisiert, da diese Aufgabe während des Entwicklungsprozeßes im allgemeinen viel Zeit benötigt und daher kostenintensiv ist. Daher wurden eine Reihe von Techniken zum Debuggen und Verifizieren von Programmen entwickelt, wobei jeder dieser Ansätze unterschiedliches Wissen über das Programm voraussetzt. Im Gegensatz zu einigen dieser Verfahren versucht JADE-X nicht, ein Programm formal zu beweisen, da dies eine formale Spezifikation des Programms benötigt und diese gewöhnlich nicht vorhanden ist. Das während JADE-X zu entwickelnde Debugging-Werkzeug verwendet modellbasierte Diagnose (MBD), um Programme zu analysieren. MBD wurde ursprünglich zur Diagnose von physikalischen Systemen entwickelt und benötigt ein komponentenbasiertes Modell des Systems, welches dessen Funktionalität beschreibt. Dieser Ansatz kann auch für Programme angewendet werden, wobei die Komponenten aus Teilen des Programms (wie z.B. Anweisungen oder Ausdrücken) gewonnen werden. Die Verbindungen werden aus den benötigten und veränderten Variablen gewonnen. Da bei der Modellbildung eine Vielzahl von Eigenschaften berücksichtigt werden müssen (z.B. die gewünschte Präzision), ist es nicht einfach ein allgemeines Modell eines Programms zu entwickeln und muß daher genau untersucht werden. JADE-X basiert auf den Ergebnissen eines vorangegangenen Projekts (JADE), und hat zum Ziel, die daraus gewonnen Ergebnisse weiter zu verbessern. Mehrere Modelle, welche unterschiedliche Aspekte eines Programms repräsentieren, sind zu entwickeln. Durch Kombinationen der Modelle soll eine Reduktion der Fehlerkandidaten, der benötigten Zeit und der Benutzerinteraktin erreicht werden. Als Ergebnis von JADE-X sollen folgende Ziele erreicht werden: (1) Entwicklung unterschiedlicher Modelle für Programme, (2) Untersuchung der Eigenschaften der Modelle (z.B.: wann kann ein Modell sinnvoll eingesetzt werden?); (3) Verbesserung der Diagnosealgorithmen; (4) Empirische Analyse der Ergebnisse unter Verwendung praktisch relevanter Programme; (5) Entwicklung eines Werkzeugs, welches multiple Modelle, Diagnosealgorithmen und Spezifikationsmöglichkeiten des gewünschten Verhaltens vereint.
Im letzten Jahrzehnt sind objekt-orientierter Programmiersprachen, wie z.B. die Programmiersprache Java populär geworden u. a. um die ständig ansteigende Komplexität in der Softwareentwicklung in den Griff zu bekommen. Um mit dem fehleranfälligen Entwicklungsprozeß in Großprojekten fertig zu werden, ist in der heutigen, schnellebigen Wirtschaft der Einsatz von formaler Verifikation und ausgiebigem Testen notwendig. Ist jedoch fehlerhaftes Verhalten durch Testen oder Verifikation erst einmal identifiziert, dann gilt es die fehlerhafte Stelle im Quelltext zu finden. Jedoch gibt es derzeit kaum Unterstützung für die Designerln um die fehlerhafte(n) Stelle(n) aufzuspüren wenn ein Fehler entdeckt wurde. Das Project JADE-X (JADE eXtensions) greift diesen offenen Punkt mit Grundlagenforschung im Bereich automatisiertes Software Debugging für objekt-orientierte Programmiersprachen auf. Im sog. JADE Projekt (Java Debugging Experiments) wurde an der Anwendbarkeit der modell-basierten Diagnose zur Fehlerlokalisierung in Java Programmen geforscht. Grundsätzlich sind die in diesem Projekt etablierten Techniken anwendbar, jedoch stellte sich die Modellierung, oder präziser-das Erfassen von für die Fehlerlokalisierung relevanten Aspekten - als schwierig aber äußerst wichtig heraus. Während das JADE Projekt gezeigt hat, daß die Technik des modell- basierten Schließens im Bereich der objekt-orientierten Programmiersprachen anwendbar ist, ist das Ziel von JADE-X die Erweiterung der im JADE Projekt entwickelten Modelle. Im Rahmen des Projekts wurde dabei grundlegende Unterstützung für Entwurf und Entwicklung von semi-automatisierten und vollautomatisierten Debuggern etabliert. Da Programme zunehmend komplexer werden, ist es wichtig jene Aspekte des Programms aufzugreifen die das detektierte Fehlverhalten verursacht haben könnten um über irrelevante Programmattribute zu abstrahieren. Im Speziellen ist es sehr wünschenswert, die Größe der Debuggingmodelle und damit auch die Programmlaufzeit zur Berechnung der relevanten Diagnosen zu reduzieren. Um einen sehr hohen Grad an Automatismus zu erreichen, muß auch die Modellbildung vollautomatisch erfolgen, deshalb beschäftigt sich das JADE-X Projekt mit dem Auffinden von Programmabstraktionen, die ohne Benutzerinteraktion vom fehlerhaften Programm abgeleitet werden können. Jedoch führt ein einfacher Modellierungsansatz häufig zu unakzeptablen Antwortzeiten in der Berechung der Diagnosen oder ungenauer Lokalisierung des Fehlers. Um die angesprochenen Schwierigkeiten zu umgehen, verfolgte das Projekt JADE-X zwei Richtungen. Zum einen wurden abstrakte Modelle, sog. dependence models, die im JADE Projekt entwickelt wurden, verbessert. Diese Modelle sind für die Fehlerlokalisierung in sehr großen Programmen geeignet, liefern aber nur eine beschränkte Genauigkeit in Hinblick auf Fehlerlokalisierung aber ermöglichen eine schnelle Berechung der Diagnosekandidaten. Anzumerken ist diesbezüglich, daß die in JADE-X verbesserten Modelle eine Fehlerlokalisierung auch unter der Präsenz von Aliasing Effekten erlauben. Zweitens wurde im JADE-X Projekt auch Forschung im Bereich feingranularer Modelle durchgeführt. Auf Kosten eines deutlich höheren Berechnungsaufwands erlauben diese Modelle eine Fehlerlokalisierung auf der Ebene von Anweisungen und Ausdrücken. Um den Trade-Off zwischen Diagnosegenauigkeit und Berechnungsaufwand zu adressieren wurde im JADE-X Projekt an der sog. iterativen Verfeinerung geforscht-einem neuen Verfahren speziell im Bereich der Fehlererkennung. In dieser Hinsicht wurden in JADE-X nicht nur problem-orientierte Modelle, die auf iterativer Verfeinerung mit sog. Booleschen Programmen beruhen entwickelt, sondern auch eine engere Integration von Verifikationstechniken - d.h. Techniken zur Fehererkennung - mit Fehlerlokalisierungstechniken scheint nun realisierbar. Schließlich wurden im JADE-X Projekt auch erste empirische Grundlagen speziell im Bereich der Modellierung mit Booleschen Programmen geschaffen. Die Möglichkeit solche Booleschen Programme für die Fehlerlokalisierung einzusetzen motiviert-zumindest für Programme die bestimmte Charakteristika aufweisen - die Erreichbarkeit ähnlicher Resultate wie im Bereich der Fehlerlokalisierung von Hardwarebeschreibungssprachen in naher Zukunft.
- Technische Universität Wien - 100%