Hasso-Plattner-Institut
Hasso-Plattner-Institut
  
Login
  • de
 

Metaprogrammierung und Reflection (Wintersemester 2006/2007)

Dozent: Dr.-Ing. Michael Haupt (Software-Architekturen) , Prof. Dr. Robert Hirschfeld (Software-Architekturen)

Beschreibung

Jedes Programm hat eine bestimmte Domäne zum Gegenstand. In einem Telekommunikationssystem umfasst diese Domäne zum Beispiel Kunden, Verbindungen, Dienste und Tarife. In einem Krankenhausverwaltungssystem wären dies beispielsweise Stationen, Bettenbelegungen, Patienten, Krankenblätter und Verordnungen. Metaprogramme sind spezielle Programme, die selbst Programme als Domäne besitzen. Sie manipulieren explizit andere Programme oder deren Repräsentation. Beispiele für Metaprogramme sind Compiler, Virtuelle Maschinen und Entwicklungsumgebungen. Reflektive Programme wiederum sind spezielle Metaprogramme, die in der Lage sind, sich selbst zu beobachten und zu beeinflussen.

Im Rahmen der Veranstaltung werden Metaprogrammierung im Allgemeinen und Reflektion im Besonderen besprochen. Es wird gezeigt, wie Reflektion verwendet werden kann, um bekannte objekt-orientierte Konzepte zu implementieren und zu erweitern sowie neuartige Programmierwerkzeuge und Ausführungsumgebungen bereitzustellen.

Stichworte: Meta, Reflection, Introspection, Intercession, Open Implementations, Metaobject Protocols, Implementierung objektorientierter Konzepte, Werkzeuge

Voraussetzungen

  • Abgeschlossenes Bachelor-Studium
  • Vertiefte Programmierkenntnisse in mindestens einer Programmiersprache

Literatur

  • Pattie Maes. Computational Reflection. Technical Report 87-2, VUB Brussels, Belgium, 1987.
  • Gregor Kiczales, Jim des Rivieres, Daniel G. Bobrow. The Art of the Metaobject Protocol. The MIT Press, 1991.
  • Adele Goldberg, David Robson. Smalltalk-80: The Language and its Implementation. Addison-Wesley, 1983.
  • Ira R. Forman, Nate Forman. Java Reflection in Action. Manning Publications, 2004.

Lern- und Lehrformen

Vorlesung mit Übungen/Seminaren

Leistungserfassung

Vortrag, Diskussion und schriftliche Ausarbeitung werden mit drei benoteten Leistungspunkten angerechnet.

Im Rahmen einer Projektarbeit sollen Teilnehmer eine Programmierplatform, Systembibliothek oder Anwendung hinsichtlich ihrer reflektiven Eigenschaften analysieren und in prototypischen Implementierungen vorstellen und illustrieren. Die Themen hierfür werden gestellt. Die Arbeit wird in einem Vortrag von 30 Minuten Dauer präsentiert, an den sich eine Diskussion anschließt. Der Vortrag soll technische Aspekte der durchgeführten Arbeit als Demonstration beinhalten. Ferner ist eine schriftliche Ausarbeitung auf Deutsch oder Englisch im Umfang von ca. acht Seiten im LNCS-Format abzuliefern, welche mindestens die folgenden Aspekte des Projekts dokumentiert:

  • Architektur des Gesamtsystems,
  • Entwurfsentscheidungen,
  • Konsequenzen der getroffenen Entwurfsentscheidungen, und
  • zusammenfassende Bewertung des Systems.

Die Ausarbeitung muss eine Kurzzusammenfassung ("abstract") sowie ein Literaturverzeichnis enthalten. Auf die korrekte Angabe aller verwendeten Quellen sowie sprachliche Korrektheit ist besondere Sorgfalt zu legen. Eine Eigenleistung muss erkennbar sein.

Zwei Wochen vor dem jeweiligen Vortragstermin bespricht jede Gruppe eine Vorversion ihrer Vortragsunterlagen mit einem der Betreuer. Die Vortragsunterlagen sind einen Tag vor dem Vortrag per Email oder auf einer CD-ROM einzureichen. Sie bestehen aus

  • den Dokumentquellen der im Vortrag verwendeten Folien,
  • einer PDF-Version derselben,
  • dem in der Demo verwendeten Quellcode,
  • einer Installationsbeschreibung, und
  • einem Demo-Script.

Eine Vorversion der schriftlichen Ausarbeitung ist eine Woche nach dem Vortrag bei einem der Betreuer als PDF-Dokument einzureichen. Sie soll Elemente der sich an den Vortrag anschließenden Diskussion aufgreifen und behandeln. Die Vorversion wird innerhalb einer Woche begutachtet und zur Endausfertigung an die Gruppe zurückgegeben. Die Kommentare des Gutachters sind bei der Anfertigung der Endfassung zu berücksichtigen. Die Endfassung ist am Ende der Vorlesungszeit per Email oder auf einer CD-ROM abzugeben. Sie besteht aus

  • den Dokumentquellen der Ausarbeitung und
  • einer PDF-Version derselben.

Alle im Rahmen der Veranstaltung erstellten Quelltexte sollen unter der MIT-Lizenz und, falls notwendig, mit einer den verwendeten Systemen kompatiblen Lizenz bereitgestellt werden.

Termine

Vorlesungen und Übungen/Seminare:

  • Dienstag, 11 - 12:30 Uhr (A-2.1)
  • findet nicht statt am 24.10.2006
  • findet außerplanmäßig statt am 17.11.2006 09:15- 10:45 und 11:00 - 12:30 Uhr im Raum A-1.1

Themenstellung:

  • 7. November 2006

Einschreibefrist:

  • 15. November 2006

Allgemeine Information

  • Semesterwochenstunden : 2
  • ECTS : 3
  • Benotet : Ja
  • Einschreibefrist : 15.11.2006
  • Programm : IT-Systems Engineering MA
  • Lehrform :
  • Belegungsart : Wahl

Zurück