<!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>On the Implementation of Multiplatform RIA User Interface Components</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Marino Linaje</string-name>
          <email>mlinaje@unex.es</email>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Juan Carlos Preciado</string-name>
          <email>jcpreciado@unex.es</email>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Rober Morales-Chaparro</string-name>
          <email>robermorales@unex.es</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Fernando Sanchez-Figueroa</string-name>
          <email>fernando@unex.es</email>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>HOMERIA Open Solutions. R&amp;D Department</institution>
          ,
          <addr-line>Cáceres</addr-line>
          ,
          <country country="ES">Spain</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>QUERCUS SEG, Universidad de Extremadura</institution>
          ,
          <addr-line>Cáceres</addr-line>
          ,
          <country country="ES">Spain</country>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2008</year>
      </pub-date>
      <fpage>44</fpage>
      <lpage>49</lpage>
      <abstract>
        <p>ion for different RIA rendering platforms.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. Introduction</title>
      <p>
        With the appearance of Web 2.0, the complexity of
tasks performed via Web applications User Interfaces
(UIs) has been increasing, in particular when high levels
of interaction, client-side processing, and multimedia
capacities have to be performed. In this context traditional
HTTP-HTML-based Web (Web 1.0) applications are
showing their limits, presenting several restrictions. To
cite a few, they have Process limitations (e.g., complex
Web Applications often require that the user navigates
through a series of pages to complete only one task); Data
limitations (e.g., interactive explorations of the data are
not allowed); Configuration limitations (e.g., many Webs
require the configuration of a product/service from
multiple choices, but in general, they are unable to present
the customized product/service to the user in an intuitive
way and in a single step) and Feedback limitations (e.g.,
continued and ordered interaction without page
refreshments is not allowed, so the interaction of the user
is quite limited) [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ].
      </p>
      <p>These are some reasons why developers are building
the future of the Web using Web 2.0 UIs technologies by
means of Rich Internet Applications (RIAs). RIAs
overcome the limits mentioned above, combining the
benefits of the Web distribution architecture with the
interface interactivity and multimedia support available in
desktop applications.</p>
      <p>
        Some of the novel features of RIAs affect the User
Interface (UI) and the interaction paradigm; others extend
to architectural issues, such as, the client-server
communication and the distribution of the data and
business logic. They support online and offline usage,
sophisticated UIs, data storage and processing capabilities
directly at the client side, powerful interaction tools
leading to better usability and personalization, lower
bandwidth consumption, and better separation between
presentation and content [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ].
      </p>
      <p>
        Although traditional Web methodologies are been
extended in several directions to cope with some of these
new features, currently they do not cover RIA composition
parameters fully at all [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]. Most Web methodologies do
not support multimedia properly, their focus being on data
intensive Web applications (e.g., WebML [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ], OO-H [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ],
UWE [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ], OOHDM [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ], etc.). In addition, most of the HCI
and multimedia methodologies are not data intensive and
business logic oriented because they mainly focus on
presentation, temporal specifications to support
multimedia/animations and final-user interaction.
      </p>
      <p>
        We can conclude that there is a need for methods and
tools for the systematic development of RIAs, particularly
for the Presentation level. In this sense, RUX-Method
(Rich User eXperience) [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] is a model driven method
which supports the design of multimedia, multi-modal,
multiplatform and multi-device interactive Web 2.0 UIs
for RIAs.
      </p>
      <p>For this purpose, RUX-Method makes use of
a Component Library for the definition of Components for
different RIA rendering platforms. This definition is made
at different levels of abstraction. This Library also
specifies the transformation between Components placed
at different Interface levels. The objective of this paper is
briefly presenting this Library and the Components from
the theory to the practice and the way in which
RUXMethod deals with the generation of RIA components.</p>
      <p>The rest of the paper is as follows. Section 2 shows
several design issues regarding RIAs. Section 3 briefly
describes RUX-Method and its Component Library while
section 4 illustrates the implementation of Components.
Finally, section 5 shows conclusions.</p>
    </sec>
    <sec id="sec-2">
      <title>2. Concepts and technologies in RIAs</title>
      <p>
        Designing RIAs with Web engineering methodologies
requires adapting the Web development flow of traditional
Web applications to consider the new client-side
capacities, the new presentation features, and the different
communication mechanisms between the client and the
server. According to [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] the main issues to be taken into
account for the design of RIAs can be grouped in four
issues: Data (persistent and volatile content can be stored
and manipulated at client and server side); Business Logic
(in RIA both the client and the server can carry out
complex operations); Communication (RIAs allow
(a)synchronous communications. But also data and
functionality distribution across client and server broadens
the features of the produced events as they can originate,
be detected, notified, and processed in a variety of ways);
Presentation (RIAs offer enhanced presentations and user
interactions, allowing to operate as single page
applications).
      </p>
      <p>Most of the new capabilities that RIA offers can be
placed in one of these phases. This work deals with the
Presentation features.</p>
      <sec id="sec-2-1">
        <title>2.1. Technologies for RIAs</title>
        <p>Some of the most wide and well-known technologies
used for developing Rich Internet Applications over the
Web are AJAX, Flash, FLEX, OpenLaszlo and Silverlight.
However, new emerging technologies like JavaFx are
gaining ground day by day.</p>
        <p>AJAX (Asynchronous Javascript and XML) is mainly
based on Javascript and acts at client side for creating
better interactive Web applications avoiding page
refreshment. In AJAX, the data can be retrieved
asynchronously using the XMLHttpRequest object
without reloading the entire UI. Many frameworks are
available to develop AJAX trying to avoid cross-browser
problems.</p>
        <p>OpenLaszlo is a RIA technology that follows the open
source philosophy and uses a declarative code (LZX) that
mixes XML and ECMAScript. The client rendering
technologies required by Laszlo are AJAX and
FlashPlayer.</p>
        <p>FLEX is also open source and uses declarative code
approach (MXML) to develop RIA based on XML and</p>
        <p>ActionScript. FLEX needs the open source Flash-Player
installed to run the application.</p>
        <p>Silverlight, a technology based on Windows
Presentation Foundation, is the Microsoft’s platform for
building RIAs. Silverlight also follows a declarative
approach (XAML) for the UI description.</p>
        <p>Other technologies, such as JavaFx or Mozilla Prism
are just emerging, so it is early to discuss about the
implications to incorporate them in RUX-Method.</p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>3. RUX-Method in brief</title>
      <p>
        RUX-Method [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] is a model driven method which
supports the design of multimedia, multi-modal and
multidevice interactive UIs for RIAs. RUX-Method focuses on
the enrichment of the User Interface while takes full
advantage of the content and functionality already
provided by the existing Web models. A RUX-Method
overview is depicted graphically in Figure 1.
      </p>
      <p>At design time, RUX-Method uses existing data,
business logic and presentation models offered by the
underlying Web model being enriched. This information
provides a UI abstraction which is transformed until the
desired RIA UI is reached. At run time, while a new UI is
generated from RUX-Method, the data and business logic
remain the same. To sum up, the responsibility of
RUXMethod is providing a new UI with RIA features.</p>
      <p>To facilitate the UI development process, RUX-Method
is divided into three Interface levels: Abstract, Concrete
and Final Interfaces. Each Interface level is mainly
composed by Interface Components whose specifications
are stored in the Component Library. One Component can
only belong to one Interface level. The Library also stores
how the transformations among Components of different
levels are carried out.</p>
      <p>There are two kinds of adaptation phases in the
RUXMethod according to the Interface levels defined above.
Firstly, the adaptation phase that catches and adapts Web
1.0 (data and navigation, as well as presentation when it is
possible) to RUX-Method Abstract Interface that is called
Connection Rules (CR). Secondly, the adaptation phase
that adapts this Abstract Interface to one or more
particular devices and grants access to the business logic
that is called Transformation Rules 1 (TR1).</p>
      <p>Finally, there is an additional transformation phase,
Transformation Rules 2, (TR2) that completes the MDA
life-cycle of RUX-Method supporting and ensuring the
right code generation. Thus, in TR2, the Final Interface is
automatically obtained depending on the chosen RIA
rendering technology (e.g. Laszlo, AJAX). This process is
performed automatically because TR2 establishes the way
the matching takes place among Concrete Interface
Components and Final Interface Components.</p>
      <p>The cardinality in the relation among these phases for
the Components is depicted in Figure 1. 1:N (Abstsract to
Concrete Interface) and 1:M (Concrete to Final Interface).</p>
      <p>In Figure 1 is depicted the full process at design time
(at the top) and at run time (at the bottom). While at
design time RUX-Method extracts the information from
the underlying Web model, at run time the RIA UI
obtained via RUX-Method communicates (marked R in
Figure 1) with the Web application business logic obtained
using the Web model.</p>
      <sec id="sec-3-1">
        <title>3.1. RUX-Method Components Library</title>
        <p>For a better understanding of the way in which the
Transformation Rules are applied, it is necessary to know
the role played by the Components Library. In this
document and due to the RUX-Method nature, when we
talk about components, we refer to User Interface
Components. These Components can have different
complexity levels and intrinsic functionality (e.g.,
Widgets, Gadgets, etc.).</p>
        <p>The Components Library is responsible for:
1) storing the component specification (name,
methods, properties and events),
2) specifying the transformation/mapping features for
each Component from an Interface level into other
Component in the following Interface level and
3) keeping the hierarchy among Components at each</p>
        <p>Interface level independently from other levels.</p>
        <p>The set of Interface Components defined in the Library
can be increased or modified by the modeller according to
the specifications of the project. The set of available
transformations can be also increased or updated
according to the Interface Components included in the</p>
        <p>Library. For a given Component several transformations
can be defined depending on the target interface level. The
Component Library stores the interface level structure by
means of skeletons.</p>
      </sec>
      <sec id="sec-3-2">
        <title>3.2. Components and Transformations</title>
        <p>Components are used for solving specific interface
tasks. In the Abstract Interface the different kinds of media
and views define the grouping and the type of elements
that the user is going to perceive. These Abstract Interface
Components are transformed (by means of TR1) into
Concrete Interface Components according to the different
ones available in RUX-Method: Control Components that
are used for data I/O (e.g. textcontrol, etc.), Layout
Components used to organize the content (e.g.
HDivideBox, etc.) and Navigational Components that are
used for navigating the content (e.g. tabnav, etc).</p>
        <p>Each Component can be composed by different parts
(not all of them required according to the Interface level of
the Component): Name specifies the Component name and
the list of Components from the previous Interface level
that can be transformed in this Component. Capability
expresses the functionality needed to express the
Component behaviour. It is composed of a Header and a
Body. While the Header is used and shared by all the
instances of this Component in the application, the Body is
specific for each instance. To clarify this abstract
specification, let us show an example for an AJAX
specific component: the Header can be a snippet CSS or
JavaScript function placed once in the application. On the
other hand, the Body is placed once for each instance
defining different values in each case as necessary (e.g.,
example values for size, font color, etc), sharing all the
instances of a component the same header. A Property
indicates a Component characteristic that contains a value
according to its Interface level.</p>
        <p>For example, in the Abstract Interface a common
property is connectorid that contains a reference (value) to
the connector of the underlying Web model. In the
Concrete Interface the size property, for example, is
available in the tabnav Component. Methods express
a way to communicate the whole interface with the
Component (e.g. invoking a Component functionality).
Events state for the list of events listened by the
Component (e.g. ondrag).</p>
        <p>From an abstract point of view a skeleton describes the
basic structure of an application in a specific Interface
level (meta-descriptor). There is a close relationship
between skeletons and Components, since Components
are placed in the Interface level according to the skeleton
specified. A skeleton may include a set of common
resources needed by Components.</p>
        <p>Regarding the transformation among Components, both
Transformation Rules (TR1 and TR2) follow the same
steps:
1) use the skeleton defined (in the Component</p>
        <p>Library) for the target interface level,
2) transform each Component in the source interface
level into its corresponding default Component in
the target interface level,
3) enrich this skeleton including the Components
obtained from step 2.</p>
        <p>This process distributes the Component Headers and
Bodies across the skeleton preserving the Component
hierarchy.</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>4. Components in RUX-Tool</title>
      <p>
        Currently, RUX-Method specifications are facilitated
by a CASE tool called RUX-Tool [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] and real-life
applications are being developed by the Homeria Open
Solutions company. At the moment, RUX-Tool works
with WebRatio 5.0 in commercial and academic terms
allowing the design of rich UIs over Web 1.0 applications
designed and generated with WebRatio (the WebML
CASE tool). RUX-Tool is a browser-based RIA that
works online and generates final UIs. The generated RIA
is automatically deployed also online at server side,
avoiding any kind of installation at client-side. Nowadays,
the available UI code generators are FLEX, OpenLaszlo
and AJAX. The RUX-Tool Component Library and code
generators have a plug-in architecture for allowing the
inclusion of new components and target platforms. Each
component is a template based on Declarative Velocity
Style Language (DVSL).
      </p>
      <p>In practical terms, the skeleton indicates physically the
set of files and folders to place the application and
component resources and designates where and how to put
the Component Header and each Component Body for
a RUX-Method Component. This is carried out using
skeletons written in XSL language for generating a XML
file that describes the folders/files hierarchy for the whole
application.</p>
      <p>Far from explaining RUX-Tool Components in detail,
we will use a little example for a better understanding.</p>
      <sec id="sec-4-1">
        <title>4.1. Including Components in RUX-Tool</title>
        <p>There is a list of steps to be followed for using
Components in RUX-Tool:
1) Build the code of the component in all the
platforms where the Component is going to be
used,
2) Replace attributes used for spatial allocation (e.g.,
x, height) using DVSL variables,
3) Replace other attributes such as look&amp;feel ones
(e.g., background color, font size) using
corresponding DVSL variables,
4) Replace data-based dynamically built elements
using DVSL variables and
5) indicate the place where the content is placed if the
component works like a container.</p>
        <p>For illustrating this issue, we introduce the vlistlayout
Component that stands for a vertical list layout and the
textcontrol component that is a text output Component.
vlistlayout is able to place several child elements (in the
example textcontrols) acting like a vertical list (similar to
HTML combobox).</p>
        <p>For the sake of simplicity, we will define the Final
Interface Component only for the AJAX (HTML-based)
platforms. Firstly, we show the original component code
which can be included in any HTML based application.
&lt;table style="border: 1px solid black;
overflow: hidden; width: 44px; height: 68px;
position: absolute; left: 32px; top: 11px;
background-color: rgb(245, 255, 244);"&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;
&lt;div style="border: 1px outset black;
overflow: hidden; width: 31px;
height: 21px; position: absolute;
left: 10px; top: 35px;
rgb(255, 255, 255);"&gt;</p>
        <p>Barcelona
&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;
&lt;div style="border: 1px outset black;
overflow: hidden; width: 31px;
height: 21px; position: absolute;
left: 10px; top: 35px;
rgb(255, 255, 255);"&gt;</p>
        <p>Madrid
&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
In general terms, this code will form part of the
component Body after applying the corresponding DVSL
dynamic replacing.</p>
        <p>At this point, we need to replace the attributes used for
spatial allocation using DVSL variables. The attributes
width, height, x and y replaced are marked in bold text in
the code below (these elements will be fixed dynamically
in RUX-Tool when this Component is included in a Web
application by the modeller). After this step, this
Component can be used in RUX-Tool fixing the spatial
arrangement.
&lt;table style="border: 1px solid black;
overflow: hidden;
width: $attrib.w;
height: $attrib.h;
position: absolute;
left: $attrib.x;
top: $attrib.y;
background-color: rgb(245, 255, 244);"&gt;
&lt;tbody&gt;</p>
        <p>… (remains unmodified)
&lt;/tbody&gt;
&lt;/table&gt;</p>
        <p>In the next step, we show how other kind of attributes
change, for example, the background color. In this case
these attributes affect the look and feel of the Component,
so they will appear in RUX-Tool inside the style
properties menu.
&lt;table style="border: 1px solid black;
overflow: hidden;
width: $attrib.w;
height: $attrib.h;
position: absolute;
left: $attrib.x;
top: $attrib.y;
background-color:
$node.Style.background-color"&gt;
&lt;tbody&gt;</p>
        <p>… (remains unmodified)
&lt;/tbody&gt;
&lt;/table&gt;</p>
        <p>After this step any HTML tag that can be moved to
&lt;div&gt; tag is moved and a CSS style is automatically
assigned to maintain the previous appearance. One of the
most interesting replacements comes when we need to add
support for hierarchy and data-driven Components.</p>
        <p>For the replacement of dynamic elements using DVSL
variables, the first step is to prepare the Component to
work with n items. In this case, we must indicate the
specific portion of code that has to be iterated. In the
example, code inside &lt;tr&gt; is wrapped for each item using
the #iterate_data() directive.</p>
        <p>The last step, deals with the insertion of Components
that may contain other Components. Initially, we showed
two items containing Barcelona and Madrid. In this case,
it is necessary to introduce the
$context.applyTemplates(Node) DVSL syntax directive,
which applies templates to the specified node (similar to
XSL) for generating each Component that can be
a children of this node. DVSL #match directive is used to
indicate that the code inside will be used for the output
transformation when this template is applied.
#match("Part[@selected_component='vlistlayout']")
&lt;div id="id_$!{attrib.id}"
style="overflow: auto;
position: absolute;
left: $!{attrib.x};
top: $!{attrib.y};
width: $!{attrib.w}$!{attrib.wu};
height: $!{attrib.h}$!{attrib.hu};
background-color:</p>
        <p>$!{node.Style.background_color};"&gt;
&lt;div style="color:
$!{node.Style.background_color};"&gt;
#iterate_data()
&lt;div style="display: table-row;
position: relative;
width:100%;
height: $!{node.Owned.item_size};"&gt;
&lt;div style="display:table-cell;
position: absolute;
width: 100%;
height: $!{node.Owned.item_size};"&gt;
#foreach(</p>
        <p>$child in $node.selectNodes("Part")
)##composition
$context.applyTemplates($child)##children
#end
&lt;/div&gt;
&lt;/div&gt;
#iterate_data_end()
&lt;/div&gt;
&lt;/div&gt;
#end</p>
        <p>The original HTML Component has been separated
into two, the container (vlistlayout over these lines) and
content (textcontrol under this paragraph). Following the
same previous steps, the textcontrol Component can be
also specified at Final interface level. The final description
of this Component maintains the connection with the
underlying Web model business logic using the source
attribute.
&lt;div style="width: $attrib.w;
height: $attrib.h;
overflow:hidden;
position:absolute;
left:$attrib.x;
top:$attrib.y;"&gt;</p>
        <p>{$node.Source.attrib('connector_at')}
&lt;/div&gt;</p>
        <p>Of course, these two HTML-based Components of the
Final interface level have a common representation to all
the current RIA platforms at the Concrete Interface level.
For the former, the representation of the Component in the
Concrete Interface looks like this:
&lt;Part selected_component="vlistlayout"
rendering_component="vlistlayout"
id="Rinu1_ai_ai"
x="90" y="10" w="65" h="113" wu="px" hu="px"
type="Replicate"
source_id="Rinu1_ai"
name="cities"&gt;
&lt;Style&gt;
&lt;background_color&gt;#FFFFFF&lt;/background_color&gt;
&lt;opacity&gt;1&lt;/opacity&gt;
&lt;font_family&gt;Calibri&lt;/font_family&gt;
&lt;font_style&gt;plain&lt;/font_style&gt;
&lt;font_weight&gt;plain&lt;/font_weight&gt;
&lt;font_size&gt;12&lt;/font_size&gt;
&lt;fgcolor&gt;#000000&lt;/fgcolor&gt;
&lt;stretches&gt;none&lt;/stretches&gt;
&lt;/Style&gt;
…
&lt;/Part&gt;</p>
        <p>About this representation, we would like to clarify two
attributes: selected_component that stands for the name of
the component, rendering_component that RUX-Tool uses
to facilitate the graphical manipulation of the Interface
level (giving the component appearance).</p>
        <p>Finally, there must be a correspondence also with the
Abstract Interface level. The next snippet of code shows
the Abstract Interface representation of the textcontrol that
match with the Text that is a type of Media in the Abstract
Interface level of RUX-Method.
&lt;Source node_name="Media"
x="10" y="27" w="55" h="22" wu="px" hu="px"
is_output="true"
type="Text"
id="inu1_nameatt2_ai"
source_id="inu1_nameatt2"
name="nombre"
connector_id="inu1_connector"
connector_at="att2_name"/&gt;</p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>6. Conclusions</title>
      <p>This paper has shown how RUX-Method allows the
definition of Components at different levels of abstraction
for the generation of multiplatform RIA User Interfaces.
The definition of Components and the specification of
transformation among Components are done in the
Components Library. With the aid of this Library, it is
possible to adapt an old Web 1.0 User Interface obtained
following a Web methodology to a new Web 2.0 User
Interface with multimedia support, richer user interactions
and custom Components able to be rendered in different
platforms. All these specifications are carried out by
a module of RUX-Tool named Component Library editor,
which makes possible to manage the whole set of
Components and the relations among them.</p>
      <p>
        Maybe a missing part of this work is related with the
evaluation and comparison with other proposals. However,
due to the originality of RUX-Method, it is not possible
this type of content. Maybe the most relevant proposal
regarding RIA UIs is [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]. Latter has also tool support, but
the proposal miss some RIA UI features like temporal
behaviour and do not use a previous Web model to full-fill
the model-driven Web application development.
      </p>
      <p>
        While theoretically RUX-Method can be combined
with many of the existing Web models, at the moment
specific CRs are just available for WebML [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] and UWE
[
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] while there is a work in progress with OO-H [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] and
OOHDM [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ].
      </p>
      <p>Our aim at the workshop is discussing the best choices
coming from the Web engineering and HCI fields for the
implementation of multi-device, multi-modal and
multiplatform components.</p>
      <p>Acknowledgments: This work has been partially supported
by TIN2005-09405-C02-02 and the Junta de Extremadura
project PDT06A042. The authors express gratitude to the
people working at Homeria Open Solutions.</p>
    </sec>
    <sec id="sec-6">
      <title>7. References</title>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <surname>Ceri</surname>
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Fraternali</surname>
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bongio</surname>
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Brambilla</surname>
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Comai</surname>
            <given-names>S.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Matera</surname>
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <given-names>Designing</given-names>
            <surname>Data-Intensive Web</surname>
          </string-name>
          <string-name>
            <surname>Applications</surname>
          </string-name>
          , Morgan Kauffmann, San Francisco,
          <year>2002</year>
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <surname>Gómez</surname>
            <given-names>J.</given-names>
          </string-name>
          and
          <string-name>
            <surname>Cachero</surname>
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>“OO-H Method</surname>
          </string-name>
          :
          <article-title>extending UML to model web interfaces”, Information modeling for internet applications</article-title>
          , Idea Group Publishing,
          <year>2003</year>
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <surname>Koch</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Knapp</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          , Zhang, G., and
          <string-name>
            <surname>Baumeister</surname>
          </string-name>
          , H.,
          <source>“UML-Based Web Engineering: An Approach Based on Standards”</source>
          , Web Engineering: Modelling and Implementing Web Applications, Human-Computer Interaction Series, vol.
          <volume>12</volume>
          , chapter 7, Springer-Verlag,
          <year>2007</year>
          , pp
          <fpage>157</fpage>
          -
          <lpage>191</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <surname>Linaje</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Preciado</surname>
            ,
            <given-names>J.C.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Sánchez-Figueroa</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          “
          <article-title>Engineering Rich Internet Application User Interfaces over Legacy Web Models”, Internet Computing Magazine</article-title>
          , IEEE, vol.
          <volume>11</volume>
          , no.
          <issue>6</issue>
          ,
          <issue>2007</issue>
          , pp.
          <fpage>53</fpage>
          -
          <lpage>59</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <surname>Preciado</surname>
            <given-names>J.C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Linaje</surname>
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Comai</surname>
            <given-names>S.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Sanchez-Figueroa F</surname>
          </string-name>
          ., “Designing Rich Internet Applications with Web Engineering Methodologies”,
          <source>International Symposium on Web Site Evolution, IEEE</source>
          ,
          <year>2007</year>
          , pp.
          <fpage>23</fpage>
          -
          <lpage>30</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>RUXProject</given-names>
            <surname>Homepage</surname>
          </string-name>
          <article-title>: www</article-title>
          .ruxproject.org
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <surname>Schwabe</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Rossi</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          and
          <string-name>
            <surname>Barbosa</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          , “
          <article-title>Systematic Hypermedia Design with OOHDM”</article-title>
          , International Conference on Hypertext, ACM Press,
          <year>1996</year>
          , pp.
          <fpage>116</fpage>
          -
          <lpage>128</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <surname>Martínez-Ruiz</surname>
            <given-names>FJ</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Muñoz Arteaga</surname>
            <given-names>J</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Vanderdonckt</surname>
            <given-names>J</given-names>
          </string-name>
          , et al (
          <year>2006</year>
          )
          <article-title>A first draft of a Model-driven Method for Designing Graphical User Interfaces of Rich Internet Applications</article-title>
          .
          <source>Proceedings of LA-Web 32-38</source>
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>