Metamodel clone detection with SAMOS

Research output: Contribution to journalReview articlepeer-review

28 Citations (Scopus)
101 Downloads (Pure)


Wider adoption of model-driven engineering leads to an abundance of models and metamodels in academic and industrial practice. One of the key techniques for the management and maintenance of such artifacts is model clone detection, where highly similar (meta-)models and (meta-)model fragments are mined from a typically large set of data. In this paper we have extended the SAMOS framework (Statistical Analysis of MOdelS) to clone detection, exemplified on Ecore metamodels. Our clone detection approach uses and extends the framework's feature extraction, vector space model, natural language processing and clustering capabilities. We performed three extensive case studies to demonstrate its accuracy both quantitatively and qualitatively. We first compared the sensitivity and accuracy of SAMOS for metamodel changes through mutation and scenario analysis (which simulate clones) with those of NICAD-Ecore and MACH, tools for clone detection on Ecore and UML models respectively. We then compared the precision and recall of SAMOS and of NICAD-Ecore on a real dataset, consisting of conference management metamodels from the ATL Zoo. Finally we performed a repository-wide mining of metamodel clones from GitHub. We conclude that SAMOS stands out with its higher accuracy and yet considerable scalability for further large-scale clone detection and other empirical studies on metamodels and domain specific languages.

Original languageEnglish
Pages (from-to)57-74
Number of pages18
JournalJournal of Computer Languages
Publication statusPublished - 1 Apr 2019


  • Clustering
  • Domain-specific languages
  • Empirical software engineering
  • Model analytics
  • Model clone detection
  • Model-driven engineering
  • Repository mining
  • Software maintenance
  • Vector space model


Dive into the research topics of 'Metamodel clone detection with SAMOS'. Together they form a unique fingerprint.

Cite this