Codegeneratorentwicklung ist kein Hexenwerk

Mit der richtigen Herangehensweise und entsprechendem Tool Support ist auch die Entwicklung eines vollständig neuen Codegenerators sehr einfach.

Die Problemstellung ist auf den ersten Blick durchaus übersichtlich. Unter Modellierung und Metamodellierung haben wir die Input-Daten bereits in einem Modell erfasst und müssen nun irgendwie festlegen, welcher Code daraus generiert werden soll. Aber wie?

Ganz einfach: Generatoren werden mit Hilfe von Meta Genius als C# Applikation realisiert.

Das hat viele Vorteile. C# ist eine moderne und mächtige Programmiersprache, die weit verbreitet ist und die viele Softwareentwickler entweder schon beherrschen oder leicht erlernen können. Außerdem gibt es mit Visual Studio eine leistungsfähige Entwicklungsumgebung, die sogar vielen Unternehmen kostenlos zur Verfügung steht.

Das klingt schon mal vielversprechend. Aber für jedes Projekt einen Generator vollständig neu zu entwickeln, erscheint aber trotzdem so, als wäre es sehr aufwändig?

Bis jetzt schon, aber es gibt auch Generator-Teile, die wiederverwendet werden können.

Wenn ein Codegenerator gut strukturiert ist, gibt es z. B. eine Komponente, die am Ende die Files generiert und dabei auch die Formatierung des generierten Codes übernimmt. Diese Komponente – nennen wir sie mal „Generator-Engine“ – hängt nur von der zu generierenden Programmiersprache ab und kann daher wiederverwendet werden.

Damit reduziert sich der Aufwand für die Generatorentwicklung schon mal erheblich. Aus dem ürsprünglichen Generator wird dann nämlich ein einfacherer Transformator, der nur das Input-Modell in ein anderes Modell umwandeln muss.

Aber auch bei der Entwicklung von Transformatoren gibt es noch eine weitere Vereinfachung. Transformatoren sind von der inneren Struktur her immer gleich aufgebaut und benötigen unabhängig von der konkreten Transformations-Aufgabe immer die gleiche Hilfsmittel. Zusammen ergeben diese ein Framework, das man von Meta Genius generieren lassen kann.

Mehr zu diesem Framwork erfahren Sie unter Transformator Framework.