<p>Metamodels, like many other software artifacts, evolve and exist in multiple versions. As a result, their instances, i.e., models, can become outdated and require adaptation. This process is known as model co-evolution. Co-evolution, however, typically uses an all-or-nothing approach that overlooks four key aspects: (a) preserving the history of the metamodel, (b) retaining the model’s history before co-evolution, (c) supporting the coexistence of models across multiple metamodel versions to allow delayed co-evolution and (d) lack of traceability between model and metamodel changes. In this paper, we introduce a novel, operation-based approach that supports versioning, records the complete history of metamodels and models, and enables the coexistence of different metamodel versions. Our approach allows engineers to delay model co-evolution without losing a model’s history. It further enables both forward co-evolution and reverse de-evolution of models. In addition to that, it establishes cross-layer traceability by linking model changes back to their corresponding metamodel changes, thus improving the maintainability and understandability of evolving systems. We evaluated our approach empirically using metamodels from different domains, demonstrating that it accurately records both model and metamodel histories, supports de-evolution, and correctly traces over 17 million model changes to their metamodel origins. Scalability measurements show that our approach handles co-evolution even in large-scale scenarios, successfully evolving models with over 88,000 elements and 2 million properties while tracking nearly 500,000 changes.</p>

错误:搜索内容不能为空,请输入英文关键词
错误:关键词超出字数限制,请精简
高级检索

“What really happened to my models?” Extending co-evolution with cross-layer traceability in metamodel-model histories

  • Marcel Homolka,
  • Luciano Marchezan,
  • Wesley K. G. Assunção,
  • Alexander Egyed

摘要

Metamodels, like many other software artifacts, evolve and exist in multiple versions. As a result, their instances, i.e., models, can become outdated and require adaptation. This process is known as model co-evolution. Co-evolution, however, typically uses an all-or-nothing approach that overlooks four key aspects: (a) preserving the history of the metamodel, (b) retaining the model’s history before co-evolution, (c) supporting the coexistence of models across multiple metamodel versions to allow delayed co-evolution and (d) lack of traceability between model and metamodel changes. In this paper, we introduce a novel, operation-based approach that supports versioning, records the complete history of metamodels and models, and enables the coexistence of different metamodel versions. Our approach allows engineers to delay model co-evolution without losing a model’s history. It further enables both forward co-evolution and reverse de-evolution of models. In addition to that, it establishes cross-layer traceability by linking model changes back to their corresponding metamodel changes, thus improving the maintainability and understandability of evolving systems. We evaluated our approach empirically using metamodels from different domains, demonstrating that it accurately records both model and metamodel histories, supports de-evolution, and correctly traces over 17 million model changes to their metamodel origins. Scalability measurements show that our approach handles co-evolution even in large-scale scenarios, successfully evolving models with over 88,000 elements and 2 million properties while tracking nearly 500,000 changes.