During any ABAP development project there will always be architectural constraints that a developer needs to relate to. It is my experience that performance, security and design are constraints that cannot be changed without affecting the others. A trilemma.
The triangle can be used as an agreement between developers on how to prioritize development efforts. The model is very simple and is easily comprehended and memorized by development team members. Hence, the triangle can be used as a guideline by ABAP development teams.
This blog is aimed at architects, development leads, project managers and ABAP developers in general. The ABAP development triangle is an offspring of multiple customer ABAP projects. The idea of the ABAP development triangle originates from the Project Management Triangle.
Overview - ABAP Development Triangle
The ABAP development triangle has three corners; Performance, Security, and Design. The constraints are straight forward. Performance refers to ABAP performance optimized code. Security is not about the wider security aspects of a SAP system. It is mainly related to secure ABAP programming. Design refers mainly to the proper use of ABAP Objects. The red dot represents what developers in a project have agreed on to prioritize when coding ABAP.
In theory the trilemma seems to be a no brainer. Security first, performance second, design third! However, in practice, it is not that clear. Honestly, do you always write specific code to secure your programs? Ok, you did write some secure code, but was it the first thing you considered before starting writing the code? Did you run a performance test to benchmark your nice object-oriented code to old fashioned ABAP code? If you answered NO to any of these questions, then the triangle might help you focus on getting your priorities straight.
Lets have a look at two differing scenarios.
Scenario 1 - Large Volume Data Processing
For large volume data processing, performance is key. The above mentioned triangle depicts this through placing the red dot closest to Perfomance, closer to Security and furthest away from Design. It is not that Design does not matter in large volume data processing, but obviously the design is less important than swift code. For example, instead of using collections of objects, the developer might use internal tables with structures. As large volume data processing often is related to databases the Security part might be reduced to ensuring that all tables are assigned to authorization groups and that data can not be manipulated in the productive environment. Another Security measurement could be to prevent unauthorized persons from running the code in a productive environment and closing other loopholes, such as for example test reports.
Scenario 2 - Web UI development
This scenario is about Web based ABAP development. Security is very important for Web applications as they often contain backdoors to the underlying information system. Following the Secure User Interfaces documentation should therefore precede the two other aspects. In the Web Dynpro ABAP (WDA) framework, performance and design go hand-in-hand. Focus can therefore be placed on finding a nice design and using the checklist for high-performance WDA at the same time.
In my next blog "High Performance, Secure, ABAP design", I will describe how the triangle can impact ABAP architecture decisions on code level.