<!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>Run-time Monitoring of a Rover: MDE Research with Open Source Software and Low-cost Hardware</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Reza Ahmadi</string-name>
          <email>ahmadi@cs.queensu.ca</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Nicolas Hili</string-name>
          <email>hili@cs.queensu.ca</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Leo Jweda</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Nondini Das</string-name>
          <email>ndas@cs.queensu.ca</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Suchita Ganesan</string-name>
          <email>ganesan@cs.queensu.ca</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Juergen Dingel</string-name>
          <email>dingel@cs.queensu.ca</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>School of Computing, Queen's University</institution>
          ,
          <country country="CA">Canada</country>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2016</year>
      </pub-date>
      <fpage>7</fpage>
      <lpage>14</lpage>
      <abstract>
        <p>This paper is an experience report on how we conducted research in run-time model monitoring with Open Source Software (OSS) and low-cost hardware. We demonstrate our experience using a Rover system case study, where we modelled its control logic, generated code, and collected traces of the running code to visually monitor the execution. We used open source tools throughout the project: Papyrus-RT for modeling and animation, LTTng for collecting execution traces, and Trace Compass for parsing the collected traces.</p>
      </abstract>
      <kwd-group>
        <kwd>Model Driven Engineering</kwd>
        <kwd>Run-time Monitoring</kwd>
        <kwd>Open Source Tools</kwd>
        <kwd>Real-Time</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>Page 37</p>
    </sec>
    <sec id="sec-2">
      <title>Introduction</title>
      <p>
        Despite the acceptance of MDE by the community, it is noteworthy that
companies mostly use commercial and proprietary tools [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ]. These tools cannot
meet the very diverse and sometimes even con icting expectations and
requirements of both industry and academia at the same time [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ]. The development
of industrial-strength open source modelling tools has been suggested to remedy
the situation and to provide support not only for research and teaching, but also
for easing technology transfers to industry [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ]. However, despite good progress
recently, a lot more work is needed to build a healthy, sustainable open source
community around mature and powerful tools that can be used by practitioners,
researchers, and educators alike.
      </p>
      <p>This paper details an experience report using and extending Open Source
Software (OSS) and self-made, low-cost hardware in the context of an industrial
research project on run-time model monitoring. It encourages and promotes the
use of open source software and hardware for building real industrial case studies.</p>
      <p>The rest of this paper is structured as follows: Section 2 gives an overview on
the use of open source modelling solutions in the context of real-time embedded
system design; Section 3 gives an overview of the research we conducted on
runtime model monitoring; Section ?? details the modelling and the assembly of
an industrial case study, the Rover model, using open source solutions only, and
the lessons we learned; Section 6 discusses other works based on open source for
real-time embedded system design; Section 7 concludes.
2</p>
    </sec>
    <sec id="sec-3">
      <title>Background</title>
      <p>
        Using open source tools and platforms in the context of Model Driven
Engineering (MDE) projects becomes critical. MDE tools developed by single companies
cannot satisfy the very diverse and sometimes even con icting expectations and
requirements of the industrial and academic communities. Further, dependency
on proprietary tooling platforms can limit the innovation in companies.
Papyrus [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ], as an industrial-grade IDE for UML, has recently drew attention of
the industry and academia researchers due to being open source, highly
customizable, and supporting the de nition of Domain Speci c Modelling Languages
(DSMLs). Papyrus aims at facilitating collaboration and technology/knowledge
transfer between industry and the academia [
        <xref ref-type="bibr" rid="ref18 ref19">18, 19</xref>
        ]. Papyrus for Real-Time
(Papyrus-RT) [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] is another open source modelling environment, which is used
to model complex real-time systems using UML-RT language. It comes with an
editor for modelling, and a code generator for C++.
      </p>
      <p>
        In addition to OSS, Open-Source Hardware (OSH) [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ] is a new trend
designating the use of hardware platforms with open architectures to facilitate the
assembly of prototypes. Such platforms o er new opportunities to researchers.
They are easily extendable and well documented, so other designers can adapt
them for speci c projects. Required information regarding the design of the
hardware component in addition to the software is typically freely available.
      </p>
      <p>
        Examples of such inexpensive platforms are Raspberry Pi [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ] and Arduino
UNO [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]. Raspberry Pi is a low-power credit card-sized computer. All models of
Raspberry Pi come with a relatively powerful CPU (at least 700 MHz single-core
in Model A), audio, USB, and HDMI ports. For instance, Raspberry Pi 3 is the
newest model, which embeds a 1.2GHz 64-bit quad-core CPU running Linux,
costs just around $35. It supports Bluetooth and Wireless LAN, and has 26
GPIO pins, that can be used to connect sensors and actuators. Arduino UNO,
which comes with an open source extensible IDE and programming language,
is customizable to be adapted for particular needs. The IDE supports basic
C/C++ code and provides a simple one-click way to deploy a written program
to the Arduino board. There are Arduino starter kits, which usually include a set
of electronic components such as jumpers, wires, resistors and breadboard [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ],
which could be used along with some other simple items to build e.g. thermostats,
simple robots, and motion detectors, among many others [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ].
      </p>
      <p>In the following, we show how we took advantage of OSS and OSH to build
a prototype for monitoring the execution of real-time embedded systems.
3</p>
    </sec>
    <sec id="sec-4">
      <title>Open Source Runtime Monitoring Framework</title>
      <p>Nowadays, determining and evaluating the run-time behaviour and performance
of models of embedded systems using commercial MDE tools is a challenging
task. Such tools provide little support to observe, at model-level, the execution
of the code generated from the model, and to collect the run-time information
necessary to, e.g., check whether timing constraints are met or not.</p>
      <p>
        To address this issue, we proposed an approach to modelling and to
monitoring real-time embedded systems at run-time [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. Fig. 1 illustrates our approach.
UML-RT models are rst designed using Papyrus-RT. During this step, models
can be enhanced with timing annotations and annotations to be checked
during execution. From the annotated models, code and trace point information is
generated, deployed, and executed on the target platform. Trace points are
inputs used by Linux Trace Toolkit Next Generation (LTTng) [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ], an open source
lightweight instrumentation framework, to monitor the execution, and to
generate corresponding trace les. Finally, the generated traces les are parsed by
Trace Compass [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ], and imported into Papyrus-RT where traces can be animated
and timing constraints can be checked.
      </p>
      <p>As illustrated in Fig. 1, the entire approach relies on the integration of OSS
and open source standards. LTTng produces Common Trace Format (CTF) les,
which are sent to Trace Compass for trace analysis. Trace Compass is a
framework which provides views and graphs to depict extracted information from the
produced traces. This shows an example of successful collaborations enabling
the use of open source solutions for run-time model monitoring. Our
monitoring framework consists of several Papyrus-RT plugins, which were appealing to
our industry partners and we will soon merge them into the main source code
repository of Papyrus-RT. In the following, we detail our experience and lessons
learned during this project.
This section is an experience report on the use of open source software and
platforms to conduct research in the context of MDE. It is divided up into four
parts. The rst part introduces a running example, the Rover system case study,
we modelled and assembled in order to perform run-time model monitoring; the
second part presents the rationals behind the modelling of this system; the third
part describes the assembly of the Rover platform using low-cost hardware; the
last part draws the conclusions and presents the lessons learned.
The rover is a small vehicle driven by two motors to move forward and backwards,
as well as to rotate. It embeds a set of sensors to detect obstacles and to collect
data from the environment (temperature and humidity). The main processing
element is a Raspberry Pi platform running a real-time version of Linux, where
the generated code from the UML-RT models is deployed and executed.</p>
      <p>The behavior of the Rover system is the following. In the initial state, it moves
forward until an obstacle is detected. To avoid the obstacle, it turns 90 degrees,
and then starts again moving forward. During all the execution, temperature
and humidity information are collected from the environment.
The behavior of the Rover has been modelled in UML-RT using Papyrus-RT. The
UML-RT model is composed of inter-connected capsules, ports, and protocols
to model the structure of the system, and statemachines encapsulated in each
capsule to model its behavior.</p>
      <p>
        The whole architecture of the Rover system consists of ve layers of
abstractions (see Fig. 2). From the bottom, the Hardware layer corresponds to the
Raspberry Pi, which embeds 26 GPIO pins, among them 17 are used to
connect external devices (sensors and actuators). The File System layer is the le
system powered by a real-time version of Linux. Each GPIO pin in the
Raspberry Pi corresponds to a le in the le system. The user can interact with a
pin by reading the les value or writing into the le. The GPIO layer is a C++
wrapper class to ease the mentioned le accesses for controlling GPIO pins. The
wrapper constitutes a GPIOClass, which includes methods to set and get the
values of pins, set the direction of GPIO pins (make them as in or out) as well as
clearing the value of pins [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ]. On top of that, the remaining layers correspond to
the UML-RT modelled using Papyrus-RT. To respect the client/server model of
platforms [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ], the UML-RT modelled was divided up into two parts. The Rover
Library layer contains UML-RT capsules which correspond to di erent
components of the physical Rover (e.g. engine controller, temperature sensor), while
the uppermost layer, Application, contains the business logic of the application.
Both layers are connected through relay ports and a Rover capsule (which
embeds all the capsules of the platform) ensures encapsulation 1. The models took
about 40 hours, which included experimenting to learn how to interact with
GPIO pins from within Papyrus-RT.
4.3
      </p>
      <p>Assembling the Rover Platform
Choosing the right components for assembling the physical platform is an
important step. It depends on several requirements including processor speed, memory,
and interfaces used to connect digital and analog devices. For the Rover system,
we considered two potential candidates: Arduino UNO and Raspberry Pi.</p>
      <p>Arduino UNO is a micro-controller, which can be easily connected to sensors
and actuators. For our scenario, one advantage of Arduino over Raspberry Pi was
the support for Pulse Width Modulation (PWM), which allows for connecting
analog devices. This is particularly useful for controlling the speed of the motors,
which would allow the rover to make more gradual turns. However, Arduino UNO
does not support Linux, which it was a requirement in our project as it has to
support the Papyrus-RT RunTime Service (RTS) library which is only developed
for Linux environments. For this reason, and despite its lack of support for analog
devices, we chose to use a Raspberry Pi 3.</p>
      <p>Fig. 3 illustrates the assembly of the Rover platform. The core component
is the Raspberry Pi 3 platform (component A). It embeds two steps motors
(which are electrical motors that convert electrical pulses into mechanical shaft
rotations) attached to wheels (components D), whose the control is ensured by
a motor controller (component E) connected to the Raspberry Pi. An ultrasonic
distance sensor (component G) is used to measure the distance with obstacles
and a breadboard is used to connect the di erent components. Finally, two sets
of batteries (component B and F) are used to power both the Raspberry Pi and
the two motors, a voltage regulator (component C) ensures the Raspberry Pi is
1 All developed source codes and models could be found in https://github.com/
reza-ahmadi/rover
getting the 5 volts it needs to be powered on. Regarding the time investments
for the project, the hardware took about 5 hours to assemble.</p>
      <p>The rationale behind our multilayered architecture is to facilitate modularity
and as a result maintainability in the future. For instance, the GPIO library is
there to abstract away le operations needed to interact with GPIO pins through
the le system. It is speci c to GPIO pins but it is much easier to modify the
GPIO library than it is to modify every occurrence of a le operation in the
Rover library.
5</p>
    </sec>
    <sec id="sec-5">
      <title>Lessons Learned</title>
      <p>
        During our project we gained valuable insights into using open source MDE
tools and low-cost hardware. To build our demonstrator, we spent just less than
$50 for all components of the rover (mentioned before), which could show the
possibility of MDE research using low-cost hardware. Due to an active
community and available online resources we could nd answers to our many questions.
In particular we found Bran Selic's papers [
        <xref ref-type="bibr" rid="ref2 ref3">2, 3</xref>
        ] very useful for designing the
architecture and modelling the logic of our rover. We used [
        <xref ref-type="bibr" rid="ref14 ref15">14, 15</xref>
        ] to assemble
the rover, and to learn how to access the GPIO pins in C++.
      </p>
      <p>
        There are some other ongoing research projects with a focus on MDE research
with low cost hardware, such as PolarSys rover [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ], which we are communicating
with its researchers to enhance our project.
6
      </p>
    </sec>
    <sec id="sec-6">
      <title>Related Work</title>
      <p>
        There are prior work done in the area of model monitoring and animation. For
instance, Moka is a Papyrus module which integrates with Eclipse and enables
model animation and debugging [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ]. What di ers in Moka in comparison with
our work is its execution engine; we monitor the execution of the generated code
from the model, while in Moka model execution happens via a simulation engine
rather than generated code. Our work suits better for analyses of properties such
as performance, which could be analyzed in the context in which the program
is executed in [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. Dvai et al. [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ], proposed a framework on top of Moka and
Eclipse Debug Framework for model execution and debugging, but via code
generation [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ]. For animation, in their framework, they generate \debug symbols"
which are mappings between the generated code and the animated model. In our
work, for our model monitoring and animation we use generated LTTng traces.
      </p>
      <p>
        Pesu et al. [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] have used low-cost hardware, e.g. Raspberry PI and motor
actuators, to build a slightly more complex robot than ours. They have created
a framework which allows modelling the behaviour of the robot in UML and,
then run it. In their work, though they do not monitor the behaviour of the
robot.
7
      </p>
    </sec>
    <sec id="sec-7">
      <title>Conclusion</title>
      <p>
        In this work, we assembled a rover using inexpensive hardware components to
conduct MDE research in the context of an approach for run-time model
monitoring for Papyrus-RT models we formalized in a previous project [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ].
      </p>
      <p>We envision that our work could be leveraged in some ways. We think we can
add symbolic execution to our system to generate test inputs and use the test
inputs to exercise the model and ultimately uncover various violation of
properties. Another extension point would be to add a methodology to our run-time
monitoring to validate model changes such as certain kind of model re nements.</p>
      <p>Some other future work would be to support model-level debugging and
animation using 3D/2D environments such as Unity. The former is to support
adding breakpoints on the model level, watching values, and transition between
the generated code and model. The latter one allows a two-way interaction with
the model, so to not only watch the model in the animation, but also triggering
rover movements while watching the animation.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>N. Das</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          <string-name>
            <surname>Ganesan</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          <string-name>
            <surname>Jweda</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          <string-name>
            <surname>Bagherzadeh</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          <string-name>
            <surname>Hili</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          <article-title>Dingel : Supporting the Model-Driven Development of Real-time Embedded Systems with Simulation and Animation via Highly Customizable Code Generation</article-title>
          .
          <source>In: 19th International Conference on Model Driven Engineering Languages and Systems (MODELS</source>
          <year>2016</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Selic</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <year>2008</year>
          .
          <article-title>Accounting for platform e ects in the design of real-time software using model-based methods</article-title>
          .
          <source>IBM Systems Journal</source>
          ,
          <volume>47</volume>
          (
          <issue>2</issue>
          ), pp.
          <fpage>309</fpage>
          -
          <lpage>320</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Selic</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <year>1998</year>
          .
          <article-title>Using UML for modeling complex real-time systems</article-title>
          . In Languages, compilers, and
          <article-title>tools for embedded systems</article-title>
          (pp.
          <fpage>250</fpage>
          -
          <lpage>260</lpage>
          ). Springer Berlin Heidelberg.
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Pesu</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <article-title>Model Based Engineering: Robot Car (Master's thesis)</article-title>
          .
          <source>Tampere." Master thesis</source>
          ,
          <source>Tampere Uni. of Applied Sciences</source>
          ,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5. LTTNG documentation. http://lttng.org/docs. Accessed:
          <fpage>2016</fpage>
          -06-01.
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <article-title>Papyrus for real time (Papyrus-RT)</article-title>
          . https://www.eclipse.org/papyrus-rt.
          <source>Accessed: 2016-06-01.</source>
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7. Trace compass. https://projects.eclipse.org/projects/tools.tracecompass. Accessed:
          <fpage>2016</fpage>
          -06-01.
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8. Arduino. https://www.arduino.cc/en/Guide/Introduction. Accessed:
          <fpage>2016</fpage>
          -06-01.
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9. GPIO C++ Library. http://hertaville.com/introduction-to
          <article-title>-accessing-theraspberry-pis-gpio-in-c.html</article-title>
          . Accessed:
          <fpage>2016</fpage>
          -06-20.
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10. Arduino Wiki. https://en.wikipedia.org/wiki/Arduino. Accessed:
          <fpage>2016</fpage>
          -06-20.
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11. Open Source Hardware. https://en.wikipedia.org/wiki/Open-source hardware.
          <source>Accessed: 2016-06-01.</source>
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Papyrus</surname>
          </string-name>
          <article-title>: Moka overview</article-title>
          . http://wiki.eclipse.org/Papyrus/UserGuide/ModelExecution. Accessed:
          <fpage>2016</fpage>
          -06-06.
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13. Arduino Starter Kit. https://www.arduino.cc/en/Main/ArduinoStarterKit. Accessed:
          <fpage>2016</fpage>
          -06-20.
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>Wiring</surname>
          </string-name>
          a Rover. https://www.hackster.io/peejster/rover-c42139.
          <source>Accessed: 2016- 06-06.</source>
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <surname>Accessing</surname>
          </string-name>
          <article-title>Raspberry Pi GPIO pins in C++</article-title>
          . http://hertaville.com
          <article-title>/introductionto-accessing-the-raspberry-pis-gpio-in-c</article-title>
          .html
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <surname>Raspberry</surname>
            <given-names>PI</given-names>
          </string-name>
          . https://www.raspberrypi.org/products/raspberry-pi-3
          <string-name>
            <surname>-</surname>
          </string-name>
          model-b/. Accessed:
          <fpage>2016</fpage>
          -06-06.
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17.
          <string-name>
            <surname>Dvai</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Karcsony</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Nmeth</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kitlei</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          and Kozsik,
          <string-name>
            <surname>T.</surname>
          </string-name>
          , UML Model Execution via Code Generation.
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18.
          <string-name>
            <surname>Bordeleau</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          and
          <string-name>
            <surname>Fiallos</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <year>2014</year>
          .
          <article-title>Model-Based Engineering: A New Era Based on Papyrus and Open Source Tooling</article-title>
          . In OSS4MDE@ MoDELS (pp.
          <fpage>2</fpage>
          -
          <lpage>8</lpage>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          19.
          <string-name>
            <surname>Barrett</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bordeleau</surname>
          </string-name>
          , F.:
          <article-title>5 years of Papyrusing migrating industrial development from a proprietary commercial tool to Papyrus (invited presentation)</article-title>
          .
          <source>In: Workshop on Open Source Software for Model Driven Engineering (OSS4MDE</source>
          <year>2015</year>
          ), pp.
          <volume>312</volume>
          (
          <year>2015</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          20. Eclipse Papyrus Industry Consortium Charter: https://www.eclipse.org/org/workinggroups/papyrusic charter.
          <source>php. Accessed: 2016-06-06.</source>
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>21. PolarSys Rover. https://www.polarsys.org/projects/polarsys.rover</mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>