Interview with the creator and architect of the storm language Lars Laegner

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

  • 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 quickly and with high quality. The aim is to describe requirements descriptively in a perfectly designed environment, the specification and design language storm. It can describe requirements of data and UI’s very intuitively and is at the same time powerful and extensive. Our software automatically implements the applications as soon as you save your specification. We deliver a result that looks like a good programmer would implement it.

  • Why should I use storm, my programmers are able to program everything themselves?

When you are finished with the specification of the requirements, with storm you are immediately finished with the implementation as well. If you implement everything yourself, you need a programmer who knows all the necessary languages for a full stack application. For example, SAP UI5, HTML5, CSS for the frontend and Java including the frameworks OData and JPA for persistence on the backend. Typically, very few programmers are equally proficient in all worlds, so you always have a team to coordinate and thus interface challenges. In addition, if you want to migrate your application to a new platform, you typically implement it all over again.

  • But with modern frameworks and new programming models I can implement faster nowadays?

Yes, but first of all by factors slower than with storm and secondly you are forced to deal with it in detail. With storm you define the application once, platform-independent, and have it implemented automatically for all the platforms you need. Why do the work again if you have already defined what you want to do? Let’s take the example of SAP platforms, there are countless of them in the area of SAP Java alone. SAP NetWeaver Portal (Java EE5), SAP Cloud Platform Java EE 6 Web Profile / SAP Cloud Platform Java EE 7 Web Profile (TomEE). SAP now also offers the Cloud Foundry Edition for Java development and the HANA XS Tomcat versions. Your programmers are primarily concerned with discovering new details of implementations and platforms. This requires a lot of time instead of concentrating on business logic and implementing the actual requirements. Many of the above platforms require their own IDEs and project types that are incompatible. In the classical environment, you are constantly busy trying to circumvent platform and framework details and bugs yourself. 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 specifies new Best Practices solutions, we are able to use this in a new storm version. This means that you will have the fastest way to implement your requirements optimally in the future.

  • Nevertheless, if your generator is unable to implement a requirement that I need, I am at a dead end 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 on the server at defined times, before or after an update of a specific entity. Alternatively, UI actions, where you define your own JavaScript code. On the other hand, if you want to define a special UI5 XML definition at the UI yourself, add this to the specification on site. The extension aspect is very important to us and has the goal that you implement 100% in storm. This is why we are increasingly active in this area and will be offering additional options for incorporating your code in the future.
Moreover, I will gladly take the decisive argument at the end. The code we generate is like a programmer’s code. If you want to do the further implementation for this project yourself, simply import it into the IDE of your choice and continue. You do not lose any time, no work, because we do not use unreadable variable names or impenetrable coding. Our goal is to enable all reusable requirements directly in storm, so we assume that you do not need this step. If you prefer, contact us, we will then add a new feature or pattern to our product.

  • Can I implement any application with it?

No. We do not create blockchain applications, IoT hardware connections or similar. In the first year, we will concentrate on 2 main scenarios, data entry and search. Our goal is to provide all the necessary language elements so that you can implement these tasks very efficiently. In principle, we will certainly implement further scenarios with other storm versions that are in demand. One possible scenario here would certainly be the support of workflows. Here we will define the most important topics in close cooperation with our partners and customers.

  • Do you only implement SAP Apps?

Currently we generate complete SAP UI5 apps, including server interfaces and persistence in Java. However, an important design criterion of the storm language is that we record all definitions platform-independently. Whether you implement an application on SAP NetWeaver with Java EE 5 or on the SAP Cloud Platform TomEE 7 is transparent to you. As long as you only use standard functionalities of the storm language, it is sufficient to specify the system type of the target platform. You do not notice, if you don’t look at the code, that we use for document storage the KM on SAP NetWeaver and the SAP Document Service (CMIS) interface on the SAP Cloud Platform.
However, an important SAP target platform for us is the ABAP stack and new cloud offerings from SAP. Further announcements will be made here in the future. At the moment we are already very well positioned here, since we already use all OData services of the ABAP Platform for lookups of data or dropdowns.

  • What type of programming pattern do you offer that no other programming language can match?

We have defined different pattern types that allow us to specify all necessary areas of typical app development. So UX pattern for the user interface, which in turn use action pattern for the actions on data. Of course, there are also responsive patterns to specify flexible mobile, desktop and tablet applications according to platform requirements. We also have UI validation patterns on individual fields or on the entire model of an entity. An important idea is always that you define platform-neutral. In this way, we can correctly convert a storm validation pattern for SAP UI5 into the restrictions of an XML View element. At the same time, also offer JavaScript functionality as UI5 and implement it as a server-side Java validation check. Because everything comes from a platform-independent source and we transform it into any programming language.

  • Generators typically fail on complex topics such as authorizations, 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, high degrees of freedom in the definition of authorizations and at the same time flexible use in various places of data maintenance, UI’s, searches. We are also very proud to have implemented this very well in our current platforms. You define which set of authorizations 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 or dynamically based on the field values of an entity. If an end user is then to define the business object, the finance and production departments are authorized to read and write, this is defined in a few lines. We implicitly attach the authorization for Java platforms directly to the data, so that we can perform a high-performance authorization search. “Early Acl Binding” is the technical term here. You use the authorization definition in the same way for a search filter to quickly create a search string. On one tab, you display read-only objects with write authorization, and on another tab, only read-only objects. All this is defined in one line, but there is a lot of effort in the SAP UI5 generator to implement the correct implementation on frontend and server. In this way, you can very easily define a dynamic authorization-dependent UI that simply hides certain tabs of the UI when a non-write-authorized user accesses it.

  • What are the goals and plans for 2018 and beyond?

2018 is the target for a successful market launch. We are currently in the ramp-up phase and accompany the first projects for Go Live. Step by step, we expand the language where we find the greatest benefit for our customers. In the medium term, we are building a digitized cloud platform for the storm-based generation of applications. Currently, the focus is on SAP UI5 with Java, other 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 potential for implementing further scenarios in the long term. We will listen carefully to our customers to see which development stages outside the SAP sector, such as Microsoft Azure or Amazon AWS, are of interest to them. We deliberately want to leave the space next year to create a Microsoft Azure or Amazon AWS based applications with Angular JS used as UI layer. Our customers will show us the way.

  • Thank you very much for your time!

You’re welcome.

 

Weitere Blogs: