Hasso-Plattner-Institut25 Jahre HPI
Hasso-Plattner-Institut25 Jahre HPI
Login
 

Kontextorientiertes Programmieren (Wintersemester 2014/2015)

Dozent: Prof. Dr. Robert Hirschfeld (Software-Architekturen) , Dr. Jens Lincke (Software-Architekturen) , Marcel Taeumel (Software-Architekturen) , Tobias Pape (Software-Architekturen) , Tim Felgentreff (Software-Architekturen)

Allgemeine Information

  • Semesterwochenstunden: 2
  • ECTS: 3
  • Benotet: Ja
  • Einschreibefrist: 24.10.2014
  • Lehrform: Seminar
  • Belegungsart: Wahlpflichtmodul

Studiengänge, Modulgruppen & Module

IT-Systems Engineering BA

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").

Dieses Seminar beschäftigt sich mit praktischen Anwendungsfällen der kontextorientieren Programmierung. Es existieren bereits verschiedene Implementierungen für unterschiedliche Sprachen und Umgebungen:

  • Java: ContextJ, ContextJ*, Jcop
  • JavaScript: ContextJS, COP.js
  • Lisp: ContextL, Ambiance, Lambic
  • Python: ContextPy, PyContext
  • Ruby: ContextR, Phenomenal Gem
  • Smalltalk: ContextS, ContextS2

Die Teilnehmer werden eine selbst ausgearbeitete Problemstellung bearbeiten und in diesem Zusammenhang einen Prototypen implementieren und vorstellen.

Voraussetzungen

Vertiefte Programmierkenntnisse in der gewählten Programmiersprache/-umgebung

Literatur

  • P. Tarr, H. Ossher, W. Harrison, and S. M. Sutton Jr, “N Degrees of Separation: Multi-dimensional Separation of Concerns,” in Proceedings of the 21st International Conference on Software Engineering, 1999, pp. 107–119.
  • R. Hirschfeld, P. Costanza, and O. Nierstrasz, “Context-oriented Programming,” Journal of Object Technology, vol. 7, no. 3, 2008.

Weitere Quellen werden je nach Thema in der Veranstaltung bekannt gegeben bzw. selbständig recherchiert.

Leistungserfassung

Die Themenfindung, -bearbeitung, und Ergebnisvorstellung werden mit drei benoteten Leistungspunkten angerechnet.

1) Themenfindung (20%)

Jeder Seminarteilnehmer erstellt schriftlich zwei Themenvorschläge (Motivation, Problemstellung, Lösungsskizze) von je einer Seite Umfang und bearbeitet dann eines davon nach kurzer Vorstellung und Abstimmung. Die Vorschläge sind spätestens drei Tage vor dem Vorstellungstermin einzureichen.

2) Themenbearbeitung (50%)

Das Projekt wird in der selbst gewählten Programmiersprache und -umgebung umgesetzt. Regelmäßige Rücksprachen und Fortschrittsberichte mit den Betreuern sind individuell zu vereinbaren. Je nach Teilnehmerzahl sind auch 2er-Gruppen möglich, welche dann eines der insgesamt vier Themenvorschläge gemeinsam bearbeiten.

3) Ergebnisvorstellung (30%)

Die Arbeit wird in einem Vortrag von 30-45 Minuten Dauer präsentiert, an den sich eine Diskussion anschließt. Der Vortrag soll technische Aspekte der durchgeführten Arbeit als Demonstration beinhalten.

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

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

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.

Termine

Dienstags, 17:00-18:30, Raum A-2.1

  • Einführung und Informationen zur Themenfindung, 14.10.2014
  • Themenvorstellung und Abstimmung, 28.10.2014
  • Ergebnisvorstellung, Ende Januar (je nach Teilnehmerzahl)
  • Konsultationen, individuell
  • Abgabe aller Projektartefakte, 06.02.2015

Zurück