<!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>Automated Code Generation for NFC-based Access Control</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Ludovico Iovino</string-name>
          <email>ludovico.iovino@gssi.it</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Martina De Sanctis</string-name>
          <email>martina.desanctis@gssi.it</email>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Maria Teresa Rossi</string-name>
          <email>mariateresa.rossi@gssi.it</email>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Computer Science Department, Gran Sasso Science Institute</institution>
          ,
          <addr-line>L'Aquila</addr-line>
          ,
          <country country="IT">Italy</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Computer Science Department, Gran Sasso Science Institute</institution>
          ,
          <addr-line>L'Aquila</addr-line>
          ,
          <country country="IT">Italy</country>
        </aff>
        <aff id="aff2">
          <label>2</label>
          <institution>Computer Science Department, Gran Sasso Science Institute</institution>
          ,
          <addr-line>L'Aquila</addr-line>
          ,
          <country country="IT">Italy</country>
        </aff>
      </contrib-group>
      <fpage>31</fpage>
      <lpage>38</lpage>
      <abstract>
        <p>-Access control systems provide a security application for controlling access of persons through controlled gates. The gate, such as a door, can have a lock mechanism for securing the area from unauthorized access. Radio Frequency Identification (RFID) / Near Field Communication (NFC) is a key technology for sensor communication enabling a ubiquitous and pervasive computing network, popularly employed in access control systems. In this paper we investigate a case study about the migration of an old chip card based access control system to this new way of authorizing people, based on NFC tags. To this aim, we propose a Model Driven approach that supports (semi) automatic code generation for enabling the communication between an IoT infrastructure and platforms for Facility Access Management. Specifically, the approach combines the benefits of NFC and Tinkerforge (i.e., an open source hardware platform) technologies with model driven techniques. As a consequence, it allows the reduction of the implementation efforts, by also providing snippets as exemplary code usage, while making the whole development process less error-prone and time consuming.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>I. INTRODUCTION</title>
      <p>Access control systems provide a security application for
supervising access of persons through controlled gates. The
gate, such as a door, can have a lock mechanism for securing
the area from unauthorized access. Internet of Things (IoT) is
a new concept of integrated network of devices in the field of
information technology where devices communicate with each
other. IoT security in building access control is a relevant field
where building security is implemented through IoT network.</p>
      <p>Every device is connected with the related sensors, which
trigger the control mechanism communicating with the rest
of the infrastructure.</p>
      <p>
        Model-driven engineering [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] aims at tackling the
complexity of software systems via abstraction, using models as
firstclass entities. Models are employed both for descriptive and
prescriptive purposes [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]. Model Driven Development (MDD)
approaches open to code-generation strategies, to reduce time
to market and improve quality of software [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]. Furthermore,
Model Driven approaches, and in particular model
transformations, can be successfully employed for supporting platform
independent to platform specific translation, also implementing
multi-platform code generation from single input model of the
system [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ], [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]. This is quite relevant, given that nowadays
cross-platform development is a barrier for solution providers
due to the high cost of development and maintenance of
targeting development to different platforms.
      </p>
      <p>This paper explores a case study about the migration of
an old chip card based access control system to a new way
of authorizing people with Near Field Communication (NFC)
tags. In the chip card based version of the system, the standard
plastic card which contains an embedded microchip has to be
physically inserted in a reader to be read; in case data stored
on the chip allows the access, it enables the electric door lock.</p>
      <p>Usually, the card reader hosts the logic for the access control
and, for each equipped door, the code implementing this logic
has to be distributed and released on the reader(s). In addition
to the access control system, a human resource management
system is used to associate a person to the card, to have a
registry in case the card gets lost or a check is needed.</p>
      <p>
        Currently, a new way of interaction is provided by NFC
technology [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ], which enables the ’touching paradigm’ where
the interaction can be identified as ”the deliberate
bringing together of two devices, for the purpose of obtaining
services” [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]. NFC requires two compatible devices to be
close to each other, basically touching them for enabling
contactless identification and interaction. Moreover, most of
the commercial solutions for access control management also
offer pre-packaged software systems for human resources
management. The main issue with these existing solutions
is the impossibility of customizing the authorization logic,
provided by the tool vendor. In case they offer customization,
this service is extra-paid and quite expensive.
      </p>
      <p>
        Tinkerforge [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] is an open source affordable system of
building blocks using the concept of pluggable module, helping to
simplify the implementation of IoT projects. The
implementation of the building blocks is based on intuitive API available
for many programming languages, e.g., Java, PHP, Python.
      </p>
      <p>This system, offering a high degree of abstraction, might ease
the technical implementation with less code to be developed
with respect to other components. The main advantage in
selecting a target technology such as Tinkerforge is that it
can be used to build systems interacting with other platforms
and customize the access control algorithm for the required
Copyright © 2019 for this paper by its authors. Use permitted under Creative Commons License Attribution 4.0 International (CC BY 4.0).
purpose, since the code has to be developed. Moreover, the
building blocks of the infrastructure can be selected and
mounted, based on the requirements, and easily extended.</p>
      <p>Despite this selection offers a good trade-off between
development and provided functionalities, the code controlling the
devices has to be manually written, although some examples
and documented APIs are provided on the website.</p>
      <p>In this paper, we propose a Model Driven approach that
supports (semi) automatic code generation for enabling the
communication between an IoT infrastructure and an existing
web platform for Facility Access Management. In particular,
by combining the benefits of NFC and Tinkerforge
technologies together with model driven techniques, the presented
approach is able to generate software components, in the
selected target language. This way, it allows reducing the
implementation effort, also by offering snippets as exemplary
code usage, while making the whole development process less
error-prone and time consuming.</p>
      <p>The paper is organized as follows: section II offers a case
study for introducing the domain in which the proposed
approach, presented in section III, is applied. Section IV explores
the related works and section V draws some conclusions, by
also briefly mentioning possible future developments.</p>
    </sec>
    <sec id="sec-2">
      <title>II. CASE STUDY</title>
      <p>In this section, we expose the case study we designed
from a project experience with a company. Specifically, the
company we deal with it is a gym that is organized in diverse
rooms, distributed in several floors of a building. Each room
is equipped with different facilities to host specific activities
(e.g., training, rehab, pilates). Activities are scheduled in
different time slots from Monday to Saturday, with diverse
frequencies, and assigned to the available rooms. The clients
of the gym can enroll in different courses and/or activities,
by choosing different offers and subscriptions. The company
wants to exploit the subscriptions that clients hold, to
automatically check if they have access or not to each specific
room in the building. This way, it can be easily controlled if
only authorized clients regularly registered in certain activities,
effectively attend it.</p>
      <p>We use a metamodeling approach to represent the case
study introduced above. To better comprehend the application
domain, we engineered the requirements for the system in the
metamodel in Fig 1. An AccessControlSystem is organized
to manage a list of Activities that can be conducted in the
facility, and specifically in the available Rooms in specific
TimeSlots. In fact, each room has a Timetable of activities,
performed in specific WEEKDAYs and time. The system can
register Clients associated to a Person with all the fields for
the identification (hidden for lack of space). Each client can
be linked to MemberShips with a specific start and end date
related to an Activity. The access control system can manage
who is authorized to access a room in a specific date and
time. This can be derived by retrieving all the activities of
a client and by matching them with the timetable of the
activities. The authorization and identification of the client</p>
      <p>Fig. 1. Access Control Metamodel.
then is delegated to the access control infrastructure, that in
this case is implemented with the selected NFC technology.</p>
      <p>This technology mounted near to the door of a room will
identify the tag used by the client and it will trigger the
authorization mechanism, by also communicating with the
access control system. For instance, the access control system
can expose web services or API devoted to this task.</p>
      <p>Case Study Configuration. As introduced in section I,
Tinkerforge is an open source platform of building blocks belonging
to three categories, namely Bricks that, in turn, can control
different modules called Bricklets. Then, the communication
interface of these building blocks can be extended by using
Master Extensions. More precisely, each Brick has one task,
which in our case study consists in checking the
communication and authorization. Bricks are stackable, in the sense that
can be mounted on top of each other by creating a hierarchy.</p>
      <p>For simplicity, in this paper we consider non-stackable Bricks.</p>
      <p>Bricklets, can be connected to a Brick with a cable and
depending on the Bricklet type, different sensors, displays, I/O
interfaces can be added. Master extensions are used to change
the interface from USB to either Ethernet or WIFI.</p>
      <p>To support a basic configuration in our case study, we
consider an architecture composed of a single Brick per door
(room) and multiple connected Bricklets, namely an NFC
reader, a speaker (beeper), a led display and a relay to control
the door lock. Relays are switches that can electronically
open and close circuits and, in our case study, they control 4
circuits (from which the name of the component quad relay).</p>
      <p>Moreover, each client has to receive a NFC tag (card, sticker or
bracelet) that has to be enabled for the entrance. Logically, the
steps to be performed when entering a room are the following:
the NFC reader receives the NFC tag identifier and it checks
the authorization with the access control system. In the case
in which the authorization is provided, the NFC reader emits a
beep by using the speaker, it shows an authorization message
depending on the architect and specific needs. To be clear,
on the display, and it enables one of the channels of the
one brick can be equipped with display and another with a
relay controlling the door lock. If the authorization is denied, speaker, depending on the noise level of the area. In particular,
instead, the NFC reader emits a sound and displays the error this will make the initialization code different from a brick to
message. All these operations can be implemented by using
another.
the Tinkerforge API.</p>
      <p>In the following, we show the Java code that must be
manually written, in the absence of automatic code generation,
to implement the explained control logic among the various
sensors and bricklets, for our case study. In listing 1 we
report the Java code developed for the logic of a single
brick. This initialized Brick has UID (identifier) hr4tx and
will be powered by PoE (power over ethernet) extension,
with ip address 192.168.1.2 (localhost in our LAN) for
communication.</p>
      <p>1 package tinkerForgeGen;
2
3 import com.tinkerforge.*;
4 ...
5 public class Brick_hr4tx implements Runnable {
6 Thread thread;
7 String brick_UID="hr4tx";
8 String HOST_uqB = "192.168.1.2";
9 NFCReader nfc_reader_uqB;
10 int PORT_uqB = 4223;
11 String readerUID_uqB = "uqB";
12 Short currentTagType_uqB = BrickletNFC.</p>
      <p>TAG_TYPE_MIFARE_CLASSIC;
Since this brick has basically different types of connected
bricklets, e.g., NFC Reader, QuadRelay, etc, lines 9-20
declare the variables needed for initializing these modules. For
instance, lines 9-12 declare the NFC Reader variables, lines
14-17 the ones for the relay and the following lines 19-20
the variables for the speaker and the display. Then, in the
constructor of the Brick, lines 22-27, all the bricklets part
of the chosen architecture are initialized using Java classes
included in the project that we developed. It is worth noticing
that each brick can be configured with different bricklets,
6
7
8
9
10
11
12
Listing 2 reports a snippet of the method written for the
QuadRelay component, to open and close the selected channel.</p>
      <p>This method basically takes as input the position of the channel
we want to open and it blinks for the selected timelapse (line
12). Then, it opens the relay and further closes it. We omit
the Java classes initializing the OledDisplay and the Speaker
for lack of space.</p>
      <p>1 public class NFCReader extends MyBricklet{
2
3 public void initializeReader(...) {
4
5 IPConnection ipcon = new IPConnection();
6 final BrickletNFCRFID nr = new BrickletNFCRFID(</p>
      <p>readerUID, ipcon);
7
8 ipcon.connect(HOST, PORT); // Connect to brickd
9
10 // Add state changed listener
11 nr.addStateChangedListener(new BrickletNFCRFID.</p>
      <p>StateChangedListener() {
12 public void stateChanged(short state, boolean idle)</p>
      <p>{
try {
if(idle) {
nr.requestTagID(currentTagType);
Thread.sleep(500);
}
if(state == BrickletNFCRFID.</p>
      <p>STATE_REQUEST_TAG_ID_READY) {
// getting tag id
BrickletNFCRFID.TagID tagID = nr.getTagID();
String tag = Integer.toHexString(tagID.tid[0]);
for(int i = 1; i &lt; tagID.tidLength; i++) {
tag += Integer.toHexString(tagID.tid[i]);
}
try {
System.out.println("Put Your logic here, detected</p>
      <p>tag "+tag+ " by reader: "+readerUID);
for (MyBricklet myBricklet : bricklets) {</p>
      <p>Lines 29-38 of listing 1 reports the main task of the brick
and its main bricklet, namely the NFC reader (whose code
is reported in listing 3). The NFC component is initialized
with a state change listener that will be executed when a NFC
tag touches the NFC reader (lines 12-39 of listing 3). In this
case, line 27 prints a message saying to customize this method
with a conditional statement for authorizing or not the tag, and
it starts the communication with the other bricklets. Line 35
reports a call to the OpenRelay method that will execute
the method reported in listing 2, previously explained (the
default channel to be opened is specified in the initialization).</p>
      <p>The rest of the code, which is omitted here, will print on
the display a message reporting the tag id of the client and
it will trigger the sound emission of the speaker. The state
changed listener assures that the NFC tag will remain waiting
for the next tag, except for possible exceptions. Lines 27-36
(of listing 3) should be customized in order to support the
communication with the access control system, for instance by
making a REST call with the tag id to check if it is authorized.
1 package tinkerForgeGen;
2 ...
3 public class InitializationModule{
4 // Initialize the modules with multiple threads
5 public static void main(String args[]) throws</p>
      <p>Exception {
try {</p>
      <p>Brick_hr4tx brick_hr4tx= new Brick_hr4tx();
brick_hr4tx.start();
...</p>
      <p>Brick_d32d3 brick_d32d3= new Brick_d32d3();
brick_d32d3.start();
} ...</p>
      <sec id="sec-2-1">
        <title>Listing 4. Main initialization for the Bricks</title>
        <p>Of course, the numbers listed in table I can easily grow
depending on the size of the infrastructure, and developers
will tend to copy and paste snippets from a component to
another. This activity is error-prone and time consuming, and
it might be detrimental to the whole infrastructure. However,
it can be automated by exploiting model driven techniques. To
alleviate this issue, in section III we present a model driven
approach to partially automate this process.</p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>III. CONTRIBUTION</title>
      <p>To better explain the design of the chosen infrastructure and
to enable the code generation, we engineered the Tinkerforge
architectural modules in a metamodel, partially depicted in
Fig 2. We omit other modules we did not use in our running
example, to make the picture readable. An Infrastructure is
composed of Bricks, to which an application can connect
through its ip address. All the building blocks are identified
with the UID. A brick can be connected to Bricklets, that
can be classified in various types, for instance In/Out devices,
Sensors and Extensions. The NFC Reader is of type Sensor
and it has to declare which TagTypes it reads for the targeted
application. The Speaker (beeper) can be set with specific
beep duration, volume and frequency. The QuadRelay, instead,
requires the time lapse for opening the channel set to true. Also
NFC tags are part of this metamodel with a unique identifier
and all the sectors to read and write. The structure of a tag is
divided into sectors which are composed of blocks, but since
the application is simply reading the UID of the tag we do
not read and write the sectors (for this reason is omitted from
the metamodel).</p>
      <p>Eventually, listing 4 is responsible for starting the threads
for each brick in the infrastructure. In our case study we
considered two bricks, but there are of course more in real
cases. This simple infrastructure require basic knowledge of
Java (since it has been chosen as target language) and the Fig. 2. TinkerForge metamodel
code implemented for the presented basic functionalities can
beTehsetiminaiteiadliiznattieornmmsofdulilneestroofncgolydede(LpeOnCd)s aosninthetabnluemIb:er At this point we have a metamodeling layer supporting the
of bricks involved in the infrastructure, as the first rows depend definition of two types of models: the infrastructural model
from the number of bricklets mounted per brick. We created (conform to the metamodel in Fig. 2) and the access control
a Java class per brick, since each brick can vary the mounted system model (conform to the metamodel in Fig. 1). The
missbricklets, and generic class for the different types of bricklet. ing information at this stage is about how the infrastructure is
related to the concepts we have in the access control system.</p>
      <p>
        For instance, how the room’ door is controlled by a specific
brick and, in particular, an NFC reader. Moreover, we can
also relate NFC tags to the clients in order to keep track of
the authorized access. To do that, we conceived a weaving
metamodel, namely Interoperability Weaving metamodel, that
is shown in Fig. 3. A weaving model is a model specification
used to capture relationships between model elements [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ].
      </p>
      <p>
        In this metamodel, we basically have two types of links:
InfrastructureLink, defining how the building blocks of our
infrastructure can be related to concepts of the access control
system, e.g., room and brick; AssociationLink defining that a
specific tag has been assigned to a client. This metamodel
can be enriched with other types of links and it is still
under development. This weaving approach enables a set of
automatism that will be discussed in the rest of this section
and that we summarize in Fig. 5. Basically, the process starts
from the definition of the models of the infrastructure (see
Fig. 2) and the access control system (see Fig. 1). These two
models can be linked with an Interoperability Weaving Model
defining the relationships between them.
have the metamodeling layer proposed in previous sections. A
code generator has been developed to automatically generate
the code interacting with the Tinkerforge APIs as (manually)
defined in section II. In fact, an Acceleo code generator has
been developed for creating Java code for this application, but
it can be easily extended to support other target languages, e.g.,
PHP. Acceleo1 is a template-based technology to create custom
code generators. This code generator takes as input the
Interoperability Weaving Model, it navigates to the left and right
models to get the right model elements and it generates the
code interacting with the Tinkerforge API, exactly as shown
in section II. For the sake of clarity, the access control model
can be used to generate part of the web application managing
the data, as well as the SQL script of the application [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ]. This
is out of the scope of this paper but we will further extend the
approach in the future work.
      </p>
      <p>Infrastructure MM
Infrastructure</p>
      <p>Model
Modeling Platform
reflects</p>
      <p>PHP Java</p>
      <p>...</p>
      <p>Interoperability
Weaving MM</p>
      <p>Access Control</p>
      <p>System MM
Interoperability
Weaving Model</p>
      <p>IN
Code Generator
generates</p>
      <p>Domain Engineering
Access Control
System Model</p>
      <p>SQL Script for testing
generates
Real Infrastructure</p>
      <p>Web Platform</p>
      <p>Database</p>
      <p>Fig. 4 reports a screenshot of the weaving editor, where an
interoperability weaving model has been created to link the
exemplary infrastructure with a simple access management
model. The dotted lines highlight how the concepts have
been linked: for instance, the Brick with UID hr4tx has
been linked to Room_A. Room A hosts an activity called
Training on Thursday from 10:00 to 13:00 (visible by
exploring the property view of the model). Moreover, we
have some associated tags, e.g., the tag with id 372112f5 is
associated with client 0, aka John Doe. Not all the properties
of the model elements are visible from this screenshot, since
we tried to highlight the links defined in the weaving model.</p>
      <p>A general process depicting the overview of the approach
is reported in Fig. 5. At the Domain Engineering phase, we</p>
      <p>The code generator is composed of multiple templates. The
main template is called generateElement (listing 5) and it is
responsible for generating the initialization file of the modules.</p>
      <p>1 [module generate(’http://tinkeforge.org/
interoperability’,’http://tinkeforge.org’,’http://
cs.ssi.it/access-control’)]
2
3 [template public generateElement(interoperabilityModule</p>
      <p>: InteroperabilityModule)]
4 [comment @main]
5
6 [ if((interoperabilityModule.links-&gt;select(l|l.</p>
      <p>oclIsKindOf(InfrastructureLink)).oclAsType(
InfrastructureLink).brick.connectedDevices-&gt;select(
e|e.oclIsKindOf(NFCReader )))-&gt;size()&gt;0) ]
7 [generateNFCReaderCode.../]</p>
    </sec>
    <sec id="sec-4">
      <title>1Acceleo - https://www.eclipse.org</title>
      <p>8 [/if]
9 [ if((interoperabilityModule.links-&gt;select(l|l.
oclIsKindOf(InfrastructureLink)).oclAsType(
InfrastructureLink).brick.connectedDevices-&gt;select(
e|e.oclIsKindOf(QuadRelay )))-&gt;size()&gt;0) ]
10 [generateQuadRelayCode.../]
11 [/if]
12 ...
13 [generateInitializationCode(interoperabilityModule)/]
14 [/template]</p>
      <sec id="sec-4-1">
        <title>Listing 5. Snippet of Acceleo main template</title>
        <p>Indeed, for each interoperability link of the input weaving, it
selects the infrastructure links and for each type of bricklets,
connected to the main brick, it generates the corresponding
Java class in the workspace. For instance, if an Infrastructure
Link is connecting a room to a brick containing an NFCReader
and a QuadRelay, it will generate NFCReader.java and
QuadRelay.java (shown respectively in listing 3 and 2).
The final call at line 13 in listing 5 is responsible for generating
the threads initialization in the main java file invoking the
template in listing 6. Here, for each infrastructure link it
creates the Brick java class containing the code explained in
listing 1 and it generates the code for initializing the bricks
contained in the declared infrastructure model, in lines 5-6 in
listing 6 (see listing 4 for the produced code).</p>
        <p>6
7
8
9
10
11 }
1 public static void main(String args[ ’[’ /][ ’]’ /])
throws Exception {
2 try {
3 [for (link : InfrastructureLink |
interoperabilityModule.links-&gt;select(l|l.</p>
        <p>oclIsKindOf(InfrastructureLink)))]
4 [createBrickComponent(link)/]
5 Brick_[link.brick.UID/] brick_[link.brick.UID/]=
new Brick_[link.brick.UID/]();
brick_[link.brick.UID/].start();
[/for]
} catch (Exception ex) {
ex.printStackTrace();
}</p>
      </sec>
      <sec id="sec-4-2">
        <title>Listing 6. Snippet of Acceleo main template</title>
        <p>The last template that we report for completeness is
createBrickComponent, triggered by line 4 of listing 6.
Listing 7 reports a snippet of this template, where first of
all a selective list of import is generated, depending on
the real building blocks declared in the infrastructure. This
selectively generates the real package imports needed by the
program (see for example lines 1-3). Lines 7-14 is the template
part responsible for generating the variables initialization for
each type of bricklets connected to the brick and then the
constructors of the bricklets are called from lines 17-19 (this
code is for QuadRelay, it follows for the other types of
Bricklets). Next, it follows the generation of the run method,
that will be executed by the running thread. In this thread the
main task will be to read the NFC tags and if other bricklets
are connected using them to orchestrate the infrastructure.
The code responsible for the state changed listener, which
has been previously shown in listing 3, will be generated
in the NFCReader.java file that will be called by the
initializeReader in line 32 of the generator (listing 7).
The code in lines 27-29 will add to a list of available bricklets
the devices connected to the brick, that will be available in the
NFCReader code, so that the developer can customize his/her
own logic. This specific generated code will be customized
with respect to the real infrastructure of connected bricklets,
completely specified at the model level.</p>
        <p>By executing the generated code, we managed to test
the communication mechanism with the infrastructure we
modeled. In fact, the screenshot of the log in Fig. 6 (top
side) reports the printed detected tag id, e.g., 372112f5,
corresponding to a specific client of the access control system.
To verify this, we also executed an OCL query on the access
control system model in order to retrieve information about
if the tag has been assigned to someone and if this person
is actually authorized. The bottom part of Fig. 6, indeed,
reports the OCL query executed crossing the detected tag by
the NFC reader with UID uqB with the clients and activities
of the room infrastructured with that brick. In this case, the
query returns positive authorization for the client John Doe,
which is assigned to that tag in the model. This part has to
be integrated in the logic of the application, for instance by
including an API call to the authorization url of the access
control system. This part has to be manually specified since the
possible logics can be multiple, for instance, grant everyone
and log the information or check the authorization.</p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>Our approach includes the following limitations.</title>
      <p>Tinkerforge usage. The presented approach is based on
the Tinkerforge platform. Currently, the actual
implementation of the specified metamodel does not comprehend all
the possible bricklets that Tinkerforge provides. The code
generation process has been tested only for the devices we
currently have, by making the Tinkerforge platform underused.
However, the approach we proposed is general and it can be
further extended to support the complete set of bricklets. In
particular, to enable the support for a new type of module, it
requires two main steps: (i) the development of the code for the
new module, which should follow the specification given on
the documentation, and (ii) the reverse engineering to
placeholders of the code generator, where the code should refer to
the specified domain concepts. This process represents a sort
of reverse engineering, which the modeler should apply for
each target language that has to be supported, in the case of
multi-platform code generation.</p>
      <p>Further design models. The models created with the
engineered metamodel allow the specification of structural
characteristics of the infrastructure. The generated code acts as
sample code that the developer might customize to address
the logic of the application. For instance, the model does
not contain the interaction between the retrieved NFC tags
and the authorization system, that can expose an API making
authorization data available. The logic of the authorization
mechanism, and its conditional statements, might be supported
with behavioural models, e.g., sequence diagrams, in order to
be able to generate the complete application. As future work
we plan to extend our approach to embed these models.</p>
      <p>
        Web application design. From the interoperability weaving
model shown in Fig. 3 we could also generate part of the
web application that acts as human resources and facility
management system, with the related API for the
authorization mechanism. This topic has been largely addressed,
e.g., in [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ], [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ], and it can be replicated in our approach,
to be able to generate a complete application for access
management. We leave as future work the overall application
design and realization, since we expect that this does not
affect the structural IoT-based infrastructure we realized for
this work.
      </p>
    </sec>
    <sec id="sec-6">
      <title>IV. RELATED WORK</title>
      <p>
        Access Control Systems provide a security application to
check entries via controlled gates to restricted access areas.
Their application is foreseen in both out-door [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ], [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ] and
indoor [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ] environments, through diverse technologies. For
instance, [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ] reports an approach using in-vehicle RFID tags
and transponders for roadside to vehicle communications for
electronic tolling pricing systems. An automatic toll system
using wireless transmission between the vehicles and a fixed
station is, instead, documented in [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ]. In [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ], a distributed
access control mechanism, in a smart building scenario is
described. An engine embedded into smart objects makes
authorization decisions based on user location and access
credentials. Differently from our approach, user location data
are estimated via magnetometer sensors in the smartphones.
      </p>
      <p>
        Model Driven Engineering (MDE) has been already adopted
to deal with the challenges of the IoT domain (e.g.,
heterogeneity, reusability of software artifacts) [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ]. In [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ] two
different approaches for the development of an IoT application,
IoT Mashups and Model-based IoT are presented. The first
one, uses existing services/tools to develop applications, while
the second one exploits MDE techniques. The work in [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ]
compares the two approaches and shows that mashup tools
are efficient for describing system architectures, message flow
and deployment, while model-based approaches have a greater
expressiveness to model different points of view and behaviors
and to generate code from models for different platforms.
In [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ] the authors propose an high-level rule-based language
to model high-level representations of devices, to manage the
interoperability and behaviour of interconnected IoT devices.
      </p>
      <p>
        (Semi) Automatic code generation for architectural models
has gained a lot of attention in recent years, even in the IoT
domain. In [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ], the authors present a Domain-specific
Modeling Language for TinyOS, called DSML4TinyOS, whose aim
is that of allowing developers to generate architectural code for
low power wireless devices. The main purpose of the authors is
that of providing a platform-independent modeling framework
to abstract from different IoT operating systems, by exploiting
model-to-model transformation and code generation.In [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ]
FRASAD is presented, and it provides a fast way to develop
IoT applications by means of model-to-model transformation
and code generation, running on top of a node-centric software
architecture based on the sensor node domain concept. In [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ],
the presented approach allows the automatic generation of
code running on Arduino components, in the context of
situational aware IoT.
      </p>
      <p>
        Domain Specific Languages (DSLs) have been largely
adopted to software development in different contexts [
        <xref ref-type="bibr" rid="ref22">22</xref>
        ].
In the context of Web applications development, for instance,
a DSL for the implementation of dynamic web applications is
presented in [
        <xref ref-type="bibr" rid="ref23">23</xref>
        ] and further extended in [
        <xref ref-type="bibr" rid="ref24">24</xref>
        ]. In the context
of access control, we have examples of DSL specifications that
try to fill the gap between role-based access control (RBAC)
models and policy specification languages. In particular, in
[
        <xref ref-type="bibr" rid="ref25">25</xref>
        ] the authors proposed a DSL whose semantic can be
expressed in terms of a formalization of rule-based access
control policies as OCL constraints on the corresponding
conceptual model. This approach aims to define policies in a
more expressive and clear way and to implement a method that
allows the easily reinforcement of these policies. Moreover,
in [
        <xref ref-type="bibr" rid="ref26">26</xref>
        ], a DSL called SenNet for developing WSN applications
is presented. It has been implemented to reduce the complexity
of low-level programming details associated with the domain
of WSN. [
        <xref ref-type="bibr" rid="ref27">27</xref>
        ] represents a further application of DSL in
the IoT context to reduce its inherent complexity. This work
presents an editor, called DSL-4-IoT, implemented to deal with
the high complexity and heterogeneity of WSN and devices.
The editor outputs IoT application configuration files which
are then executed by a runtime engine (i.e., OpenHAB).
      </p>
      <p>In conclusion, in our approach we profit from the before
mentioned benefits of MDE, DSL and code generation based
approaches, by additionally combining them with the use
of the Tinkerforge platform. This allows the approach to
further push and increase modularization, abstraction and code
generation features. Moreover, the provided infrastructure is
open and extensible to different technologies and device types,
besides RFID/NFC.</p>
    </sec>
    <sec id="sec-7">
      <title>V. CONCLUSIONS AND FUTURE WORK</title>
      <p>In this paper we presented a Model Driven approach
supporting the (semi) automatic code generation for enabling the
communication between an IoT infrastructure and an existing
web platform for Facility Access Management. This work has
been triggered by the need for migrating an old chip card
based access control system to a new way of authorizing
people with NFC tags. In particular, the approach we
provide enables the generation of software components in the
selected target language (e.g., Java), by also offering snippets
as exemplary code usage, when possible. The objectives of
the presented approach are manifold: (i) relieving developers
from the inherent complexities of heterogeneous IoT devices,
protocols, networks, also in view of a multi-platform evolution
of the approach; (ii) making the whole development process
less error-prone and time consuming, while exploiting code
generation. As future work, we plan to address the limitations
discussed in section III-A and to make the generative approach
multi-platform, by targeting further languages besides Java,
through a wider exploitation of the Tinkerforge platform.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>D. C.</given-names>
            <surname>Schmidt</surname>
          </string-name>
          , “
          <article-title>Guest NOOPeditor's Introduction: Model-Driven Engineering</article-title>
          ,” Computer, vol.
          <volume>39</volume>
          , no.
          <issue>2</issue>
          , pp.
          <fpage>25</fpage>
          -
          <lpage>31</lpage>
          ,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>D.</given-names>
            <surname>Di Ruscio</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Franzago</surname>
          </string-name>
          ,
          <string-name>
            <surname>I. Malavolta</surname>
          </string-name>
          , and
          <string-name>
            <given-names>H.</given-names>
            <surname>Muccini</surname>
          </string-name>
          , “
          <article-title>Envisioning the future of collaborative model-driven software engineering</article-title>
          ,” in International Conference on Software Engineering
          <string-name>
            <surname>Companion (ICSE-C)</surname>
          </string-name>
          ,
          <year>2017</year>
          , pp.
          <fpage>219</fpage>
          -
          <lpage>221</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>B.</given-names>
            <surname>Morin</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Harrand</surname>
          </string-name>
          , and
          <string-name>
            <given-names>F.</given-names>
            <surname>Fleurey</surname>
          </string-name>
          , “
          <article-title>Model-based software engineering to tame the iot jungle</article-title>
          ,
          <source>” IEEE Software</source>
          , vol.
          <volume>34</volume>
          , no.
          <issue>1</issue>
          , pp.
          <fpage>30</fpage>
          -
          <lpage>36</lpage>
          ,
          <year>2017</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>L.</given-names>
            <surname>Gaouar</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Benamar</surname>
          </string-name>
          , and
          <string-name>
            <given-names>F. T.</given-names>
            <surname>Bendimerad</surname>
          </string-name>
          , “
          <article-title>Model driven approaches to cross platform mobile development</article-title>
          ,”
          <source>in Proceedings of the International Conference on Intelligent Information Processing</source>
          ,
          <article-title>Security and Advanced Communication, ser</article-title>
          .
          <source>IPAC. ACM</source>
          ,
          <year>2015</year>
          , pp.
          <fpage>1</fpage>
          -
          <lpage>5</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>S.</given-names>
            <surname>Rehman</surname>
          </string-name>
          ,
          <string-name>
            <surname>R. M. K. Ullah</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          <string-name>
            <surname>Tanvir</surname>
            , and
            <given-names>F.</given-names>
          </string-name>
          <string-name>
            <surname>Azam</surname>
          </string-name>
          , “
          <article-title>Development of user interface for multi-platform applications using the model driven software engineering techniques</article-title>
          ,” in IEMCON,
          <year>2018</year>
          , pp.
          <fpage>1152</fpage>
          -
          <lpage>1158</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>V.</given-names>
            <surname>Coskun</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Ozdenizci</surname>
          </string-name>
          , and
          <string-name>
            <given-names>K.</given-names>
            <surname>Ok</surname>
          </string-name>
          , “
          <article-title>A survey on near field communication (nfc) technology,” Wireless Personal Communications</article-title>
          , vol.
          <volume>71</volume>
          , no.
          <issue>3</issue>
          , pp.
          <fpage>2259</fpage>
          -
          <lpage>2294</lpage>
          ,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>J.</given-names>
            <surname>Bravo</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Hervas</surname>
          </string-name>
          , G. Chavira,
          <string-name>
            <given-names>S. W.</given-names>
            <surname>Nava</surname>
          </string-name>
          , and
          <string-name>
            <given-names>V.</given-names>
            <surname>Villarreal</surname>
          </string-name>
          , “
          <article-title>From implicit to touching interaction: Rfid and nfc approaches</article-title>
          ,
          <source>” in Conference on Human System Interactions</source>
          ,
          <year>2008</year>
          , pp.
          <fpage>743</fpage>
          -
          <lpage>748</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <surname>Tinkerforge</surname>
          </string-name>
          , “Website,” https://www.tinkerforge.com,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <surname>M. D. Del Fabro</surname>
            ,
            <given-names>J</given-names>
          </string-name>
          . Be´zivin, and P. Valduriez, “
          <article-title>Weaving models with the Eclipse AMW plugin,” in Eclipse Modeling Symposium</article-title>
          , Eclipse Summit Europe,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>A.</given-names>
            <surname>Cicchetti</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D. Di</given-names>
            <surname>Ruscio</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Iovino</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Pierantonio</surname>
          </string-name>
          , “
          <article-title>Managing the evolution of data-intensive web applications by model-driven techniques</article-title>
          ,
          <source>” Software &amp; Systems Modeling</source>
          , vol.
          <volume>12</volume>
          , no.
          <issue>1</issue>
          , pp.
          <fpage>53</fpage>
          -
          <lpage>83</lpage>
          ,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>A.</given-names>
            <surname>Cicchetti</surname>
          </string-name>
          ,
          <string-name>
            <surname>D.</surname>
          </string-name>
          <article-title>Di Ruscio, and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Pierantonio</surname>
          </string-name>
          , “
          <article-title>Managing Dependent Changes in Coupled Evolution,” in ICMT, ser</article-title>
          .
          <source>LNCS</source>
          . Springer,
          <year>2009</year>
          , vol.
          <volume>5563</volume>
          , pp.
          <fpage>35</fpage>
          -
          <lpage>51</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>M.</given-names>
            <surname>Brambilla</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Comai</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Fraternali</surname>
          </string-name>
          , and
          <string-name>
            <given-names>M.</given-names>
            <surname>Matera</surname>
          </string-name>
          , “
          <article-title>Designing web applications with webml and webratio,” in Web Engineering: Modelling and Implementing Web Applications</article-title>
          . Springer,
          <year>2008</year>
          , pp.
          <fpage>221</fpage>
          -
          <lpage>261</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>P.</given-names>
            <surname>Blythe</surname>
          </string-name>
          , “
          <article-title>Rfid for road tolling, road-use pricing and vehicle access control,” in IEE colloquium on RFID technology</article-title>
          .
          <source>IET</source>
          ,
          <year>1999</year>
          , pp.
          <fpage>1</fpage>
          -
          <lpage>8</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>D. S.</given-names>
            <surname>Breed</surname>
          </string-name>
          and
          <string-name>
            <given-names>V.</given-names>
            <surname>Sokurenko</surname>
          </string-name>
          , “
          <article-title>Tolling system and method using telecommunications</article-title>
          ,”
          <year>2017</year>
          , uS
          <issue>Patent 9</issue>
          ,
          <issue>691</issue>
          ,
          <fpage>188</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>M. V.</given-names>
            <surname>Moreno</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J. L.</given-names>
            <surname>Herna</surname>
          </string-name>
          <article-title>´ndez, and</article-title>
          <string-name>
            <given-names>A. F.</given-names>
            <surname>Skarmeta</surname>
          </string-name>
          , “
          <article-title>A new locationaware authorization mechanism for indoor environments,” in international conference on advanced information networking and applications workshops</article-title>
          . IEEE,
          <year>2014</year>
          , pp.
          <fpage>791</fpage>
          -
          <lpage>796</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>S.</given-names>
            <surname>Wolny</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Mazak</surname>
          </string-name>
          , and
          <string-name>
            <given-names>B.</given-names>
            <surname>Wally</surname>
          </string-name>
          , “
          <article-title>An initial mapping study on mde4iot</article-title>
          ,”
          <fpage>MDE4IoT</fpage>
          - 2nd International Workshop on Model-
          <article-title>Driven Engineering for the Internet-of-</article-title>
          <string-name>
            <surname>Things</surname>
          </string-name>
          , pp.
          <fpage>524</fpage>
          -
          <lpage>529</lpage>
          ,
          <year>2018</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <given-names>C.</given-names>
            <surname>Prehofer</surname>
          </string-name>
          and
          <string-name>
            <given-names>L.</given-names>
            <surname>Chiarabini</surname>
          </string-name>
          , “
          <article-title>From internet of things mashups to model-based development,” in Computer Software</article-title>
          and Applications Conference, COMPSAC Workshops,
          <year>2015</year>
          , pp.
          <fpage>499</fpage>
          -
          <lpage>504</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>M.</given-names>
            <surname>Amrani</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Gilson</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Debieche</surname>
          </string-name>
          , and
          <string-name>
            <given-names>V.</given-names>
            <surname>Englebert</surname>
          </string-name>
          , “
          <article-title>Towards usercentric dsls to manage iot systems</article-title>
          ,” in International Conference on Model-Driven Engineering and Software Development,
          <string-name>
            <surname>MODELSWARD</surname>
          </string-name>
          ,
          <year>2017</year>
          , pp.
          <fpage>569</fpage>
          -
          <lpage>576</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <surname>H. M. Marah</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          <string-name>
            <surname>Eslampanah</surname>
            , and
            <given-names>M.</given-names>
          </string-name>
          <string-name>
            <surname>Challenger</surname>
          </string-name>
          , “Dsml4tinyos:
          <article-title>Code generation for wireless devices</article-title>
          ,”
          <source>in Proceedings of MODELS 2018 Workshops</source>
          ,
          <year>2018</year>
          , pp.
          <fpage>509</fpage>
          -
          <lpage>514</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <given-names>X. T.</given-names>
            <surname>Nguyen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H. T.</given-names>
            <surname>Tran</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Baraki</surname>
          </string-name>
          , and
          <string-name>
            <given-names>K.</given-names>
            <surname>Geihs</surname>
          </string-name>
          , “
          <article-title>Frasad: A framework for model-driven iot application development,”</article-title>
          <source>in IEEE World Forum on Internet of Things (WF-IoT)</source>
          ,
          <year>2015</year>
          , pp.
          <fpage>387</fpage>
          -
          <lpage>392</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21]
          <string-name>
            <given-names>M.</given-names>
            <surname>Sharaf</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Abughazala</surname>
          </string-name>
          , and
          <string-name>
            <given-names>H.</given-names>
            <surname>Muccini</surname>
          </string-name>
          , “
          <article-title>Arduino realization of caps iot architecture descriptions</article-title>
          ,
          <source>” in European Conference on Software Architecture: Companion Proceedings, ser. ECSA</source>
          ,
          <year>2018</year>
          , pp.
          <fpage>1</fpage>
          -
          <lpage>4</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [22]
          <string-name>
            <given-names>B.</given-names>
            <surname>Langlois</surname>
          </string-name>
          , C.-E. Jitia, and E. Jouenne, “Dsl classification,”
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          [23]
          <string-name>
            <given-names>D.</given-names>
            <surname>Groenewegen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Z.</given-names>
            <surname>Hemel</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Kats</surname>
          </string-name>
          , and E. Visser, “
          <article-title>Webdsl : A domainspecific language for dynamic web applications</article-title>
          ,”
          <year>2008</year>
          , pp.
          <fpage>779</fpage>
          -
          <lpage>780</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          [24]
          <string-name>
            <given-names>D. M.</given-names>
            <surname>Groenewegen</surname>
          </string-name>
          and E. Visser, “
          <article-title>Integration of data validation and user interface concerns in a dsl for web applications</article-title>
          ,
          <source>” Software &amp; Systems Modeling</source>
          , vol.
          <volume>12</volume>
          , no.
          <issue>1</issue>
          , pp.
          <fpage>35</fpage>
          -
          <lpage>52</lpage>
          ,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          [25]
          <string-name>
            <given-names>A.</given-names>
            <surname>Ben Fadhel</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Bianculli</surname>
          </string-name>
          , and L. Briand, “
          <article-title>Gemrbac-dsl: A highlevel specification language for role-based access control policies,” in Symposium on Access Control Models and Technologies, ser</article-title>
          .
          <source>SACMAT. ACM</source>
          ,
          <year>2016</year>
          , pp.
          <fpage>179</fpage>
          -
          <lpage>190</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          [26]
          <string-name>
            <given-names>A. J.</given-names>
            <surname>Salman</surname>
          </string-name>
          and
          <string-name>
            <given-names>A</given-names>
            .
            <surname>Al-Yasiri</surname>
          </string-name>
          , “
          <article-title>Developing domain-specific language for wireless sensor network application development,”</article-title>
          <source>in International Conference for Internet Technology and Secured Transactions (ICITST)</source>
          ,
          <year>2016</year>
          , pp.
          <fpage>301</fpage>
          -
          <lpage>308</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref27">
        <mixed-citation>
          [27]
          <string-name>
            <given-names>A.</given-names>
            <surname>Salihbegovic</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Eterovic</surname>
          </string-name>
          , E. Kaljic, and
          <string-name>
            <given-names>S.</given-names>
            <surname>Ribic</surname>
          </string-name>
          , “
          <article-title>Design of a domain specific language and ide for internet of things applications</article-title>
          ,” in
          <source>International Convention on Information and Communication Technology, Electronics and Microelectronics (MIPRO)</source>
          ,
          <year>2015</year>
          , pp.
          <fpage>996</fpage>
          -
          <lpage>1001</lpage>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>