MDE Tools: EMF

In my last post I informally introduced the notion of metamodel and mentioned that one of the tools that is used around them is Eclipse Modelling Framework (EMF). In this post, I am presenting EMF because it is at the heart of a lot of other MDE technologies.

What Is EMF?

From EMF website we have:

The EMF project is a modeling framework and code generation facility for building tools and other applications based on a structured data model. From a model specification described in XMI, EMF provides tools and runtime support to produce a set of Java classes for the model, along with a set of adapter classes that enable viewing and command-based editing of the model, and a basic editor.

Continue Reading

Basic concepts: Metamodeling

This is an informal introduction to metamodeling. The target audience for this post are developers that find themselves working with metamodeling tools but have never been introduced to them and need a basic understanding to finish the task at hand.

What Is a Metamodel?

Let us start with a simple example, your software needs to represent arithmetic expression additions. If you are familiar with UML, we can represent that using the following diagram:

Continue Reading

Interoperability of web-based modeling tools

While doing some research on web-based tool, I recently found this excellent article by the team at EclipseSource. I like the way they present the differences between web and desktop-based tools focusing on the following axes:

  • Installability
  • Portability
  • Performance and responsiveness
  • Usability
  • Cost

I recently started studying these web-based tools to implement some personal projects and I found that there is another dimension worth mentioning: interoperability. As they note, both technologies have their pros and cons in each axis, but in the axis of interoperability, web technology are just on a league of their own.

Continue Reading

The toy example as a specification device

Agile methodologies are pervasive in today’s development culture. The ideas are used not only in software development but in other domains as far from software as sales. However, when we develop model-based tools, we are usually faced with the challenge to develop a DSL, or several in small iterations. This creates several challenges, but today I am going to be focusing on the specification of the requirements. Agile methodologies require to implement the software in small iterations where I think that one of the best ways of specifying part of a feature in a complex model-based engineering tool is through a toy example. Let me explain why.

Continue Reading

From Eclipse to VS Code: First impressions

I have been developing using the Eclipse IDE basically since college. In those days, being able to use a complex IDE was seen as the mark of the professional developer. Freshmen coded using a simple editor and the compiler directly from the console, geeks used an editor like Vim and some build tool to automate the build process, but to code “like a professional”, you used the mighty IDE.

In one of my latest classes, there was a even a teaching assistant that insisted that we use an IDE for one of the big projects in the last year of Computer Science. We were required to learn to use it well, this is, learning the shortcuts and going beyond just using it as very heavyweight editor. This was very useful later for my professional career, indeed, using the tools of the trade and going beyond just “programming” meant that you were ready to enter the workforce.

Continue Reading