Monthly Archives: December 2017

Model Driven Development: The Basics (Part I)

Published by:

In a previous post we have identified the need to have a translator from the UML language, which is used to capture requests from customers, to the programming languages used by software developers to make computers fulfill those requests.

The good news is that several products have been developed and are currently available to perform that task. Every tool that offers the possibility of “round-trip engineering” is a candidate. The scope of this post is to show how a specific tool implements it and how we can take advantage of what is available.

Prerequisites are a basic knowledge of

  • the object-oriented paradigm
  • the UML language
  • the constructs of the C++ implementing the object-oriented paradigm. I am using C++ because of my experience and also because it is the language that, at least in my opinion, presents more challenges than others in this field. However, We’ll be focusing on an embedded environment in this example and for this reason we’ll be using C++ syntax, but not the C++ Standard Library. There are reasons, both technical and commercial, for not using the STL in embedded environments, but this might be a subject for a different post.
  • the User Interface in Microsoft Visual Studio

Several good resources on those subjects can be found online.

The presentation of the subject here is going to be generically applicable in different environments. However, in order to be able to present some practical examples, I am going to use

  • Sparx Systems Enterprise Architect rel. 13.5, Professional  Version, as a UML modeling tool. At the time of writing, a 30-day trial version can be downloaded from here.
  • LieberLieber Embedded Engineer rel. 2.1, an add-in for Enterprise Architect that improves the capabilities for code generation from a model. At the time of writing, a 90-day trial version can be downloaded from here
  • Microsoft Visual Studio 2017, Community Edition. Disclaimer: only sofware covered by Open Source licenses is going to be used here and for this reason I can use the indicated version of the development environment. The business environment of the readers can be different and I can’t give advice about the suitability of any licensing in their case. Please check before using the tool) The different versions of the development environment are available here .
  • Microsoft Windows 10 operating system.

Continue reading

Model Driven Architecture: Why We Need It

Published by:

It is very likely that whoever landed on this page doesn’t need the first few paragraphs, but bear with me a second, because I am at a point where I really think that we need to go back to where it all started.

Programming languages are tools developed in order to tell computers what we want them to do for us. More precisely, they are tools developed to speed up the process of telling a computer what to do. It is called “computer software“, or, for brevity, just “software“.

In order to use those languages, we rely on someone writing translators from the programming language we are using to the set of instructions that a processor can actually execute. This is because the different processors’ sets of instructions are in the vast majority of cases considered too primitive to be used in the production of usable software needed to be delivered within an acceptable time frame.

However, programming languages are still considered too technical by the vast majority of the population who can benefit from the use of computer software and for this reason there’s a community of technicians working to interpret the desires for computer programs coming from the population at large. Those technicians write sequences of orders to computer (kind of “speeches“) in those languages, also called “computer programs“, to satisfy the needs arisen from the rest of the community. It should also be discussed how those “needs” are created, but this might be a subject for another discussion.

So, here we are. In any software production activity we have three entities

  1. Computers
  2. Technicians
  3. Customers

Customers want Computers to do something for them, but only Technicians can tell Computers what to do.

And here is where the problems begin.

Continue reading

Welcome to!

Published by:

I created this website to understand the future of the Model Driven Engineering (MDE) and its offsprings, Model Driven Architecture (MDA) and Model Driven Development (MDD).

I am an old computer scientist who consider himself lucky for having been able to work for some years with those methodologies when they were in their infancy, at least in the commercial world, as we are talking about the late ’90s.

It was a big mission critical project and I was really impressed with the formal rigor offered by MDA in the process of software development, which led us to the delivery of high quality software on time and on budget, the only time that it happened in my now very long career.

The walk of life took me elsewhere after that project, but I thought that the vast majority of the software industry would have adopted that approach. Unfortunately, it doesn’t seem to have happened.

Many discussions about the reasons for that can be found online, from “blaming the tools” to the lack of trained personnel available on the market.

These pages will hopefully contain a contribution to address those issues.

Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.