Markus Schordan, TU Wien

Praktika

Diplomarbeiten und Praktika

Diplomarbeit Automatische Extraktion von Design Patterns
Moderne Software wird zunehmend unter der Verwendung von Design Patterns geschrieben. Die automatische Erkennung von Design Patterns erlaubt sicherzustellen, dass diese korrekt implementiert wurden und in einigen Faellen auch die Generierung von Dokumentation. Insbesonders ist dies relevant, wenn bestehende Software adaptiert werden muss, sodass Pattern uniform angepasst oder ersetzt werden müssen. In der Arbeit soll eine bestehende Methode für die Extraktion des Visitor Patterns implementiert und untersucht werden. Mit der vorhandenen Infrastruktur SATIrE sollen die Source-Codes diverser Softwareprojekte automatisch analysiert und nach Varianten des Visitor Design Patterns durchsucht werden.
Diplomarbeit Spezifikation von Source-To-Source Transformationen für objektorientierte Sprachen
Zahlreiche Optimierungen können als Source-To-Source Transformationen ausgedrückt werden. Hierbei ergibt sich jedoch das Problem, ob die Spezifikation der Transformation die Repraesentation einer Zwischendarstellung explizit macht (AST, Rewrite-Systeme etc.), oder in der Spezifikation Source-Fragmente enthalten sein können. Es soll untersucht werden, welcher der beiden Ansätze, oder ob die Kombination beider, eine kompakte Spezifikation von Source-To-Source Transformationen erlaubt. Weiters soll die Effizienz der Ansätze verglichen werden.
Praktikum Inlining und Devirtualisierung von Methodenaufrufen in objektorientierten Programmen
Virtuelle Methoden erlauben ein objektorientiertes Design von Software, bringen jedoch auch Nachteile im Laufzeitverhalten mit sich. In einigen Fällen können diese Nachteile beseitigt werden, indem virtuelle Methoden nach statischer Analyse durch normale Funktionsaufrufe ersetzt werden (Devirtualization) oder der Aufruf wird vollständig durch die Funktion ersetzt (inlining). Es soll das Ersetzen von Methodenaufrufen als Source-To-Source Transformation für ein existierendes C++ front-end implementiert werden. Die Performance der Implementierung als auch der Optimierung kann an grösseren Applikationen getestet werden.
Diplomarbeit
oder
Praktikum
Optimierung von C++ Applikationen unter Berücksichtigung der Semantik von Bibliotheksfunktionen
Liegen bestimmte Eigenschaften von Bibliotheksfunktionen vor, so können diese Funktionen ähnlich wie built-in Funktionen optimiert werden. Ist etwa von einer Funktion bekannt, dass sie keine Seiteneffekte (auf globale Variablen und Instanzvariablen) hat, so werden zahlreiche Optimierungen möglich, wie sie auch auf Ausdrücke, in denen nur Operatoren der Sprache selbst auftreten, angewendet werden können. Die Eigenschaften können entweder durch eine interprozedurale Analyse oder aus Annotationen ermittelt werden. Es sollen einige bekannte Cashe-Optimierungen implementiert werden, die speziell für eine existierend Bibliothek vorliegen. In einer Diplomarbeit ist die Erarbeitung einer Analyse miteingeschlossen.
Diplomarbeit
oder
Praktikum
Spezifikation und Implementierung von C++ Teilsprachen
C++ ist eine über Jahrzehnte hinweg erweiterte Version von C, wobei keines der C-Kontstrukte gestrichen, sondern immer neue Konstrukte hinzugefügt wurden. Dies erlaubt zahlreiche verschiedene Konstrukte zu verwenden, um die selbe Operation zu implementieren. In sogenannten "Guidelines" wird versucht festzuschreiben, welche Konstrukte erlaubt sind und wie diese verwendet werden sollen. Solche "Guidelines" sind jedoch überflüssig und wertlos wenn Millionen von Code-Zeilen nicht automatisch geprüft werden. In dieser Arbeit soll für ein existierendes C++ front-end eine Liste von Überprüfungen von Eigenschaften implementiert werden, sodass das automatische Überprüfen solcher "Guidelines" bzw. Teilsprachen möglich wird. Das Ziel ist, dass unerwünschte Konstrukte oder Kombinationen dieser verboten werden können und "bessere" Teilsprachen einfach definiert werden können, wobei die vorhandenen Optimierungsmöglichkeiten der C++ Compiler weiterhin vollständig genützt werden können. Diese Überprüfungen können z.B. durch zusätzliche Kommandozeilenparameter des front-ends, in separaten Files, oder durch #pragmas ein- bzw. ausgeschaltet werden. (Informationen zu einem ähnlichen Projekt für Java, Checkstyle (Sourceforge), kann man hier finden.) In einer Fortführung kann die Funktionalität um Programmanalysen und eine Spezifikationssprache erweitert werden.

Betreuer

Markus Schordan, Tel.: 58801/18516, E-mail: markus@complang.tuwien.ac.at
Complang
Schordan
   Publications
   Talks
   Activities
   Projects
   Research
   SATIrE
   Lehre
      OptUb
      Übersetzerbau
      SeminarPS
      Seminar
      Diplomarbeiten
      Praktika
Sitemap
Sitemap
regelmäßige LVAs:
OptimierendeÜ.
Übersetzerbau
Sem.ausProgr.spr.
Seminar(m.B.arb.)
Diplomarbeiten
Praktika
Fakultät für Informatik
Technische Universität Wien
Anfang | HTML 4.01 | letzte Änderung: 2008-03-05 (Schordan)