From Software Engineering to Business Engineering
A couple of years ago each application was developed by programmers. Nowadays, a lot of applications still are developed int the same way. However, developments in the fields of business rules engines, process engines and data engines are changing this a lot. In the near future Applications will be configured instead of programmed.
In his article on "Via Nova Architecture", Alcedo Coenen indicates two revolutions, the engine and engineering revolution. The engine revolution means that applications are not programmed anymore, they are just modelled (in high level models). These models can directly be executed by the engine. He states that: "The essential features of an engine are executiveness and declarativeness: the engine can execute without compiling the specifications, and the model can be specified without technological and execution-dependent issues, you have just to model what you really want to define (programming habits like memory management, garbage collection, variable declaration etc are no issues anymore and handled by the engine itself in a generic way). Engines are the applications of the future: generic, suitable for a complete range of business domains, and configurable-on-the-fly by the business owners themselves. Business application development in the traditional sense becomes obsolete."
I have a good message for him and for everybody who's happy with this revolution. The future is now! We, at Mendix, have developed such an engine. The Mendix technology consist of four key elements: the XML Application Server, the Business Modeler, an AJAX client and a ConnectionBus. In the Business Modeler all models needed for a business applications can be defined. In principle three application elements have to be defined: data/information, presentation and business logic. The XML Application Server interprets the models defined in the Business Modeler. The models are executed directly without compiling them. The ConnectionBus connects to all kind of datasources mapping them to a general information object model defined in the Business Modeler. You can think of connections to databases, existing ERP systems, webservices, etc. The AJAX client delivers a platform-independent interface to the application server.
Some nice features:
- We give the ability to model a whole application, not only processes or business rules.
- Don't bother about programmers issues, model in business terms.
- Automatic consistency checking between models, so you can't deploy a model which doesn't represent a consistent application.
- It's almost all drag 'n drop, so it's really fast! (of course you need a decent analysis of the organization you build an application for, before you even start modeling!).
So by doing application development in this way needs a whole different approach. Again Alcedo Coenen: "One consequence of making applications configurable is that you need configuration discipline. Other than programming discipline (which is the discipline of technical considerations), configuration discipline needs a thorough consideration of the business itself, on a semantic and pragmatic level. Questions like what do I mean with the concept customer, when do I accept a product request need to be answered. The answers need to be unambiguous, non-contradictory and complete. Which means that the business needs to declare its structure and concepts clear in itself, also called business engineering.". You can see the urgency for business engineering whem building an application in the Mendix Business Modeler. You don't have to think about software engineering, but the more you have to think about business structures and concepts. It's not that you didn't have to think about business engineering issues when building applications in 'the old way', but now you can really focus on business engineering instead of software engineering. So, let the revolution begin!
I'll keep you informed about developments in the field of model execution, that's where we can still learn a lot.