• Lena

Interview with the developer and architect of the language storm - Lars Laegner

Learn more about the architecture and background of the development of the programming language storm. Lars Laegner describes why this approach works much more efficiently when implementing business requirements than classic SAP development methods.

How would you briefly summarize the highlights and benefits of the storm programming language?

storm solves typical requirements for the implementation of applications in the business environment in a time-saving and high-quality manner. It is about describing requirements in a perfectly designed environment, the specification and design language storm. It can describe the requirements for data and UIs very intuitively. It is powerful and extensive at the same time. Our software performs the actual implementation of the applications automatically as soon as you save your specification. We deliver a result that looks as though a good programmer implemented it.

Why should I use storm? My programmers are able to program everything themselves.

Because with the completion of the specification of the requirements in storm,you have also automatically finished the implementation. If you do everything yourself, you need a programmer who knows all the languages that are necessary for a full-stack application. For example, SAPUI5, HTML5 and CSS for the front end, and Java including the frameworks OData and JPA for persistence on the back end. Typically, very few programmers master all these worlds equally well, so you always need a team that you coordinate, and thus challenging interfaces. And if you want to migrate your application to a new platform, you will typically need to implement everything again.

But with modern frameworks and new programming models, can't I implement faster these days?

Yes, but firstly through factors that are slower than with storm and secondly you are forced to deal with it in detail. With storm, you define the application once, regardless of the platform, and have it automatically implemented for all the platforms that you need.

Why do it again when you have already defined what you want?

Let's take the example of SAP platforms; in the area of SAP Java alone, there are countless of them. SAP NetWeaver Portal with Java EE5, SAP Cloud Platform with Java EE6 Web Profile / SAP Cloud Platform with Java EE7 Web Profile (TomEE). SAP now offers the Cloud Foundry Edition for Java development as well, followed by the HANA XS Tomcat versions. Your programmers are actually primarily concerned with discovering new details of the implementations and platforms. This means a lot of time, instead of concentrating on business logic and the implementation of the actual requirements. Many of the above platforms require their own IDEs and project types that are not compatible. In the classic environment, you are constantly busy navigating through platform and framework details and bugs. However, this is now stored in the generator for you and is then automatically available to all users of the language. If a target platform provides new best practice solutions, we are able to use it in a new storm version. So you have the fastest way to optimally implement your requirements in the future.

But if your generator cannot implement a requirement that I need, will I be stuck with your tool?

Not with storm. On the one hand, we have integrated various extension concepts directly into the language. For example, functions that we call up on the server at defined times, before or after an update of a certain entity. Or UI actions, where you store your own JavaScript code yourself. Or if you want to make a special UI5 XML definition yourself at the UI, you can add it to the specification on the spot. The expansion aspect is very important to us and has the goal of enabling you to implement 100% in storm. Therefore, we are increasingly active here and will offer further options for introducing your own code in the future.

Also, I would like to add this decisive argument at the end. The code we generate is built as though it was made by a programmer. If you want to carry out further implementation yourself for this project, simply import it into the IDE of your choice and continue from there. You don't waste any time and there is no extra work, because we don't use unreadable variable names or impenetrable coding. Our goal is to enable all the requirements directly in storm, so we assume that you do not need this step. You could just approach us and we will add a new feature or pattern to our product.

Can I implement any kind of application with it?

No. We do not create blockchain applications, IoT hardware connections or such like. In the first year, we are focusing on 2 essential scenarios, data entry and search. Our goal is to provide all the necessary language elements so that you can implement these tasks very efficiently. Basically, we will certainly implement other requested scenarios with further storm versions. A possible scenario here would surely be the support of workflows. Here we will work closely with our partners and customers to define the most important topics.

Do you only implement SAP apps?

We are currently generating complete SAPUI5 apps, including server interfaces and persistence in Java. An important design criterion of the storm language, however, is that we capture all definitions regardless of the platform. It is transparent for you whether you are implementing an application on SAP NetWeaver with Java EE5 or on SAP Cloud Platform TomEE 7. As long as you use the standard functionalities of the storm language, it is sufficient to specify the system type of the target platform. They don't care whether we are using the SAP NetWeaver KM for the document pattern and the SAP Document Service or the CMIS interface on the SAP Cloud Platform. The ABAP stack and new cloud offerings from SAP are also strategic for us as an important SAP target platform. There will be more announcements in this area in the future. At the moment, we are very well positioned here, as we already use all the ABAP platform OData services to select data such as drop-downs.

What kind of programming patterns do you offer that no other programming language has?

We have defined various pattern types that make it possible to specify all the necessary areas of typical app development. Also UX patterns for the user interface, which in turn use action patterns for the actions on data. Of course, there are also responsive patterns to specify flexible mobile, desktop and tablet applications in a platform-specific manner. We also have UI validation patterns on individual fields or on the entire model of an entity. It is always important idea that to define in a platform-neutral way. Then we can correctly convert a storm validation pattern for SAP UI5 into the restrictions of an XML view element. At the same time, we can offer it as a UI5 JavaScript function and implement it as a server-side Java validation check. Everything comes from a platform-independent source and we can transform it into any programming language.

Typically, however, generators fail when faced with more complex issues, such as data permissions, since this is not a simple issue and the requirements are often very customer-specific. How did you solve that?

Yes, that was also a special challenge, requiring high degrees of freedom in defining the authorizations and at the same time flexible use in various areas of data maintenance, UIs and search.

We are also very proud that we have implemented this very effectively in our current platforms. You define which authorization collection you want to use - for example, a “Full Control” authorization that allows all actions on an entity, or a read-only authorization. This can be stored with static user groups, but also dynamically depending on the data based on the field values of an entity. If, for example, an end user specifies for a business object that the finance department has reading access and the production department has writing access, this is defined in a few lines. In the case of Java platforms, we implicitly attach the authorization directly to the data, so that we can perform an efficient search for authorizations. “Early ACL binding” should be mentioned as the technical term here. You also use the authorization definition in the same way for a search filter to quickly create a search tab. On one tab, you show writing-authorized objects, in another tab read-only objects. All of this is defined in one line.

But there has been a lot of effort put into the SAPUI5 generator to correctly implement this on the frontend and server. This way, you can very easily define a dynamic authorization-dependent UI that simply hides certain tabs of the UI when a user without writing-authorization accesses it.

What are your goals and plans for 2018 and beyond?

For 2018, the goal is to perform a successful market launch. We are currently in the ramp-up phase and are accompanying the first Go Live projects. We are expanding the language step by step in the areas of the greatest benefit for our customers. In the medium term, we are building a digitized cloud platform for the storm-based generation of applications. The focus is currently on SAPUI5 with Java but further SAP platforms will follow in the long-term. When the core of the storm platform is ready, we will open up the creation of individual application patterns for our partners and ambitious customers. As a result, there is even more long-term potential here for implementing other scenarios.

We will listen carefully to our customers concerning which expansion levels outside of the SAP sector, such as Microsoft Azure or Amazon AWS, are of interest to them. We want to consciously allow ourselves sufficient leeway to create a Microsoft Azure or Amazon AWS-based UI based on Angular JS next year. Our customers will show us the way.

Thank you very much for the interview!

You are welcome.


Meichelbeckstraße 28

81545 München


Mainzer Straße 97

65189 Wiesbaden


Impressum // Nutzungsbedingungen // Datenschutz | Copyright © 2021 frequi GmbH & Co. KG. All Rights Reserved.

  • Facebook Social Icon
  • LI-In-Bug
  • Twitter_Logo_WhiteOnBlue
  • XNG_Sharebutton_v01-7d06f36109c803c7a79f