<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Model Slicing on Low-code Platforms</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Ilirian Ibrahimi</string-name>
          <email>ibrahimi.ilirian@gmail.com</email>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Dimitris Moudilos</string-name>
          <email>d.moudilos@clmsuk.com</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>CLMS UK. Battle House</institution>
          ,
          <addr-line>1 East Barnet Road,New Barnet, Herts EN4 8RR, UK, and Andrea Papandreo 19, Athens</addr-line>
          ,
          <country country="GR">Greece</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Johannes Kepler University, Institute of Software Engineering</institution>
          ,
          <addr-line>Altenberger Straße 69, Linz</addr-line>
          ,
          <country country="AT">Austria</country>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2004</year>
      </pub-date>
      <abstract>
        <p>Low-code platforms (LCP) use models as the main artifact during the software development process. Typically, the modeling activity concerns both structural and behavioral aspects of the generated application, like the underlying data model (DM), User Interface (UI), and business logic (BL), resulting in a collection of interconnected models. Thus, reusing model fragments across diferent projects would be a highly beneficial feature for LCPs and their users.</p>
      </abstract>
      <kwd-group>
        <kwd>MDE</kwd>
        <kwd>Low-code platfroms</kwd>
        <kwd>Model slicing</kwd>
        <kwd>Model reuse</kwd>
        <kwd>Knowledge graphs</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. Introduction</title>
      <p>Low-code platforms (LCP) are cloud-based applications that serve for building full-stack software
applications without necessarily requesting coding knowledge. One of the main capabilities of
an LCP is modeling the software application by designing its data models (DM), the user interface
- Form models, and business logic model(s) (BL), writing as less as possible domain-specific code
for implementing and deploying a complete software application.</p>
      <p>
        Typical software engineering activities like coding in a general-purpose language, code
formatting, modularization, database configuration, deployment, etc, are automated [
        <xref ref-type="bibr" rid="ref1 ref2 ref3">1, 2</xref>
        ]. By
giving priority to modeling rather than coding, LCP enables so-called citizen developers, i.e.,
stakeholders with very limited or even no coding experience, the opportunity to create
fullstack software applications which makes the LCPs more popular and useful in the software
development industry [
        <xref ref-type="bibr" rid="ref4">3</xref>
        ].
      </p>
      <p>
        LCPs leverage model-driven engineering techniques (MDE) so that models are the cornerstone
artifacts that drive the overall engineering process [
        <xref ref-type="bibr" rid="ref5 ref6">4, 5</xref>
        ]. Some of these models as a whole or
https://github.com/iliriani (I. Ibrahimi); https://clmsuk.com/ (D. Moudilos)
      </p>
      <p>© 2022 Copyright for this paper by its authors. Use permitted under Creative Commons License Attribution 4.0 International (CC BY 4.0).
part of it (i.e., their elements) might be shared among diferent LCP systems. Thus, finding
any solution on how to reuse these models, which may be of diferent languages like XML,
JSON, etc., and diferent levels like DM, UI models, etc., and providing all this information
automatically to the user in the domain modeling stage would be a novel and highly on-demand
task.</p>
      <p>Hence, this paper presents an approach for model reuse through model slicing on LCP. To get
the information on heterogeneous models, our approach converts all the heterogeneous models
to a homogeneous graph which will serve as a knowledge graph (KG). And to cope with the
diferent levels of models, we created two diferent repositories, one for the DM, and another for
the Form models. The two repositories persist the KG for the DM and the Forms respectively.
The model slicing approach gets as input a DM class and queries both repositories in order
to get related entities to it. The required entities within the DM repository like base class,
composition, etc. will constitute the horizontal slice since they belong to the same model level
(i.e., DM) as the input class. And the related entities from the Form repository will constitute
the vertical slice since they belong to a diferent level than the input class. Both slices will be
merged as a single model slice and provided to the developer1 in a JSON format.</p>
      <p>As a proof of concept, we have tested our approach on the zAppDev2 LCP by using 5 diferent
zAppDev DM ( in XML) with a total of 27 diferent domain classes, and 47 diferent Form models
related to these domain models. The evaluation revealed that 77.78% of the given DM classes
had any kind of cross-model relation i.e. we could extract successfully 21 distinct cross-language
and cross-level model slices from these zAppDev models. The approach has been developed on
Spring boot and is provided as a REST API.</p>
      <p>In the rest of this paper, we present in Section 2 a running example in order to better
understand the aim of the model slicing approach. In Section 3 we outline and explain how
the model slicing approach works. In Section 4 we present an experimental evaluation of our
approach. Afterward, in Section 5 we present some related work to model slicing, and finally,
in Section 6 we provide the conclusion and the tentative future work.</p>
    </sec>
    <sec id="sec-2">
      <title>2. Running Example</title>
      <p>
        To clarify the concepts used throughout this paper, we will initially provide some background
information.
2.1. Background Information about the zAppDev LCP
zAppDev is a web-based, model-driven development environment, allowing developers of any
technology and proficiency level to easily create, edit and reuse models of software artifacts (e.g.
database models, business logic models, user interface models, and more), covering the complete
application development lifecycle while having total control of the process. As explained in [
        <xref ref-type="bibr" rid="ref1 ref2">1</xref>
        ]
an LCP typically consists of 4 diferent layers which are included as well on zAppDev and
are comprised of 1. The application layer is represented by the Form models, 2. The service
1For the sake of brevity, in this paper we will use the terms developer interchangeably for citizen developer
2https://zappdev.io/
integration layer by API adapters, 3. The data integration layer is represented by data models,
the service models, API Adapters, and finally 4. The deployment layer is represented by the
Cloud.
      </p>
      <sec id="sec-2-1">
        <title>2.2. Running example</title>
        <p>Assume that in an LCP there is an I n v o i c e software containing a BO, a UI-Form model named
”Invoice Form” auto-generated from the BO classes or manually constructed by the developer,
and the business logic functions related to the BO classes. The architecture of the I n v o i c e
software is depicted in Fig. 2. In the zAppDev LCP, the BOs are presented in XML format, the
UI-Forms as JSON files, and the DSL functions are written in the Mamba 3 language. As we
can see in Fig. 2 on the left part, the BO is constructed from the classes I n v o i c e , C l i e n t , and
C o m p a n y . We aim to get only the related cross-level and cross-language artifacts to the C l i e n t
BO class. As depicted in Fig. 2, the C l i e n t BO class is related to the Invoice Form with a label
with the text C l i e n t on it and a combo box. Further, we can see that the C l i e n t class has an
Edit function related to it. To emphasize the connection of all the C l i e n t related cross-level and
cross-language entities we rounded and connected them with a blue cycle and blue lines.</p>
        <sec id="sec-2-1-1">
          <title>3https://docs.zappdev.com/MambaLanguage/About/</title>
          <p>Invoice Form
Date:
Amount:
Details:</p>
          <p>Invoice
number:
Client: &lt;&lt;Select&gt;&gt;</p>
          <p>Company: &lt;&lt;Select&gt;&gt;</p>
          <p>Save Preview Delete Exit
Invoice business model</p>
          <p>Now the idea of a model slicer approach on an LCP as shown in Fig. 2 would be to provide to
the approach only the C l i e n t BO class as input and it would be capable to compute and extract
all the cross-related entities to the C l i e n t BO class and integrate those on an LCP. As shown
on the right side of Fig. 2 the extracted model slice from the approach is itself a model which
contains only the C l i e n t relevant entities across the LCP models.</p>
          <p>Concluding, the model slicer tends to find connected entities to the BO input classes on
cross-level and cross-language models and presents these as a model slice to the developers so
everything that is connected within the entire production line on any LCP can be reused and
integrated automatically on an LCP. Inspired by this running example, we have created a model
slicing approach that will be explained in more detail in Section 3.</p>
        </sec>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>3. Approach</title>
      <p>This section will be presenting in more detail how the model slicer extracts model slices from
cross-level models. The overview of the model slicer is presented in Fig. 3.</p>
      <sec id="sec-3-1">
        <title>3.1. Repositories</title>
        <p>
          The first step toward model slicing is persisting the models in a repository so they can be
reused for diferent business needs afterwards. Since all models in zAppDev are graph-based,
the repository of our approach is also graph-based. We selected the Resource Description
Framework (RDF) [
          <xref ref-type="bibr" rid="ref7">6</xref>
          ] as our model format since it is a graph-based model and the standard
format of W3C4, this is relevant to LCPs which are cloud-based. Thus, various models will be
converted and merged into a single RDF graph. We will use and refer to this RDF graph as the
knowledge graph (KG) of our approach.
        </p>
        <p>Since developing any software on an LCP ones needs to create its’ DM, its’ UI in a Form
model, and the business logic which is persisted in any of these two (especially in zAppDev), we
have created two diferent repositories for the model slicer, one which persists the knowledge
graph for the DM, and another for the Form models. Thus, as explained in Fig. 3, step 1 of our
approach is creating the repositories which persist the knowledge graph for the DM and Form
models by converting them to RDF and merging them to their respective knowledge graphs.</p>
      </sec>
      <sec id="sec-3-2">
        <title>3.2. Input Class</title>
        <p>Step 2 of our approach is getting the input class. The input class is the core entity of any model
slice because any other entity of the model slice has to be related in a specific form to it. Hence,
the input class defines the slicing criterion for our approach. After having the input class, the
slice service - which is responsible for the business logic part of the model slicer - will query the
repositories to find relevant connections between the existing entities within the repositories
and the input class.</p>
      </sec>
      <sec id="sec-3-3">
        <title>3.3. Horizontal Slice</title>
        <p>The first check the input class will go through is if it has any constraints class that has to be
integrated with the input class. For instance, if the input class inherits a class within the BO
classes, or has a composition class, then the base/composition class has to be integrated as well
in the LCP in order to avoid model validation errors. Thus in step 3, our approach checks in the
DT (BO) repository if there is any such constraints class related to the input class, and if any
such class can be found it will be provided to the developers together with the input class. Since
the input class and the constraint classes are on the same level (within the business object) we
call this kind of relation as horizontal slicing. Since we are slicing only zAppDev models so far,
the horizontal slice is defined only by checking if the input class has any base class within the
BO repository.</p>
      </sec>
      <sec id="sec-3-4">
        <title>3.4. Vertical Slice</title>
        <p>Next, the model slicer service will check if there is any related entity within the Form KG to
the input class. In step 4 the model slicer will return all the relevant information about the
related entities to the input class. In our case, we query the information about UI components,
i.e., the UI component name, the UI component data source - which shows to which specific
UUIUII</p>
        <p>Forms
convert to</p>
        <p>Step 1
convert to
Knowledge graph
of BOs</p>
        <p>Repositories</p>
        <p>Knowledge
graph of Forms</p>
        <p>Step 3
Query the BO KG
for finding input
class constraint
classes</p>
        <p>Step 4</p>
        <p>Query the Forms
KG for finding input
class related UI
components and</p>
        <p>DSL code
BO
class
input
Step 2</p>
        <p>Slice
service
combine results and
generate the slice</p>
        <p>Step 5</p>
        <p>Model
slice
attribute of the input class the UI component is related, and the type of the UI component, e.g.
TextBoxControll, CheckBox, etc. Although a lot of other relevant information can be retrieved
e.g. the cascade style sheet (CSS) information about the UI components, UI components layout
information, etc. Since in zAppDev the DSL functions a.k.a. Mamba functions are persisted
within the Form models, in step 4 the model slicer also queries for related Mamba functions to
the input class. Hence the UI components and DSL functions are not in the same model level as
the input class, we call this relation of connected cross-level models a vertical slice.</p>
        <p>Finally, the extracted horizontal and vertical slices will be merged as a single model slice and
integrated into the LCP.</p>
        <p>An example of model slicing is presented in Fig. 4. We see that the meta-class C l a s s 1 is
connected to the UI components C o m p . 1 and C o m p . 2 and also to the DSL functions Func. 1 and
Func. 2, thus the connection of all these entities would give a single slice (Slice 1). Further in
Fig. 4, we can see that the meta-class C l a s s 3 has a constraint class C l a s s 2 within the BO, it
is also related to the component C o m p 3 on the UI - Form model, and it has also a related DSL
function Func. 3. The connection of these related entities to C l a s s 2 would produce another
modeling slice (Slice 2).</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>4. Experimental evaluation</title>
      <p>This section demonstrates how the model slicer extracts model slices on real LCP models.</p>
      <p>As a proof of concept, we got 5 diferent BOs and 47 diferent UI-Form models generated
by these business objects. We have created two diferent knowledge graphs which contain all
the information about the BOs and the Form models respectively. Then we selected each class
iteratively from the BOs and gave this as an input class to the model slicer and checked the
extracted model slices. In Fig. 5 we have presented the information that will be extracted by the
model slicer. In this demo, the model slicer will try to extract a model slice related to the C l i e n t
class.</p>
      <p>Metamodel excerpt</p>
      <p>a) Metaclas constraints - horizontal slice
&lt;Class ModelName="CoreBO" Name="Client" ShadowModel="" ShadowClass="" Description="" Stereotype="Class" PK="Id"
ConcurencyControl="false" AutoAssignPrimaryKey="true" IdGeneratorType="HiLoGenerator" IsPersisted="true" IsStatic="false" BaseClass=""
TableName="" BaseClasses="" BaseModel=""&gt;
&lt;DiagramInfo IsExpanded="true" Width="220.16259765625" Height="310" Top="19.921142578125" Left="791.0921020507812" /&gt;
&lt;Attributes&gt;
&lt;Attribute Name="Company" IsValueClass="false" Description="" DataType="string" BaseInfo="" Length="100" Precision="8" Scale="2"
InitValue="" IsRequired="false" IsInherited="false" Persisted="true" ColumnName="" IsEncrypted="false" IsStatic="false" ReadOnly="false"
IsExternal="false" CustomValidation="" IsCreditCard="false" IsURL="false" IsEmail="false" MinLength="0" MaxLength="100" MinValue=""
MaxValue="" Getter="" Setter="" /&gt;
....
&lt;/Class&gt;</p>
      <p>b) DSL functions
c) UI components
d) Data set
Cross-model metaclass
matching entities
Horizontal slicing
Vertical slicing</p>
      <p>Form excerpts
....
"Actions": [{
"Code": "function void Edit(int id) { \n Model.Client =
Domain.Client.GetByKey(id);\n
Model.Title = LocalResources.RES_PAGETITLE_Edit;\n}",
"Name": "Edit",
"Permissions": [],
"AllowAnonymous": false,
"AllowAllAuthenticatedUsers": true,
"AccessLog": false,
"IsEntryPoint": true,
"IsDefault": false,
"CausesValidation": false,
"DontPostViewModel": false,
"AllGroups": true,
"Groups": []....
"Controls": [{
"$type": "CLMS.AppDev.DomainModel.Models.TextBoxControl,
CLMS.AppDev.DomainModel",
"ReadOnly": false,
"Required": true,
"ChangeWhileTyping": false,
"ChangeDelay": 200,
"MaxLength": 100,
"Name": "txtCompany",
"CssStyle": "",
"CssClass": "",
"Datasource": "Client.Company",
"DoesNotMakeFormDirty": false,
"FontSizeRole": 0,
"ElementSizeRole": 3,
"ColorRole": 0,
"FilterOperator": 7,
"RowOperator": 1,
"Ovewrite": true,
"ApplyOnBlur": true,
"HiddenInMobileView": false,
"Ignored": false,
"Controls": []
}]
"DataSets": [{
"Type": 1,
"Name": "ClientDataSet",
"Class": "Client",
"Operation": "GetAll",
"Filter": "function bool Filter(\n Domain.Client DataItem\n) {\n return
true;\n}",
"Sorting": [],
"OvewriteDefaultSecurity": false,
"AllowAnonymous": false,
"AllowAllAuthenticatedUsers": false,
"Permissions": [],
"ManualOptions": [],
"Arguments": [],</p>
      <p>Initially, the model slicer will check within the BOs at the baseClass element to find any base
class so it can create the horizontal slice ( a) ). This check is presented with the red dashed arrow.
In this demo, the C l i e n t class hasn’t any base class, and since at the time of writing this paper this
is the only checked constraint for BO classes, will the model slicer not define any horizontal slice.
Next, the model slicer will check for extracting the relevant Mamba functions from the zAppDev
Form models ( b) ). The model slicer will check within the Code notation to find any related
function to the C l i e n t class. The found functions will be returned as part of the vertical slice.</p>
      <p>In the end, all the information about the
horizontal and vertical slices will be merged
in a single JSON file and integrated into the
zAppDev LCP. This model slice is extracted
after selecting the C l i e n t BO class and clicking
the ”Create forms from Slice” button located
in the menu bar as shown in Fig. 6. The model
slice is integrated on the zAppDev LCP as a
UI-Form model including the extracted
information for the C l i e n t BO class. A snapshot
of the integrated model slice on zAppDev is
depicted in Fig. 7.</p>
      <p>In Table 1 we have outlined the results of
how many model slices could be extracted
from the zAppDev models. For the study, we
have used 5 diferent business object models
and 47 diferent UI-Form models. We listed
all the BO classes from all the 5 BO models
and counted 27 distinct classes. We iterated
through each of these BO classes and set each
of them successively as an input class to the
Figure 7: Integration of the Client model slice model slicer. Of all these BO classes only one
in zAppDev class had a base class (PMOUser had as base
class ApplicationUser) i.e., a horizontal slice.</p>
      <p>Also from the set of 27 distinct BO classes, the model slicer could extract 21 vertical slices which
means that 21 BO classes have at least one related entity on the UI-Form models. From this
amount of data we got from zAppDev, we could conclude that 77.78% of the BO classes are
related at least to a base class or at least to one UI-Form model entity. This fact reveals the
emerging need for a cross-language and cross-level model reuse approach on LCP that can be
facilitated through the model slicer provided in this work.</p>
      <p>The model slicer has been developed using Spring boot and is provided as a REST API for use
in the zAppDev LCP. The source and the repositories containing the KG used for the evaluation
are available on GitHub5</p>
    </sec>
    <sec id="sec-5">
      <title>5. Related Work</title>
      <p>
        Although to the best of our knowledge this is the first approach towards model ruse through
slicing on cross-level and cross-language LCP models, inspired by program slicing approaches [
        <xref ref-type="bibr" rid="ref8 ref9">7,
8</xref>
        ], we will show some related works to model slicing.
      </p>
      <p>
        Salay et al. [
        <xref ref-type="bibr" rid="ref10">9</xref>
        ] present an algorithm for megamodels slicing. The algorithm gets as input
the megamodel and by using the traceability relation among the entities of the models that
construct the megamodel it extracts the model slice. Our approach is search-based and not
static based, i.e., it doesn’t iterate through the cross-level model entities of a megamodel, it
queries diferent repositories to find relevant matches to the input class.
      </p>
      <p>
        Taenzer et al. [
        <xref ref-type="bibr" rid="ref11">10</xref>
        ] present a formal framework for creating model slicers that are capable
to change incrementally a model slice after performing any change on it. Our approach is
search-based and generates model slices from a single input class to support the LCP users
during the modeling process. It is not required that we implement the update of model slicing
since it can be updated directly by the LCP users based on their needs after being integrated.
      </p>
      <p>
        Compare to the approaches that enable model slicing for a specific model type [
        <xref ref-type="bibr" rid="ref12 ref13">11, 12, 13, 14,
15, 16</xref>
        ] our approach checks for related entities among diferent models of diferent types and
extract them as a model slice.
      </p>
    </sec>
    <sec id="sec-6">
      <title>6. Conclusion and Future work</title>
      <p>In this work, we have presented an approach that enables the reuse of cross-related models on
an LCP through model slicing. The model slicing approach gets as input a data model class and
queries the data model for any constraint-related class, and also the Form model repositories to
get UI components and DSL functions. The current approach enables model slicing of zAppDev
models but conceptually it can be used for any LCP.</p>
      <p>In future work, we plan to fine-grain the model slicer by proving UI component layout
information, slicing the class attributes, etc. We also aim to integrate the model slicer on a
model recommendation approach so that after selecting a suggested data model class, all its
cross-related model entities will be integrated automatically.</p>
      <sec id="sec-6-1">
        <title>5https://github.com/iliriani/Model-slicer</title>
      </sec>
    </sec>
    <sec id="sec-7">
      <title>Acknowledgments</title>
      <p>This project has received funding from the EU Horizon 2020 research and innovation programme
under the Marie Skłodowska Curie grant agreement No 813884.
[13] A. Bergmayr, M. Wimmer, W. Retschitzegger, U. Zdun, Taking the pick out of the bunch
type-safe shrinking of metamodels, in: S. Kowalewski, B. Rumpe (Eds.), Software
Engineering 2013, Gesellschaft für Informatik e.V., Bonn, 2013, pp. 85–98.
[14] H. Kagdi, J. I. Maletic, A. Sutton, Context-free slicing of uml class models, in: Proceedings
of the 21st IEEE International Conference on Software Maintenance, ICSM ’05, IEEE
Computer Society, USA, 2005, p. 635–638. URL: https://doi.org/10.1109/ICSM.2005.34.
doi:1 0 . 1 1 0 9 / I C S M . 2 0 0 5 . 3 4 .
[15] P. Kelsen, Q. Ma, C. Glodt, Models within models: Taming model complexity using the
sub-model lattice, in: D. Giannakopoulou, F. Orejas (Eds.), Fundamental Approaches to
Software Engineering, Springer Berlin Heidelberg, Berlin, Heidelberg, 2011, pp. 171–185.
[16] A. Blouin, B. Combemale, B. Baudry, O. Beaudoux, Modeling model slicers, in: J. Whittle,
T. Clark, T. Kühne (Eds.), Model Driven Engineering Languages and Systems, Springer
Berlin Heidelberg, Berlin, Heidelberg, 2011, pp. 62–76.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>A.</given-names>
            <surname>Sahay</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Indamutsa</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D. Di</given-names>
            <surname>Ruscio</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Pierantonio</surname>
          </string-name>
          ,
          <article-title>Supporting the understanding and comparison of low-code development platforms</article-title>
          ,
          <source>Proceedings - 46th Euromicro Conference on Software Engineering and Advanced Applications</source>
          ,
          <string-name>
            <surname>SEAA</surname>
          </string-name>
          <year>2020</year>
          (
          <year>2020</year>
          )
          <fpage>171</fpage>
          -
          <lpage>178</lpage>
          . doi:
          <volume>1</volume>
          <fpage>0</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          <source>1 1 0 9 / S E A A 5</source>
          <volume>1 2 2 4 . 2 0 2 0 . 0 0 0 3 6 .</volume>
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>R.</given-names>
            <surname>Waszkowski</surname>
          </string-name>
          ,
          <article-title>Low-code platform for automating business processes in manufacturing</article-title>
          ,
          <source>IFAC-PapersOnLine</source>
          <volume>52</volume>
          (
          <year>2019</year>
          )
          <fpage>376</fpage>
          -
          <lpage>381</lpage>
          . URL: https://doi.org/10.1016/j.ifacol.
          <year>2019</year>
          .
          <volume>10</volume>
          .060.
          <source>doi:1 0 . 1 0 1 6 / j . i f a c o l . 2 0 1 9 . 1 0 . 0 6 0 .</source>
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>P.</given-names>
            <surname>Vincent</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Iijima</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Driver</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Wong</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y.</given-names>
            <surname>Natis</surname>
          </string-name>
          ,
          <article-title>Licensed for Distribution Magic Quadrant for Enterprise Low-Code Application Platforms (</article-title>
          <year>2019</year>
          )
          <fpage>1</fpage>
          -
          <lpage>34</lpage>
          . URL: https://www.gartner. com/doc/reprints?id=
          <fpage>1</fpage>
          -
          <lpage>1ODOM46A</lpage>
          {&amp;}ct=
          <volume>190812</volume>
          {&amp;}st=sb.
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>D.</given-names>
            <surname>Di</surname>
          </string-name>
           Ruscio,
          <string-name>
            <given-names>D.</given-names>
            <surname>Kolovos</surname>
          </string-name>
          , J. de Lara,
          <string-name>
            <given-names>A.</given-names>
            <surname>Pierantonio</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Tisi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Wimmer</surname>
          </string-name>
          ,
          <article-title>Low-code development and model-driven engineering: Two sides of the same coin?</article-title>
          ,
          <source>Software and Systems Modeling</source>
          (
          <year>2022</year>
          ). URL: https://doi.org/10.1007/s10270-021
          <source>-00970-2. doi:1 0 . 1 0 0 7 / s 1 0</source>
          <volume>2 7 0 - 0 2 1 - 0 0 9 7 0 - 2</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>A.</given-names>
            <surname>Bucaioni</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Cicchetti</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Ciccozzi</surname>
          </string-name>
          ,
          <article-title>Modelling in low-code development: a multi-vocal systematic review</article-title>
          ,
          <source>Software and Systems Modeling</source>
          (
          <year>2022</year>
          ). URL: https://doi.org/10.1007/ s10270-021
          <source>-00964-0. doi:1 0 . 1 0 0 7 / s 1 0</source>
          <volume>2 7 0 - 0 2 1 - 0 0 9 6 4 - 0</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>O.</given-names>
            <surname>Lassila</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R. R.</given-names>
            <surname>Swick</surname>
          </string-name>
          ,
          <article-title>Resource description framework (RDF) model and syntax specification</article-title>
          .
          <source>World Wide Web Consortium Recommendation</source>
          (
          <year>1999</year>
          ). URL: http://www.w3.org/TR/ REC-rdf-syntax.
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>H. V.</given-names>
            <surname>Nguyen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Kästner</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T. N.</given-names>
            <surname>Nguyen</surname>
          </string-name>
          ,
          <article-title>Cross-language program slicing for dynamic web applications</article-title>
          ,
          <source>in: Proceedings of the 2015 10th Joint Meeting on Foundations of Software Engineering</source>
          , ESEC/FSE 2015,
          <article-title>Association for Computing Machinery</article-title>
          , New York, NY, USA,
          <year>2015</year>
          , p.
          <fpage>369</fpage>
          -
          <lpage>380</lpage>
          . URL: https://doi.org/10.1145/2786805.2786872.
          <source>doi:1 0 . 1 1</source>
          <volume>4 5 / 2 7 8 6 8 0 5 . 2 7 8 6 8 7 2 .</volume>
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>M.</given-names>
            <surname>Weiser</surname>
          </string-name>
          ,
          <article-title>Program slicing</article-title>
          ,
          <source>in: Proceedings of the 5th International Conference on Software Engineering</source>
          , ICSE '81, IEEE Press,
          <year>1981</year>
          , p.
          <fpage>439</fpage>
          -
          <lpage>449</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>R.</given-names>
            <surname>Salay</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Kokaly</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Chechik</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T. S. E.</given-names>
            <surname>Maibaum</surname>
          </string-name>
          ,
          <article-title>Heterogeneous megamodel slicing for model evolution</article-title>
          , in: ME@MoDELS,
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>G.</given-names>
            <surname>Taentzer</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Kehrer</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Pietsch</surname>
          </string-name>
          ,
          <string-name>
            <given-names>U.</given-names>
            <surname>Kelter</surname>
          </string-name>
          ,
          <article-title>A formal framework for incremental model slicing</article-title>
          ,
          <source>in: FASE</source>
          ,
          <year>2018</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>R.</given-names>
            <surname>Ahmadi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Dingel</surname>
          </string-name>
          , E. Posse,
          <article-title>Slicing uml-based models of real-time embedded systems</article-title>
          ,
          <source>2018. doi:1 0 . 1 1</source>
          <volume>4 5 / 3 2 3 9 3 7 2 . 3 2 3 9 4 0 7 .</volume>
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>S.</given-names>
            <surname>Sen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Moha</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Baudry</surname>
          </string-name>
          ,
          <string-name>
            <surname>J.-M. Jézéquel</surname>
          </string-name>
          ,
          <article-title>Meta-model Pruning</article-title>
          ,
          <source>in: ACM/IEEE 12th International Conference on Model Driven Engineering Languages and Systems (MODELS'09)</source>
          , Denver, Colorado, USA,
          <string-name>
            <surname>United</surname>
            <given-names>States</given-names>
          </string-name>
          ,
          <year>2009</year>
          . URL: https://hal.inria.fr/inria-00468514.
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>