After a few discussions on the importance and complexity of co-evolution in software engineering, during the exam session I asked to describe and explain the problem, with specific reference to model co-evolution (and metamodel – model coevolution). The crucial point of the problem is that if a model evolves to a newer version, the related models should reflect this evolution too. Analogously, if a metamodel describing a modeling language evolves, the models that conform to the previous version of the metamodel will not conform to the new version. Therefore, versions converters should be provided together with the new metamodel.
However, some people have a very tranchant (meaning, all black and white) vision of the world. Here is a lapidary response by a student:
The problem of co-evolution of models is when done getting back to the previous model is impossible.
Well, … your turn. (no, it’s impossible)