Models Everywhere

Various considerations about Model Driven Engineering

Archive for the ‘Uncategorized’ Category

Principles and Applications of Model Driven Engineering

Posted by jbezivin on April 6, 2012

I was happy recently to give four lectures on MDE at NII Tokyo on the subject of “Principles and Applications of Model Driven Engineering“.

Lecture 1: History and context of MDE
Tuesday, January 17, 2012, 13:30-15:00
This first course will present the modern history of MDE (Model Driven Engineering) as a specific branch of software modeling. The differences with simulation will be outlined. A survey of semi-formal modeling notations will first show how the rich variety of these formalisms has been important in the history of computer science (SADT, Flow-charts, State-charts, Petri nets, Entity-association diagrams, to name only a few of them). Unfortunately the lack of unification and automation has quite often limited the utility of these formalisms but they have allowed gaining a good understanding of visual and textual semi-formal notations. In the long history of “contemplative” modeling, there were probably some missed opportunities but one outcome was certainly the progressive convergence of Object Oriented Analysis and Design methods towards the consensual and normative definition and use of the UML software artifacts description language. This UML proposal triggered in fact a lot of innovations in the area of software modeling. Many of these innovations will probably survive the UML language itself, and are probably much more important. Since UML was not a method, another language like SPEM was necessary to describe the various software development processes (who is doing what, when, why and how?). Having two languages was like having an arbitrary number of them: a need for a metalanguage (i.e. a language to define languages) became necessary. The MOF was then proposed and the idea of precise characterization of domain specific languages by metamodels came then to life, even if there is still much progress to achieve in this field. Then the evolution of software systems, for example when changing platforms, was described as possible transformations from languages more or less dependent on these platforms. This suggestion was made in the OMG MDA™ white paper in November 2000 and became quite popular. Today MDE may be seen as a generalization of MDA. This first lecture will acknowledge the influences of previous approaches on modern modeling practices developed in the last decade and pursuing the goal of full automation.
Lecture 2: Theory and Basic Principles of MDE
Tuesday, January 24, 2012, 13:30-15:00
The second course will present the basic principles of MDE from a conceptual and theoretical point of view. MDE uses typed graphs for most of the representation tasks and rule-based declarative transformations for most of the operation tasks. It relies essentially on the concepts of metamodel and model transformation. Sometimes called Modelware, MDE is thus a graph-based and transformation based technical space. The notion of technical space will be defined and used to compare similarities and differences with other technologies like Grammarware. Metamodels provide some sort of typing system on top of the models themselves. The essence of MDE is however most related to the unification of abstract models. Terminal models, metamodels and metametamodels are the most important categories of abstract models. Different operations like storage, retrieval and transformation may be applied on all abstract models. One of the important characteristics of MDE is to represent systems by models. This relation of representation which is central to all modeling activities will be analyzed and discussed. If metamodels provides a precise, regular and strong support for representation, they have however not the power to reason or more generally to act upon these representations. Of course it is always possible to use an imperative general purpose language to put these metamodel-based representations to work, but this solution has many drawbacks that will be outlined. A more constructive MDE approach usually suggested consists in using model transformations as the core and main operation on models. The advantages of this solution will be discussed; particularly in the case when the transformation language is declarative and rule-based. Additional advantages may also be reaped when the transformation program may be considered itself as a model. In this case it is much easier to deal with domain specific transformation languages, providing maximum impact to the regular MDE architecture based on metamodels and transformations.
Lecture 3: Applications of MDE
Tuesday, January 31, 2012, 13:30-15:00
The subject of applications of MDE is vast and rapidly evolving. Usually one may consider three important areas: Generation of software artifacts, Discovery of models from structured systems and Interoperability between heterogeneous systems. This course will show how these three areas of increasing complexity are constantly evolving. Another classification of MDE applications considers various domains like health care, military operations, automotive, aeronautics, embedded, information systems, Web engineering, etc. A short survey of application areas of MDE will be provided. An interesting way to look at MDE applications is also through the various forms of model transformations. These transformations may be performed at system design, system maintenance or evolution and at system operation. This third course will also show how the typology of applications may be related to a classification of metamodels. This will allow talking in a similar manner of product and process models, of static and dynamic models, of code and data models and many more. The systematic classification of metamodels and transformations helps identifying the deployment perimeter of MDE, as it is today and as it may evolve tomorrow.
Lecture 4: Where will be MDE in 2030?
Tuesday, February 14, 2010, 13:30-15:00
One of the main promises of MDE is that, by raising the level of abstraction, it should be possible to achieve more sustainability in time for software intensive systems. This was the initial MDA objective. With Platform Independent Models (PIMs) that one could map on various new technological platforms, the heavy software investments could be protected. In a period of rapid technological obsolescence, this guarantee of durability was most welcome. Unfortunately this idea has not met widespread success yet and sometimes contributes to the impression that MDE partly missed the boat. This last lecture will thus take a critical eye to MDE and compare the promises with the deliveries. In spite of the immense hopes that greeted the initial MDA proposal as a possible way to regenerate the entire software engineering practices, we must recognize today that its impact is more limited and its perspectives more confined. We consequently propose the view in this last lecture that the current iteration may not be the last one. This piece of technology may need an additional cycle to mature and produce maximum impact. The lecture will summarize the important lessons learnt in the current iteration and examine some of the difficulties that may have hampered a wider adoption. Among these difficulties some loose or contradictory goals will be discussed as well as the ambiguous relation between programming languages and modeling languages. At a time when software engineering is being much questioned – not only in its operation but also in its essence – we may consider the necessary adaptation of MDE as a chance for the future. To this purpose we need to reflect on the past and select the good set of properties and practices that will tomorrow allow MDE to play a central role to produce, maintain and operate software based systems. In the critical analysis of the first decade of MDE, the course will propose on one side a list of successful items that should absolutely be kept (like the central concepts of DSL or transformations) and on the other side a list of elements that may be questioned (like the notion of exclusive visual modeling or the idea of a general purpose modeling language). Asking the question of where will be MDE in 2030 amounts to proposing a research agenda for revisiting the whole area of software modeling.

Posted in MDE, Uncategorized | Leave a Comment »

A list of software conferences

Posted by jbezivin on November 16, 2011

I am currently trying to understand how Google+ pages are working.

Just to have one example, I set up a G+ page on some 2012 conferences on software related subjects.

The name of the page is +Conferences.
Here is the link.
If you see one conference that should be added, please send me a note.

Posted in Uncategorized | Tagged: | Leave a Comment »

Definition of an MDE tool

Posted by jbezivin on October 18, 2011

My own definition of an MDE tool is:

An MDE tool is a tool that uses at the same time metamodeling and model transformation to achieve some automation goal in the production, maintenance or operation of software-intensive systems.

There are many ways to use metamodeling or model transformations.

Posted in Uncategorized | Tagged: , | 2 Comments »

Why did MDE miss the boat?

Posted by jbezivin on October 17, 2011

 

Why did MDE miss the boat?

 

Below is the abstract of the talk I gave to the second Brazilian Workshop on Model Driven Software Development http://reuse.cos.ufrj.br/wbdsdm2011/

 

 

Why did MDE miss the boat?

Models have failed, at least temporarily. Model Driven Engineering (MDE) is a specific branch of software modeling that has been experimented for less than two decades. One of its best known instantiation is the MDA™ initiative launched in November 2000 by the OMG. The deployment of MDE seems today to have reached a standstill. In spite of the immense hopes that greeted the MDA initial proposal as a possible way to regenerate the entire software engineering practices, we must recognize today that its impact is rather limited and its perspectives quite confined. We consequently propose the view that the current iteration may not be the last one. This piece of technology may need an additional cycle to mature and produce maximum impact. This presentation will summarize the important lessons learnt in the current iteration and examine some of the difficulties that may have hampered a wider adoption. Among these difficulties some loose or contradictory goals will be discussed as well as the ambiguous relation between programming languages and modeling languages. At a time when software engineering is being much questioned – not only in its operation but also in its essence – we may consider the necessary adaptation of MDE not as a failure, but as a chance for the future. To this purpose we need to reflect on the past and select the good set of properties and practices that will, in the medium to long-term, allow MDE to play a central role to produce, maintain and operate software based systems. Knowing the reasons of the temporary failure of MDE may be as important as assessing the progresses made in this area in the past twenty years.

Posted in MDE, Uncategorized | Tagged: | 6 Comments »

Interpreting technology adoption curves

Posted by jbezivin on December 20, 2010

Interpreting technology adoption curves

Following the current Google Ngramming fashionable trend, I started to look at the evolution of references to some technological buzzwords. I started by drawing the comparative curves for « object oriented » and « model driven ». The result was quite interesting:
There are many interpretations of this curve.  I propose the following ones:
  1. Object technology is now mainstream and thus explicit references are decreasing. Object technology started in 1980 and had an initial development until 1985, and then a much more rapid one until 1995, followed by a slower decrease.
  2. Model driven engineering is gaining momentum since 1996 and steadily increasing its apparent impact.
  3. The development rate of object technology between 1985 and 1995 was much more rapid (steep curve) than the later development of model driven engineering in the 1996 to 2006 decade.
  4. So the two phenomenon are not comparable. Probably this is due to the fact that there were some obvious killer applications in object technology that triggered the rapid development just before 1985, while this is  not so obvious with model driven engineering.
I am interested by any other observation.

Posted in MDE, Object, Software Engineering, Uncategorized | 3 Comments »

About model transformations

Posted by jbezivin on November 20, 2010

Model Transformations are essential

Some recent Twitter discussions triggered by the interview of Steven Kelly by Angelo Hulshout are interesting:

Rafael Chaves supports the idea that “the only model transformation that really matters is from original model into code”:

I do not agree with this idea.  In classical MDE we usually distinguish three different kinds of transformations:

  1. Code to Model
  2. Model to Model
  3. Model to Code

The most popular transformation is of type 3. This is sometimes called Model2Text or MOF2Text and typically allows to generate Java code from UML models. More generally these kinds of transformations have been heavily used in MDD for software artefact generation from abstract models. The source model conforms to a given metamodel (like the UML metamodel) and the target text conforms to a given grammar (like the Java grammar). There is an Eclipse M2T project.

But transformations of type 2 called M2M are central. The Eclipse M2M project proposes for example QVT and ATL but there are plenty of other possibilities. There are many examples of such transformations, for example in the ATL transformation zoo. In these M2M transformations, there is usually at least one source metamodel and one target metamodel, usually different.

The less known transformations are of type 1 sometimes called Text2Model. They are usually used in reverse engineering of legacy code in projects like the Eclipse MoDisco project. One example is the extraction of Java models from Java code. In MoDisco there is an open source Java metamodel of excellent quality that is quite close to the Java grammar. But one could imagine also directly extracting for example business rules from a Java program by using a Business rule metamodel. Alternatively another solution would be to use a Java.code to Java.model C2M transformation, and then a Java.model to BusinessRule.model M2M transformation. Usually C2M transformations are more expansive to develop than M2M transformations.

So I believe that all three categories of transformations are equally important. M2C and C2M transformations involve one metamodel and a grammar while M2M transformations involve two metamodels.

Similarly to M2C and C2M transformations, we could also have M2X and X2M transformations where grammars would be replaced by XML schemas.  Following the same idea, we could also envision M2DB and DB2M transformations where grammars would be replaced by Data Base schemas. All these native transformations would be quite useful, since they could be used with common M2M transformations.

Posted in Metamodeling, Models, Transformation, Uncategorized | 9 Comments »

 
Follow

Get every new post delivered to your Inbox.