Seminar Transformationen

Betreuer: Prof. Koschke, Raimund Klein und Raimar Falke

Termin

Freitags, 13h00-15h00, in Raum 3010.
Erster und zweiter Vortrag am 18. November 2005

Erstes Treffen

Wir treffen uns am Freitag, den 21. Oktober um 13h00 in Raum 3010.

Themen und Ausarbeitungen

1. Einführung und Überblick Graphtransformationen
Julian Graul (Betreuer: RKl)
18. November 2005
Dieser Beitrag soll den Teilnehmern die Terminologie und die grundlegenden Konzepte von Graphtransformationen vermitteln. Die Teilnehmer sollen durch diesen Beitrag erfahren, warum Graphtransformationen überhaupt eingesetzt werden und welche Verbesserungen man sich von ihnen erhofft.
Folien Ausarbeitung
2. Einführung und Überblick Baumtransformationen
Michaela Bunke (Betreuer: RF)
18. November 2005
Dieser Beitrag soll den Teilnehmern die Terminologie und die grundlegenden Konzepte von Baumtransformationen vermitteln. Die Teilnehmer sollen durch diesen Beitrag erfahren, warum Baumtransformationen überhaupt eingesetzt werden und welche Verbesserungen man sich von ihnen erhofft.
Folien Ausarbeitung
3. Pattern Matching
Maik Windhorst (Betreuer: RF)
25. November 2005
Pattern Matching ist das Suchen von einem Muster in einer Eingabe und das Binden von Teilen der Eingabe. Neben der Überprüfung der Eingabe kann Pattern Matching auch verwendet werden, um eine neue Ausgabe aus den gebundenen Teilen der Eingabe zu erstellen. Letzteres ist für Transformationen sinnvoll.

Welche Arten von Pattern Matching gibt es? Für welche Eingabetypen? Welche Implementierungsstrategien?

Folien Ausarbeitung
4. Theorie der Graphtransformation
Helge Wiemann (Betreuer: RKl)
25. November 2005
Graphen sind eine in der Informatik äußerst beliebte Datenstruktur. Jede direkte Berechnung auf diesen Daten ist eine Graphtransformation. Hier sollen die theoretischen Grundlagen und bekannte Hürden dieses inzwischen sehr gut untersuchten Mechanismus' vorgestellt werden.
Folien Ausarbeitung
5. Term Rewriting/Baumtransformationen
Friederike Jolk (Betreuer: RKl)
9. Dezember 2005
"Term Rewriting" (Termersetzung) ist das Gegenstück zur Graphtransformation in funktionalen Sprachen. Hier sollen das Berechnungsmodell und wichtige Eigenschaften erläutert werden.
Folien Ausarbeitung
6. Beispiele für Refactorings
??? (Betreuer: RKl)
9. Dezember 2005
Einige Refactorings examplarisch vorstellen.
7. Automatische Erkennung von Bad Smells
Bernhard Berger (Betreuer: RF)
16. Dezember 2005
Bad Smells sind Indikatoren für schlechte innere Qualität der Software. Neben einer Analyse durch den Programmierer gibt es auch Ansätze, solche Probleme durch Computerprogramme finden zu lassen.

Welche Ansätze? Welche Ergebnisse?

Folien  Ausarbeitung
8. Quality-Driven Refactoring
Rebecca Tiarks (Betreuer: RF)
16. Dezember 2005
Der vorherige Vortrag beschäftigte sich mit der automatischen Erkennung von Bad Smells, den Symptomen von schlechter innerer Qualität. Neben der internen Qualität gibt es aber noch weitere Ziele, neben der reinen Korrektheit. Beispiele sind Laufzeit und Speicherverbrauch.

Es wird jetzt versucht, den Vorgang der Verbesserung der Qualitäten zu automatisieren. Dazu werden je noch Zielqualität bestimmte Refactorings, aber auch andere Transformationen ausgewählt.

Folien Ausarbeitung
9. Formalisieren von Refactorings
ausgefallen
ausgefallen
Refactorings werden fast immer nur umgangssprachlich beschrieben und die Anleitung ist eher ein Kochrezept. Es existieren jedoch Anstrengungen, diese mit formalen Methoden zu beschreiben und somit automatisierbar zu machen. Einige entsprechende Ansätze sollen hier dargestellt werden.
10. Architekturrefactorings
Henrik Holle (Betreuer: RKl)
13. Januar 2005
Architekturrefactorings sind semantikerhaltende Transformationen, welche die Architektur der Software verbessern bzw. deren Darstellung. Wie erkennt man Ansätze für solche Refactorings? Welche Arten von Refactorings gibt es?
Ausarbeitung
11. Notationen für Transformationsregeln
Dennis Gerke (Betreuer: RF)
20. Januar 2006
Wie werden die Transformationsregeln in den einzelnen Systemen angegeben? Welche theorischen Grundlagen bestehen? Welche Mächtigkeit? Wie sieht es mit der Handhabbarkeit aus?
Folien Ausarbeitung
12. Existierende Systeme: Stratego/XT und ASF+SDF
Paul Weder (Betreuer: RKl)
20. Januar 2006
Mithilfe der ASF+SDF-MetaEnvironment lassen sich sowohl Programmiersprachen definieren als auch in einer so definierten Sprache geschriebene Programme analysieren und transformieren.

Stratego ist eine auf Termersetzung basierende Transformationssprache. Das besondere ist die Trennung von Regeln und Ersetzungsstrategien. Stratego/XT kombiniert diese Sprache mit zwei weiteren Transformationswerkzeugen, u.a. SDF.

Wie sehen die Daten-/Berechnungsmodelle dieser Werkzeuge aus? Worin ähneln/unterscheiden sie sich? Anwendungen?

Folien Ausarbeitung
13. Existierende Systeme: TXL, Raincode und DMS
Doum Maimouna Bamba (Betreuer: RKl)
27. Januar 2006
TXL ist eine auf funktionalen Ansätzen basierende Transformationssprache, mit deren Hilfe Transformationsregeln und -strategien spezifiziert werden können.

Raincode ist ein kommerzielles u.a. auf Reverse Engineering ausgelegtes Transformationswerkzeug.

Das Design Maintenance System DMS bietet einen kompletten "Software Reengineering Toolkit", zu dem u.a. eine Transformationsmaschine gehört.

Wie sehen die Daten-/Berechnungsmodelle dieser Werkzeuge aus? Worin ähneln/unterscheiden sie sich? Anwendungen?

Folien Ausarbeitung
14. Existierende Systeme: PROGRES und AGG
Bernhard Scholz (Betreuer: RKl)
27. Januar 2006
Die Sprache PROGRES (PROgrammierte GRaphErsetzungsSysteme) der RWTH Aachen kombiniert die Graphtransformation mit ausgefeilten Programmiersprachenkonstrukten.

Das System AGG (Attributed Graph Grammars) von der TU Berlin soll u.a. Rapid Prototyping bei der Entwicklung von Graphtransformationswerkzeugen unterstützen. Die benutzte GTF-Maschine kann über ein Java-API auch direkt angesteuert werden.

Wie sehen die Daten-/Berechnungsmodelle dieser Werkzeuge aus? Worin ähneln/unterscheiden sie sich? Anwendungen?

Folien Ausarbeitung
15. Existierende Systeme: Fujaba, FermaT, RECODER und Eclipse
Torben Hildebrandt (Betreuer: RF)
3. Februar 2006
Fujaba ist ein UML-basiertes Entwicklungswerkzeug für Java, welches mithilfe von Graphtransformation z.B. Entwurfsmuster erkennt.

FermaT ist ein Transformationssystem, welches aus der langjährigen Forschungsarbeit von Martin Ward hervorgegangen ist. Martin Ward wendet FermaT sowohl für die "klassische" Programmtransformation als auch für die Programmtransformation zum Zwecke der Beweisführung an.

RECODER ist ein Java-basiertes Framework für die Analyse und Transformationen von Java-Quelltext.

In der Eclipse-Entwicklungsumgebung sind zahlreiche Refactorings bereits eingebaut.

Wie sehen die Daten-/Berechnungsmodelle dieser Werkzeuge aus? Worin ähneln/unterscheiden sie sich? Anwendungen? (Besonderes Augenmerk liegt hier auf Fujaba und Fermat.)

Folien Ausarbeitung
16. Quelltextähnlichkeit
Tobias Jamin (Betreuer: RF)
3. Februar 2006
Transformationen ändern den Quelltext eines Programmes. Dabei sollen die Änderungen aber minimal sein, d.h. keine zusätzlichen Änderungen vorgenommen werden. So sollen z.B. das Layout des Quelltextes und die Kommentare erhalten bleiben.

Ein weiterer Aspekt ist die Anpassung dieser Eigenschaften bei einer Transformation. Wenn ein Block in einen inneren Block verschoben wird, sollen z.B. alle Kommentare mitverschoben werden und der neuen Einrückungstiefe angepasst werden.

Folien Ausarbeitung
17. Präprozessor
Yuriy Yepifanov (Betreuer: RF)
10. Februar 2006
Präprozessoranweisungen erschweren die Analyse von Programmen und auch ihre Transformation. Warum? Welche Lösungen existieren?
Folien Ausarbeitung
18. Transformationen in der Praxis
??? (Betreuer: RKl)
10. Februar 2006
Wo und wie werden Transformationssysteme in der Praxis eingesetzt? Mit welchem Erfolg? Was sind Motivationen für den Einsatz? Ist der Einsatz ökonomisch vorteilhaft? Optimierungen von Compilern als Transformationen.

Vorträge

Die Vorträge sollen jeweils 30 min dauern. Daran schließen sich 15 min Diskussion an.

Ausarbeitung

Die Ausarbeitungen werden hier verfügbar gemacht, sobald sie abgegeben werden. Die Abgabe einer vorläufigen Ausarbeitung inkl. Vortragsfolien ist eine Woche vor dem Vortrag notwendig.
Die endgültige Ausarbeitung muss uns eine Woche nach dem Vortrag in elektronischer Form (Orginaldokument, Postscript oder PDF) vorliegen.
Die Ausarbeitung sollte bitte unbedingt von einem Kommilitonen vor Abgabe auf Rechtschreibfehler etc. geprüft werden.
Die Ausarbeitungen müssen dem zweispaltigen IEEE-Format für Konferenzbeiträge genügen und sollen zwischen sechs und acht Seiten lang sein. Unter den folgenden Links gibt es entsprechende Vorlagen.

Hinweise

Generelle Hinweise zu Vorträgen und Ausarbeitungen findet man hier.

Literatursuche

Startpunkte für Transformationen:


Informationen auf dieser Seite sind gültig bis Ende des SS2006.
grp-afmeister at informatik dot uni-bremen dot de