<!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>Eclipse SoaML: a Tool for Engineering Service Oriented Applications</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Andrea Delgado</string-name>
          <email>adelgado@fing.edu.uy</email>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Laura González</string-name>
          <email>lauragon@fing.edu.uy</email>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Instituto de Computación, Facultad de Ingeniería, Universidad de la República</institution>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Julio Herrera y Reissig 565</institution>
          ,
          <addr-line>11300, Montevideo</addr-line>
          ,
          <country country="UY">Uruguay</country>
        </aff>
      </contrib-group>
      <fpage>201</fpage>
      <lpage>208</lpage>
      <abstract>
        <p>Service-Oriented applications focus on the definition of selfcontained independent pieces of software called services providing specific functionality, being nowadays one of the most used implementations to support business process execution. Although languages, technologies and platforms supporting the service-oriented paradigm have evolved within the last decades, it is not the case of service modeling support. Service modeling is a key aspect for the design and specification of services and for automating the different stages following the model driven development vision. SoaML is a standard for service modeling which defines an UML profile and a metamodel extending the UML metamodel, defining explicitly concepts and elements for services specification. The Eclipse SoaML tool provides support for service modeling with UML using the SoaML standard, allowing importing and exporting models in XMI format to interoperate with other tools. From SoaML models the tool also generates the code needed to implement services in Java EE and Web Services.</p>
      </abstract>
      <kwd-group>
        <kwd>Service Oriented Architectures (SOA)</kwd>
        <kwd>service modeling</kwd>
        <kwd>service development</kwd>
        <kwd>standards</kwd>
        <kwd>SoaML</kwd>
        <kwd>JEE</kwd>
        <kwd>WS</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>
        Service Oriented Computing (SOC) [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] promotes the design of applications based on
services that are reusable software components by means of which consumers and
providers interact in a decoupled way. A Service Oriented Architecture (SOA) [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ][
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]
is an architectural style that supports service orientation providing the means for
designing and specifying services. Services are usually defined as self-contained
independent pieces of software providing specific functionality, being nowadays one of
the most used implementations to support the automatic execution of business
processes. Business Process Management [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ][
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] provides the means for modeling,
executing and assessing business processes and their implementations in organizations.
      </p>
      <p>
        While languages, technologies and platforms support for the implementation and
execution of services is an area that in recent years has evolved considerably, the
design and modeling of services is still immature. Service modeling is essential
among other things, for automating various stages of software development using
Model Driven Development (MDD) [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ][
        <xref ref-type="bibr" rid="ref7">7</xref>
        ], such as code generation. Service models
can be enhanced with platform specific information to obtain the corresponding code,
providing traceability from requirements to code which eases software maintenance.
The Service Oriented Architecture Modeling Language (SoaML) [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] standard is based
on UML and is one step in the direction of providing support for service modeling by
defining specific concepts and stereotypes for modeling services. Currently there is a
lack of support for the SoaML standard since there are no more than a few
implementations of it which are mostly commercial tools1.
      </p>
      <p>
        The Eclipse SoaML tool we present here is composed of two Eclipse plug-ins
which provide support for engineering service-oriented applications: the first one is a
SoaML editor which implements the SoaML standard allowing service modeling in
SoaML and interchange of service models in XMI format; the second one is a code
generator for implementing services with Java EE and Web Services which takes as
input a SoaML service model and generates the corresponding code. Both Eclipse
plug-ins were developed as part of a broader research work regarding the continuous
improvement of business processes implemented by services with a model-driven
focus, reflected in the definition of the framework MINERVA [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ][
        <xref ref-type="bibr" rid="ref10">10</xref>
        ][
        <xref ref-type="bibr" rid="ref11">11</xref>
        ][
        <xref ref-type="bibr" rid="ref12">12</xref>
        ][
        <xref ref-type="bibr" rid="ref13">13</xref>
        ].
      </p>
      <p>The rest of the article is organized as follows: in section 2 we describe the SoaML
standard, in section 3 we present the Eclipse SoaML Tool we have developed to
support SoaML modeling and code generation, in section 4 we discuss related work, and
finally in section 5 we present some conclusions and future work.
2</p>
    </sec>
    <sec id="sec-2">
      <title>SoaML standard</title>
      <p>The SoaML standard for service modeling has been recently released in its version
1.0.1 (May, 2012) and its first beta release was only five years ago (April, 2009). It
defines the concepts and corresponding elements and stereotypes needed for modeling
service-oriented applications. The most important one is a Service, which consist of a
value offering according to one or more defined Capabilities. It provides an Interface
with Operations, with input and output Parameters and associated Types, and a
ServiceContract which defines the roles and interfaces involved in the execution of
the service. A ServicesArchitecture is a UML Collaboration which shows the
Participants of the network or services community, the ServiceContracts of the Services for
interaction between each other, and the roles each one plays within each service.</p>
      <p>Participants may be software components, organizations, or systems that provide
and use services; services are provided by means of Service Ports and requested by
means of Request Ports which are specializations of UML Ports. Services can be
modeled with a ServiceInterface or simple UML Interfaces which define the elements
needed to interact with the service. The ServiceContract defines the interfaces, roles
and choreography that participants agree to use to interact within each other. A
ServiceChannel models the communication between consumers and providers, and
the MessagesType allows specifying the information exchanged within the operations.</p>
      <sec id="sec-2-1">
        <title>1 SoaML implementations, http://www.omgwiki.org/SoaML/doku.php</title>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>Eclipse SoaML Tool</title>
      <p>Both Eclipse plug-ins of the Eclipse SoaML Tool were developed as part of a broader
research line as mentioned before, the MINERVA framework. The first one focuses
on service modeling and the second one on generating code from these SoaML
models. Other tools and proposals developed within this wider work to support our vision
based on business processes implemented by services are not shown here.
3.1</p>
      <sec id="sec-3-1">
        <title>SoaML Tool Architecture</title>
        <p>The Eclipse environment allows the integration of several tools by means of
developing plug-ins which can be directly downloaded and installed in the IDE. Along with
the flexibility this provides for integrating specific tools, Eclipse is one of the most
used IDEs within the software development community, and provides several options
for UML modeling and Web Services generation. It provides extension points to
which new plug-ins can be "hooked" reusing existing environment implementations.
In Fig. 1 the Eclipse Architecture is shown along with the integration with the SoaML
plug-ins composing the SoaML Tool.
The Eclipse SoaML2 plug-in for service modeling is developed above the existing
Eclipse Papyrus3 UML 2 modeler, as shown in Fig. 1. Papyrus provides the base
UML metamodel and implementation of palette elements, to which we added the
SoaML specific extensions and elements. Papyrus is composed of several plug-ins
(.jars) implementing the different UML elements and diagrams provided by the editor.
For the solution we provide we have reused the code corresponding to the class and
composed structures of Papyrus, creating new plug-ins (.jars) for each type of SoaML
diagram to be added to the base Papyrus tool.</p>
        <sec id="sec-3-1-1">
          <title>2 http://www.fing.edu.uy/inco/grupos/coal/en/field.php/Proyectos/EclipseSoaML 3 Papyrus UML, http://www.papyrusuml.org/</title>
        </sec>
      </sec>
      <sec id="sec-3-2">
        <title>SoaML editor functionalities.</title>
        <p>The SoaML editor plug-in provides seven diagrams to support the elements
defined in the SoaML standard: ServicesArchitecture, Participants (Class and
Component), Interfaces, MessagesTypes, ServiceContracts and Capabilities. Fig. 2 shows the
options for creating SoaML diagrams where the top ones correspond to UML
diagrams from Papyrus and the bottom ones (a) correspond to the SoaML diagrams we
have added. In the Model Explorer view from the Papyrus perspective which is shown
at the left (b) in Fig. 2, you can see the tree showing the structure and elements of the
SoaML model, which are visualized on the diagram layouts to the right (c).
The Eclipse SoaML plug-in also allows importing and exporting SoaML models in
XMI format, to interoperate with other SoaML tools, an option that is provided in the
Eclipse menu as shown in Fig. 2 (d). This means that we can import and visualize a
service model specified in SoaML with another tool, and we can export a SoaML
service model in XMI to be visualized in another tool. Some tools add specific tags
that are not included in the SoaML standard (such as MagicDraw4) so in these cases
the interoperability is affected and the XMI file must be manually "rearranged" to be
imported. Interoperability was successfully tested with Modelio early versions5.</p>
        <p>
          Fig. 3 (a) shows as an example how the SoaML ServicesArchitecture model
corresponding to the Reseller business process adapted from [
          <xref ref-type="bibr" rid="ref4">4</xref>
          ] is visualized in the SoaML
editor. Fig. 3 also shows examples of other SoaML diagrams: (b) Participants
showing ports in which services are provided and required, (c) service Interface showing
the provider and consumer interfaces with operations, parameters and types for the
service "Receive Invoice", and (d) ServiceContract showing the defined roles.
        </p>
        <sec id="sec-3-2-1">
          <title>4 http://www.nomagic.com/products/magicdraw-addons/cameo-soa.html 5 http://www.modeliosoft.com/en/modelio-store/type/free.html</title>
          <p>The Eclipse SoaML2Code6 plug-in generates specific java projects from SoaML
service models, both for service providers and consumers. It requires as input an XMI
file containing a SoaML service model, which can be modeled in the same Eclipse
SoaML Tool using the SoaML editor plug-in presented above, or another SoaML tool
or generated automatically from a business process model in MINERVA framework.
Fig. 4 presents the three components that were designed and implemented in order to
generate code from SoaML models. It also shows the interaction with the SoaML
plug-in or any other tool exporting SoaML models in the XMI or UML formats.</p>
          <p>The “SoaML models to Java objects converter” is in charge of parsing the input
file with the SoaML model, in order to generate Java objects which represent it. The
input file can be an XMI file (version 2.0 or 2.1) or an UML file. The “SoaML
models Processor” is in charge of processing the previously generated Java objects and
applying to them a set of rules and conditions for invoking the code generators.
Currently, the plug-in supports JEE and WS generators, but new generators may be
incorporated. The user has different generation options, for example, the type of project
to generate (i.e. client or server), the target application server (JBoss AS or Apache
6 http://www.fing.edu.uy/inco/grupos/coal/en/field.php/Proyectos/EclipseSoaML2Code
Tomcat) and, in case of generating a server project, the type of application which will
expose the services (i.e. a JEE application or a Web application). The “JEE and WS
Generator” is in charge of generating, based on the SoaML model, the JEE or WS
code by invoking the existing generators. Fig. 5 shows the SoaML2Code plug-in, in
particular, it shows (a) the available options to generate Java objects from a SoaML
model as described above, and on the left side (b) the XMI and Papyrus files
corresponding to the SoaML model and layout.</p>
        </sec>
      </sec>
      <sec id="sec-3-3">
        <title>SoaML2Code functionalities.</title>
        <p>From the SoaML diagrams as presented in Fig. 3, the SoaML2Code plugin can be
used to generate JEE or WS code by selecting the menu option “Generate Java from
JEE” or “Generate Java from UML”, as shown in Fig. 5. After selecting one, the
generation options (e.g. target application server) are presented in a dialog for the user to
choose. For the purpose of this example, we assume that the following options were
selected: JBoss AS as the target application server and a Web application to expose
the services. Fig. 6 (a), shows on the left a Java project generated for each participant
of the SoaML model. Also, for each Port whose interface has the provider role (c.f.
Fig. 3), the Java interfaces and classes are generated in order to expose the service as
a Web Service. The right side of Fig. 6 (a) shows how the Java code of these
interfaces and classes is enriched with several annotations (@WebService, @WebMethod,
etc) specified in the JSR 181 (Web Services Metadata Annotations). The
SoaML2Code plug-in also generates the WSDL declarations for each of the services.
Fig. 6 (b) shows an extract of the WSDL file for the ReceivePayment service.
To the best of our knowledge there are few implementations of the SoaML standard,
mostly commercial ones such as: IBM Rational Architect7, Visual Paradigm8, Sparx
Systems' Architect9 and Magic Draw10. The last one provides a SoaML editor which
can be used together with the open source ModelPro11 engine to generate code,
although ModelPro seems to be a discontinued project. Modelio12 provides an open
source SoaML editor but to be used within their commercial solutions. Our approach
is an open source one integrated in the Eclipse environment, which provides easy
installation and use within an IDE widely used in the software community, along with
existing plug-ins such as Papyrus and WS and Java generators. It was validated by
means of case studies based on real service models to support business processes.
7 http://www.ibm.com/developerworks/downloads/r/architect/index.html
8 http://www.visual-paradigm.com/product/vpuml/features/soamlmodeling.jsp
9 http://www.sparxsystems.com.au/products/ea/index.html
10 http://www.nomagic.com/products/magicdraw-addons/cameo-soa.html
11 http://portal.modeldriven.org/project/ModelPro
12 http://www.modeliosoft.com/en/technologies/soa.html</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>Conclusions and future work</title>
      <p>We have presented the Eclipse SoaML Tool which provides support for service
modeling with SoaML, XMI import and export of SoaML models and generation of code
from SoaML models for JEE and WS. We believe it is a useful tool to provide support
for service modeling, which is a key aspect in the development of robust SOA
applications and for supporting business process execution. Modeling SOAs and
automatically generating code from these models, allow registering traceability from business
concepts to services and from services to code, easing software maintenance, reuse of
services and interchangeability of implementations. We are now working on
extending SoaML models with QoS characteristics and generating the related code.
Acknowledgements: This work was partially funded by the Agencia Nacional de
Investigación e Innovación (ANII), Uruguay, project ANII-FCE-2011-7341. We
would like to thank students Andrés Pastorini, Sofía Larroca, Natalia Maurizio, Victor
Fuica and Alejandro Goss for their work within the implementation of the tools.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Papazoglou</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Traverso</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Dustdar</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Leymann</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          :
          <string-name>
            <surname>Service-Oriented</surname>
            <given-names>Computing</given-names>
          </string-name>
          :
          <article-title>State of the Art and Research Challenge</article-title>
          , IEEE Computer Society, (
          <year>2007</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Krafzig</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          <string-name>
            <surname>Banke</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          <string-name>
            <surname>Slama</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Enterprise</surname>
            <given-names>SOA</given-names>
          </string-name>
          : Best Practices, Prentice Hall, (
          <year>2005</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Erl</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <source>SOA: Concepts</source>
          ,
          <string-name>
            <surname>Technology</surname>
          </string-name>
          , and
          <string-name>
            <surname>Design</surname>
          </string-name>
          ,Prentice Hall, (
          <year>2005</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Weske</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <given-names>BPM</given-names>
            <surname>Concepts</surname>
          </string-name>
          ,
          <source>Languages, Architectures</source>
          , Springer, (
          <year>2007</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>van der Aalst</surname>
            ,
            <given-names>W.M.P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>ter Hofstede</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Weske</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <source>Business Process Management: A Survey</source>
          , In: International Conference on Business Process Management, (
          <year>2003</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Mellor</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Clark</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Futagami</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Model Driven</surname>
          </string-name>
          Development - Guest editors introduction, IEEE Computer Society, September/October (
          <year>2003</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <given-names>Model</given-names>
            <surname>Driven</surname>
          </string-name>
          <article-title>Architecture (MDA), OMG</article-title>
          , http://www.omg.org/mda/specs.htm, (
          <year>2003</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <given-names>Soa</given-names>
            <surname>Modeling</surname>
          </string-name>
          <article-title>Language (SoaML), OMG</article-title>
          , http://www.omg.org/spec/SoaML/, (
          <year>2009</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Delgado</surname>
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ruiz</surname>
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>García-Rodríguez de Guzmán</surname>
            <given-names>I.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Piattini</surname>
            <given-names>M:</given-names>
          </string-name>
          ,
          <string-name>
            <surname>MINERVA</surname>
          </string-name>
          :
          <article-title>Model drIveN and sErvice oRiented framework for the continuous BP improVement &amp; relAted tools</article-title>
          ,
          <source>In: 5th Int. Work. Engineering SO Applications (WESOA'09)</source>
          , (
          <year>2009</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Delgado</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ruiz</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>García-Rodríguez de Guzmán</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Piattini</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ;
          <article-title>“Business Process Service Oriented Methodology (BPSOM) with Service generation in SoaML”</article-title>
          .
          <source>In 23rd Int. Conf. on Advanced IS Engineering (CAiSE)</source>
          , (
          <year>2011</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Delgado</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ruiz</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>García-Rodríguez de Guzmán</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Piattini</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          , “
          <article-title>Model Transformations for Business-IT Alignment: From Collaborative BPs to SoaML Service Model”</article-title>
          ,
          <source>In: 27th ACM Symposium on Applied Computing (SAC)</source>
          , (
          <year>2012</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Delgado</surname>
          </string-name>
          ; A.,
          <string-name>
            <surname>Weber</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ruiz</surname>
          </string-name>
          ; F.,
          <string-name>
            <surname>García</surname>
          </string-name>
          ; F.,
          <string-name>
            <surname>Piattini</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <article-title>"An integrated approach based on execution measures for the continuous improvement of BPs realized by services”</article-title>
          ,
          <source>Information and Software Technology Journal, Elsevier</source>
          , Vol.
          <volume>56</volume>
          ,
          <issue>2</issue>
          , p.
          <fpage>134</fpage>
          -
          <lpage>162</lpage>
          , (
          <year>2013</year>
          -14)
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>Delgado</surname>
            ,
            <given-names>A</given-names>
          </string-name>
          ,
          <string-name>
            <surname>González</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          ,
          <article-title>"Automatic generation of SOAs for Business Process execution: A vision based on models</article-title>
          ,
          <source>Latin American Computing Conference (CLEI)</source>
          , (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>