Jakob Krainz
Dipl.-Math. Jakob Krainz
Projekte
-
Inkrementelle Code-Analyse
(Projekt aus Eigenmitteln)
Laufzeit: 01.04.2012 - 30.06.2017
URL: https://www2.cs.fau.de/research/InCA/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.
Publikationen
2017
Diff Graphs for a fast Incremental Pointer Analysis
12th Workshop on Implementation, Compilation, Optimization of Object-Oriented Languages, Programs and Systems (ICOOOLPS 2017) (Barcelona, 19.06.2017 - 19.06.2017)
In: ACM (Hrsg.): Proceedings of the 12th Workshop on Implementation, Compilation, Optimization of Object-Oriented Languages, Programs and Systems (ICOOOLPS'17) 2017
DOI: 10.1145/3098572.3098578
BibTeX: Download
, :
2011
A Wait-Free NCAS Library for Parallel Applications with Timing Constraints
16th ACM Symposium on Principles and Practice of Parallel Programming (PPoPP'11) (San Antonio, TX, 12.02.2011 - 16.02.2011)
In: Proceedings of the 16th ACM Symposium on Principles and Practice of Parallel Programming 2011 (PPoPP 2011) 2011
DOI: 10.1145/2038037.1941599
URL: http://www4.informatik.uni-erlangen.de/Publications/2011/stellwag_ppopp2011_rtncas.pdf
BibTeX: Download
, , , :
2010
Transformation von Datenstruktur-Operationen zu Wartefreien mithilfe einer wartefreien Multi-Word Compare-And-Swap Bibliothek (Diplomarbeit, 2010)
BibTeX: Download
:
A Wait-Free Dynamic Storage Allocator by Adopting the Helping Queue Pattern
Parallel and Distributed Computing and Networks (PDCN 2010) (Innsbruck, Austria, 16.02.2010 - 18.02.2010)
In: Proceedings Parallel and Distributed Computing and Networks (PDCN 2010), Calgary, AB, Canada: 2010
DOI: 10.2316/P.2010.676-052
URL: http://www4.informatik.uni-erlangen.de/Publications/2010/stellwag_pdcn2010_malloc.pdf
BibTeX: Download
, , :