Theory and Practice of Model Transformation

KernelF is a functional language built on top of MPS. It is designed to be highly extensible and embeddable in order to support its use at the core of domain-specific languages, realising an approach we sometimes call Funclerative Programming. “Funclerative” is of course a mash-up of “functional” and “declarative” and refers to the idea of using functional programming in the small, and declarative language constructs for the larger-scale, often domain-specific, structures in a program. We have used KernelF in a wide range of languages including health and medicine, insurance contract definition, security analysis, salary calculations, smart contracts and language-definition. In this paper, I illustrate the evolution of KernelF over the last two years. I discuss requirements on the language, and how those drove design decisions. I showcase a couple of the DSLs we built on top of KernelF to explain how MPS was used to enable the necessary language modularity. I demonstrate how we have integrated the Z3 solver to verify some aspects of programs. I present the architecture we have used to use KernelF-based DSLs in safety-critical environments. I close the keynote with an outlook on how KernelF might evolve in the future, and point out a few challenges for which we don’t yet have good solutions.

[1]  Anneke Kleppe,et al.  MCC: A Model Transformation Environment , 2006, ECMDA-FA.

[2]  Richard F. Paige,et al.  Localized model transformations for building large-scale transformations , 2015, Software & Systems Modeling.

[3]  Jeffrey G. Gray,et al.  Design pattern oriented development of model transformations , 2016, Comput. Lang. Syst. Struct..

[4]  Jean Bézivin,et al.  ATL: A model transformation tool , 2008, Sci. Comput. Program..

[5]  Richard F. Paige,et al.  The Epsilon Transformation Language , 2008, ICMT@TOOLS.

[6]  Juan de Lara,et al.  A Posteriori Typing for Model-Driven Engineering , 2017, ACM Trans. Softw. Eng. Methodol..

[7]  Gerti Kappel,et al.  Reuse in model-to-model transformation languages: are we there yet? , 2013, Software & Systems Modeling.

[8]  Jürgen Dingel,et al.  Model transformation intents and their properties , 2016, Software & Systems Modeling.

[9]  Juan de Lara,et al.  Reusing Model Transformations Through Typing Requirements Models , 2017, FASE.

[10]  Rick Salay,et al.  Correct Reuse of Transformations is Hard to Guarantee , 2016, ICMT.

[11]  Gerti Kappel,et al.  Surveying Rule Inheritance in Model-to-Model Transformation Languages , 2012, J. Object Technol..

[12]  Krzysztof Czarnecki,et al.  Feature-based survey of model transformation approaches , 2006, IBM Syst. J..

[13]  Juan de Lara,et al.  Model-driven engineering with domain-specific meta-modelling languages , 2015, Software & Systems Modeling.

[14]  Olivier Barais,et al.  Melange: a meta-language for modular and reusable development of DSLs , 2015, SLE.

[15]  Mark van den Brand,et al.  Exploration of modularity and reusability of domain-specific languages: an expression DSL in MetaMod , 2018, Comput. Lang. Syst. Struct..

[16]  Esther Guerra,et al.  A Component Model for Model Transformations , 2014, IEEE Transactions on Software Engineering.

[17]  Dániel Varró,et al.  Survey and classification of model transformation tools , 2018, Software & Systems Modeling.

[18]  Charles W. Krueger,et al.  Software reuse , 1992, CSUR.

[19]  Colin Atkinson,et al.  Rearchitecting the UML infrastructure , 2002, TOMC.

[20]  Dániel Varró,et al.  Generic and Meta-transformations for Model Transformation Engineering , 2004, UML.

[21]  Juan de Lara,et al.  Reverse Engineering of Model Transformations for Reusability , 2014, ICMT.

[22]  Marsha Chechik,et al.  Variability-based model transformation: formal foundation and application , 2017, Formal Aspects of Computing.

[23]  Jim Steel,et al.  On Model Subtyping , 2012, ECMFA.

[24]  Benoît Combemale,et al.  Using Model Types to Support Contract-Aware Model Substitutability , 2013, ECMFA.

[25]  Jesús Sánchez Cuadrado,et al.  Approaches for Model Transformation Reuse: Factorization and Composition , 2008, ICMT@TOOLS.

[26]  Gerti Kappel,et al.  Surviving the Heterogeneity Jungle with Composite Mapping Operators , 2010, ICMT@TOOLS.

[27]  Olivier Barais,et al.  Model Driven Language Engineering with Kermeta , 2009, GTTSE.

[28]  Jacques Klein,et al.  Flexible model element introduction policies for aspect-oriented modeling , 2010, MODELS'10.

[29]  Juan de Lara,et al.  From types to type requirements: genericity for model-driven engineering , 2011, Software & Systems Modeling.

[30]  Jim Steel,et al.  On model typing , 2007, Software & Systems Modeling.

[31]  Steffen Zschaler,et al.  Towards Constraint-Based Model Types: A Generalised Formal Foundation for Model Genericity , 2014, VAO '14.

[32]  Krzysztof Czarnecki,et al.  Intermodeling, Queries, and Kleisli Categories , 2012, FASE.

[33]  Ragnhild Van Der Straeten,et al.  Module superimposition: a composition technique for rule-based model transformation languages , 2010, Software & Systems Modeling.