Inkrementelle Code-Analyse Um sicherzustellen, dass Fehler im Programmdesign schon früh im
Entwicklungsprozess gefunden werden, ist es nützlich, Fehler möglichst
schon während des Editierens des Programms zu finden. Dazu sollte die
verwendete Analyse so schnell sein, dass ein interaktiver Einsatz
möglich ist. Eine Möglichkeit, dies umzusetzen, ist der Einsatz von
inkrementeller Analyse, bei der die Analyseergebnisse von Teilen eines
Programms zu Gesamtergebnissen kombiniert werden. Vorteil von
inkrementeller Programmanalyse ist, dass bei kleineren Änderungen ein
großer Teil der Analyseergebnisse wieder verwendet werden kann, wie
auch z.B. Analyseergebnisse von u.U. verwendeten Programmbibliotheken.
Hierdurch kann der Analyseaufwand drastisch reduziert werden, wodurch
die Analyse interaktiv nutzbar wird.
Unsere Analyse basiert darauf, für (Teile von) einzelnen Funktionen zu
bestimmen, welche Auswirkungen die Ausführung auf den Zustand des
Programms zur Laufzeit haben kann. Hierzu wird der Laufzeitzustand
eines Programms abstrakt durch einen Graphen dargestellt, der die im
Speicher befindlichen Variablen und Objekte und ihre Verzeigerung
beschreibt. Die Funktion wird symbolisch ausgeführt und dabei wird
bestimmt, welche Änderungen an dem Laufzeitzustand bzw. an dem diesen
darstellenden Graphen verursacht werden können. Um die Effekte von
Hintereinanderausführung von Programmteilen, Funktionsaufrufen,
Schleifen, etc. zu bestimmen, können die Änderungsbeschreibungen der
Programmteile dann zu größeren Änderungsbeschreibungen kombiniert
werden. Die Analyse geht dabei Bottom-Up vor, analysiert also eine
aufgerufene Funktion vor der aufrufenden Funktion (wobei Rekursion
analysierbar ist).
In 2017 lag der Schwerpunkt unserer Forschung darauf, die eingesetzten
Algorithmen und Datenstrukturen weiter zu entwickeln. Zusätzlich zu
einer besseren Skalierbarkeit der Analyse bei großen zu analysierenden
Programmen und einer Weiterentwicklung der inkrementellen Analyse (bei
der die Analyseergebnisse von unveränderten Programmteilen
weiterverwendet werden), lag der Fokus darauf, die Analyse anschaulich
zu dokumentieren, ihre Korrektheit nachzuvollziehen und eine
theoretische Grundlage zu konstruieren. | Projektleitung: Prof. Dr. Michael Philippsen
Beteiligte: Dipl.-Math. Jakob Krainz
Laufzeit: 1.4.2012 - 30.6.2017
|