Interview mit dem Ideengeber und Architekt der Sprache storm Lars Laegner

Lernen Sie mehr über die Architektur und die Hintergründe der Entwicklung der Programmiersprache storm. Lars Laegner beschreibt, warum der Ansatz wesentlich effizienter bei der Umsetzung von Businessanforderungen funktioniert als klassische SAP Entwicklungsmethoden.

  • Wie würden Sie kurz die Highlights und den Nutzen der Programmiersprache storm zusammenfassen?

storm löst typische Anforderungen an die Implementierung von Anwendungen im Business-Umfeld zeitsparend und mit hoher Qualität. Dabei geht es darum, Anforderungen deskriptiv zu beschreiben, in einer perfekt dafür ausgelegten Umgebung, der Spezifikations- und Designsprache storm. Diese kann Requirements an Daten und UI’s sehr intuitiv beschreiben, ist gleichzeitig mächtig und umfangreich. Unsere Software erledigt die eigentliche Implementierung der Anwendungen automatisch, sobald Sie Ihre Spezifikation speichern. Dabei liefern wir ein Resultat, das so aussieht, wie ein guter Programmierer es umsetzen würde.

  • Warum sollte ich storm verwenden, meine Programmierer sind ja in der Lage, alles selber zu programmieren?

Weil Sie mit Fertigstellung der Spezifikation der Anforderungen bei storm automatisch auch bereits fertig sind mit der Implementierung. Wenn Sie alles selber umsetzen, brauchen Sie ja einen Programmierer der alle notwendigen Sprachen kennt, die für eine Fullstack-Anwendung notwendig sind. Also beispielsweise SAP UI5, HTML5, CSS für das Frontend und Java inklusive der Frameworks OData und JPA für die Persistenz auf dem Backend. Typischerweise beherrschen die allerwenigsten Programmierer alle Welten gleich gut, daher haben Sie immer ein Team, das Sie koordinieren, und damit Schnittstellenherausforderungen. Und wenn Sie Ihre Anwendung auf eine neue Plattform migrieren wollen, implementieren Sie typischerweise alles nochmal.

  • Aber mit modernen Frameworks und neuen Programmiermodellen kann ich doch auch schneller implementieren heutzutage?

Ja, aber erstens um Faktoren langsamer als mit storm und zum anderen sind Sie gezwungen, sich in Detail damit auseinanderzusetzen. Mit storm definieren Sie einmal die Anwendung, und zwar plattformunabhängig, und lassen Sie automatisch implementieren für alle Plattformen, die Sie benötigen. Warum nochmal die Arbeit machen, wenn Sie bereits einmal definiert haben, was Sie wollen? Nehmen wir das Beispiel von SAP Plattformen, alleine im Bereich SAP Java gibt es davon unzählig viele. SAP NetWeaver Portal mit Java EE5, SAP Cloud Platform mit Java EE6 Web Profile/SAP Cloud Platform mit Java EE7 Web Profile (TomEE). Mittlerweile bietet SAP für die Java Entwicklung auch noch die Cloud Foundry Edition an, dann kommen noch die HANA XS Tomcat Versionen dazu. Ihre Programmierer sind eigentlich primär damit beschäftigt, neue Details der Implementierungen und Plattformen zu entdecken. Das bedeutet einen hohem Zeitaufwand anstatt sich auf Business-Logik und das Umsetzen der eigentlichen Anforderungen zu konzentrieren. Viele der obigen Plattformen bedingen eigene IDE’s und Projekttypen, die nicht kompatibel sind. Im klassischen Umfeld sind Sie ständig damit beschäftigt, Plattform- und Framework-Details und Bugs selber zu umschiffen. Das wird aber jetzt im Generator für Sie hinterlegt, und steht dann automatisch allen Nutzern der Sprache zur Verfügung. Wenn eine Zielplatform neue Best Practice Lösungen vorgibt, sind wir in der Lage dies in einer neuen storm Version zu benutzen. Damit haben Sie den schnellsten Weg zur optimalen Umsetzung Ihrer Anforderung auch in der Zukunft.

  • Aber wenn Ihr Generator eine Anforderung nicht umsetzen kann, die ich benötige, stecke ich mit Ihren Tool ja in einer Sackgasse?

Nicht bei storm. Zum einen haben wir verschiedene Erweiterungskonzepte direkt in der Sprache integriert. Etwa Funktionen, die wir zu definierten Zeitpunkten auf dem Server aufrufen, vor oder nach einem Update einer bestimmten Entität. Oder UI-Aktionen, wo Sie Ihren eigenen JavaScript Code selber hinterlegen. Oder wenn Sie am UI selber eine spezielle UI5 XML Definition vornehmen wollen, fügen Sie das in der Spezifikation an Ort und Stelle hinzu. Der Erweiterungsaspekt ist uns sehr wichtig und hat das Ziel, das Sie zu 100% in storm implementieren. Daher sind wir hier verstärkt aktiv und bieten in Zukunft weitere Optionen zur Einbringung Ihres Codes an.
Und das entscheidende Argument führe ich gerne noch zum Schluss an. Der Code, den wir generieren, ist ja wie von einem Programmierer gebaut. Wenn Sie für dieses Projekt die weitere Implementierung selber übernehmen möchten, importieren Sie es einfach in die IDE ihrer Wahl und machen dort weiter. Sie verlieren keine Zeit, keine Arbeit, denn wir verwenden keine unlesbaren Variablennamen oder undurchdringliches Coding. Unser Ziel ist es, alle Anforderungen direkt in storm zu ermöglichen, daher gehen wir davon aus, dass Sie diesen Schritt nicht benötigen. Kommen Sie lieber auf uns zu, wir bauen dann ein neues Feature oder Pattern in unser Produkt ein.

  • Kann ich beliebige Anwendungen damit implementieren?

Nein. Wir erzeugen keine Blockchain Anwendungen, IoT Hardware Anbindungen o.ä. Wir konzentrieren uns im ersten Jahr auf 2 wesentliche Szenarien, Data Entry und Search. Unser Ziel ist, alle dafür notwendigen Sprach Elemente bereitzustellen, so dass Sie diese Aufgaben sehr effizient umsetzen können. Grundsätzlich werden wir sicherlich mit weiteren storm Versionen auch weitere nachgefragte Szenarien umsetzen. Ein mögliches Szenario wäre hier sicherlich die Unterstützung von Workflows. Hier werden wir eng mit unseren Partnern und Kunden die wichtigsten Themenfelder definieren.

  • Implementieren Sie nur SAP Apps?

Aktuell generieren wir vollständige SAP UI5 Apps, inklusive Server-Schnittstellen und Persistenz in Java. Wichtiges Designkriterium der Sprache storm aber ist, dass wir alle Definitionen plattformunabhängig erfassen. Ob Sie eine Anwendung auf SAP NetWeaver mit Java EE5 oder auf SAP Cloud Platform TomEE 7 implementieren, ist für Sie transparent. Solange Sie nur Standardfunktionalitäten der storm Sprache verwenden, genügt die Angabe des Systemtyps der Zielplattform. Sie merken nicht, dass wir für das Dokument-Pattern auf SAP NetWeaver KM verwenden und auf der SAP Cloud Platform den SAP Document Service bzw. CMIS-Schnittstelle.
Wichtige SAP Zielplattform ist aber strategisch für uns auch der ABAP Stack sowie neue Cloud Angebote von SAP. Hier werden in Zukunft auch weitere Ankündigungen kommen. Im Moment sind wir hier schon sehr gut aufgestellt, da wir alle OData-Services der ABAP Plattform bereits verwenden für Auswahl von Daten wie z.B. Drop-Downs.

  • Welche Art von Programmierpattern bieten Sie an, das keine andere Programmiersprache einfach so mitbringt?

Wir haben verschiedene Patterntypen definiert, die es ermöglichen, alle notwendigen Bereiche der typischen App-Entwicklung spezifizieren zu können. Also UX-Pattern für das User Interface, die wiederum Action-Pattern für die Aktionen auf Daten verwenden. Selbstverständlich gibt es auch Responsive-Pattern um flexible mobile, Desktop- und Tablet-Anwendungen plattformgerecht zu spezifizieren. Ebenso haben wir auch UI-Validierung-Pattern auf Einzelfeldern oder auf dem gesamten Modell einer Entität. Wichtige Idee dabei ist immer, dass Sie plattformneutral definieren. So können wir ein storm-Validierung-Pattern für SAP UI5 korrekt in die Restriktionen eines XML View Elementes wandeln. Gleichzeitig auch als UI5 JavaScript Funktion anbieten und als serverseitige Java-Validierungsprüfung implementieren. Weil alles aus einer plattformunabhängigen Quelle kommt und wir in beliebige Programmiersprachen transformieren.

  • Typischerweise versagen Generatoren aber bei komplexeren Themen wie Berechtigungen auf Daten, da dies kein simples Thema ist und die Anforderungen häufig sehr kundenindividuell sind. Wie haben Sie das gelöst?

Ja, das war auch eine besondere Herausforderung, hohe Freiheitsgrade bei der Definition der Berechtigungen und gleichzeitig flexible Verwendung an verschiedensten Stellen der Datenpflege, UI’s, Suche. Da sind wir auch sehr stolz darauf, dies in unseren aktuellen Plattformen sehr gut umgesetzt zu haben. Sie definieren, welche Berechtigungssammlung Sie nutzen wollen, beispielsweise eine „Full Control“ Berechtigung, die alle Aktionen auf einer Entität erlaubt, oder eine Read-Only Berechtigung. Dies kann mit statischen Benutzergruppen hinterlegt werden, aber auch datenabhängig dynamisch basierend auf den Feldwerten einer Entität. Wenn ein Endbenutzer dann bspw. am Business-Objekt festlegen soll, leseberechtigt ist Abteilung Finanzen, und Abteilung Produktion schreibberechtigt, ist das in wenigen Zeilen definiert. Implizit hängen wir die Berechtigung bei Java Plattformen direkt an die Daten, so dass wir performant berechtigungstreu suchen können. „Early Acl Binding“ ist hier als Fachbegriff zu nennen. Sie verwenden die Berechtigungsdefinition analog auch bei einem Suchfilter, um schnell einen Such-Tab zu erstellen. Auf einem Tab zeigen Sie schreibberechtigte, in einem anderen Tab nur leseberechtigte Objekte. Das alles jeweils in einer Zeile definiert, aber es steckt sehr viel Aufwand im SAP UI5 Generator das korrekt auf Frontend und Server umzusetzen. So können Sie sehr einfach ein dynamisches berechtigungsabhängiges UI definieren, das bei einem Zugriff eines nicht schreibberechtigten Benutzers bestimmte Tabs des UI’s einfach ausblendet.

  • Was sind Ihre Ziele und Pläne für 2018 und darüber hinaus?

2018 ist das Ziel, den Marktstart erfolgreich zu gestalten. Aktuell sind wir in der Ramp-Up Phase und begleiten die ersten Projekte zum Go Live. Wir erweitern Schritt für Schritt die Sprache dort, wo der grösste Nutzen für unsere Kunden liegt. Mittelfristig bauen wir dazu eine digitalisierte Cloud Plattform für die storm basierte Generierung von Anwendungen auf. Aktuell ist der Fokus auf SAP UI5 mit Java, weitere SAP Plattformen werden langfristig folgen. Wenn der Kern der storm Plattform soweit ist, werden wir die Erstellung von individuellen Anwendungspattern für unsere Partner und ambitionierte Kunden öffnen. Dadurch wird hier langfristig noch mehr Potential für das Umsetzen weiterer Szenarien vorhanden. Wir werden da unseren Kunden gut zuhören, welche Ausbaustufen auch ausserhalb des SAP Sektors, wie Microsoft Azure oder Amazon AWS für Sie interessant sind. Wir wollen uns bewusst den Freiraum lassen nächstes Jahr vielleicht ein Microsoft Azure oder Amazon AWS basiertes UI auf Basis von Angular JS zu erzeugen. Unsere Kunden werden uns den Weg weisen.

  • Vielen Dank für das Interview!

Sehr gerne.

 

Weitere Blogs: