HyperSenses
HyperSenses
Copy-Paste-Adapt ist die verbreitetste Methode, um ähnliche Aufgaben zu lösen oder Varianten eines Systems (Produktlinien, Systemfamilien) zu erstellen. Der Nachteil dieser Methode ist jedoch, dass Aufgaben wie Fehlerkorrekturen, Änderungen, Erweiterungen, etc. für jede einzelne Variante wiederholt werden müssen. Dieser Weg ist sehr zeitaufwändig, fehleranfällig und entsprechend teuer.
Das kann durch die Verwendung von Generatoren und domänenspezifischen Sprachen (DSLs) vermieden werden.
HyperSenses ist eine Umgebung, die die Vorteile der modellgetriebenen Entwicklung nutzt, um maßgeschneiderte DSLs und dazu passende Generatoren zu erzeugen. Sie ermöglicht die Entwicklung von Generatoren für beliebige Programmiersprachen, wobei die Wiederverwendung bewährter Lösungen ein zentrales Element darstellt.
HyperSenses ist als eigenständige Entwicklungsumgebung oder als Plugin für Eclipse verfügbar.
Vorteile von HyperSenses
Zu den Vorteilen von HyperSenses gehören:
- Die Wiederverwendung bewährter Lösungen
- Die Kombinierbarkeit mit agilen Methoden
- Gut lesbare Spezifikation von DSL und Generator durch die konsequente Umsetzung des WYSIWYG-Prinzips
- Gut lesbarer generierter Code
- Geringe Einarbeitungszeit auch ohne Vorwissen über DSLs und Generatoren
Kontaktieren Sie uns
Kontaktieren Sie uns, wenn Sie weitere Informationen zu HyperSenses haben möchten. Wir unterstützen Sie auch, wenn Sie ein bestehendes System in ein generatives System umwandeln möchten.
Download HyperSenses - Modellgetriebene Software-Entwicklung
"Durch HyperSenses kann HT Applications mit seinen Smartphone-Apps vielfältige Plattformen und kundenspezifische Varianten unterstützen, ohne die gleiche Funktionalität wieder und wieder implementieren zu müssen."
Hessel van Tuinen, CEO, HT Applications, Niederlande
Herausforderung
Herausforderung
Copy-Paste-Adapt ist die verbreitetste Methode, um ähnliche Aufgaben zu lösen oder Varianten eines Systems zu erstellen (der Einfachheit halber wird im Folgenden von Systemfamilien gesprochen, wenn ähnliche Aufgaben oder eine Menge von Varianten eines Systems gemeint sind, einzelne Mitglieder der Familie werden entweder als Instanz oder Variante bezeichnet). Der Nachteil dieser Methode ist jedoch, dass Aufgaben wie Fehlerkorrekturen, Änderungen, Erweiterungen, etc. für jede einzelne Variante wiederholt werden müssen. Dieser Weg ist sehr zeitaufwändig, fehleranfällig und kann ebenso teuer sein.
Dieses kann durch die Verwendung von Generatoren und domänenspezifischer Sprachen (DSLs) vermieden werden.
I would rather write programs
to help me write programs
than write programs.
Dick Sites
Allerdings setzten die meisten Generatortechnologien entsprechende Vorkenntnisse des Entwicklers voraus. Oft werden Generatoren von Softwareentwicklern nicht akzeptiert, da die Generierung nicht beeinflusst werden kann und der generierte Code nicht oder nur schwer lesbar und wartbar ist. Nur selten erfüllt der Code unternehmensspezifische Richtlinien zur Programmierung.
Die Entwicklung einer DSL wird zumeist als eine kleine Fingerübung gesehen. Sobald jedoch DSL und Generator gemeinsam entwickelt werden müssen, damit sie zusammen spielen, und die DSL auch zu einem späteren Zeitpunkt noch erweitert oder geändert werden kann, wird aus der einfachen Übung eine zeitintensive Aufgabe für einen erfahrenen Entwickler. Soll die DSL nicht nur durch ihren Entwickler, sondern auch durch weitere Personen im Unternehmen verwendet werden, so ist häufig ein hoher Aufwand für die Erlernung dieser neuen Sprache erforderlich.
Erst, wenn der Generator und die DSL vollständig entwickelt wurden, erhält man ein testbares System. Dies hat zur Folge, dass (konzeptuelle) Fehler erst zu einem sehr späten Entwicklungszeitpunkt gefunden werden und im schlimmsten Fall nur mit großem Aufwand korrigiert werden können. Darüber hinaus verhindert es auch, dass Generatoren und DSLs in Kombination mit agilen Methoden verwendet bzw. Generator und DSL verteilt entwickelt werden können.
Aus den genannten Gründen scheuen viele Unternehmen den Einsatz von Generatoren und DSLs.
Anforderungen
Das Ziel bei der Entwicklung von HyperSenses war deshalb eine Generatortechnologie,
- Die die schrittweise und verteilte Entwicklung von Generatoren und DSLs erlaubt und auch in Kombination mit agilen Methoden einsetzbar ist
- Die die mühsame Programmierung eines Generators und einer dazu passenden erweiterbaren DSL vereinfacht und automatisiert und kein oder nur wenig Vorwissen bzgl. Generatorbau oder der Entwicklung von DSLs erfordert
- Deren Eingaben gut lesbar und wartbar sind
- Die DSLs unterstützt, die einfach und ohne große Einarbeitung verwendet werden können
- Die es ermöglicht, Expertenwissen wiederzuverwenden und möglichst vielen Entwicklern zur Verfügung zu stellt
- Die Code generiert, der für Menschen gut lesbar ist, vom Entwickler akzeptiert wird und ggf. im Unternehmen vorhandene Programmierrichtlinien einhält Für alle Projektgrößen effizient einsetzbar ist
Um diese Ziele zu erreichen, führt HyperSenses das Konzept „Model-Driven Meta-Development“, kurz MD2, ein. Während andere Vorgehensweisen Generatoren und DSLs für die modellgetriebene Entwicklung und generative Programmierung von Anwendungen benutzen, verwenden wir durchweg modellgetriebene Entwicklung und generative Programmierung, um Generatoren und DSLs zu entwickeln.
Download White Paper - HyperSenses
Die Lösung - (MD)²
Die Lösung - (MD)²
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#
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.
Download White Paper - HyperSenses
Glanzpunkte
Glanzpunkte
Ganz agil zu Generator und DSL
HyperSenses vereinfacht die Entwicklung von Generatoren und DSLs und ermöglicht deren schrittweise und verteile Entwicklung. Testbare und reproduzierbare Ergebnisse sind innerhalb von Stunden oder wenigen Tagen statt wie üblich in Wochen verfügbar. Deshalb ermöglicht HyperSenses die Verwendung von Generatoren und DSLs auch in Kombination mit agilen Methoden.
Entwicklung mit Wiederverwendung für Wiederverwendung
Die Ableitung von Codemustern aus existierendem Code hat zum einen den Vorteil, dass bewährte und optimierte Lösungen, die durch Experten entwickelt wurden, wiederverwendet und erweitert werden können. Zum anderen das Wissen aber auch einem großen Entwicklerteam und speziell weniger erfahrenen Entwicklern zur Verfügung gestellt wird.
Effizient schon bei kleinsten Anwendungen
HyperSenses skaliert sowohl für kleine (Teil-)Probleme als auch für große Gesamtsysteme. Selbst für kleine oder spezialisierte Aufgaben/Projekte werden damit Entwicklung und Einsatz von Generatoren und DSLs wirtschaftlich.
Akzeptanz
Die Verwendung der Codemuster führt dazu, dass der Entwickler definiert, wie der Code für eine bestimmte Problemstellung generiert werden soll und bestimmt so auch die Lesbarkeit des generierten Codes. Auf diese Weise wird die Akzeptanz des Generators erhöht. Außerdem kann so sichergestellt werden, dass ggf. vorhandene Unternehmensrichtlinien zur Programmierung eingehalten werden.
Wartbarkeit
Im Gegensatz zu anderen Generatoren unterscheidet HyperSenses strikt zwischen Produktionsanweisungen und Zielcode, wodurch sowohl die Lesbarkeit als auch die Wartbarkeit der Spezifikation des Generators gewährleistet wird.
Spezifizieren statt Programmieren
Die einfache Herleitung der Muster (sowohl Code- als auch Konfigurationsmuster) ermöglicht die Entwicklung von Generatoren und DSLs auch ohne Expertenwissen.
DSL und Generator werden nicht programmiert sondern spezifiziert. Aus der Spezifikation wird dann automatisch die DSL sowie der Generator erzeugt.
Einfach bestellen
Soll eine Konfiguration erstellt werden, so ist keine langwierige Einarbeitung in die neue DSL erforderlich, da die Formular-DSL sehr einfach zu handhaben ist und nur syntaktisch und grammatikalisch korrekte Eingaben möglich sind.
Download White Paper - HyperSenses
Prädikat BEST OF für HyperSenses
Die Experten-Jury der Initiative Mittelstand zeichnete HyperSenses bei der Verleihung des Innovationspreises mit dem Prädikat BEST OF 2012 und 2013 aus! Mit dem INNOVATIONSPREIS-IT prämiert die Initiative Mittelstand Firmen-Jury der Initiative Mittelstand Firmen, deren innovative IT-Lösungen einen hohen Nutzwert für den Mittelstand haben. HyperSenses hat die Jury besonders überzeugt und gehört damit zur Spitzengruppe aus über 2.500 eingereichten Bewerbungen.
Donwload / Dokumente
Dokumente zu HyperSenses
Sprache: Deutsch - Version: MA11598.03
Mit HyperSenses bietet Ihnen Delta eine modellgetriebene Software-Entwicklungsumgebung speziell für die Domäne der Software-Generatoren. Dadurch ist es möglich, kostengünstig und wartungsfreundlich hochwertige Generatoren auch für kleine oder sehr spezielle Aufgaben zu entwickeln.
Unser Tutorial stellt Ihnen die Bausteine (Metamodell, Muster, Konfiguration, DSL, …) vor.
Weiterlesen...Sprache: Deutsch - Version: 02
In weniger als 3 Minuten zu Generator und DSL
Wir zeigen Ihnen wie man mit HyperSenses in weniger als 3 Minuten einen ersten Generator samt passender DSL erzeugen kann.
Weiterlesen...Sprache: Deutsch - Version: MA14015.02
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...Sprache: Deutsch - Version: MT11055.01
Die Verwendung von HyperSenses zur Modellierung und zum Bau von Generatoren für die Fabrikation von multiplattform-und variantenreichen Anwendungen wird vom 4. - 5. Oktober 2011 am Institut für Wirtschaftsinformatik der Universität Leipzig in Zusammenarbeit mit Delta Software Technology im Rahmen der Herbstschule vorgestellt und erlebbar gemacht.
Weiterlesen...Sprache: Deutsch - Version: MT11062.01
Modelle, Domänenspezifische Sprachen und Generatoren
Weiterlesen...Sprache: Deutsch - Version: MT11066.01
Mobile-Apps erleben einen Siegeszug und werden vermehrt im Business-Umfeld eingesetzt. Die größte Hürde bildet dabei die große Zahl alternativer Plattformen (Android, iOs, Windows etc.). Die ohnehin schon variantenreiche Entwicklung (Baukastensystem) bei solchen Anwendungen wird dadurch um eine weitere Dimension aufwendiger.
Mobile-Apps sind ein besonders signifikantes und aktuelles Beispiel für das grundsätzliche Problem, den immer weiter steigenden Bedarf an Software und
... Weiterlesen...