Alle Wege führen nach Rom – IODA-Architektur mit XtendFlow am Beispiel

Conceptual Art by Cildo Meireles, Madrid – Copyright Maureen Barlin, published under CC BY-NC-ND 2.0 here Nun habe ich endlich mal Zeit gefunden, eine echte nicht-triviale, wenn auch einfache, Implementierung mit XtendFlow zu realisieren. Ich nehme dabei wieder mal, wie so oft, einen Artikel von Ralf Westphal als Vorlage. Er hat in seinem Artikel „IODA Architecture by Example“ für die leicht erweiterte Code-Kata Roman Numerals eine IODA-Architektur designt und in C# realisiert. Etwas Historie Dies hat als erste XtendFlow-Implementierung auf zweifache Weise seinen Reiz. Zum ersten nimmt mir dies Design-Arbeit ab und ermöglicht einen direkten Vergleich zwischen einer C#-basierten und Continue reading Alle Wege führen nach Rom – IODA-Architektur mit XtendFlow am Beispiel

Alles neu macht der … April – vollständige interne DSL für XtendFlow

Die im letzten Artikel vorgestellte Lösung zur Umgehung des Xtend-Problems, welches das Komponieren von Konstruktor-Code mit generiertem Code, erzeugt durch den Active-Annotation-Prozessor, verhindert, ist am Ende eben nur ein Workaround – ein hässlicher noch dazu, bei dem Initialisierungscode im Konstruktor als Java-Code (mit Semikola) niedergeschrieben werden muss. Dies veranlasste mich, noch mal grundsätzlicher über die Formalisierung einer FlowDesign-Spezifikation in Xtend nachzudenken. Ließe sich nicht auch das Anstoßen eines Flusses durch einen initialen Wert oder das Weiterleiten der Berechnungsergebnissen einer Funktionseinheit an einen Ausgabeport  expliziter als durch eine Methodenimplementierung ausdrücken, um auch den Wiedererkennungeffekt beim Lesen zu erhöhen, ähnlich dem Wiedererkennungseffekt Continue reading Alles neu macht der … April – vollständige interne DSL für XtendFlow

Nachtrag zu XtendFlow

Im letzte Artikel hatte ich erwähnt, dass eine angezeigte Warnung für die bind Methode der integrierenden Funktionseinheit Normalize eine Unzulänglichkeit des Xtend-Compilers sei und diese in der nächsten Version Xtext/Xtend behoben sein wird. Leider erwies sich die Korrektur in Xtend als schwieriger als gedacht, da eine Lösung die Komponierbarkeit von Xtend-Ausdrücken erfordert, was eine signifikante mit nicht geringem Aufwand verbundene Erweiterung von Xtend's Active-Annotation-Framework bedeutet. Das Xtext/Xtend-Team wusste noch nicht, wann sie das angehen werden. Deshalb habe ich mir noch mal Gedanken gemacht, wie man dieses Problem anders umgehen kann und habe eine Lösung gefunden, die mir im Nachhinein auch Continue reading Nachtrag zu XtendFlow

Extend Your Flow Horizon – Flow-Design mit Xtend

Kepler Module in X-Form vor dem Horzont der aufegehnden Sonne vom der ISS aus gesehen

Kepler on the Horizon – Copyright NASA, published under CC here Flow-Design ist ein allgemeingültiges Design- und Programmierparadigma. Ralf Westphal hat dies schon mehrfach gezeigt – natürlich für C#, aber auch für Ruby. Es existiert eine Umsetzung in Java von Olaf Krummnow (leider ist sein Blog nicht mehr erreichbar). Ich habe es hier in meinem Blog für Scala gezeigt. Natürlich ist jede Sprache unterschiedlich stark prädestiniert für Flow-Design – wie prägnant sich Ports und deren Verbindungen spezifizieren lassen. Um es einigermaßen elegant, ohne viel syntaktisches Rauschen ausdrücken zu können, benötigt man schon Lambda-Ausdrücke in der Sprache. Ich will es auch Continue reading Extend Your Flow Horizon – Flow-Design mit Xtend