Anpassung eines Expertensystems zur Programmanalyse und -refaktorisierung für Anwendungen aus der Automatisierungstechnik

Student:Johannes Wellhöfer
Title:Anpassung eines Expertensystems zur Programmanalyse und -refaktorisierung für Anwendungen aus der Automatisierungstechnik
Type:bachelor thesis
Advisors:Dotzler, G.; Kempf, S.; Philippsen, M.
State:submitted on September 3, 2012
Prerequisits:
Topic:

Hintergrund

Ein großes Problem beim Umstieg auf Multicore-Rechner besteht darin, dass der sequentielle Quellcode erst aufwändig zur Unterstützung der Parallelverarbeitung umgeschrieben werden muss. Mit bekannten sowie neu zu erarbeitenden Übersetzerbau- und Codeanalysetechniken wird versucht, die erforderliche Parallelisierung automatisch durchzuführen. Da eingebettete Systeme aber oft aus Laufzeit- bzw. Ressourcengründen recht maschinennah programmiert werden, werden in der Regel viele Konstrukte verwendet, die kaum zu analysieren und damit nicht automatisch parallelisierbar sind. Deshalb muss ein Expertensystem entwickelt werden, das dem Programmierer aufzeigt, woran die automatische Parallelisierung genau scheitert. Befolgt er dann die Ratschläge des Expertensystems, soll er seinen Code per Hand so „re-engineeren" können, dass einer parallelen Ausführung auf Multicore-Rechnern nichts mehr im Wege steht. Das bisher entwickelte Expertensystem untersucht Programme, die in Hochsprachen wie Java geschrieben wurden. In dieser Aufgabenstellung soll das System erweitert werden, so dass es auch mit Programmen aus der Automatisierungstechnik benutzt werden kann.

Thema

In dieser Arbeit soll das Expertensystem zunächst um einen Lexer und einen Parser für Programmiersprachen aus der Industrieautomatisierung ergänzt werden. Der Parser soll dabei einen AST erzeugen, der das Programm innerhalb des Expertensystems repräsentiert. Die Datenstrukturen des AST sollten dabei so entworfen bzw. ergänzt werden, dass die im Expertensystem eingesetzten Analysen auf dem AST angewendet werden können. Der AST soll ebenfalls parallele Sprachkonstrukte wie fork, join, wait, signal, etc. darstellen können. Mittels einer Menge von Testprogrammen soll abschließend gezeigt werden, dass der entwickelte Parser sämtliche Sprachkonstrukte korrekt abdeckt und diese im AST richtig repräsentiert werden.

Meilensteine

  • Implementierung des Lexers und des Parsers
  • Erzeugen des AST
  • Ergänzen des AST um parallele Sprachkonstrukte
  • Implementierung von Testprogrammen
  • Ausarbeitung

Literatur

  • Aho, Sethi, Ullman, Compilers: Principles, Techniques, and Tools Second Edition, Addison-Wesley, 2006. ISBN 0-321-48681-1
  • Muchnick, Advanced Compiler Design and Implementation, Morgan Kaufmann, 1997. ISBN 1-55860-320-4
watermark seal