Master-/Diplomarbeit: Implementierung des !CoBox-Modells in Scala

Die AG Softwaretechnik bietet ab sofort eine Master-/Diplomarbeit mit dem Thema “Implementierung des !CoBox-Modells in Scala” an.

Motivation

Dank Moore’s Law konnten sich Programmierer die letzten Jahrzehnte lang darauf verlassen, dass sich die Geschwindigkeit ihrer einmal geschriebenen Programme alle 2 Jahre verdoppelten. Die Zeiten haben sich nun geändert. Zwar verdoppelt sich die Transistordichte immer noch alle 2 Jahre, Moore hat also immer noch recht, allerdings resultiert dies nicht mehr in höheren Taktraten, sondern, neben niedrigerem Energieverbrauch, vor allem in Mehrkern-Architekturen. In dieser neuen Welt werden nur noch Programme schneller, die nebenläufig geschrieben sind. Die heute aktuellen Mainstream-Programmiersprachen wie Java oder C# sind auf diese Situation schlecht vorbereitet. Das Nebenläufigkeitsmodell dieser Sprachen basiert auf Threads, die auf einem gemeinsamen Speicher arbeiten. Um data races zu verhindern müssen einfache Konzepte wie Locks oder Monitore verwendet werden. Der Einsatz dieser Sprachmittel ist allerdings sehr fehleranfällig und vor allem nicht modular.

Aufgabenstellung

In der Arbeitsgruppe Softwaretechnik ist aus diesem Grund ein neues Nebenläufigkeitsmodell entwickelt worden. Es basiert auf so genannten CoBoxen. CoBoxen haben ihren eigenen Objekt-Speicher auf dem eine Menge von kooperativen Tasks operieren. Untereinander kommunizieren CoBoxen mittels asynchroner Nachrichten. Für das CoBox-Modell existiert eine auf Java basierte Sprachimplementierung namens JCoBox. Um zu zeigen, dass das CoBox-Modell unabhängig von Java ist, strebt die AG Softwaretechnik CoBox-Erweiterungen für andere Programmiersprachen an, unter anderem Scala. Scala ist eine Programmiersprache mit mächtigen Abstraktionen, die es erlaubt domainspezifische Spracherweiterung über Bibliotheken bereitzustellen, ohne den Compiler erweitern zu müssen. In dieser Master- bzw. Diplomarbeit soll das CoBox-Modell in die Programmiersprache Scala integriert werden. Hierbei muss zunächst konzeptionell erarbeitet werden, wie die Erweiterung aussehen wird, welche Features des CoBox-Modells unterstützt werden können, und welche Prinzip bedingt nicht umgesetzt werden können. Die Erweiterung soll dann als Bibliothek in Scala implementiert werden. Die Implementierung soll anschließend anhand einer mittelgroßen Anwendung evaluiert werden.

Vorkenntnisse

Gute Kenntnisse der Objekt-Orientierung im Allgemeinen sind Grundvoraussetzung. Weiterhin sind Kenntnisse nebenläufiger Programmierung von großem Nutzen.

Ansprechpartner

Jan Schäfer