Two reasons that have usually hindered the adoption of model transformation technology in industry are lack of good tool support and the ability to cope with complex transformations that may have to process very large models, with millions of objects. On the one hand, existing tools for MDE are often developed by small research teams whose main interests are to innovate or to analyse novel MDE techniques, without having resources for developing industry-standard tools. Hence, having model transfomation languages as internal DSLs of mainstream programming languages facilitates the reuse of standard IDEs and industry-level productivity tools. On the other hand, model transfomations need to add value to existing transformation processes both by enabling the integration of existing transformation logic and by providing new model transformation abstractions for developing highly performant, concise and understandable model transformations.
Furthermore, YAMTL has been shown to be as expressive as ATL and one of the most performant model transformation engines to date in several benchmarks over the past five years. Specifically, when a YAMTL transformation is executed in batch mode it shows a gain of several orders of magnitude with respect to other tools and a small memory footprint. Subject to an appropriate design of transfomation rules, incremental propagation of modifications is normally performed in real-time.
YAMTL helps practitioners adopt model transformations by reusing Java productivity tools, by reusing existing codebases that may already implement parts of complex model transformation processes; and by providing model transformation abstractions, like:
allInstances
operator; andSome use cases that have already been documented are:
In addition the combination of YAMTL and Xtend is a good fit for developing declarative MODEL-TO-TEXT TRANSFORMATIONS, let me know if you want to explore this use case ;-)
Using a YAMTL transformation is as easy as…
// INSTANTIATE THE TRANSFORMATION DECLARATION
val xform = new cd2db
// PREPARE MODELS
xform.loadInputModels(#{'cd' -> inputModelPath})
// EXECUTE TRAFO
xform.execute()
// STORE MODELS
var String outputModelPath = '''src/main/java/cd2db/targetInitial.xmi'''
xform.saveOutputModels(#{'db' -> outputModelPath})
The semantics of the language can be found at (Boronat, 2018) and support for incremental execution of model transformations is presented in (Boronat, 2020).
The complete list of publications involving YAMTL is as follows:
@inproceedings{yamtl, author = {Boronat, Artur}, title = {Expressive and Efficient Model Transformation with an Internal DSL of Xtend}, booktitle = {Proceedings of the 21th {ACM/IEEE} International Conference on MoDELS}, publisher = {ACM}, year = {2018}, pages = {78--88}, webdoi = {https://doi.org/10.1145/3239372.3239386}, webdownload = {2018-boronat-models.pdf}, slideshare = {https://www.slideshare.net/aboronat/expressive-and-efficient-model-transformation-with-an-internal-dsl-of-xtend} }
@article{2020-boronat-sttt, author = {Boronat, Artur}, title = {Incremental execution of rule-based model transformation}, publisher = {Springer}, journal = {International Journal on Software Tools for Technology Transfer}, year = {2020}, volume = {1433-2787}, webdoi = {https://doi.org/10.1007/s10009-020-00583-y}, webdownload = {2020-boronat-sttt.pdf} }
@inproceedings{BoronatFASE19, author = {Boronat, Artur}, title = {Offline Delta-Driven Model Transformation with Dependency Injection}, booktitle = {{FASE} 2019}, pages = {134--150}, year = {2019}, series = {LNCS}, volume = {11424}, publisher = {Springer}, webdoi = {https://doi.org/10.1007/978-3-030-16722-6}, webdownload = {2019-boronat-fase.pdf}, slideshare = {https://www.slideshare.net/aboronat/offline-deltadriven-model-transformation-with-dependency-injection} }
@article{2021-ttc18-sosym, author = {Hinkel, Georg and Garc\'{i}a-Dom\'{i}nguez, Antonio and Sch\"{o}ne, Ren\'{e} and Boronat, Artur and Tisi, Massimo and Calvar, Th\'{e}o Le and Jouault, Fr\'{e}d\'{e}ric and Marton, J\'{o}zsef and Ny\'{i}ri, Tam\'{a}s and Antal, J\'{a}nos Benjamin and Elekes, M\'{a}rton and Sz\'{a}rnyas, G\'{a}bor}, title = {A cross-technology benchmark for incremental graph queries}, publisher = {Springer}, journal = {Software and Systems Modeling}, year = {2021}, volume = {1619-1374}, webdoi = {https://doi.org/10.1007/s10270-021-00927-5}, url = {https://doi.org/10.1007/s10270-021-00927-5}, webdownload = {2022-hinkel-ttc18-sosym.pdf} }
@inproceedings{BoronatTTC18, author = {Boronat, Artur}, title = {{{YAMTL}} Solution to the {TTC} 2018 Social Media Case}, booktitle = {Proceedings of the 11th Transformation Tool Contest, co-located with the 2018 Software Technologies: Applications and Foundations, TTC@STAF 2018, Toulouse, France, June 29, 2018.}, pages = {65--78}, year = {2018}, editor = {Garc{\'{\i}}a{-}Dom{\'{\i}}nguez, Antonio and Hinkel, Georg and Krikava, Filip}, volume = {2310}, publisher = {CEUR-WS.org}, webdownload = {2018-boronat-ttc.pdf} }
@inproceedings{2019-boronat-ttc-tt2bdd, author = {Boronat, Artur}, title = {{YAMTL} {S}olution to the {TTC} 2019 {TT2BDD} {C}ase}, booktitle = {Proceedings of the 12th Transformation Tool Contest, a part of the Software Technologies: Applications and Foundations (STAF 2019) federation of conferences}, year = {2019}, editor = {Garc{\'{\i}}a{-}Dom{\'{\i}}nguez, Antonio and Hinkel, Georg and Krikava, Filip}, volume = {pending}, publisher = {CEUR-WS.org}, webdownload = {2019-boronat-ttc-tt2bdd.pdf} }
@inproceedings{2019-boronat-ttc-bib2doc, author = {Boronat, Artur}, title = {{YAMTL} {S}olution to the {TTC} 2019 {B}ibtex{T}o{D}ocbook {C}ase}, booktitle = {Proceedings of the 12th Transformation Tool Contest, a part of the Software Technologies: Applications and Foundations (STAF 2019) federation of conferences}, year = {2019}, editor = {Garc{\'{\i}}a{-}Dom{\'{\i}}nguez, Antonio and Hinkel, Georg and Krikava, Filip}, volume = {pending}, publisher = {CEUR-WS.org}, webdownload = {2019-boronat-ttc-bib2doc.pdf} }
@article{Boronat-2021-ttc21, author = {Boronat, Artur}, title = {Incremental execution of relational transformation specifications in YAMTL: a case with laboratory workflows}, publisher = {CEUR Workshop Proceedings}, journal = {Joint Proceedings of the 13th and 14th Tool Transformation Contests}, year = {2021}, issn = {1613-0073}, volume = {3089}, webdownload = {2021-boronat-ttc.pdf}, url = {http://ceur-ws.org/Vol-3089/ttc21_paper7_labflow_Boronat_solution.pdf} }
@proceedings{Boronat-ttc20-21-proceedings, editor = {Boronat, Artur and Garc\'{i}a-Dom\'{i}nguez, Antonio and Hinkel, Georg}, title = {Joint Proceedings of the 13th and 14th Tool Transformation Contests}, booktitle = {The TTC pandemic proceedings with CEUR-WS co-located with Software Technologies: Applications and Foundations (STAF 2021), Virtual Event, Bergen, Norway, July 17, 2020 and June 25, 2021.}, publisher = {CEUR Workshop Proceedings}, venue = {Virtual Event, Bergen, Norway}, year = {2022}, volume = {3089}, url = {http://ceur-ws.org/Vol-3089/} }
To cope with the increased complexity of systems, models are used to capture what is considered the essence of a system. Such models are typically represented as a graph, which is queried to gain insight into the modelled system. Often, the results of these queries need to be adjusted according to updated requirements and are therefore a subject of maintenance activities. It is thus necessary to support writing model queries with adequate languages. However, in order to stay meaningful, the analysis results need to be refreshed as soon as the underlying models change. Therefore, a good execution speed is mandatory in order to cope with frequent model changes. In this paper, we propose a benchmark to assess model query technologies in the presence of model change sequences in the domain of social media. We present solutions to this benchmark in a variety of 11 different tools and compare them with respect to explicitness of incrementalization, asymptotic complexity and performance.
@article{hinkel2022_ttc18_sosym, author = {Hinkel, Georg and Garc\'{i}a-Dom\'{i}nguez, Antonio and Sch\"{o}ne, Ren\'{e} and Boronat, Artur and Tisi, Massimo and Calvar, Th\'{e}o Le and Jouault, Fr\'{e}d\'{e}ric and Marton, J\'{o}zsef and Ny\'{\i}ri, Tam\'{a}s and Antal, J\'{a}nos Benjamin and Elekes, M\'{a}rton and Sz\'{a}rnyas, G\'{a}bor}, title = {A Cross-Technology Benchmark for Incremental Graph Queries}, year = {2022}, issue_date = {Apr 2022}, publisher = {Springer-Verlag}, address = {Berlin, Heidelberg}, volume = {21}, number = {2}, issn = {1619-1366}, url = {https://doi.org/10.1007/s10270-021-00927-5}, doi = {10.1007/s10270-021-00927-5}, journal = {Softw. Syst. Model.}, month = apr, pages = {755–804}, numpages = {50}, keywords = {Model-driven engineering, Incremental computing, Graph queries, Graph databases, Performance benchmark, Incremental queries, Graph analytics, relational databases} }