<!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>Hypersonic: Model Analysis and Checking in the Cloud</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Vlad Acretoaie</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Harald Störrle</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Department of Applied Mathematics and Computer Science Technical University of</institution>
          <country country="DK">Denmark</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>Context: Modeling tools are traditionally delivered as monolithic desktop applications, optionally extended by plug-ins or special purpose central servers. This delivery model suffers from several drawbacks, ranging from poor scalability to di cult maintenance and the proliferation of \shelfware". Objective: In this paper we investigate the conceptual and technical feasibility of a new software architecture for modeling tools, where certain advanced features are factored out of the client and moved towards the Cloud. With this approach we plan to address the above mentioned drawbacks of existing modeling tools. Method: We base our approach on RESTful Web services. Using features implemented in the existing Model Analysis and Checking (MACH) tool, we create a RESTful Web service API o ering model analysis facilities. We refer to it as the Hypersonic API. We provide a proof of concept implementation for the Hypersonic API using model clone detection as our example case. We also implement a sample Web application as a client for these Web services. Results: Our initial experiments with Hypersonic demonstrate the viability of our approach. By applying standards such as REST and JSON in combination with Prolog as an implementation language, we are able to transform MACH from a command line tool into the rst Web-based model clone detection service with remarkably little e ort.</p>
      </abstract>
      <kwd-group>
        <kwd>Hypersonic</kwd>
        <kwd>MACH</kwd>
        <kwd>Models in the Cloud</kwd>
        <kwd>clone detection</kwd>
        <kwd>Web services</kwd>
        <kwd>Prolog</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. INTRODUCTION</title>
      <p>
        Until very recently, the only practically viable architecture
for modeling tools was the traditional rich client architecture
for desktop applications, sometimes complemented by
specialized central servers, e. g., to provide model versioning
and group collaboration capabilities. Such modeling tools
are large, monolithical applications, even though some do
o er scripting facilities, application programming interfaces
(APIs), or a plug-in mechanism to allow for a certain
degree of extensibility. A typical example is NoMagic's
MagicDraw [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ], which can be extended through an API, and
BigMDE'14 July 24, 2014. York, UK.
      </p>
      <p>
        Copyright c 2014 for the individual papers by the papers'
authors. Copying permitted for private and academic
purposes. This volume is published and copyrighted by its
editors.
complemented by the Teamwork Server plug-in [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ] for
centralized version control. With this type of modeling tools,
the main revenue source for tool vendors is the sale of
perpetual licenses for their product, possibly supplemented by
ongoing technical support fees. Both the rich client
architecture and the associated business model su er from a series
of disadvantages, some of a generic nature and some more
speci c to modeling tools.
      </p>
      <p>
        In many other areas of computing, however, other, more
exible architectures are commonplace today. In
particular, recent technological developments have brought about
the widespread adoption of Cloud-based software
architectures. Typically, such architectures involve the deployment
of computationally intensive tasks to a centralized and fully
transparent shared pool of con gurable computing resources
(i. e., \the Cloud") [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ]. In this context, Web applications are
nowadays a widely used method of delivering software
functionality of many di erent kinds, including lightweight
editors for parts of UML (e. g., GenMyModel [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ], yUML [
        <xref ref-type="bibr" rid="ref25">25</xref>
        ]).
Though already attracting users, most such Web-based
offerings are currently not able to match traditional desktop
tools in terms of features. Nevertheless, modeling in the
Cloud does have the potential to address some important
problems, such as achieving scalability in relation to
increasingly large models and model repositories [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ].
      </p>
      <p>To realize this potential, we propose a solution where the
features required in a fully- edged modeling environment are
hosted remotely and accessed in a transparent way. Playing
the role of basic building blocks for a modeling work ow,
these features should be accessible independently of each
other and across a variety of devices. Fig. 1 visualizes the
contrast between the widely used rich client architecture and
the solution we propose. The crucial part of this proposal
is the identi cation of features of a modeling environment
that should be executed locally, and of those that should be
executed on remote servers.</p>
      <p>
        Arguably one of the most suitable application areas for
Cloud-based approaches in modeling is model analysis. We
select the requirements of this area as a background for
constructing Hypersonic, a test vehicle for demonstrating our
proposed approach for the delivery of modeling services - in
this case, model analysis services. To implement Hypersonic,
we use the features o ered by our existing model analysis
tool, MACH [
        <xref ref-type="bibr" rid="ref27">27</xref>
        ]. In its current form, MACH is a desktop
application with a textual user interface. As most desktop
applications, it requires installation prior to its usage, as
well as explicit user actions/approval for installing updates.
With Hypersonic, the features implemented in MACH
beProvider 1
      </p>
      <p>Client
Provider 1
. . .
Provider k
. . .</p>
      <p>Provider x</p>
      <p>Provider y
Provider 1</p>
      <p>Provider 1
d
n
e
g
e
L</p>
      <p>Component suitable for deployment
to remote server</p>
      <p>Component suitable for deployment
to local client
come RESTful Web services. They can be accessed remotely
from a wide range of clients, without requiring installation
or explicit user actions for installing updates. To
demonstrate the usefulness of our Web service API we also create
a sample client in the form of a responsive Web application.</p>
      <p>In this paper we discuss the application scenarios and
business cases for Cloud-based modeling services, derive
requirements and constraints for the associated tools
(Chapter 2), propose a distributed architecture to satisfy these
requirements (Chapter 3), and report on a proof-of-concept
implementation (Chapter 4). We also provide an overview
of related work (Chapter 5) and summarize the conclusions
of our study (Chapter 6).</p>
    </sec>
    <sec id="sec-2">
      <title>DEFINING HYPERSONIC</title>
    </sec>
    <sec id="sec-3">
      <title>Analysing Requirements by Stakeholder</title>
      <p>Moving modeling tools to the Cloud is not primarily
motivated by technological reasons, but by new application
scenarios and business cases. In this section we analyze these
application scenarios and business cases to highlight the
advantages of our proposed architecture. We start by
describing the status-quo, considering the stakeholders \tool
provider", \modeler", \IT administrator", and \MBSD
community", where MBSD stands for Model Based Software
Development. Observe that all of these stakeholders exist in
similar ways both in academic and commercial settings. We
argue that the current state of the MBSD tool landscape is
unsatisfactory for the stakeholders in several ways.</p>
      <p>To a modeler, tools come as xed packages: it is usually
not possible (or not practical) to use one aspect, the editor,
say, of one tool, and another aspect of a second tool. For
instance, if the modeler appreciates the editing facilities of
tool A, but that tool does not provide (adequate) code
generation facilities, code generation may be di cult. It may
not be economically viable due to the cost of purchasing two
tools, or it may actually be impossible to use the editor of
tool A combined with the code generator of another tool,
unless both tools strictly adhere to model interchange
standards. Also, from a modeler's perspective, resource intensive
tasks may take an unreasonably long time to complete when
executed locally.</p>
      <p>To an IT administrator, repeatedly deploying tools to a
large number of computers implies additional e ort. Even if
this e ort is not incurred by the actual deployment (that
might be expected to be taken care of by the modelers
themselves), it becomes inevitable when distributing
updates and xes, help-desk services, and possibly ensuring
that the tool's license usage is compliant with the agreement
entered in with the tool vendor.</p>
      <p>To the tool provider, delivering a modeling solution as
a self-contained product with all the business logic on the
client side makes it di cult to support the wide array of
emerging computing devices. Migrating a large modeling
tool to a tablet, smartphone, or Web interface would likely
require extensive re-implementation, not to mention that
the hardware requirements of many modeling tools are still
prohibitive for mobile devices. Furthermore, separating the
highly critical (and sometimes highly innovative) and
noncritical functionalities of the application is cumbersome, yet
still achievable through plug-ins. The distribution of
counterfeit copies of the tool is also di cult to mitigate.</p>
      <p>To the MBSD community, all of these factors are limiting,
in much the same way as super cial di erences between
preUML modeling languages created niche markets for many
di erent tools that were more expensive and less powerful
than the UML tools that emerged after the uni cation of
mainstream modeling languages in the late 1990's.</p>
      <p>In a nutshell, the existing situation is suboptimal. Thus,
we propose a di erent architecture: compute-intensive
features and features with a high degree of innovation should
be deployed to and executed in the Cloud rather than on the
client machine. The client and server in this architecture are
coupled loosely, by Web services, so that providing a new
feature amounts to providing a new Web service. Such
features can include advanced model analysis tools, code and
report generation, and model transformation. Conversely,
features of smaller distinctive value and small change rates,
as well as features that require a higher degree of
interactivity, can continue to be implemented as part of the client
application. This will likely be the case for pure editing
features, which many commercial vendors already o er as free
community editions of their tools.</p>
      <p>We have hinted at a set of criteria for determining which
features of a modeling tool should be executed locally, and
which would bene t from being migrated to the Cloud.
Table 1 summarizes these criteria and presents examples.
2.2</p>
    </sec>
    <sec id="sec-4">
      <title>Benefits of Modeling in the Cloud</title>
      <p>Several advantages can be achieved by breaking up today's
monolithic modeling tools into one stable, remote part that
provides little added value distinguishing products (e. g.,
the editor), and a second, centralized part that comprises
more advanced features with a higher change rate and higher
distinctive value.</p>
      <p>First, there are the advantages associated with thin-client
systems in general: maintaining one central server instead of
many remote clients reduces the work e ort for IT
administrators and ensures that modelers always have access to the
latest version of the modeling tool. It also becomes easier
to monitor license usage, which bene ts administrators and
tool providers alike.</p>
      <p>Second, there are advantages rooted in the speci c
properties of Cloud-based solutions. This includes the availability
high interactivity &amp; incidence
high degree of stability
exchangeable features
editing
simple syntax checking
automatic layout
context speci c help
di erence visualization
querying and navigation
Cloud-based Features
high resource consumption
high degree of innovation
unique features
reporting
global consistency checking
advanced model analysis
check in/out, locking
di erence computation
code generation
of considerable computational resources to each individual
user at reduced overall cost, as well as high scalability of the
available resources with an increasing number of users.</p>
      <p>
        Third, a scenario in which some modeling facilities are
provided as services is conductive to model interchange
standards conformance. In such a scenario, service providers
and client tool providers must both conform to model
interchange standards such as the XML Metadata Interchange
(XMI, [
        <xref ref-type="bibr" rid="ref22">22</xref>
        ]) in order to meet the requirements of modelers.
      </p>
      <p>Fourth, there are advantages brought about by changes
in the business model and enabling market mechanisms.
Today, the modeling tool market is dominated by
companies providing feature-complete bundles. A new competitor
can only enter the market by providing a feature-complete
solution, which all but excludes small companies and
academic tool providers. Innovative analysis methods,
specialized code generators, and similar tools can only be provided
as plug-ins to one of the existing platforms, sometimes
depending on the approval of the platform owner. In contrast,
with a service-based architecture, tool providers can enter
the market at lower cost, since they only have to provide
their contribution per se, not a feature complete-tool. They
can also address a larger part of the market, as they provide
a generic Web service rather than a platform speci c
plugin that applies to only one modeling tool. Modelers, on the
other hand, can mix and match services as they like within
the limits of standardized exchange formats.</p>
      <p>It is likely that the described change in dynamics of the
modeling tools market will inspire an increase in
competitiveness between existing tool providers, while at the same
time providing an incentive for new providers to enter the
market. Both these developments will likely lead to a higher
degree of innovation. This could translate into new concepts
from academia dissipating to industrial modeling at a faster
pace. Users will thus have both a nancial and a technical
incentive to experiment with new features.</p>
      <p>From a nancial perspective, tool providers will be able to
bill features separately as subscription Web services. This
could reduce unit prices for customers, who only buy the
features they need, and may subscribe to services as they need
them. Spending on expensive \shelfware" can be reduced
or avoided altogether. For the supplier, this opens the
perspective of a new business model in which a steady stream
of revenue is generated through subscription services, while
features of high distinctive value are much better protected
against counterfeiting.</p>
      <p>It must be mentioned, though, that adopting a
servicebased approach to modeling entails some trade-o s. Most
are caused by the distributed nature of the approach. For
instance, the process of uploading large models to a
Cloudbased service may constitute a performance bottleneck.
Security and privacy are also new aspects that come into play,
considering that a centralized warehouse will store models
owned by di erent organizations. These organisations must
be able to trust that not only will their models not be
accessible to other users, but they will also be protected against
unauthorised mining by the modeling service provider. And,
perhaps most importantly, the usefulness of the solution is
dependent on a working Internet connection. Nevertheless,
these drawbacks are common to the majority of Software as
a Service (SaaS) solutions, and have not undermined this
architecture style's acceptance.
2.3</p>
    </sec>
    <sec id="sec-5">
      <title>A Test Case for Hypersonic</title>
      <p>In Section 2.1 we have discussed which types of features
lend themselves to deployment as Web services. We now
select one feature, clone detection, as a test case for exploring
the proposed architecture (i. e., the Hypersonic API). Our
selection is motivated by the following considerations.</p>
      <p>
        The feature is well researched, published, and
implemented (see [
        <xref ref-type="bibr" rid="ref26">26</xref>
        ] and [
        <xref ref-type="bibr" rid="ref27">27</xref>
        ], respectively), and has been
used by a large number of students in several courses
in which it has demonstrated its usefulness. So, the
feature is readily available and arguably valuable.
Clone detection demands signi cant resources, as it is
based on semantic and structural model matching. For
large models, the latency implied by uploading a model
to the Cloud may be o set by savings in run-time
achieved by using a powerful machine in the Cloud.
Detecting clones is an activity carried out as part of
the model quality assurance process. It is normally
not executed concurrently to other modeling activities.
Therefore, in some scenarios, a clone detection feature
is not required or even useful. For example, models
reverse-engineered from code do not require clone
detection if the code is known to be clone-free.
      </p>
      <p>It is a unique feature: no UML modeling tool
currently o ers a clone detection feature. This includes
research prototypes other than our own MACH tool.
It is therefore safe to assert that this feature provides
a high degree of innovation.</p>
    </sec>
    <sec id="sec-6">
      <title>ARCHITECTURE</title>
      <p>A rst step towards the realization of the ideas presented
in Section 2 is the de nition of a common Web service
interface accepted by all stakeholders. The details of such an
interface must be the result of a wide reaching discussion,
which is beyond the scope of this paper. Instead, we take
an exploratory approach and design a RESTful Web service
API for the purpose of Cloud-based model analysis. We
refer to this API as the Hypersonic API. By doing so, we
study the requirements and potential setbacks of processing
models via RESTful Web services.</p>
      <p>
        In keeping with the REST architectural style [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ], the
Hypersonic API exposes resources for clients to interact with
via HTTP requests. The two exposed resources are models
and model. The models resource plays the role of an access
point to Hypersonic's model warehouse, whereas the model
resource represents a single model in the warehouse. These
resources are manipulated via HTTP requests, where the
HTTP method determines the operation to be performed.
In addition, the Hypersonic URL scheme speci es explicit
operations on the model resource as part of the request URL.
The list of supported operations is presented in Table 2.
      </p>
      <p>This architectural approach allows physically decoupling
clients from the execution of the various analysis algorithms
exposed by the Hypersonic API. This aspect is part of the
motivation behind the creation of Hypersonic, since many
of these algorithms are resource demanding on models of
non-trivial size. By using such a Web service API, a large
variety of clients can have access to model analysis
facilities regardless of their hardware capabilities. Fig. 2
highlights this aspect, showing that di erent clients can access
existing analysis algorithms provided by the MACH tool via
the Hypersonic API wrapper. The only prerequisites for
API clients are HTTP support, the ability to process
documents returned by the API, and, optionally, a model viewer.
Note that all of these prerequisites are entirely reasonable
for modern mobile devices.</p>
      <sec id="sec-6-1">
        <title>Smartphone app Web app</title>
      </sec>
      <sec id="sec-6-2">
        <title>Desktop client</title>
      </sec>
      <sec id="sec-6-3">
        <title>Modeling tool plug-in</title>
        <p>HTTP
HTTP</p>
      </sec>
      <sec id="sec-6-4">
        <title>Hypersonic API</title>
      </sec>
      <sec id="sec-6-5">
        <title>MACH</title>
        <p>
          Additional non-functional considerations must be taken
into account to ensure the practicality of the Web service
API. Since using the API implies uploading entire models
to a remote server, security becomes an important factor.
With this in mind, the OAuth [
          <xref ref-type="bibr" rid="ref11">11</xref>
          ] authentication protocol
is a widely used solution that can provide some important
guarantees to Hypersonic users. The most important such
guarantee is that a user cannot gain access to the models
uploaded by other users. When combined with a role-based
authentication policy, a sound authentication mechanism such
as OAuth is an e ective way to manage model access rights.
At a technical level, implementing OAuth will require all
Hypersonic API clients to obtain an access token prior to
using the API. This process can be carried out through a
separate channel, such as a dedicated API management Web
application.
        </p>
        <p>
          From a le format standpoint, Hypersonic currently
supports models stored in the MDXML format, the XMI-based
native format of the MagicDraw modeling tool. That is to
say, some API requests (e. g., POST requests to the
models resource) are expected to have an MDXML document as
payload. Most API response messages carry a JSON [
          <xref ref-type="bibr" rid="ref12">12</xref>
          ]
document as payload, representing either the result of an
analysis operation or a con rmation or error message.
        </p>
        <p>
          The internal components involved in answering a call to
the Hypersonic API are presented in Fig. 3. The
RESTful API component handles HTTP communication with
remote API clients and delegates all actual model processing
to the MACH component. It also forwards all models sent
by clients to the XMI2PL component, which performs a
format translation from the MDXML format to the internal
Prolog-based le format described in [
          <xref ref-type="bibr" rid="ref26">26</xref>
          ]. Once translated,
models are stored in a dedicated model warehouse for future
analysis upon the client's request. The MACH component
exposes several supported model analysis and checking
algorithms [
          <xref ref-type="bibr" rid="ref27">27</xref>
          ]. These algorithms can be applied on models
stored in the warehouse. The MACH component functions
as a self contained black-box, hiding all algorithm
implementations from other components and returning the produced
results encoded as Prolog lists. The RESTful API
component handles the translation of these lists into JSON analysis
reports ready for consumption by the API client. All
processing components are executed inside a single instance of
the SWI-Prolog runtime [
          <xref ref-type="bibr" rid="ref29">29</xref>
          ], thus allowing seamless
intercomponent communication.
        </p>
        <p>The SWI-Prolog runtime should be deployed to either
a public or private Cloud platform. Since all models are
stored separately in a model warehouse, several instances
of the SWI-Prolog runtime can be deployed, assuming that
the model warehouse provides appropriate concurrent
access policies. Persistent model storage can be provided by a
separate Cloud storage service. Since models are stored as
XML and Prolog les, the storage service should support a
document-oriented database management system.
4.</p>
      </sec>
    </sec>
    <sec id="sec-7">
      <title>EVALUATION</title>
      <p>To demonstrate the feasibility of the architecture described
in Section 3, a subset of the proposed Web service API has
been implemented and is publicly accessible1. Due to the
reasons elaborated on in Section 2.3, we have focused on a
Web service providing model clone detection as a minimum
useful scenario. Though important for a nal release, we
have considered features such as user accounts and
authentication beyond the scope of our proof of concept. Both
the prototype API and the model warehouse are currently
hosted on a dedicated server. They do not bene t from
the scalability of a true Cloud deployment, although for the
current proof of concept this is hardly a limiting factor.
1The Hypersonic API is available at the following base URL:
http://hypersonic.compute.dtu.dk
Resource
/models
/models
/model/&lt;id&gt;
/model/&lt;id&gt;
/model/&lt;id&gt;
/model/&lt;id&gt;/clones
/model/&lt;id1&gt;/di /&lt;id2&gt;
/model/&lt;id&gt;/dump
/model/&lt;id&gt;/dump/&lt;me id&gt;
/model/&lt;id&gt;/ nd/&lt;string&gt;
/model/&lt;id&gt;/frequency
/model/&lt;id1&gt;/similarity/&lt;id2&gt;
/model/&lt;id&gt;/size
GET
POST
GET
PUT
DELETE
GET
GET
GET
GET
GET
GET
GET
GET</p>
      <p>MDXML</p>
      <sec id="sec-7-1">
        <title>MDXML</title>
        <p>|
|
|
|
|
JSON</p>
      </sec>
      <sec id="sec-7-2">
        <title>JSON</title>
      </sec>
      <sec id="sec-7-3">
        <title>JSON |</title>
      </sec>
      <sec id="sec-7-4">
        <title>JSON</title>
      </sec>
      <sec id="sec-7-5">
        <title>JSON</title>
      </sec>
      <sec id="sec-7-6">
        <title>JSON</title>
      </sec>
      <sec id="sec-7-7">
        <title>JSON</title>
      </sec>
      <sec id="sec-7-8">
        <title>MDXML</title>
      </sec>
      <sec id="sec-7-9">
        <title>JSON</title>
      </sec>
      <sec id="sec-7-10">
        <title>JSON</title>
      </sec>
      <sec id="sec-7-11">
        <title>JSON</title>
      </sec>
      <sec id="sec-7-12">
        <title>JSON</title>
      </sec>
      <sec id="sec-7-13">
        <title>JSON</title>
      </sec>
      <sec id="sec-7-14">
        <title>JSON</title>
      </sec>
      <sec id="sec-7-15">
        <title>JSON</title>
      </sec>
      <sec id="sec-7-16">
        <title>JSON</title>
      </sec>
      <sec id="sec-7-17">
        <title>JSON</title>
      </sec>
      <sec id="sec-7-18">
        <title>JSON</title>
      </sec>
      <sec id="sec-7-19">
        <title>List all uploaded models.</title>
      </sec>
      <sec id="sec-7-20">
        <title>Upload a model.</title>
      </sec>
      <sec id="sec-7-21">
        <title>Download a model.</title>
      </sec>
      <sec id="sec-7-22">
        <title>Replace a model.</title>
      </sec>
      <sec id="sec-7-23">
        <title>Delete a model.</title>
      </sec>
      <sec id="sec-7-24">
        <title>Detect clones in a model.</title>
      </sec>
      <sec id="sec-7-25">
        <title>List di erences between two models. Options are speci ed in the request payload.</title>
      </sec>
      <sec id="sec-7-26">
        <title>List model elements included in a model.</title>
      </sec>
      <sec id="sec-7-27">
        <title>List the details of a model element. Options are speci ed in the request payload.</title>
      </sec>
      <sec id="sec-7-28">
        <title>Find a string in a model. Options are speci ed in the request payload.</title>
      </sec>
      <sec id="sec-7-29">
        <title>Compute the meta class fre</title>
        <p>quency distribution in a model.</p>
      </sec>
      <sec id="sec-7-30">
        <title>Compute the similarity between</title>
        <p>two models. Options are
specied in the request payload.</p>
      </sec>
      <sec id="sec-7-31">
        <title>Compute the size of a model. Options are speci ed in the request payload.</title>
        <p>Method
Fig. 4 represents a message exchange between a client and
the Hypersonic API. The purpose of this exchange is to
perform clone detection on a model. First, the model is added to
the Hypersonic model warehouse by a POST request to the
models resource. Upon this request's successful handling, a
new model resource representing the model is available to the
client. The resource has a unique identi er returned in the
JSON response document of the initial POST request. The
client then parses this document and extracts the identi er.
Thus, the client is subsequently able to use the identi er to
construct the appropriate URL for a GET request to the
clones operation of the identi ed model resource. The GET
request returns a list of clone candidates, also in the form of
a JSON document (see Listing 1).</p>
        <p>
          The response document includes a model identi er, the
number of detected clones, and a list of discovered clone
candidates. Each clone candidate is described by two model
elements, where one is a possible clone of the other, a numeric
similarity metric computed for the two elements following
the approach presented in [
          <xref ref-type="bibr" rid="ref26">26</xref>
          ], and a clone \kind"
identifying the candidate as either a naturally occurring clone or a
seeded clone. Candidates also Clone candidates are returned
in the descending order of their similarity scores, i. e., the
most likely clone is the rst one in the list.
        </p>
        <p>Listing 1: JSON clone detection report
f
"model ": "1 " ,
" c a n d i d a t e s ": 2 ,
" c l o n e s ": [
f
" t y p e 1 ": "package " ,
" i d 1 ": 2 9 ,
"name 1 ": "R e s e r v e Medium " ,
" t y p e 2 ": "package " ,
" i d 2 ": 9 3 8 ,
"name 2 ": "R e s e r v e Medium " ,
g
" t y p e 1 ": "package " ,
" i d 1 ": 1 8 9 ,
"name 1 ": "Lend Medium " ,
" t y p e 2 ": "package " ,
" i d 2 ": 1 1 9 4 ,
"name 2 ": "Lend Medium " ,
" s i m i l a r i t y ": 1 2 8 . 7 2 8 7 ,
"k i n d ": " n a t u r a l c l o n e " ,</p>
        <p>By conforming to the architecture presented in Fig. 3,
the e ort required to implement the clone detection proof
of concept has been minimal. The RESTful API
functioning as a wrapper around MACH's existing clone detection
implementation consists of around 100 lines of Prolog code,
largely thanks to the comprehensive support o ered by
SWIProlog for the HTTP protocol. Work on implementing the
remaining API calls described in Table 2 is ongoing, as is
work on the API management application that must be in
place in order to to enable user authentication in API calls.</p>
        <p>As a preliminary validation of the API's tness for
purpose, we have created a simple, mobile device friendly Web
application as an API client2. The application supports
selecting a local model le, uploading it to the Hypersonic
model warehouse, and requesting a clone report which it
subsequently displays in tabular form. The application is
written in JavaScript and is executed entirely in the browser
(i. e., it does not rely on a server-side script for calling API
operations). Though it is so far basic in terms of
functionality, this sample client exempli es our vision of Web service
driven modeling tools: using Web 2.0 technologies (REST,
JavaScript, JSON) to enable advanced model analysis
outside the constraints of the desktop and of traditional
modeling environments.
5.</p>
      </sec>
    </sec>
    <sec id="sec-8">
      <title>RELATED WORK</title>
      <p>
        Model analysis is an activity typically performed in local,
non-distributed environments. As an example, the model
clone detection operation considered here as a proof of
concept has scarcely been addressed in itself, but is closely
related to the intensely studied model matching and di
erencing operations. To name just a few proposals in this area,
SiDi [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ] presents a di erencing algorithm targeting UML
Class Diagrams, while the approach presented in [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ] targets
sequence charts, and [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ] is a clone detection proposal aimed
at UML Sequence Diagrams. EMF Di Merge [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] and EMF
Compare 3.0 [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] represent more generic approaches targeting
the Eclipse Modeling Framework (EMF, [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ]).
      </p>
      <p>
        With the increase in size of industrially relevant models
and the increase in complexity of the operations performed
on these models, the need for distributed, Cloud-enabled
modeling solutions has become apparent [
        <xref ref-type="bibr" rid="ref16 ref5">5, 16</xref>
        ]. So far, the
main driver behind Cloud-based modeling research has been
2The client application is available at http://www.compute.
dtu.dk/~rvac/hypersonic. It is currently under
development, and will be updated to support all operations of the
Hypersonic API as they are deployed.
the promise of important performance and scalability gains
for all modeling activities. Perhaps the most fundamental of
these activities, model storage, has attracted several
proposals, including ModelBus [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ], EMFStore [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ], and Morsa [
        <xref ref-type="bibr" rid="ref23">23</xref>
        ].
These are all remote model warehousing solutions o ering
Web service access to the stored models.
      </p>
      <p>
        More advanced activities such as model querying and
transformation have also been addressed. IncQuery-D [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ] is a
tool which takes the established IncQuery tool and adapts
it to a scenario where it can be deployed and accessed in
the Cloud. The Morsa model repository also bene ts from
a dedicated query language, MorsaQL [
        <xref ref-type="bibr" rid="ref24">24</xref>
        ]. A roadmap for
research on Cloud-based model transformations has been
presented in [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ].
      </p>
      <p>
        However, performance gains due to Cloud deployment are
only a part of the overall vision of Hypersonic. Rather than
focusing on the bene ts to the application itself (i. e., model
analysis), Hypersonic emphasises the bene ts brought by a
Cloud-based approach to the interface and availability of
this application. The idea of performing model analysis via
a RESTful Web service API has yet to receive signi cant
attention in the literature. The closest related proposal is
the EMF-REST project [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ], aimed at automatically
generating RESTful Web service interfaces for EMF models, much
like existing EMF tools generate Java APIs for such
models. Like Hypersonic, EMF-REST uses JSON documents to
transport information about remotely stored models.
Nevertheless, while it does provide basic model manipulation
operations, EMF-REST is not designed as a model analysis
tool. Similarly to Hypersonic, EMF-REST is a tool under
ongoing development, one of its current limitations being the
lack of full support for HTTP methods other than GET.
6.
6.1
      </p>
    </sec>
    <sec id="sec-9">
      <title>CONCLUSIONS</title>
    </sec>
    <sec id="sec-10">
      <title>Summary</title>
      <p>In this paper we have discussed the application conditions,
bene ts, and general business case for Cloud-based modeling
tools. In particular, we have presented a scenario in which
modeling capabilities are delivered as Web services to a wide
array of clients, ranging from desktop applications to Web
and mobile applications. We have contrasted this scenario
with the current status-quo of rich client desktop modeling
tools, reaching the conclusion that, in many respects, the
Cloud-based approach is superior.</p>
      <p>To explore our proposal, we have introduced Hypersonic, a
RESTful Web service API aimed at o ering high-throughput
processing for Cloud-based model analysis. We have
implemented this architecture and made it available online.
Currently, the only service it o ers is the detection of model
clones, a feature that was previously only available in the
MACH command line tool. Today, MACH is a stand-alone
desktop tool providing only a textual user interface. Through
the Hypersonic API, the features of MACH can be made
available over the Internet to any API client. As a proof
of concept for the utility of the API, we have developed a
Web application acting as a client to the Hypersonic API
and providing Web-based model analysis capabilities.
6.2</p>
    </sec>
    <sec id="sec-11">
      <title>Future Work</title>
      <p>
        The concepts presented in this paper o er us ample
opportunities for future work. As a rst step, we will continue the
development of the Hypersonic API with the aim of
reaching functional parity with the MACH model analysis tool.
Once this has been achieved, the API will be deployed to
a Cloud platform. In parallel, we will update the sample
Web-based API client to both validate and showcase the
model analysis features of Hypersonic. Second, in order to
become a practical tool, the API client must o er several
critical features such as user authentication and model
security mechanisms. Third, we will carry out a systematic
performance evaluation of MACH in order to substantiate
the claim that Cloud-based model analysis can bring
significant performance bene ts. Finally, we intend to develop a
second client for the Hypersonic API in the shape of a
plugin for MagicDraw. This will permit seamless integration of
our Web services approach with a commercial modeling tool
and complement our existing model querying MagicDraw
plug-in, MQ-2 [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]. As a parallel development, we envision
a Web service API similar to Hypersonic for RED, our
requirements engineering tool [
        <xref ref-type="bibr" rid="ref28">28</xref>
        ].
      </p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1] GenMyModel. http://www.genmymodel.com, retrieved
          <volume>16</volume>
          .05.
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>V.</given-names>
            <surname>Acretoaie</surname>
          </string-name>
          and
          <string-name>
            <given-names>H.</given-names>
            <surname>Sto</surname>
          </string-name>
          <article-title>rrle. MQ-2: A Tool for Prolog-based Model Querying</article-title>
          .
          <source>In Proc. co-located Events 8th Eur. Conf. on Modelling Foundations and Applications (ECMFA'12)</source>
          , pages
          <fpage>328</fpage>
          {
          <fpage>331</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>M.</given-names>
            <surname>Barbero</surname>
          </string-name>
          .
          <source>EMF Compare 3</source>
          .0. http://www.eclipse.org/emf/compare.
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>X.</given-names>
            <surname>Blanc</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.-P.</given-names>
            <surname>Gervais</surname>
          </string-name>
          , and
          <string-name>
            <given-names>P.</given-names>
            <surname>Sriplakich</surname>
          </string-name>
          . Model Bus:
          <article-title>Towards the Interoperability of Modelling Tools</article-title>
          .
          <source>In Proc. European MDA Workshops: Foundations and Applications (MDAFA'03/'04)</source>
          , volume
          <volume>3599</volume>
          <source>of LNCS</source>
          , pages
          <volume>17</volume>
          {
          <fpage>32</fpage>
          . Springer Berlin Heidelberg,
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>H.</given-names>
            <surname>Bruneliere</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Cabot</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Jouault</surname>
          </string-name>
          , et al. Combining
          <string-name>
            <surname>Model-Driven Engineering</surname>
            and
            <given-names>Cloud</given-names>
          </string-name>
          <string-name>
            <surname>Computing</surname>
          </string-name>
          .
          <source>In Proc. 4th Ws. on Modeling, Design, and Analysis for the Service Cloud (MDA4ServiceCloud'10)</source>
          ,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>J.</given-names>
            <surname>Cabot.</surname>
          </string-name>
          EMF-REST. http://emf-rest.com, retrieved
          <volume>16</volume>
          .05.
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>C.</given-names>
            <surname>Clasen</surname>
          </string-name>
          ,
          <string-name>
            <surname>M. D. Del Fabro</surname>
            , and
            <given-names>M.</given-names>
          </string-name>
          <string-name>
            <surname>Tisi</surname>
          </string-name>
          .
          <article-title>Transforming Very Large Models in the Cloud: a Research Roadmap</article-title>
          .
          <source>In Proc. First Intl. Ws. Model-Driven Engineering on and for the Cloud (CloudMDE'12)</source>
          , pages
          <fpage>3</fpage>
          {
          <fpage>12</fpage>
          ,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>O.</given-names>
            <surname>Constant</surname>
          </string-name>
          . EMF Di /Merge. http://wiki.eclipse.org/EMF_DiffMerge.
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>Eclipse</given-names>
            <surname>Foundation</surname>
          </string-name>
          , Inc. Eclipse Modeling Framework (EMF). http://eclipse.org/modeling/emf.
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>R. T.</given-names>
            <surname>Fielding</surname>
          </string-name>
          .
          <article-title>Architectural Styles and the Design of Network-based Software Architectures</article-title>
          .
          <source>PhD thesis</source>
          , University of California, Irvine,
          <year>2000</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>Internet</given-names>
            <surname>Engineering Task</surname>
          </string-name>
          <article-title>Force (IETF)</article-title>
          .
          <source>IETF RFC 6749: The OAuth 2</source>
          .
          <article-title>0 Authorization Framework</article-title>
          . http://tools.ietf.org/html/rfc6749,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>Internet</given-names>
            <surname>Engineering Task</surname>
          </string-name>
          <article-title>Force (IETF)</article-title>
          .
          <source>IETF RFC</source>
          <volume>7159</volume>
          :
          <article-title>The JavaScript Object Notation (JSON) Data Interchange Format</article-title>
          . http://tools.ietf.org/html/rfc7159,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>B.</given-names>
            <surname>Izso</surname>
          </string-name>
          , G. Szarnyas,
          <string-name>
            <surname>I. Rath</surname>
          </string-name>
          , and
          <string-name>
            <given-names>D.</given-names>
            <surname>Varro.</surname>
          </string-name>
          IncQuery-D:
          <article-title>Incremental Graph Search in the Cloud</article-title>
          .
          <source>In Proc. Ws. Scalability in Model Driven Engineering (BigMDE'13)</source>
          , pages
          <fpage>4</fpage>
          <issue>:1</issue>
          {
          <issue>4</issue>
          :
          <fpage>4</fpage>
          , New York, NY, USA,
          <year>2013</year>
          . ACM.
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>U.</given-names>
            <surname>Kelter</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Wehren</surname>
          </string-name>
          , and
          <string-name>
            <given-names>J.</given-names>
            <surname>Niere</surname>
          </string-name>
          .
          <article-title>A Generic Di erence Algorithm for UML Models</article-title>
          . In K. Pohl, editor,
          <source>Proc. Natl. Germ. Conf. Software-Engineering (SE'05)</source>
          , number P-64 in Lecture Notes in Informatics, pages
          <volume>105</volume>
          {
          <fpage>116</fpage>
          . Gesellschaft fur Informatik e.V.
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>M.</given-names>
            <surname>Koegel</surname>
          </string-name>
          and
          <string-name>
            <surname>J. Helming.</surname>
          </string-name>
          <article-title>EMFStore: a Model Repository for EMF models</article-title>
          .
          <source>In Proc. 32nd ACM/IEEE Intl. Conf. on Software Engineering (ICSE'10)</source>
          , volume
          <volume>2</volume>
          , pages
          <fpage>307</fpage>
          {
          <fpage>308</fpage>
          . ACM,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>D. S.</given-names>
            <surname>Kolovos</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L. M.</given-names>
            <surname>Rose</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Matragkas</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R. F.</given-names>
            <surname>Paige</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E.</given-names>
            <surname>Guerra</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J. S.</given-names>
            <surname>Cuadrado</surname>
          </string-name>
          ,
          <string-name>
            <surname>J. De Lara</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          <string-name>
            <surname>Rath</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          <string-name>
            <surname>Varro</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          <string-name>
            <surname>Tisi</surname>
            , and
            <given-names>J.</given-names>
          </string-name>
          <string-name>
            <surname>Cabot</surname>
          </string-name>
          .
          <article-title>A Research Roadmap Towards Achieving Scalability in Model Driven Engineering</article-title>
          .
          <source>In Proc. Ws. Scalability in Model Driven Engineering (BigMDE'13)</source>
          , pages
          <fpage>2</fpage>
          <issue>:1</issue>
          {2:
          <fpage>10</fpage>
          , New York, NY, USA,
          <year>2013</year>
          . ACM.
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <given-names>H.</given-names>
            <surname>Liu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Z.</given-names>
            <surname>Ma</surname>
          </string-name>
          , L. Zhang, and
          <string-name>
            <given-names>W.</given-names>
            <surname>Shao</surname>
          </string-name>
          .
          <article-title>Detecting duplications in sequence diagrams based on su x trees</article-title>
          .
          <source>In 13th Asia Paci c Software Engineering Conf. (APSEC)</source>
          , pages
          <fpage>269</fpage>
          {
          <fpage>276</fpage>
          .
          <string-name>
            <surname>IEEE</surname>
            <given-names>CS</given-names>
          </string-name>
          ,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>P.</given-names>
            <surname>Mell</surname>
          </string-name>
          and
          <string-name>
            <given-names>T.</given-names>
            <surname>Grance</surname>
          </string-name>
          .
          <source>The NIST De nition of Cloud Computing. Technical Report 800-145</source>
          , National Institute of Standards and Technology,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <given-names>S.</given-names>
            <surname>Nejati</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Sabetzadeh</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Chechik</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Easterbrook</surname>
          </string-name>
          , and
          <string-name>
            <given-names>P.</given-names>
            <surname>Zave</surname>
          </string-name>
          .
          <article-title>Matching and merging of statecharts speci cations</article-title>
          .
          <source>In Proc. 29th Intl. Conf. Software Engineering (ICSE)</source>
          , pages
          <fpage>54</fpage>
          {
          <fpage>64</fpage>
          . IEEE Computer Society, IEEE Computer Society,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <given-names>NoMagic</given-names>
            <surname>INC. MagicDraw Teamwork</surname>
          </string-name>
          <article-title>Server</article-title>
          . http: //www.nomagic.com/products/teamwork-server,
          <source>retrieved 16.05</source>
          .
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21]
          <article-title>NoMagic INC</article-title>
          .
          <source>MagicDraw UML 17.0</source>
          .3. http://www.nomagic.com/products/magicdraw, retrieved
          <volume>16</volume>
          .05.
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [22]
          <string-name>
            <given-names>Object</given-names>
            <surname>Management</surname>
          </string-name>
          <article-title>Group (OMG)</article-title>
          .
          <source>OMG MOF 2 XMI Mapping Speci cation, Version 2.4</source>
          .1. http://www.omg.org/spec/XMI/2.4.
          <issue>1</issue>
          ,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          [23]
          <string-name>
            <given-names>J. E.</given-names>
            <surname>Pagan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J. S.</given-names>
            <surname>Cuadrado</surname>
          </string-name>
          , and
          <string-name>
            <given-names>J. G.</given-names>
            <surname>Molina. Morsa</surname>
          </string-name>
          :
          <article-title>A Scalable Approach for Persisting and Accessing Large Models</article-title>
          .
          <source>In Proc. 14th Intl. Conf. Model Driven Engineering Languages and Systems (MODELS'11)</source>
          , volume
          <volume>6981</volume>
          <source>of LNCS</source>
          , pages
          <volume>77</volume>
          {
          <fpage>92</fpage>
          . Springer Berlin Heidelberg,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          [24]
          <string-name>
            <given-names>J. E.</given-names>
            <surname>Pagan</surname>
          </string-name>
          and
          <string-name>
            <given-names>J. G.</given-names>
            <surname>Molina. Querying Large Models E ciently. Inf</surname>
          </string-name>
          . Softw. Tech., pages
          <volume>586</volume>
          {
          <fpage>622</fpage>
          ,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          [25]
          <string-name>
            <surname>Pocketworks</surname>
          </string-name>
          . yUML. http://yuml.me, retrieved
          <volume>16</volume>
          .05.
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          [26]
          <string-name>
            <given-names>H.</given-names>
            <surname>Sto</surname>
          </string-name>
          <article-title>rrle. Towards Clone Detection in UML Domain Models</article-title>
          .
          <source>J. Softw. Syst. Model.</source>
          ,
          <volume>12</volume>
          (
          <issue>2</issue>
          ),
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref27">
        <mixed-citation>
          [27]
          <string-name>
            <given-names>H.</given-names>
            <surname>Sto</surname>
          </string-name>
          <article-title>rrle. UML Model Analysis and Checking with MACH</article-title>
          .
          <source>In 4th Intl. Ws. Academic Software Development Tools and Techniques (WASDETT'13)</source>
          ,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref28">
        <mixed-citation>
          [28]
          <string-name>
            <given-names>H.</given-names>
            <surname>Sto</surname>
          </string-name>
          <article-title>rrle and M. Kucharek. The Requirements Editor RED</article-title>
          .
          <string-name>
            <surname>In</surname>
            <given-names>ECOOP</given-names>
          </string-name>
          ,
          <source>ECSA and ECMFA 2013: Joint Proceedings of Tools, Demos and Posters</source>
          , pages
          <volume>32</volume>
          {
          <fpage>34</fpage>
          ,
          <year>2013</year>
          .
          <source>DTU Technical Report 2014-01.</source>
        </mixed-citation>
      </ref>
      <ref id="ref29">
        <mixed-citation>
          [29]
          <string-name>
            <given-names>J.</given-names>
            <surname>Wielemaker</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Schrijvers</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Triska</surname>
          </string-name>
          , and
          <string-name>
            <given-names>T.</given-names>
            <surname>Lager.</surname>
          </string-name>
          SWI-Prolog.
          <source>Theory and Practice of Logic Programming</source>
          ,
          <volume>12</volume>
          (
          <issue>1-2</issue>
          ):
          <volume>67</volume>
          {
          <fpage>96</fpage>
          ,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>