empros gmbh - process & information management services
1009-chat Simplicity is the most difficult thing to secure in this world; it is the last limit of experience and the last effort of genius.

- George Sand

Der actifsource Code Generator

actifsource für Eclipse ist ein viel versprechender Code-Generator, mit dem sich  auf der Basis von aussagekräftigen Meta-Modellen und Code-Templates praktisch beliebige Artefakte wie Quellcode, Konfigurationen etc. generieren lassen.
Code-Generatoren sind ja keine neue Erfindung und wer nemo kennt, weiss, dass ich dem Generieren von Code kritisch gegenüber stehe. Was also ist bei actifsource anders?

Um diese Frage zu beantworten, müssen wir uns kurz mit dem Thema "Frameworks" befassen:
Frameworks sind eine tolle Sache: Sie ermöglichen es uns, Funktionalität in allgemeiner Form wieder verwendbar bereit zu stellen und zu nutzen. Der Benutzer des Frameworks kann hierbei die angebotenen Abstraktionen des Framworks in seinem eigenen Code verwenden und so direkt von der Erfahrung des Framework-Entwicklers profitieren. Allerdings muss der Framework-Nutzer für jede Verwendung immer wieder fast identischen Code schreiben. Oft schreiben Entwickler diesen Glue-Code, indem sie bestehende Framework-Verwendungen kopieren, um diese dann an die aktuelle Verwendung anzupassen. Dieses Vorgehen ist mühsam und fehleranfällig.

Aber es kommt noch schlimmer: jede Verwendung des Frameworks zementiert dessen API. Das heisst: Die Schnittstellen, über welche wir die Abstraktionen des Framworks nutzen, lassen sich nicht mehr ohne Weiteres ändern (Jaroslav Tulach hat zu diesem Problem und dem Thema API-Entwurf übrigens ein lesenswertes Buch geschrieben: Practical API Design: Confessions of a Java Framework Architect). Und hier bietet actifsource einen erfrischend neuen und, wie mir scheint, nützlichen Ansatz:

Die Modell- und Generator-Technologie von actifsource ermöglicht es, den Code für die Verwendung des Frameworks vollständig und automatisiert zu erstellen. Damit wird es möglich, nicht nur die Implementierung eines Frameworks sondern auch dessen API jederzeit bedarfsgerecht zu modifizieren. Und das ist aus meiner Sicht zwingend notwendig, wenn wir verhindern möchten, dass unsere Software altert und strukturell Schaden nimmt.

Besonders beeindruckt hat mich neben der Möglichkeit, Modelle rasch grafisch zu erfassen, der ausgereifte Template-Editor, mit dem ich nach kurzer Zeit massgeschneiderte Templates schreiben konnte, ohne hierfür eine eigene Template-Sprache erlernen zu müssen.

Noch habe ich längst nicht alle Möglichkeiten von actifsource ausprobiert, aber die ersten Geh-Versuche machen Lust auf mehr. Infos zu actifsource finden sich hier: actifsource - Model-Driven Code Generator.
-nemo :-)