Delta Software Technology

Unser Angebot

Weniger ist mehr

Der Dreh- und Angelpunkt ist ein Metamodell. Dieses Modell beschreibt die variablen Anteile der Anwendungsdomäne der Systemfamilie. Es enthält ausschließlich die variablen Anteile, die die einzelnen Mitglieder der Systemfamilie voneinander unterscheidet. Im Gegensatz zu anderen Ansätzen werden invariante Anteile im Metamodell nicht mitmodelliert, so dass der Modellierungsaufwand deutlich geringer ausfällt. Das Metamodell kann entweder direkt in HyperSenses erstellt und editiert oder als UML-Modell in einem anderen Werkzeug erzeugt und über die XMI-Schnittstelle importiert werden.

„So würde ich das nie programmieren…“

… ist wohl der am häufigsten gebraute Satz, mit dem Entwickler gegen Generatoren argumentieren. In HyperSenses gilt dies nicht, da der (Generator-) Entwickler selber sowohl die Zielsprache und den Zielcode wie auch die Formatierung festlegt. Auf diese Weise wird sichergestellt, dass der Code am Ende lesbar und wartbar ist und ggf. vorhandene Unternehmensrichtlinien zur Programmierung erfüllt, vor allem aber vom Entwickler akzeptiert wird.

Expertenwissen für Jedermann

Erreicht wird das durch die Verwendung von Codemustern, welche die sprachenabhängigen Anteile des Generators festlegen. Ein solches Muster wird aus existierendem Code (oder Codefragmenten) abgeleitet, das zugrunde liegende Prinzip nennt sich Pattern by Example. Als Grundlage für die Codemuster werden existierende Implementierung oder Prototypen verwendet, die durch Experten entwickelt und optimiert wurden und die sich im Einsatz bewährt haben.

Abgeleitetes Code Pattern, Frame für C#
Abgeleitetes Code Pattern, Frame für C#

Bei der Erstellung der Codemuster werden die variablen Anteile im Code ermittelt, die die Mitglieder der Systemfamilie voneinander unterscheidet, und durch Slots und optionale Codeblöcke beschrieben. Slots und Blöcke sind an das Metamodell gebunden, daher kann aus den Mustern nur Code generiert werden, der für die Anwendungsdomäne zulässig ist.

Auf diese Weise wird das entsprechende Wissen allen Entwicklern im Team zur Verfügung gestellt und kann beliebig wiederverwendet und erweitert werden.

Generatoren spezifizieren nicht programmieren

Das Metamodell beschreibt die variablen Anteile der Anwendungsdomäne der Systemfamilie inkl. deren Beziehungen zueinander. Die Codemuster beschreiben den zu generierenden Code und deren Formatierung. Durch die Verbindung des Musters zum Metamodell ist die notwendige Navigation implizit gegeben.

Metamodell und Codemuster spezifizieren den Generator daher so detailliert, dass diese zur automatischen Erzeugung des Generators verwendet werden können, weitere Programmiertätigkeiten sind nicht erforderlich.

Sind Sie ein erfahrener Generatorentwickler, der an dieser Stelle eine lange Erklärung für den Generatorbau erwartet, wie dies üblicherweise bei der Einführung neuer Generatortechnologien erfolgt? Dann entschuldigen Sie bitte die Kürze unserer Erläuterung, aber über einen Knopfdruck kann man nicht mehr schreiben.

DSL-Entwicklung – keine Geheimwissenschaft

Um eine konkrete Instanz der Systemfamilie durch den Generator erzeugen zu können, muss bekannt sein, wie die variablen Stellen auszuprägen sind. Dies ist die Aufgabe einer Konfiguration, die durch eine DSL beschrieben wird. Im Allgemeinen ist die Entwicklung einer DSL, die mit einem Generator zusammenspielt und erweiterbar ist, fast eine Geheimwissenschaft. Um eine solche DSL zu entwickeln, benötigt der Entwickler erhebliches Vorwissen und viel Zeit. Diese Herausforderung existiert in HyperSenses nicht. Konfigurationsmuster legen fest, was konfiguriert werden kann oder muss, d.h. sie spezifizieren die DSL. Ähnlich wie Codemuster beinhalten sie Slots und Blöcke, welche mit dem Metamodell verbunden sind. Um den Endbenutzer der DSL zu unterstützen, ist es außerdem möglich innerhalb des Konfigurationsmusters erläuternden Text hinzuzufügen.

So wie der Generator nicht programmiert werden muss, sondern aus dem Metamodell und den Codemustern automatisch erzeugt wird, wird auch die DSL automatisch aus den Konfigurationsmustern und dem Metamodell erzeugt, wobei Grammatik und Syntax der DSL durch das Metamodell impliziert werden.

DSL-Anwendung so einfach wie im Internet einkaufen

Je nach Komplexität der DSL ist ein hoher Einarbeitungsaufwand erforderlich, um mit der neuen Sprache Konfigurationen zu beschreiben. Dieses Problem umgeht HyperSenses durch die Einführung von Formular-DSLs, die einem elektronischen Bestellformular ähneln. Eine solche Formular-DSL ist für den Anwender leicht zu lesen und auszufüllen und vom Generator eindeutig auswertbar, zumal nur syntaktisch und grammatikalisch korrekte Konfigurationen erzeugt werden können. Um die Lesbarkeit des DSL-Formulars für den Benutzer weiter zu verbessern besteht die Möglichkeit Format und Optik sehr einfach zu verändern.

Schrittweise und verteilte Entwicklung

Sobald ein Teil des Metamodells existiert können die Muster (Konfigurations- ebenso wie Codemuster) verteilt entwickelt werden. Das Metamodell und die Muster können während der gesamten Entwicklung jeder Zeit mit geringem Aufwand geändert oder erweitert werden. Ebenso kann zu jedem Zeitpunkt der Entwicklung ein ausführbarer Generator und/oder eine DSL erzeugt und direkt getestet werden. Auf diese Weise unterstützt HyperSenses eine schrittweise Entwicklung wie sie beispielsweise auch beim Einsatz agiler Methoden erforderlich ist.

Von eigenständig bis integriert

HyperSenses kann sowohl als eigenständiges Werkzeug als auch innerhalb einer anderen Entwicklungsumgebung, z.B. Eclipse oder VisualStudio, verwendet werden. Es ist aber auch möglich das Metamodell über die XML-Schnittstelle mit anderen Werkzeugen auszutauschen.

White Paper - HyperSenses

White Paper zu HyperSenses: HyperSenses vereinfacht die Entwicklung von Generatoren und DSLs und ermöglicht deren schrittweise und verteile Entwicklung. Erste Ergebnisse sind innerhalb von Stunden oder wenigen Tagen statt wie üblich in Wochen verfügbar, testbar und reproduzierbar. Deshalb ermöglicht HyperSenses die Verwendung von Generatoren und DSLs auch in Kombination mit agilen Methoden.

Weiterlesen...

Download

LiveZilla Live Chat Software