Channels ▼


Generative and Transformational Techniques in Software Engineering

Models, Code Generation, and Transformations

Jean Bezivin (INRIA, LINA, University of Nantes) introduced GTT, covering both its history and underlying theory. Of everything he said, I was most impressed when he welcomed us to world of software engineering where "everything is a model"! He reminded us of the '80s, when everyone was claiming that "everything is an object" and how later, help was needed from non-OO concepts like UML, use cases, and patterns. Alas, not everything could be an object. The solution to these "failures" of the object model is now to accept everything as a model where a model is understood as a representation of a system in a certain context. This may sound like escapism into grand ideas but it turns out to be quite workable. It addresses, for example, that many of these "non-object" concepts like use cases and patterns have often lacked much "rigueur" and were often presented as recipes from a cookbook. More importantly, it is now accepted that no single "type" of model is good enough, that many different types of models are necessary to represent different aspects of a same system, and that as much emphasis needs to be put on bridging these models together as focusing on each one.

Bezivin called the system/context pair defining a model "the technical space". He also managed to present 20 years of software engineering history in three hours! My best summary of this is that:

  • Standards and tools frameworks for model-driven engineering exist from all the big players and academia--Eclipse and Bezivin's Atlas system come to mind.
  • Models can be more or less formal (mathematical, for instance) and people have a hard time agreeing on how much so.
  • Models of models are called "meta-models" and are useful to bring in many models into the same framework and to manage them.
  • Models can be transformed from one to another and that you talk about vertical transformations when you map models between different abstraction layers (for example, requirements, design, PIM, PSM, Java)and horizontal when you stay with the abstraction level such as UML, OOD, refactoring or source-code transformation.

Related Reading

More Insights

Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.