Working on evolving EMF Metamodels?
Testing your business rules?
You surely need easy-to-evolve instances of your metamodel!
In classic approaches, you either had the choice of creating static model instances, which are difficult to maintain, or to use the EMF API (hopefully with some custom helpers) to create compiling models, which are hardly understandable and a real reference nightmare.
Tons of outdated resources or boilerplate code to fix, on a simple metamodel modification. don’t let your tests bring you down.
BOEM will make your day.
Working on a large evolving metamodel (300+ concepts), we need to create an intensive test coverage to fully cover all the business rules in our migration project. Up to today, we created more than 3000 unit tests. However during the project the metamodel is changing constantly. Keeping the tests up to date on these changes was difficult and time consuming.
As a result we came up with building a lightweight Xtend library to support us in creating quick-to-write, easy-to-read and compiling models, in a JSON like way.
The library enables the user to create EMF models without needing to generate specific code for his/her metamodel. It is entirely independent from the used metamodel and integrates easily through the Xtend extension mechanisms. In addition to autocompletion, BOEM adds shortcuts for instantiating and accessing elements during model construction, in a highly comprehensive manner, and easy and direct ways to access and modify these models, as well as Resource and ResourceSet management.
During the talk, we will show how to
- integrate the Xtend extension into your code
- build from simple to complex models (even with entangled references)
- access these elements using the standard BOEM-way or in an even sweeter way using BOEM’s syntactic sugar.
Have a look at a classic in BOEM-style:
books += Book.build[
title = "La Vie de Bohème"
author = Writer << "Henry Murger"
writers += Writer.build[
firstName = "Henry"
lastName = "Murger"
That's BOEM, an open-source industry-approved Xtend library.