In the first decades of software development all programs were mainly written in traditional programming languages, such as Cobol, Visual Basic, C (++) and Java. The main disadvantage of a traditional programming language is that it can only be understood by technical experts and it is far from the language that is spoken in business. Therefore, in the past decades, various Model-Driven Development (MDD) platforms have come up. In this blog entry, I will share some thoughts on model driven application development.

The main characteristic of a Model-Driven Development platform is that an application is not programmed but modelled by means of visual artifacts that can be understood by the business. The models are transformed in a working application by generating code or by interpreting the model. In a recent report Forrester (See Reference 1) has shown that the MDD (also called Low-Code Develop) platform market is growing. Software development professionals and analysts believe that these products can support fast delivery of even large, complex, and reliable customer solutions. A MDD platform claims to require less programming skills to bridge the gap between IT and business. Several MDD vendors have an excellent vision on application development. But now the question is: Do MDD platforms really do what they promise?

Over the past years I have seen and experienced various MDD platforms, such as Pega, Open Text Process Suite (formerly Cordys) and Mendix. Therefore, I will share some of my experiences and thoughts with you (without having the pretension to be complete).

1. Do MDD platforms really require less technical knowledge?
Partly. MDD platforms provide visual support for designing e.g. business processes, user interfaces and decision tables that can be easily understood by business analysts. On the other hand it still requires strong training and thorough technical knowledge to turn the models into working applications that satisfy the customers’ requirements. Especially, when it comes to business specific logic real programming is still needed, because the programming must be done in a vendor specific language / vocabulary or in Java or javascript. Also, concerning satisfactory user experience (UX) in the corporate style of the customer, UI experts are still required.

2. What are the main strengths of a MDD platform?
- The main advantage is in the initial phase of a new project. The visual capabilities are of great help in getting clear requirements, such as the business processes, high level application logic, and mocking up user interfaces. The models provide a quick start for the real development work.
- Another advantage is that the developer does not have to bother about how to write data to or fetch data from a database. The platform takes care of transaction and thread management.

3. Do MDD platforms bring other advantages for application development?
Yes. Most platforms bring out-of-the-box connectors for e.g. databases, soap/rest services, files and messages queues. They also include tools for version management, deployment, logging and tracing, and application monitoring. Some platforms (e.g. Pega) also provide tools for reporting, document generation, and requirement and specification tracking.

4. Can MDD platforms also have disadvantages?
Yes, they can. It could happen that application errors turn out to be caused by bugs in the platform. In such a case the developer has less control on the fix. A new version or hotfix of the platform is required to fix the problem, which often costs time.
Secondly, because the MDD platforms generate executable code the developer has less control on the performance and memory management (unless the developer has deep knowledge of the internals of the platforms, which actually is against the principle of an MDD platform).

5. What is the main improvement point for MDD platforms?
I think the main challenge is the modelling of business logic. The business of each customer is unique and needs its own specific logic, which can be highly complex and fine grained. Currently, the effort to write customer specific business logic in MDD platforms is still comparable to writing it in a traditional programming language. I think the biggest challenge is finding a notation for (visually) expressing business logic in such a way that it can be understood by business people. The OMG group has already defined visual notations for e.g. business processes (BMPN) and data models (UML). It would be great if possibilities could be explored for a programming language independent notation for business logic. If such notation would be supported by multiple MDD vendors then the IT community could really make a step forward in model driven application development. A new world of rapid and low coding development capabilities would open up!

Business process example in BPMN notation

Figure 1. Example of business process in BPMN notation. It would be great if also a visual, programming language independent notation could be designed for expressing fine-grained business logic

6. Can applications be developed faster with a MDD platform?
If the development team has experience with the platform, sure! As said above a MDD platform can provide a quick start, has built-in connectors and development tools.

In summary, I want to state that MDD platforms are promising. Application development can already benefit from MDD. But there is still a long way to go when it comes to the visual modeling of custom business logic.

 

References:
1) The Forrester Wave™: Low-Code Development Platforms, Q2 2016"

 

About Jaco

Jaco van Kooten Senior BPM Test BPMCompanyI am a BPM Consultant / Architect with about 20 of years of experience in IT design and development. In customer projects I am responsible for analyzing the business requirement and translating them into functional and technical design. I also guide development teams with building, testing and delivering the applications. I have experience with the BPM and Case Management solutions of PEGA and Cordys, as well as with ESB and SOA technologies and programming languages (e.g. Java and javascript).