Compiler Optimierung für strombasierte Sprachen

for Degree: 
Contact Person: 
Status: 
Completed

Abstract - Zusammenfassung

Runtime Verifikation (RV) ist eine Möglichkeit Software auf ihre Korrektheit zu
überprüfen. Ein zu beobachtendes System gibt in der RV Ausgaben in Form
von Strömen aus, welche sich anhand einer vorher definierten Spezifikation
verifizieren lassen. Stream Runtime Verifikation (SRV) erweitert dieses Prinzip
um die Möglichkeit Funktionen auf diese Ströme anzuwenden, um neue
Ströme zu erzeugen. In dieser Arbeit wird die SRV Sprache TeSSLa behandelt.
TeSSLa ermöglicht es, Spezifikationen zu definieren und mithilfe eines Compilers
Monitore auf Grundlage dieser Spezifikationen zu erzeugen. Da diese Systeme oft
in einem zeitkritischen Kontext stehen, ist die zeitnahe Ausgabe von Ergebnissen
des Monitors notwendig.

Innerhalb dieser Arbeit werden zwei Optimierungen des TeSSLa-Compilers
untersucht. Dieser erzeugt aus einer TeSSLa-Spezifikation einen Monitor in
der Programmiersprache Scala.
Die erste Optimierung besteht darin, Funktionen aus der TeSSLa StandartLibrary
direkt zu übersetzen, anstatt sie wie bisher in Verkettungen anderer
TeSSLa-Funktionen, den sogenannten TeSSLa-Core-Funktionen, umzuwandeln. Die
Implementierung einer Domain Specific Language (DSL) soll diese
zielgerichtete Übersetzung ermöglichen.
Weiterhin verzichtete der TeSSLa-Compiler bisweilen auf die Verwendung
von expliziten Konstanten im erzeugten Code, deren Verwendung im Vergleich
zu der von Variablen ressourceneffizienter ist. Die zweite Optimierung
soll mögliche Konstanten erkennen und dementsprechend übersetzen.

Es konnte gezeigt werden, dass die Implementierung weiterer CoreFunktionen
die Laufzeit der Monitore um bis zu 90 % senkt. Die Analyse
auf mögliche konstante Initialisierungen erbrachte hingegen keine
Laufzeitverbesserungen. Beide Optimierungen zusammen konnten den Umfang der
Monitore bis zu 72 % senken. Dadurch ließ sich auch ein Monitor ausführen,
welcher vorher aufgrund seiner Länge in Programmzeilen nicht kompiliert
werden konnte. Weiterhin resultieren die vorgenommenen Optimierungen allgemein
in einer besseren Wart- und Lesbarkeit sowohl des TeSSLa-Compilers
als auch der entstehenden Monitore.