Hasso-Plattner-Institut
Hasso-Plattner-Institut
  
Login
 

Kontextorientiertes Programmieren (Wintersemester 2017/2018)

Dozent: Prof. Dr. Robert Hirschfeld (Software-Architekturen) , Stefan Ramson (Software-Architekturen) , Jens Lincke (Software-Architekturen) , Patrick Rein (Software-Architekturen)

Beschreibung

Programmiersprachen erlauben eine Dekomposition des Systems im Rahmen der vorgegebenen Modularitätskonstrukte. Dies beinhaltet zum Beispiel Pakte, Klassen und Methoden einer objektorientierten Sprache wie Smalltalk oder Java.

In der Praxis zeigt sich jedoch häufig, dass nicht jeder Belang mit Hilfe der gegebenen Konstrukte gut modularisiert werden kann. Die gewählte Dekomposition, z.B. Vererbungshierarchie, kann in der Regel nur wenige Konzepte einer Domäne orthogonal abbilden. Die Implementierung vieler Belange schneiden diese daher quer (engl. "crosscutting"). Im Ergebnis müssen Programmierer zusammengehörige Programmtextzeilen auf viele Stellen (Module) verteilen (engl. "scattering"). Ein einzelnes Modul beinhaltet als Konsequenz mehrere Teile verschiedener Belange (engl. "tangling"). Dies erfordert eine sorgfältige Dokumentation, um Fehler zu vermeiden.

Erweiterungen von Programmiersprachen um neue Modulkonstrukte können helfen, diese Probleme der querschneidenden Belange zu lösen. Hierbei unterscheidet man homogene und heterogene Belange. Bei Ersterem wird identischer Programmtext an viele Stellen eingefügt (engl. "aspect-oriented programming"). Bei Letzterem wird unterschiedlicher Programmtext an mehreren Stellen eingefügt (engl. "context-oriented programming").

In den vergangenen zehn Jahren wurden viele unterschiedliche Implementierungen für Kontextorientiertes Programmieren für diverse Sprachen und Umgebungen vorgestellt. Dieses Seminar beschäftigt sich mit der Analyse und dem Vergleich verschiedener Systeme der kontextorientieren Programmierung.

Im Verlauf des Seminars erarbeiten die Teilnehmer die Designziele, Anwendungsfälle, Mechanismen und Implementierungsdetails der selbst gewählten Systeme. Diese werden anhand von implementierten Beispielen und deren tenchnischen Grundlagen in Form von Vorträgen sowie schriftlichen Ausarbeitungen vorgestellt und verglichen.

Voraussetzungen

Vertiefte Kenntnisse in der gewählten Host-Programmiersprache/-umgebung

Literatur

  • Bobrow, D. G. & Goldstein, I. P. Representing Design Alternatives Proceedings of the 1980 AISB Conference on Artificial Intelligence, IOS Press, 1980, 25-35
  • Hirschfeld, R.; Costanza, P. & Nierstrasz, O. Context-oriented Programming Journal of Object Technology (JOT), AITO, 2008, 7, 125-151
  • Appeltauer, M.; Hirschfeld, R.; Haupt, M.; Lincke, J. & Perscheid, M. A Comparison of Context-oriented Programming Languages International Workshop on Context-Oriented Programming (COP), ACM, 2009, 6:1-6:6
  • Kamina, T.; Aotani, T. & Masuhara, H. Generalized layer activation mechanism through contexts and subscribers 14th International Conference on Modularity (MODULARITY), 2015, ACM, 2015, 14-28


Weiterführende Literatur wird spezifisch für die jeweiligen Themen im Seminar bekanntgegeben.

Lern- und Lehrformen

Seminar

Leistungserfassung

Vorträge, Diskussion, Implementierung von Anwendungsfällen sowie schriftliche Ausarbeitungen werden mit sechs benoteten Leistungspunkten angerechnet.

Jeder Seminarteilnehmer bearbeitet zwei der gestellten Seminarthemen vertiefend.

Vorträge

Die bearbeiteten Systeme werden in zwei Vorträgen von je 20 - 35 Minuten Dauer präsentiert, an die sich jeweils eine Diskussion anschließt. Beide Vorträge sollen erarbeitete Theorie, technische Aspekte und eine aufgezeichnete oder Live-Vorführung (Demo) beinhalten. Der zweite Vortrag soll zusätzlich einen Vergleich der beiden untersuchten Systeme beinhalten.

Spätestens eine Woche vor dem jeweiligen Vortragstermin bespricht jeder Teilnehmer eine Vorversion seiner Vortragsunterlagen mit einem der Betreuer. Um einen Termin für diese Vorbesprechung kümmern sich die Teilnehmer selbstständig. Die Vortragsunterlagen sind einen Tag vor dem Vortrag per Email einzureichen. Sie bestehen für beide Vorträge aus

  • den Dokumentquellen der im Vortrag verwendeten Folien,
  • einer PDF-Version derselben
  • dem in der Demo verwendeten Quelltext/Prototypen,
  • ein Videoclip der Demo,
  • einer Installationsbeschreibung, und
  • einem Demo-Script.


Ausarbeitung


Für beide gewählten Systeme ist jeweils eine separate schriftliche Ausarbeitung auf Englisch abzuliefern, welche das jeweilige System und dessen Eigenschaften kritisch beleuchtet. Für die Ausarbeitungen der gewählten Systeme stellen die Betreuen ein entsprechendes Template zur Bearbeitung bereit. Dieses ist als Grundlage für die Untersuchungen anzusehen und behandelt Fragen zu Designzielen, Anwendungsfällen, Mechanismen und Implementierungsdetails der gewählten Systeme. 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.

Eine Vorversion der schriftlichen Ausarbeitungen ist spätestens eine Woche nach dem Endvortrag 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 den Teilnehmer zurückgegeben. Die Kommentare des Gutachters sind bei der Anfertigung der Endfassung zu berücksichtigen. Die Endfassung ist am Ende der Vorlesungszeit per Email abzugeben. Sie besteht aus

  • den Dokumentquellen der Ausarbeitung,
  • einer PDF-Version derselben, und
  • Dem Repository-Link mit Commit-Hash.


Alle im Rahmen des Seminars erstellten Dokumente und Quelltexte sollten unter der MIT-Lizenz und, falls notwendig, mit einer den verwendeten Systemen kompatiblen Lizenz bereitgestellt werden. Wird das Einreichen verlangter Dokumente bis zum jeweils angegebenen Datum versäumt, so gelten diese als nicht eingereicht, was zur Abwertung der Gesamtleistung führt.

(Zwei-)wöchentliche Treffen

Je nach Teilnehmerzahl treffen sich die Teilnehmer wöchentlich oder zweiwöchentlich mit ihrem Betreuer zur Besprechung des Seminarfortschritts. Um einen Termin für diese Vorbesprechung kümmern sich die Teilnehmer selbstständig. Die wöchentlichen Treffen fließen anhand der folgenden Kriterien in die Bewertung mit ein:

  • Qualität der Zwischenergebnisse
  • Kontinuierlicher Fortschritt
  • Einbeziehen des erhaltenen Feedbacks

Termine

Dienstags, 13:30-15:00, Raum A-2.1

  • Einführung und Themenvorstellung, 17.10.2017
  • Themenvergabe, 24.10.2017
  • Zwischenvorträge, Dezember 2017 (je nach Teilnehmerzahl)
  • Endvorträge, Ende Januar 2018 (je nach Teilnehmerzahl)
  • Abgabe Dokumente, 09.02.2018

Allgemeine Information

  • Semesterwochenstunden : 4
  • ECTS : 6
  • Benotet : Ja
  • Einschreibefrist : 27.10.2017
  • Programm : IT-Systems Engineering MA
  • Lehrform : P/S
  • Belegungsart : Wahlpflicht
  • Maximale Teilnehmerzahl : 16

Module

  • OSIS-Konzepte und Methoden
  • OSIS-Spezialisierung
  • OSIS-Techniken und Werkzeuge
  • SAMT-Konzepte und Methoden
  • SAMT-Spezialisierung
  • SAMT-Techniken und Werkzeuge

Zurück