Dienstag, 18. Oktober 2011

2011 Workshop Impressions

Opening Session
The 1st Workshop on GD&MDSD was opened by co-organizer Maic Masuch with an overview on the workshop schedule and a brief introduction kick-off, so that everyone gets to know each other a little bit (we had about 10 participants).

After that, Ed Merks opened the workshop thematically with the wonderful keynote "Whether 'tis Nobler in the Mind to Model", where he not only introduced modeling, but also sweeped away common prejudices about modeling and discussed the potential of modeling and the beauty of ecore.

In my first talk that day, I tried to bridge the gap between Ed's findings and the game development process. Therefore, I first tried to picture the complexity of the game development process by splitting it into five dimensions.

After that, I gave an example within the game domain that illustrates what it actually means when we speak about model-driven development.

I closed the opening session with derived consequences and a sneak peek at my language engineering workflow, which we came back to at the afternoon session.

Position Paper Session
In the second session, the invited authors presented their work with impressive demonstrations of how they made use of model-driven approaches and domain-specific languages.
Mathias Funk started with his project PULP, where he created a modeling language for mobile HTML5 game applications.

Unfortunately, Victor T. Sarinho couldn't make it, but he provided a video, where his work is shown.
Steve Robenalt presented his work on MDSD for Games with Eclipse Modeling Technologies, featuring an insight in his work as a eclipse modeling professional and several hands-on examples.

The presentations built a perfect foundation for the practical session after the lunch.

Practical Session
After the lunch, it was time for the participants to get their hands dirty. Therefore, they got the task to design and implement their own modeling language. To frame this task, we provided a short introduction on Domain-Specific Languages, the aforementioned language engineering workflow, and an example setup for which the language should be developed. Here's the setup.

It was very interesting how the participants developed three different kind of reference models which potentially lead to three different kinds of concrete syntax descriptions for the given setup. First, there was a very natural-language-like approach which allows to describe objects like this.

Branch is an object.
Branch is movable.
Branch is usable.
Branch is breakable.

Rubberband is an object.
It is movable.
It is usable.
It is not breakable.
Rubberband can be combined with Branch to a Slingshot.
Slingshot is movable.
It is usable.
It is breakable.

The participants discussed the pros and cons of such an approach, and came up with a similar, but more structured one:

Movable Objects {
  Branch, Rubberband, Slingshot

Usable Objects {
  Branch, Rubberband, Slingshot

Breakable Objects {
  Branch, Slingshot

Combined Object {
  Branch, Rubberband => Slingshot

Again, there was a vivid discussion on the pros and cons of this approach, which in the end even lead to a third, more mathematical approach:

Branch = object: movable, usable, breakable
Rubberband = object: movable, usable
Slingshot = Branch + Rubberband: movable, usable, breakable

Which led to a very interesting language design discussion, i.e. syntax design, concrete vs. abstract syntax, implicit vs. explicit description, etc..

Eventually, we used the third reference model to create a concrete syntax using Xtext.

With nothing else but this handy grammar definition, we can use Xtext to generate an already powerful editor. Our first model looked like this:

To compare the usability of this language, we also took a look at the natural-language-like approach.

We used the second language to dive deeper into some Xtext features, like semantic validation. So, we implemented a validation rule that ensures that only usable objects are used to create combined objects (as given by the setup). We also took a look at some prepared Xtend-templates which generate a Java  implementation for the modelled objects, considering the given class structure.

Closing Session
The workshop ended with a resume by the organizers and an open-ended, free discussion, which we enjoyed very much.

Because of the great experiences we collected, we are very eager to repeat this workshop next year. So stay tuned for more infos about the 2nd Workshop on GD&MDSD.


Keine Kommentare:

Kommentar veröffentlichen