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?
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?
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.