Model Driven Development

Openbravo ERP follows a Model Driven Development (MDD) approach. This means that Openbravo uses a technology agnostic model to define application components, such as windows and processes. Based on this application model, java code and other software artifacts are generated.

Openbravo model information -so called metadata- is stored in the Openbravo Application Dictionary. The process to generate the code from metadata is called Wizard for Application Development (WAD).

Model Driven Development aims to increase productivity and re-use through separation of concerns and abstraction. The model is an abstract definition of system components which contains enough information to drive the generation of one (or more) implementations of the system in a concrete technology.

This separation of concerns -abstract functional description in the model and implementatation of model components in a concrete technology- hides technology complexities to ERP domain experts in their process to define and implement new ERP functionality and simplifies the evolution of the implementation technology

In some cases it is needed to code a solution externally from the model. This is fully supported by Openbravo. Developers can freely develop their own solutions on top of the Openbravo ERP technology stack.


Modularity is a new capability introduced in the Openbravo ERP 2.50 release which allows to define and package additional functionality and configurations as extension modules, independently from the core product.

Modularity changes the way in which Openbravo ERP can be adapted to user needs. Instead of customizing the code to match user requirements, it is possible to externally -from an independent module- extend Openbravo ERP functionality and to configure it.

This new approach has several advantages. Most important:

  • Enables pure distributed development: new functionalities can be developed through modules in a pure distributed manner. The team developing the module can work isolated from other teams -they only need a stable API from the other modules they use- and the life cycle of this module -including releases- is independent from other modules.
  • Highly improves maintenance of code: developing through modules means packaging independently. With a proper definition of module dependencies and keeping API's stable the process of updating an instance is straightforward and can be performed in one user click
  • Encourages sharing and re-use of new functionalities: developing through modules make it quite simple to share this new functionality with other people. If developers want to share their modules all they need is to package and publish them in Openbravo Forge (Central Repository). After that these modules will be publicly available and other users can search for them and install them through a simple process.

Pure web application - Rich client

Openbravo ERP is, by its very nature, a pure web application. Ubiquity of web browsers provides an universal point of access. Openbravo understands the network as a platform, delivering and allowing users to use applications entirely through a browser.

The requirements are minimum: a web browser is available on virtually all computer systems. Moreover, being web-based means the product can be delivered over the Internet, allowing to update the application without distributing and installing software on potentially hundreds of client computers.

Traditionally web applications had big limitations in regards of user interface. This has changed with the introduction of new web technologies such as AJAX. With AJAX and similar frameworks it is possible to develop a rich, interactive and user-friendly interface

Java - Lightweight J2EE

Openbravo uses Java as its backend programming language. There are many reasons for choosing Java as the server-side language:

  • Open Source nature
  • Wide support for enterprise-level development
  • Mature architecture for web applications

Openbravo follows Java 2 Enterprise Edition architecture (J2EE) without making use of the EJB container. Instead of that Openbravo uses lightweight infrastructure to implement access to data and business logic. In Openbravo 2.50 Openbravo has delivered a new Data Access Layer (DAL) based on Hibernate that provides a powerful but still lightweight persisting mechanism.

Support for multiple databases

Openbravo is committed to avoid vendor locking in any technology it uses including database. In Openbravo 2.50 Openbravo runs on PostgreSQL (8.3) and Oracle SE (10g-11g).

In future releases Openbravo aims to be database independent. The new Data Access Layer (DAL) based on Hibernate is a first step in that transition