Semantic Differencing Operators for Model Comparisons

O. Kautz, S. Maoz, J.O. Ringert, and B. Rumpe

Model-driven engineering promotes the use of models throughout a software system's lifecycle. Due to iterative development methodologies, changing requirements, and bug fixes, these models continuously evolve during system's design, development, and maintenance phases. Fundamental building blocks for an analysis of their evolution are differencing operators one can use to compare two versions of a model.

Existing approaches to model differencing concentrate on heuristics matching between model elements and on finding and presenting differences at a concrete or abstract syntactic level. While showing some success, these approaches are also limited: models that are syntactically very similar may induce very different semantics (in the sense of `meaning'), and vice versa, models that semantically describe the same system may have rather different syntactic representations. Thus, a list of syntactic differences, although accurate and complete, may not be able to reveal the real implications these differences may have on the correctness and potential use of the models involved. In other words, such a list, although easy to follow, understand, and manipulate (e.g., for merging), may not be able to expose and represent the semantic differences between two versions of a model, in terms of the bugs that were fixed or the features (and new bugs...) that were added.

We present our vision and recent results on developing semantic diff operators for model comparisons: operators whose input consists of two models and whose output is a set of diff witnesses, instances of one model that are not instances of the other. Diff witnesses serve as concrete proofs for the real change between one version and another and its effect on the meaning of the models involved.

For more information please contact: Oliver Kautz and Shahar Maoz and Jan O. Ringert.