Hasso-Plattner-Institut
Prof. Dr. Holger Giese
 

Modellgetriebene Softwareentwicklung für Multicore und Cloud Systeme

Bachelorprojekt im Wintersemester 2010/11 und Sommersemester 2011

UPDATE: Projektergebnisse

Das Bachelorprojekt wurde beim Bachelorpodium am 8. Juli 2011 präsentiert unter dem Titel:

  • Schlafende Prozessoren wecken

Die für das Bachelorprodium von den Studierenden erstellte Pressemitteilung, das Poster sowie die Aufzeichnung vom Vortrag beim Podium bieten eine Zusammenfassung der Projektergebnisse.

Hintergrund

Sogenannte domänenspezifische Sprachen (Engl. Domain specific languages bzw.DSLs) ermöglichen es, Anwendungen mit Hilfe von für die Domäne angemessenen Abstraktionen auf einem höheren Abstraktionsniveau zu spezifizieren. Mit Hilfe von Techniken der modellgetriebenen Softwareentwicklung wie Transformation und Interpretation werden die in der DSL verfassten Programme ausführbar. Die geschickte Wahl der Abstraktion kann die Effizienz und Qualität sowie die Portabilität und Langlebigkeit der Anwendungen positiv beeinflussen.
Die modellgetriebene Softwareentwicklung mit DSLs wird bereits erfolgreich bei der Entwicklung von Softwaresystemen bei der SAP eingesetzt. Diese
DSLs haben lange erfolgreich die Anwendungen von Veränderungen bei Betriebssystemen, Datenbanken und Hardwarearchitekturen abgeschirmt. Die
aktuellen Trends rund um Multicoresysteme und Cloud Computing als  Plattformen können jedoch von den bisher genutzten Sprachen nur noch bedingt ausgenutzt werden, da bisher verwendete Abstraktionen häufig zu einer expliziten Serialisierung des Verhaltens führen und Annahmen über die Datenhaltungsarchitektur machen, die in Cloud-Umgebungen nicht immer zutreffen. Deswegen sollen neue, für die Domäne Enterprise Applications und diese neuen Architekturen geeignete Abstraktionen sowie darauf aufbauende DSLs entwickelt werden. Dabei spielt es unter anderem eine wichtige Rolle, die Funktionalität nah bei den im Hauptspeicher gehaltenen Daten ausführen zu können und so spaltenorientierte In-Memory Datenbanken zu verwenden, um insbesondere lesende und aggregierende Anfragen stark zu beschleunigen.
Um Experimente mit verschiedenen DSLs einfach zu ermöglichen, wird bei der SAP die Entwicklung einer Language Workbench betrachtet, die es ermöglicht, DSLs für Enterprise Applications zu entwickeln, die neben der fachlichen Domäne u.a. auch für Multicoresysteme und Cloud Computing geeignet sind.

Gegenstand

In diesem Bachelorprojekt soll deswegen im Kontext der modellbasierten Entwicklung eine solche Language Workbench in Eclipse entwickelt werden und anhand eines Beispiels für Multicoresysteme und Cloud Computing evaluiert werden. Dazu sollen im Rahmen des Projektes am Anfang eine existierende LanguageWorkbench und bereits in Eclipse vorhandene Teillösungen untersucht werden. Zusätzlich soll das Evaluierungsbeispiel erfasst werden, das dazu dienen soll, besser zu verstehen, wo im Einzelnen die Herausforderung einer DSL für Enterprise Applications mit Multicoresystemen mit In-Memory Datenbank und Cloud Computingals Zielplattform liegen. Auf Basis des so entwickelten Verständnisses sollen dann entsprechende Lösungskonzepte für die Language Workbench und DSL entwickelt werden und bzgl.ihrer Eignung anhand der Beispielprobleme evaluiert werden.

Auf Basis der Lösungskonzepte soll dann ein Prototyp der Language Workbench auf Basis vonEclipse entwickelt werden. Daran schließt sich eine Evaluierung dieses Prototypsanhand der Beispiel-DSL an. Es ist dabei das Ziel des Bachelorprojektes zu explorieren, wie eine DSL und eine entsprechende Entwicklungsumgebung für Enterprise Applications, die sowohl für Multicoresysteme mit In-Memory Datenbank wie auch Cloud Computing als Zielplattform geeignet ist, aussehen sollte.

Umsetzung

Das Bachelorprojekt kann bei der Umsetzung der Konzepte auf vorhandene Technologien zurückgreifen. Von Seiten der SAP werden wir auf dem FURCAS Projekt aufbauen. Bei EMF handelt es sich um frei verfügbare Software.Darüber hinaus verfügt das Fachgebiet über entsprechende Technologien für die effiziente, inkrementelle Transformation und Synchronisation von Modellen.Die prototypische Software soll entsprechend in Eclipse integriert arbeiten und solldementsprechend mit Java entwickelt werden.

Es ist geplant, die Beispiele anhandvon Multicoresystemen mit In-Memory Datenbank im HPI FutureSOC Lab und einer oder mehrerer kommerziellen Cloud Computing Plattformen (u.a. Amazon EC2) zuevaluieren. Einführungen in die zu nutzenden Werkzeuge und zu verwendenden weiteren Technologien werden im Rahmen des Projektes durchgeführt.

Umfeld

Das Projekt wird in Zusammenarbeit mit der SAP AG durchgeführt. Die Studierendenwerden im Rahmen der Kooperation mit der SAP AG als Auftragnehmer agieren unddie SAP AG als Auftraggeber und Domänenexperten auftreten. Dies gilt insbesonderefür die Erfassung der Anforderungen aber auch für die Evaluierung der Ergebnissedes Projekts.

Es ist zu erwarten, dass bei erfolgreicher Bearbeitung nach Abschluss des Projektsauch eine studentische Beschäftigung am HPI (oder der SAP AG) und/oder eineMasterarbeit in Kooperation mit der SAP AG möglich sind.

Organisation

Die Vorgehensweise im Projekt wird methodisch auf die Erfassung derAnforderungen, die Entwicklung der Lösungskonzepte, die Umsetzung einerLanguage Workbench und deren Evaluierung ausgerichtet. Durch zeitlich kurzeIterationen und entsprechende Feedbackschleifen mit dem Auftraggeber in Form vonTreffen in Potsdam sowie Walldorf soll während der gesamten Projektphase einzielorientiertes Vorgehen erreicht werden.In der Vorbereitungsphase werden fachliche Grundlagen zu den Themen Meta-Modellierung, Modelltransformationen, Modellsynchronisation sowie EnterpriseApplications, Multicoresysteme und Cloud Computing vermittelt. Dazu werdenbeispielhaft ausgewählte Aufgabenstellungen exemplarisch einzeln oder in kleinerenTeams bearbeitet und dem Gesamtteam vorgestellt.Studierende, die in diesem Projekt teilnehmen wollen, sollten Interesse an derModellierung und der modellgetriebenen Entwicklung haben. Es wird weiter erwartet,dass man sich in die zum Einsatz kommenden Methoden des Software-Engineeringwährend des Projekts einarbeitet.