<!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>Towards an MDA Mechanism for RESTful Services Development</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Christoforos Zolotas</string-name>
          <email>christopherzolotas@issel.ee.auth.gr</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Andreas L. Symeonidis</string-name>
          <email>asymeon@eng.auth.gr</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Electrical and Computer Engineering Dept., Aristotle University of Thessaloniki</institution>
          ,
          <addr-line>GR541 24, Thessaloniki</addr-line>
          ,
          <country country="GR">Greece</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>-Automated software engineering research aspires to lead to more consistent software, faster delivery and lower production costs. Meanwhile, RESTful design is rapidly gaining momentum towards becoming the primal software engineering paradigm for the web, due to its simplicity and reusability. This paper attempts to couple the two perspectives and take the first step towards applying the MDE paradigm to RESTful service development at the PIM zone. A UML profile is introduced, which performs PIM meta-modeling of RESTful web services abiding by the third level of Richardson's maturity model. The profile embeds a slight variation of the MVC design pattern to capture the core REST qualities of a resource. The proposed profile is followed by an indicative example that demonstrates how to apply the concepts presented, in order to automate PIM production of a system according to MOF stack. Next steps include the introduction of the corresponding CIM, PSM and code production. Index Terms-Model Driven Engineering; RESTful services; UML Profiles; Meta-modeling; Automated Software Engineering</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>I. INTRODUCTION</title>
      <p>
        The Representational state transfer (REST) architectural
style, exhibits four principal design attributes [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]:
1) The Resource Oriented design, which models each
concept as a resource that is addressable with a unique URI
2) The various types of representations a resource may have
3) The usage of HTTP as a web API that offers a uniform
interface for all resources
4) The hypermedia, the “engine of application state”, which
is the semantic interweaving of related resources.
      </p>
      <p>
        Once these co-exist, the produced web service falls into the
third level of Richardson’s maturity model [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] (RMM).
Practically, these design principles allow the simple, yet efficient
REST technology to gain acceptance and a bigger share of
the programmable web. However, development of RESTful
web services, just like any other kind of software, is prone to
the common pitfalls of the established software engineering
practices that may lead to project failure, late delivery, high
costs or inability to serve the goals they were built for.
      </p>
      <p>
        Aiming to reduce such risks, the Object Management Group
(OMG) announced at the beginning of the previous decade
a new development paradigm towards increased automation,
the Model Driven Architecture (MDA) [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ], which as a Model
Driven Engineering instance shifts the focus of the developer
from programming language code to models and
transformations. The main goal of MDA is to raise the level of
abstraction, keeping the developer sheltered from implementation
details, thus allowing him to focus on the real problem at
hand. MDA development comprises the following phases also
depicted in figure 1:
      </p>
      <sec id="sec-1-1">
        <title>1) Introduction of the Computation Independent Model</title>
        <p>(CIM), which identifies the abstract domain entities
without any design or implementation details
2) Transformation of the CIM into the Platform
Independent Model (PIM), which introduces the
abstract design of the envisioned system, without any
implementation details
3) Transformation of the PIM into the Platform Specific
Model (PSM), which is an instance of the PIM enriched
with concrete implementation details
4) Finally, production of software code from the PSM
This paper aims to take the first step towards applying
the MDA paradigm to RESTful web services development in
order to achieve increased automation, consistency, and faster
delivery of quality code. It attempts to overcome deficiencies
of other relevant approaches and introduces a UML profile
serving as a meta-model for the PIM of a RESTful web
service. This proposed meta-model, coupled with the related
meta-models for CIM, PSM and code templates, define the
essential infrastructure to accomplish automation in RESTful
service development.</p>
      </sec>
      <sec id="sec-1-2">
        <title>B. UML Profile Context</title>
        <p>
          This paper describes a UML profile that is a part of the
automated software engineering strategy followed within project
SCASE, an EU funded project for automating RESTful services
[
          <xref ref-type="bibr" rid="ref1">1</xref>
          ]. S-CASE is a cloud based software framework aiming to
facilitate fast RESTful web service prototyping and delivery
by providing the core capabilities depicted in figure 1. Firstly,
multi-modal input is provided to the S-CASE engine such
as software functional requirements, analysis class diagrams,
storyboards etc., which are then processed semantically in
order to extract any involved software entities. These entities
are provided as input to the MDE component, which then
outputs the CIM of the service to be produced. Once the
CIM is produced, the MDE component traverses through the
aforementioned MDA phases, from CIM to PIM, PIM to PSM
and PSM to code by means of model transformations.
        </p>
        <p>Within the context of this paper the focus is on the MDE
component (highlighted) and more specifically on the UML
profile serving as the S-CASE engine PIM meta-model. As
already mentioned (and later explained), the UML profile
ensures that the semi-automatically produced system has all
the core design attributes of the REST style alongside some
useful design properties, such as seperation of interfaces from
their implementations and uniform access to databases.</p>
      </sec>
      <sec id="sec-1-3">
        <title>C. Paper Structure</title>
        <p>The structure of this paper is as follows. Section 2 discusses
relevant work. Section 3 presents the proposed UML profile
with its constraints. Section 4 illustrates automated PIM
production of a social media application. Section 5 summarizes
the work performed, probes on future work and concludes the
paper.</p>
      </sec>
    </sec>
    <sec id="sec-2">
      <title>II. BACKGROUND - RELEVANT WORK</title>
      <p>
        MDE has been applied to several domains and has received
both appraisal (higher productivity, increased formalism and
increased automation) and criticism (complexity of modeling
itself, varying automation and often mostly for code
generation, lack of coherence among MDE tools, etc) [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]. Thus, while
one may argue that MDE cannot be considered a “panacea”
for software development, the simple, unambiguous design
concepts of REST, as discussed in the introductory section of
this paper, predispose for succesful application of the MDA
paradigm on REST applications.
      </p>
      <p>
        Related work regarding MDE for the RESTful services
domain mainly focuses on the introduction of approaches
to capture RESTful services with annotated description
languages. Such efforts include work by Kopecky et al. that
introduce hREST [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ], Maleshkova et al. that extend SAWSDL
to annotate RESTful services as well [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ], and Pagliarecci et al.
that introduce SWSAL [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ]. One should also mention work
by Tavares et al. [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ], who introduced a meta-model for the
various semantic annotation languages of RESTful services,
aiming to achieve increased interoperability among them. The
above approaches mainly focus on the semantic annotation
of RESTful services and their characteristics, rather than the
software engineering process itself.
      </p>
      <p>
        In a more MDE-focused research direction, Ormeno et al.
[
        <xref ref-type="bibr" rid="ref9">9</xref>
        ] aspire to apply MDE to Spring Roo software artefacts in
order to facilitate development of RESTful services through
the IDE. Taking the problem from the applied to a more
generic level, S. Shreier [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ] attempted to create an initial
version of a meta-model for RESTful services using as basis
the Ecore meta-model which is based on the EMOF of
OMG. There are also numerous other frameworks that attemp
to model RESTful service but they either do not include
hypermedia generation or they are semi-automated. Hence,
this paper presents a meta-model to support third level web
services in regard to RMM.
      </p>
    </sec>
    <sec id="sec-3">
      <title>III. METAMODELING RESTFUL SERVICES</title>
      <sec id="sec-3-1">
        <title>A. Grounding Definitions</title>
        <p>Before discussing the extended UML meta-model for
RESTful services, the way the PIM versus PSM on the MOF layer
stack are conceptualized within this paper must be clarified;
hence follow two definitions:</p>
      </sec>
      <sec id="sec-3-2">
        <title>D1: A target platform is the combination of all concrete technologies and designs used to form a system. PSM refers to such a platform.</title>
      </sec>
      <sec id="sec-3-3">
        <title>D2: A platform independent system is formed by the com</title>
        <p>bination of technology abstractions and abstract design
paradigms. PIM refers to such an abstract platform.</p>
      </sec>
      <sec id="sec-3-4">
        <title>For example the HTTP verbs POST, READ, PUT, DELETE</title>
        <p>are the realization of the abstract CRUD verbs. Hence, the
presented meta-model uses the concept of CRUD verbs instead.</p>
      </sec>
      <sec id="sec-3-5">
        <title>B. The UML Profile Key Features</title>
        <p>
          This subsection presents a (simplified) meta-model of the
REST concepts and database schemas that frequently
accompany web services. A UML profile mechanism [
          <xref ref-type="bibr" rid="ref4">4</xref>
          ] is employed
that allows varying the meaning of UML meta-model by
applying to it stereotypes, tags and constraints. This profile
is depicted in figure 2.
        </p>
        <p>The profile definition begins by modeling the resource,
which is the core of a RESTful service. Abiding by the
separation of concerns approach followed by the MVC pattern,
the Model Representation Controller or MRC pattern of a
resource is introduced. According to MRC, a resource
comprises a ResourceModel that encapsulates resource data, some</p>
      </sec>
      <sec id="sec-3-6">
        <title>ResourceRepresentations each of which has a MediaType tag,</title>
        <p>and a ResourceController that has a unique URI and exposes
the resource’s uniform interface.</p>
        <p>This interface is modeled by extending the UML
metaclass “operation” with the stereotype CRUDActivity. Since
there are four discrete CRUD verbs a CRUDActivity can
be of type CreateActivity, ReadActivity, UpdateActivity or
DeleteActivity to match the meaning of each CRUD verb.</p>
      </sec>
      <sec id="sec-3-7">
        <title>Every CRUDActivity may have some inputMediaTypes and/or</title>
        <p>some outputMediaTypes, according to its type, in order to
model web communication formats such as XML or JSON.</p>
        <p>The Hypermedia concept of REST is modeled by extending
the UML meta-class “Association” with the stereotype
RelatedResource. This extension intends to model both types of
interresource relationships. That is, a resource may have related
resources, or be related resource of others. The RelatedResource
stereotype has two tags, the uri that links to a related resource
and the ConditionSet, which is a set of conditions that must be
met if the resources are to be considered related. Furthermore,
to allow the association of a resource’s specific CRUDActivity
with one of another resource, the RelatedCRUDActivity data
type is added to the profile. This one, apart from the
ConditionSet and the uri of the related resource, also incorporates the
CRUDActivity to be accessed if the ConditionSet is fulfilled. In
either case, if the Conditions are met, the expected behavior of
a RESTful service is to embed into the outgoing representation
all the related URIs that would allow the client to forward the
application state. The introduced profile models these controls
with the HypermediaLink data type, which comprises an href
attribute that stores the uri of accessible related resources, a rel
attribute that describes the relation between the interconnected
resources, and the CRUDVerb attribute that specifies which
CRUDVerb must be used.</p>
      </sec>
      <sec id="sec-3-8">
        <title>C. Business Logic and Uniform Storage</title>
        <p>In order to allow separation of concerns, another extension
of the meta-class “class” is added to the UML profile, the
CRUDActivityHandler. This addition aims to gather the
business logic of the resource in (CRUDActivityHandlers) and let
the CRUDActivities handle the high level semantics of the web
interface. Following the same pattern, there is one type of</p>
      </sec>
      <sec id="sec-3-9">
        <title>CRUDActivityHandler for each CRUD verb.</title>
        <p>Finally, in order to introduce a uniform storage mechanism,
the profile embeds the Repository design pattern with the
RepositoryController stereotype. This is a dedicated
component to handle the I/O operations with the underlying relational
database. The relational database schema is modeled with four
more extensions, the RDBMSTable and Column stereotypes, as
well as the PrimaryKey and ForeignKey stereotypes to model
the corresponding relational database concepts.</p>
      </sec>
      <sec id="sec-3-10">
        <title>D. Meta-model Constraints</title>
        <p>Typically, the presented extensions are accompanied by a
list of constraints, usually in OCL. Since providing a full list
of OCL constraints is out of the scope of this paper, this
subsection presents a visualization of them (figure 3). These
constraints depict which components of the profile may be
associated with which, or composed of, other components.</p>
        <p>The core of this meta-model, the resource, comprises a</p>
      </sec>
      <sec id="sec-3-11">
        <title>ResourceModel with at least one ResourceRepresentation and</title>
        <p>exactly one ResourceController that handles its web requests.</p>
      </sec>
      <sec id="sec-3-12">
        <title>Every such ResourceModel may have some RelatedResources</title>
        <p>and may be related resource of some others. The
ResourceController handles the requests that must conform to the
uniform CRUD API, so it must have one CRUDActivity for
each CRUD verb of the overlying resource. Since a resource
can have many representations, a ResourceController must
have one CRUDActivity for every input/output media type to
be supported and every media type that is to be supported
must be of a ResourceRepresentation type that this specific
ResourceModel is associated with. The allowed media types
per CRUDActivity type are listed in table 1.</p>
        <p>
          Moreover, since some resources may be related to non
CRUD verb operations that are not allowed due to the uniform
interface constraint, the Richardson’s [
          <xref ref-type="bibr" rid="ref11">11</xref>
          ] design solution is
followed. Thus a new, algorithmic, resource is added with
CRUD interface in order to model the initial non CRUD
operation. This case will be further clarified in the example
that is presented in the next section.
        </p>
        <p>Separating the business logic implementation from the
uniform web API as explained earlier, each ResourceController
has exactly one composition association with a
CRUDActivity</p>
      </sec>
      <sec id="sec-3-13">
        <title>Handler for every CRUDActivity it has. In turn, each CRUDActivityHandler accesses the unique RepositoryController of the</title>
        <p>system in order to query the underlying database. The
RepositoryController must have exactly one RDBMSSelectActivity for
every ReadActivityHandler that is connected to it and simirarly
one RDBMSInsertActivity for every CreateActivityHandler,
one RDBMSDeleteActivity for every DeleteActivityHandler
and one RDBMSUpdateActivity for every
UpdateActivityHandler. All these handle the low level database querying. The
database comprises of at most one RDBMSTable for every</p>
      </sec>
      <sec id="sec-3-14">
        <title>ResourceModel of the system. Each RDBMStable has one</title>
        <p>PrimaryKey, none or more ForeignKeys and as many columns
as the properties of the respective ResourceModel.</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>IV. ILLUSTRATIVE AUTOMATED PIM PRODUCTION</title>
      <sec id="sec-4-1">
        <title>A. The RESTMARKS Application</title>
        <p>This section demonstrates the steps to be followed in order
to automatically produce the PIM of a test application. The
application at task is called RESTMARKS, a social media
application that allows users to create and tag bookmarks, or
search its database to retrieve bookmarks that either they own
or are public bookmarks of other users. In this example it is
assumed that the functional requirements (FR) of RESTMARKS
are the following:
FR1: A guest user must be able to create an account by
providing a username and a password.</p>
        <p>FR2: A user must be able to update his/her account.
FR3: A user must be able to add, delete, retrieve or update
any bookmark of his/her account.</p>
        <p>CRUDActivity has -isRAelgsooriuthrmceic?</p>
        <p>Related Resource
- with Condition Set
has</p>
        <p>Property
FR4: A user must be able to mark a personal bookmark as
public or private.</p>
        <p>FR5: A user must be able to add tags to his/her bookmarks.
FR6: Any user must be able to search by tag the bookmarks.</p>
      </sec>
      <sec id="sec-4-2">
        <title>B. From Requirements to PIM</title>
        <p>Producing the CIM is the first step of MDA paradigm.
However since this paper focuses on PIM meta-modeling and
due to space limitations, only an indicative CIM meta-model
is provided that is proper for the PIM meta-model that is
presented.</p>
        <p>This illustrative CIM meta-model (figure 4) comprises
resources that can have related resources should a condition set
is satisfied. They can be algorithmic or non-algorithmic, as
already discussed, and have some properties. Moreover, the
resources may have some CRUD activities, at most one of
each type.</p>
        <p>Abiding by this meta-model and taking into account the
functional requirements, figure 5 demonstrates one possible
RESTMARKS CIM. In this case there are four resources,
the Account, Bookmark, Tag and TagSearch ones, whilst the
TagSearch is the only non-algorithmic resource. Additionally,
the Account resource has the password and a username
properties(FR1), the Bookmark resource has a URL and scope
(FR3-FR4) and the Tag one has a textual description
property (FR5). Moreover, the assigned CRUD activities to the
Account resource are the update and create one (FR1-FR2)
whilst to the Bookmark and Tag ones, all the possible CRUD
URL</p>
        <p>Scope</p>
        <p>Related Resource
- no conditions</p>
        <p>Update</p>
        <p>Delete
Description</p>
        <p>Delete
activities. Finally, figure 5 demonstrates the relations among
the resources.</p>
      </sec>
      <sec id="sec-4-3">
        <title>C. Identifying the Resources</title>
        <p>The process begins with transforming the CIM resources to
their PIM counterparts, which comprises one ResourceModel
one ResourceController and some ResourceRepresentations.
In RESTMARKS case the identified resources are the Account,
Bookmark, Tag and TagSearch. All these components are
interconnected as prescribed by the meta-model constraints,
so every ResourceController has a unidirectional association
with the corresponding ResourceModel, which in turn has a
unidirectional association with its ResourceRepresentations.</p>
        <p>Once the resources are added to the PIM, their properties
are added to the respectiveResourceModels. In this case the</p>
      </sec>
      <sec id="sec-4-4">
        <title>AccountModel has the password and username properties, the</title>
      </sec>
      <sec id="sec-4-5">
        <title>BookmarkModel has the url and scope and the TagModel has the description.</title>
      </sec>
      <sec id="sec-4-6">
        <title>D. Identifying the Relations Among Resources</title>
        <p>The next step is to apply the identified relations among the
resources. In RESTMARK’s CIM case, the AccountModel is
not a related resource of any other resource, but has as related
resource the BookmarkModel. Therefore, a RelatedResource
unidirectional association is added from AccountModel
towards BookmarkModel. In the same pattern, figure 6
demonstrates the semantic interweaving of all the resources.</p>
      </sec>
      <sec id="sec-4-7">
        <title>E. Adding CRUD Verb Activities</title>
        <p>The next step is to add every CRUDActivity that is allowed
on a specific CIM resource to the respective PIM
Resource</p>
      </sec>
      <sec id="sec-4-8">
        <title>Controller. Hence, the CreateAccount and UpdateAccount</title>
        <p>CRUDActivities are added to AccountController and likewise
the createBookmark, readBookmark, updateBookmark and
deleteBookmark CRUDActivities to BookmarkController and
so on. Moreover, following the meta-model constraints, each
ResourceController must have exactly one unidirectional
composition association with a CRUDActivityHandler for every</p>
      </sec>
      <sec id="sec-4-9">
        <title>CRUDActivity of the same type. Thus, AccountController has a</title>
        <p>createAccountActivityHandler and an
updateAccountActivity</p>
      </sec>
      <sec id="sec-4-10">
        <title>Handler, while the BookmarkController and the TagController have every type of CRUDActivityHandlers.</title>
      </sec>
      <sec id="sec-4-11">
        <title>F. Creating the Relational Schema</title>
        <p>Creating the underlying database is the next step, once the
ResourceModels are in place. Thus, for every non algorithmic</p>
      </sec>
      <sec id="sec-4-12">
        <title>ResourceModel of the PIM, an RDBMSTable is added to it.</title>
        <p>Therefore, the tables Account, Bookmark and Tag are added to
the RESTMARKS PIM. Subsequently, for each ResourceModel
property, a column is added to the respective table. Therefore,
the columns username and password are added to the Account
table, the columns url and scope to table Bookmark so on.</p>
        <p>However, for relational reference, each RDBMSTable must
have exactly one primary key. Therefore, a new column as
a primary identifier is added to each table with the same
name as the table, post-fixed with id. Hence the primary key</p>
      </sec>
      <sec id="sec-4-13">
        <title>AccountId is added to table Account, and BookmarkId and</title>
        <p>TagId to tables Bookmark and Tag repsectively. Finally, in
order to achieve consistent mapping among the schema tables
and the ResourceModels, one more property is added to each
of them with the same name and type as the primary key of
each schema table. Therefore, the property AccountId is added
to AccountModel, BookmarkId to BookmarkModel and TagId
to TagModel.</p>
        <p>Establishing proper cross-reference among the interweaved
resources with foreing keys, is the last step to produce the
database schema. For every resource X that is a related
resource of another one Y, the primary key of that table Y
is added as foreign key to the table X. In this case, the foreign
key BookmarkId is added to table Tag and the foreign key</p>
      </sec>
      <sec id="sec-4-14">
        <title>AccountId to table Bookmark.</title>
      </sec>
      <sec id="sec-4-15">
        <title>G. Creating the RepositoryController</title>
        <p>The final step towards PIM production is to create the
schema controller so that all CRUDActivityHandlers have
access to the persistent storage. Thus, the RDBMSController
is added to the system. As prescribed in the profile constraints,
the RepositoryController must have one RDBMSSelectActivity
for every read activity, one RDBMSInsertActivity for every
create activity, one RDBMSDeleteActivity for every delete
activity and one RDBMSUpdateActivity for every update
activity.In this context the createAccount RDBMSInsertActivity is
added and the updateAccount RDBMSUpdateActivity as well.
In a similar manner, the respective RDBMSSelectActivities are
defined for the other resources.</p>
        <p>Once all the above steps are executed, by an algorithm
that conforms to the presented meta-model, the RESTMARKS
PIM is completed (figure 6). This PIM would then be the
input to another PSM generation algorithm that conforms to
an appropriate for this PIM, PSM. That PSM in turn, would
contain the needed meta-data for code production based on
code templates. In general, should the MDA paradigm is
followed by using the presented profile, once the developer
completes creating the CIM, the rest is automated up to the
PIM creation. Should the PSM and code generation
components are defined likewise, the PSM and code generation
would be semi-automatically produced as well. It must be
noted though that depending on the case, the completeness of
the produced system may greatly vary and the developer will
have to fill in the details that where not described sufficiently
by the UML profile such as authentication.</p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>V. CONCLUSION AND FURTHER WORK</title>
      <p>This paper introduces a RESTful service PIM meta-model
that aids the semi-automated development of services that
respect REST design qualities, such as resource oriented
design with uniform CRUD interface and embedded hypermedia
links. It demonstrates as well a set of steps to be taken in
order to produce the PIM of an indicative application called
RESTMARKS.However, it is only one of the steps towards
applying MDA in RESTful development. Next steps include
the definition of a full MDA mechanism that also includes the
CIM, PSM and code generation steps as well.</p>
      <p>Acknowledgments.: Parts of this work have been supported
by the FP7 Collaborative Project S-CASE (Grant Agreement
No 610717), funded by the European Commission.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>FP7</given-names>
            <surname>Collaborative Project S-CASE: Scaffolding Scalable Software</surname>
          </string-name>
          <article-title>Services</article-title>
          . http://www.scasefp7.eu.
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <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,
          <year>2000</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>M.</given-names>
            <surname>Fowler</surname>
          </string-name>
          .
          <article-title>Richardson Maturity Model: steps towards the glory of REST</article-title>
          . http://martinfowler.com/articles/richardsonMaturity Model.html,
          <year>March 2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>L.</given-names>
            <surname>Fuentes-Fernadez</surname>
          </string-name>
          and
          <string-name>
            <given-names>A.</given-names>
            <surname>Vallecilo-Moreno</surname>
          </string-name>
          .
          <article-title>An introduction to uml profiles</article-title>
          .
          <source>The European Journal for the Informatics Professional</source>
          ,
          <volume>2</volume>
          :
          <fpage>6</fpage>
          -
          <lpage>13</lpage>
          ,
          <year>2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>J.</given-names>
            <surname>Kopecky</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Gomadam</surname>
          </string-name>
          , and
          <string-name>
            <given-names>T.</given-names>
            <surname>Vitvar</surname>
          </string-name>
          .
          <article-title>hrests: An html microformat for describing restful web services</article-title>
          .
          <source>In WI-IAT '08</source>
          , volume
          <volume>1</volume>
          , pages
          <fpage>619</fpage>
          -
          <lpage>625</lpage>
          ,
          <year>Dec 2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>M.</given-names>
            <surname>Maleshkova</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Kopecky</surname>
          </string-name>
          , and
          <string-name>
            <given-names>C.</given-names>
            <surname>Pedrinaci</surname>
          </string-name>
          .
          <article-title>Adapting sawsdl for semantic annotations of restful services</article-title>
          .
          <source>In On the Move to Meaningful Internet Systems: OTM 2009 Workshops</source>
          , pages
          <fpage>917</fpage>
          -
          <lpage>926</lpage>
          ,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>P.</given-names>
            <surname>Mohaghehi</surname>
          </string-name>
          and
          <string-name>
            <given-names>V.</given-names>
            <surname>Dehlen</surname>
          </string-name>
          .
          <article-title>Where is the proof? a review of experiences from applying mde in industry</article-title>
          .
          <source>In Model Driven Architecture - Foundations and Applications</source>
          , volume
          <volume>5095</volume>
          , pages
          <fpage>432</fpage>
          -
          <lpage>443</lpage>
          ,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8] OMG, http://www.omg.org/mda/.
          <source>Model Driven Architecture</source>
          ,
          <year>2000</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>E.</given-names>
            <surname>Ormeno</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Lund</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Aballay</surname>
          </string-name>
          , and
          <string-name>
            <given-names>S.</given-names>
            <surname>Aciar</surname>
          </string-name>
          .
          <article-title>An uml profile for modeling restful servicecs</article-title>
          .
          <source>In ASSE 2012</source>
          , pages
          <fpage>119</fpage>
          -
          <lpage>133</lpage>
          ,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>F.</given-names>
            <surname>Pagliarecci</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Spalazzi</surname>
          </string-name>
          , and
          <string-name>
            <given-names>G.</given-names>
            <surname>Taccari</surname>
          </string-name>
          .
          <article-title>Application of swsal in semantic annotation of restful web services</article-title>
          .
          <source>In INVIT2012</source>
          , pages
          <fpage>11</fpage>
          -
          <lpage>18</lpage>
          ,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>L.</given-names>
            <surname>Richardson</surname>
          </string-name>
          and
          <string-name>
            <given-names>S.</given-names>
            <surname>Ruby. RESTful Web Srvices. O'Reilly</surname>
          </string-name>
          ,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>S.</given-names>
            <surname>Sshreier</surname>
          </string-name>
          .
          <article-title>Modeling restful applications</article-title>
          .
          <source>In WS-REST</source>
          <year>2011</year>
          , pages
          <fpage>15</fpage>
          -
          <lpage>21</lpage>
          ,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>D.</given-names>
            <surname>Steinberg</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Budinsky</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Paternostro</surname>
          </string-name>
          , and
          <string-name>
            <surname>E. Merks.</surname>
          </string-name>
          <article-title>EMF: Eclipse Modeling Framework</article-title>
          .
          <string-name>
            <surname>Addison-Wesley Longman</surname>
          </string-name>
          ,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>N. A. C.</given-names>
            <surname>Tavares</surname>
          </string-name>
          and
          <string-name>
            <given-names>S.</given-names>
            <surname>Vale</surname>
          </string-name>
          .
          <article-title>A model driven approach for the development of semantic restful web services</article-title>
          .
          <source>In IIWAS 2013, page 290</source>
          ,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>