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

Meta-Programming & Reflection (Wintersemester 2011/2012)

Dozent: Prof. Dr. Robert Hirschfeld (Software-Architekturen) , Bastian Steinert (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. Die Entdeckung von Plagiaten führt zu jedem Zeitpunkt zum sofortigen Nichtbestehen der jeweiligen Leistung.

Zwei Wochen vor dem jeweiligen Vortragstermin bespricht jeder Teilnehmer die Vorversion der 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.

Die schriftliche Ausarbeitung ist am Ende der Vorlesungszeit per Email oder auf einer CD-ROM abzugeben. Sie soll Elemente der sich an den Vortrag anschließenden Diskussion aufgreifen. Einzureichen sind

  • die Dokumentquellen der Ausarbeitung und
  • eine 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

Erste Veranstaltung:

  • Do, 27.10.11, 11:00 Uhr

Vorlesungen und Übungen/Seminare:

  • Do, 11:00 Uhr Raum NEU ab 4.11.: Hörsaal 2
  • am 9.02.2012 abweichend in Hörsaal 1

Themenstellung:

  • voraussichtlich am Do, 27.10.11, 11:00 Uhr

Themenvergabe:

 

Allgemeine Information

  • Semesterwochenstunden : 2
  • ECTS : 3
  • Benotet : Ja
  • Einschreibefrist : 1.10.2011 - 31.3.2012
  • Programm : IT-Systems Engineering MA
  • Lehrform : V
  • Belegungsart : Wahlpflicht

Module

  • IT-Systems Engineering A
  • IT-Systems Engineering B
  • IT-Systems Engineering C
  • IT-Systems Engineering D
  • Software Architecture & Modeling Technology

Zurück