Monday, December 13, 2010

MDD Case-Study: RCP Code Generation in an Airline Company

I was recently asked to translate into english  the case-study presented by BritAir during MD Day 2010. So, here is a summary.

BritAir, a french airline company, is a subsidiary of Air France which transported about 3,5 millions of passengers last year.

Another activity of BritAir is the training of pilots, commercial staff and maintenance technicians of other companies.

Despite BritAir has no developer, the company wanted to keep the control and the quality of its applications:

  • Normalize the user interface of the applications
  • Normalize the way the applications are designed
  • Improve the development productivity
  • Document the applications

To achive these goals, Olivier Corbel, the IS Manager, decided to put in place a new development process based on a Model-Driven approach. This project was conducted with Mia-Software and Sodifrance.

The principle of the BritAir approach is based on two main ideas:

  • A model describing the business data (entities, identifiers, attributes, child/parent relationships)
  • An automatic generation of graphical interfaces (Eclipse RCP) for classic functions (cread, read, update, delete, search and export to Excel)

In addition, the business logic is also described in the model: a concrete syntax has been defined to declare some rules in french. It allows to declare variables, to set values, to test, to loop, etc.

The model is created with MagicDraw, an UML modeling tool, and translated into code (Eclipse RCP and Hibernate) with Mia-Studio, the model transformation engine developped by Mia-Software.

The generated applications are complete and don't require any additional code (the business rules are also transleted into Java). They are deployed on servers with Tomcat, Xfire and Oracle.

It took 300 days (total effort between march 2008 and july 2009) to setup the process, define the target architecture, adapt the tools and train BritAir's staff. The team was composed of three people of Mia-Software (a project manager, a MDA enginer and a JEE architect) and one architect of BritAir (requirements and validation).

Several applications have been developped in parallel, in order to challenge and test the new process and tools.

Now, each time a specific development starts, it uses this approach. Until now, six applications have been developped:

  • small maintenance of aircrafts
  • management of aircraft events
  • cost accounting
  • financial forecasts
  • management of passengers
  • preparation of flights. 

Olivier Corbel has identified several benefits of this MDD process:

  • Industrialization of the development activity: normalization of modeling and coding, and better documentation.
  • Independance of the models from the target architecture (neither RCP nor Hibernate concepts in the models).
  • Design is mandatory, in order to generate the application.
  • Better quality of code, since it has been qualified first and then converted into generation rules
  • Better productivity: during its talk, Olivier Corbel said that the development managers have evaluated to 10 the productivity ratio on these projects!
  • User experience: the applications are homogeneous and always provide the same ergonomy to the users
  • Prototyping: it is easier to provide early versions to users and take their feedback into account to improve the application

For BritAir, the next step now is to bring evolutions to the platform:
  • Support authorization management
  • Extend the expressiveness of the business rules language
  • Improve the integration of new applications with existing ones (generated or COTS)
  • Add a new generation target (web client)


  1. Cool stuff Fred. It's always nice to see the technology we develop at Eclipse being used in positive ways by the commercial industry. Especially in cool areas like aviation!

  2. very nice! Is there some source model to look at?

  3. @Ivano : No, the models and the code belong to BritAir. The only public part is the screenshot shown on this blog.

  4. For small green field projects MDA is best suited to start with even if it don't create code.

    I always believe that 'less the handwritten code, better the system'.

    I am not sure whether same will apply for high transactional base systems where datamodel is very different than business model.

    I will love to be proven wrong.

  5. I worked a lot with Mda tools, both Uml based (like Mio) and Dsl based (like Grails, Roo).
    The problem with Dls is that I found it way to complex to create new templates. The problem with Uml is that the expressiveness is limited. It is okay for data driven templates like crud app's, but Uml is fall's short on use-cases like workflow's mobile app's etc.
    Therefore I created my own Mda tool, based on Java, and very recently open-source it.
    You may want to have a look at:

  6. @Anonymous
    When the datamodel is very different from the business model, you should manage two models from which you can already generate a lot.
    Regarding the mapping, you have two possibilities: either you manage it manually, or you try to model it. Modeling the mapping is not easy (you can have transformation rules which are hard to represent in a model) but I know some tools which facilitate this.
    See for example: