<!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>Improving Agility in Model-Driven Web Engineering</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>José Matías Rivero</string-name>
          <email>mrivero@lifia.info.unlp.edu.ar</email>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Julián Grigera</string-name>
          <email>julian.grigera@lifia.info.unlp.edu.ar</email>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Gustavo Rossi</string-name>
          <email>gustavo@lifia.info.unlp.edu.ar</email>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Esteban Robles Luna</string-name>
          <email>esteban.robles@lifia.info.unlp.edu.ar</email>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Nora Koch</string-name>
          <email>kochn@pst.ifi.lmu.de</email>
          <xref ref-type="aff" rid="aff1">1</xref>
          <xref ref-type="aff" rid="aff3">3</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Also at Conicet</institution>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Cirquent GmbH</institution>
          ,
          <country country="DE">Germany</country>
        </aff>
        <aff id="aff2">
          <label>2</label>
          <institution>LIFIA</institution>
          ,
          <addr-line>Facultad de Informática, UNLP, La Plata</addr-line>
          ,
          <country country="AR">Argentina</country>
        </aff>
        <aff id="aff3">
          <label>3</label>
          <institution>Ludwig-Maximilians-Universität München</institution>
        </aff>
      </contrib-group>
      <fpage>163</fpage>
      <lpage>170</lpage>
      <abstract>
        <p>The increasing growth of the Web field has promoted the development of a plethora of Model-Driven Web Engineering (MDWE) approaches. These methodologies share a top-down approach: they start by modeling application content, then they define a navigational schema, and finally refine the latter to obtain presentation and rich behavior specifications. Such approach makes it difficult to acquire quick feedback from customers. Conversely, agile methods follow a non-structured, implementation-centered process building software prototypes to get immediate feedback. In this work we propose an agile approach to MDWE methodologies (called Mockup-Driven Development, or MockupDD) by inverting the development process: we start from user interface mockups that facilitate the generation of software prototypes and models, then we enrich them and apply heuristics in order to obtain software specifications at different abstraction levels. As a result, we get an agile prototype-based iterative process, with advantages of a MDWE one.</p>
      </abstract>
      <kwd-group>
        <kwd>Mockups</kwd>
        <kwd>User-Interface</kwd>
        <kwd>Agile</kwd>
        <kwd>Web Engineering</kwd>
        <kwd>MDD</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1 Introduction</title>
      <p>During the last 20 years, many Model-Driven Web Engineering (MDWE)
methodologies have been defined to improve the development process of web applications
approaches [1-4]. All of these methodologies share a common top-down approach [5]
and construct web applications by describing a set of models at different abstraction
levels:
•</p>
      <p>Content (or Domain) Model: defining domain objects and their
relationships.
• Hypertext (or Navigation) Model: defining navigation nodes and links that
publish information specified by objects in the Content Model.
• Presentation Model: refining the Hypertext Model with concrete
userinterface presentation features like pages, concrete widgets, layout, etc.</p>
      <p>This process is generally top-down, delivering a final web application through a
process of (sometimes automatic) model transformations which maps the previously
described models into other models or a specific technology.</p>
      <p>Agile methodologies, on the other hand, promote early and constant interaction
with customers to assert that the software built complies with their requirements, by
constantly delivering prototypes developed in short periods of time. Agile approaches
argue that software specifications must emerge naturally, enhancing former
prototypes along the development until the final application is obtained.</p>
      <p>To summarize, while MDWE methodologies facilitate software specification
portability, abstraction and productivity, they fail in providing agile interaction with
customers because concrete results are obtained too late. On the other hand, while this
feature is clearly provided by agile methodologies, they are heavily based on direct
implementation and thus fail to provide abstraction, portability and productivity
through automatic code-generation.</p>
      <p>In this paper we propose an hybrid model-based agile methodology – called
Mockup-Driven Development (MockupDD) – aiming to extract the best of both worlds, i.e.
a process driven by the active participation of users and customers, and a classical
approach following the phases of analysis, design and implementation assisted with
the use of models in all stages. Our approach starts by the requirement analysis, i.e.
defining mockups (ideally together with the customers) to agree upon the
application’s functionality, similar to Harel’s behavioral programming approach [6]. Then,
mockups are translated to an abstract user-interface model that can be directly derived
to specific MDWE presentation models or technology-dependent UI prototypes. By
tagging mockups and presentation models we add navigation features, and based on
the navigation specification, we use heuristics to infer content models. Thus, we are
starting the requirement specifications with objects that are perceivable by customers
(UI structure elements), easing requirements gathering and traceability [7].</p>
      <p>Therefore, since we start with presentation models obtained from mockups and
then construct or obtain upper (i.e. abstract) models, we are inverting the traditional
MDWE process, yielding to a more agile, yet truly model-based approach. While we
exemplify with the UML-based Web Engineering (UWE) [3], MockupDD can be
applied to any MDWE approach.
2</p>
    </sec>
    <sec id="sec-2">
      <title>MockupDD by Example</title>
      <p>User Interface (UI) Mockup tools like Balsamiq, Pencil or Mockingbird1 suit well in
agile methodologies [8-10], since they provide a quick and easy way of capturing
interaction requirements. Usually, mockups are defined in companion with other
specifications like use cases [11, 12], user stories [13] or informal annotations [14].
Also, mockups have been introduced in the context of model-driven development
(MDD) approaches like ConcurTaskTrees [15]. In most cases, however, mockups
themselves are not considered as models and they are usually thrown away after
requirement modeling. Thus, mockups are not used as important drivers of the
development process although they contain precise information about the users’ needs.</p>
      <p>MockupDD starts the development process by creating UI mockups with a mockup
tool. As we have shown in a previous work [16], the resulting mockup files can be
1 http://balsamiq.com, http://pencil.evolus.vn/en-US/Home.aspx, https://gomockingbird.com,
last visited 18.3.2011</p>
      <p>Improving Agility in Model-Driven Web Engineering 165
parsed and translated to an abstract UI model called SUI model (Structural UI Model)
that can be in turn translated to presentation models of modern MDWE
methodologies through a simple mapping, since most presentation metamodels (SUI included)
usually share the same concepts (e.g., pages, panels, links, buttons, etc.). We propose
to enrich SUI models using tags. Tags define simple but precise specifications that are
applied over particular types of SUI elements and represent hints that can result in the
derivation of particular MDWE model concepts.</p>
      <p>In this paper we introduce navigation tags that enrich SUI models in order to
derive navigation models. After obtaining both presentation and navigation models by
the aforementioned mapping and tags semantics respectively, we apply heuristics to
obtain the content model as well. We illustrate our process by showing how it works
in the context of the development of a music catalogue application, deriving models
for the UWE methodology. We have chosen UWE because it is representative of an
important group of methods, it is based on UML and it has tool support. A schematic
diagram of our process is shown in Figure 1.</p>
      <sec id="sec-2-1">
        <title>2.1 From Mockups to Presentation Models</title>
        <p>The UI mockup (shown in Figure 2.a) depicts the home page of the Music Portal
application containing a header, a list of featured albums, an album search box and its
corresponding search result. Figure 2.b shows the corresponding UWE presentation
model that can be obtained through a simple SUI-to-UWE presentation widget
mapping. Some advanced features (like choosing whether to use an UWE
PresentationGroup or an IteratedPresentationGroup) are inferred during the mockup
transformation process through mockup analysis. The first problem that emerges is that the
name of some widgets cannot be inferred; in these cases, a generic id is generated
(like Panel1, TextInput1 or Image1). Since correctly naming model elements with
identifiers is important to reference them in the future and also for code or model
derivation, we define a naming tag set, that allows redefining the name of some
widgets when needed. The tagged mockup and resulting UWE presentation model are
shown in Figure 2; note that naming tag starts with an N:. The use of naming tags
implies that correct names are stored associated with SUI model elements and thus
reflected in derived MDWE presentation ones. Also, when correctly applied, naming
tags allow deriving mockup implementations for concrete technologies like ExtJS2
using natural widget ids as when working directly with code.</p>
        <p>(a) Home page mockup
(b) Generated UWE presentation model after applying naming tags</p>
      </sec>
      <sec id="sec-2-2">
        <title>2.2 Deriving Navigational Models</title>
        <p>After deriving presentation models, a naive approach to start generating navigation
models could be defining one UWE NavigationClass (the UWE navigation concept
for defining nodes) for each mockup. However, the UWE metamodel defines several
navigation elements in addition to elements of type NavigationClass: Query, Index
and Menu. While Queryes and Indexes represent information retrieval and selection of
a particular element in a collection respectively, Menus are used to specify alternative
navigation paths.</p>
        <p>Since we cannot directly infer which UWE navigation element must be used in
every mockup (this election requires design or modeling skills), we have defined a
second tag set: the UWE navigation tag set. This set contains a tag for every UWE</p>
        <sec id="sec-2-2-1">
          <title>2 http://www.sencha.com/products/extjs/, last visited 18.3.2011</title>
          <p>Improving Agility in Model-Driven Web Engineering 167
navigation element. Figure 3 shows the resulting tagged mockup and the
consequences of tag application in derived UWE navigation model.
(b) Navigation model generated without
tags
(a) Resulting tagged mockup
(c) Navigation model generated with tags</p>
          <p>The UWE navigation tags introduced are the following:
• Home: defines that the NavigationClass related to the mockup is the home of
the navigation model.
• Node(&lt;nodeId&gt;): Assigns an id to the NavigationClass related to the
mockup in order to be referenced as the destination of one or more navigation
(Link) tags.
• Link(&lt;nodeId&gt;): Specifies a navigation link to another NavigationClass. A
corresponding Node tag with the same &lt;nodeId&gt; must be specified in order
correctly derive the navigation.
• Query(&lt;elementId&gt;) and Index(&lt;elementId&gt;) define a Query involving
elements of type &lt;elementId&gt; and the Index in which the results of the
Query are shown.
• Menu specifies that the panel over which it is applied is a set of links, a so
called UWE Menu.</p>
          <p>When clicking on an album’s title in the home page, an UI of the album details will
be shown. A mockup of such user interface is denoted in Figure 4. The complete
UWE navigation model can be observed in the already introduced Figure 3.c in which
the Album NavigationClass is included. The navigation link is expressed through the
Link(Album) and Node(Album) tags in home page and album mockups, respectively.</p>
        </sec>
      </sec>
      <sec id="sec-2-3">
        <title>2.3 Towards a Content Model</title>
        <p>Once we have obtained the UWE navigation model, a first version of the content
model can be derived by applying some inference rules described in Figure 5. These
rules were designed by studying many examples of UWE navigation and content
models and discovering recurrent patterns in them.</p>
        <p>UWE navigation element names (previously generated using naming and UWE
navigation tags) are used to derive the names of the content elements. The resulting
UWE content model after the application of the introduced rules over the UWE
navigation model of Figure 3.c is shown in Figure 6 (for space reasons, only a part of the
navigation model is shown).</p>
        <p>The obtained UWE content models must be refined in order to specify class
attributes. As UWE navigation models do not allow more refinement than the features
already commented, this information should be taken from other models. Since in
UWE every navigation concept is refined by a presentation specification (e.g., a
PresentationGroup), and given that we have already derived these models from SUI
specifications, we can use this link between models in order to obtain attributes from
presentation structure. An example of this approach is denoted in Figure 7.</p>
        <p>Automatic derivation may naturally lead to an imprecise content model, and some
thoughtful design might be required from a developer in order to get to a definitive
version. However, even when most design adjustments can not be fully automated,
they can be still predicted. For example, an album presentation model might translate
into an album class with attributes such as artistName, when in fact the content model
should have two separate classes for Album and Artist, related to each other. We
have observed that many of these inaccurate derivations usually repeat, so the
required adjustments can be documented (and applied with automatic assistance when
possible) just like code refactorings [17].</p>
        <sec id="sec-2-3-1">
          <title>Improving Agility in Model-Driven Web Engineering 169</title>
        </sec>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>3 Conclusion and Further Work</title>
      <p>We have presented a mockup-based approach (MockupDD) pursuing an inversion of
the traditional MDWE process. We decided to start our process with mockups
because they are becoming a common tool in agile methodologies to interact and
establish a shared view of requirements between customers and developers. Mockups are
processed to structured UI models (called SUI) and with the help of tags they are
easily derived to MDWE presentation and navigation models. Applying a set of
inference rules, a first version of MDWE content models can be generated. We have
shown the approach applied to a brief example using the UWE methodology. With
our approach, we intend to provide an agile methodology based on UI mockups and
lightweight specifications to obtain MDWE models, which offer advantages like
automatic code generation.</p>
      <p>Extending the proposed approach to other modern MDWE methodologies like
WebML represents a fruitful work path. We are interested in defining a general and
methodology-agnostic navigation tag set that also allow deriving navigation models
for a more comprehensive set of MDWE approaches. Finally, since obtained content
models likely require to be refactorized, we are interested in developing heuristics to
suggest refactoring alternatives to be applied over content specifications.</p>
    </sec>
    <sec id="sec-4">
      <title>4. References</title>
      <p>1. Ceri, S., Fraternali, P., Bongio, A.: Web Modeling Language (WebML): A</p>
      <p>Modeling Language for Designing Web Sites. Computer Networks and</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          <source>ISDN Systems</source>
          ,
          <volume>33</volume>
          (
          <issue>1-6</issue>
          ), pp.
          <fpage>137</fpage>
          -
          <lpage>157</lpage>
          (
          <year>2000</year>
          )
          <article-title>2</article-title>
          .
          <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>
          : Extending UML to Model Web
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          <string-name>
            <surname>Interfaces</surname>
          </string-name>
          (
          <year>2003</year>
          ).
          <source>In: Information Modeling For internet Applications</source>
          , pp.
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          144-
          <fpage>173</fpage>
          , P. van Bommel, Ed. IGI Publishing, Hershey, PA (
          <year>2003</year>
          )
          <article-title>3</article-title>
          .
          <string-name>
            <surname>Koch</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Knapp</surname>
            ,
            <given-names>A.. Zhang G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Baumeister</surname>
          </string-name>
          , H.:
          <string-name>
            <surname>UML-Based Web</surname>
          </string-name>
          Engi-
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          <source>and Implementing Web Applications</source>
          , pp.
          <fpage>157</fpage>
          -
          <lpage>191</lpage>
          . Springer (
          <year>2008</year>
          )
          <article-title>4</article-title>
          .
          <string-name>
            <surname>Rossi</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Schwabe</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          :
          <article-title>Modeling and Implementing Web Applications us-</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          plications, Springer, pp.
          <fpage>109</fpage>
          -
          <lpage>155</lpage>
          (
          <year>2008</year>
          )
          <article-title>5</article-title>
          .
          <string-name>
            <surname>Wimmer</surname>
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Schauerhuber</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Schwinger</surname>
            ,
            <given-names>W.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kargl</surname>
          </string-name>
          , H.:
          <article-title>On the Integration</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          <source>In: Proc. of the 3nd Int. Workshop on Model-Driven Web Engineering</source>
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          <source>(MDWE'07)</source>
          , CEUR-WS (
          <year>2007</year>
          )
          <article-title>6</article-title>
          .
          <string-name>
            <surname>Harel</surname>
            ,
            <given-names>D.:</given-names>
          </string-name>
          <article-title>Some Thoughts on Behavioral Programming</article-title>
          .
          <source>In: Applications and</source>
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          <source>Theory of Petri Nets</source>
          . Springer Berlin Heidelberg (
          <year>2010</year>
          )
          <article-title>7</article-title>
          .
          <string-name>
            <surname>Seyff</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Graf</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Maiden</surname>
          </string-name>
          , N.:
          <article-title>End-user requirements blogging with iRe-</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          quire.
          <source>In: 32nd ACM/IEEE International Conference on Software Engineer-</source>
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          <source>ing - ICSE '10</source>
          . ACM Press, New York, New York, USA (
          <year>2010</year>
          )
          <article-title>8</article-title>
          .
          <string-name>
            <surname>Noble</surname>
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Biddle</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          , &amp;
          <string-name>
            <surname>Martin</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <source>The XP Customer Role in Practice: Three</source>
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          <string-name>
            <surname>Studies</surname>
          </string-name>
          . In: Agile Development Conference, pp.
          <fpage>42</fpage>
          -
          <lpage>54</lpage>
          . IEEE Computer So-
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          <string-name>
            <surname>ciety</surname>
          </string-name>
          (
          <year>2004</year>
          )
          <article-title>9</article-title>
          .
          <string-name>
            <surname>Ferreira</surname>
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Noble</surname>
            <given-names>J.</given-names>
          </string-name>
          , &amp;
          <string-name>
            <surname>Biddle</surname>
            <given-names>R.</given-names>
          </string-name>
          :
          <article-title>Agile Development Iterations</article-title>
          and UI De-
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>sign. In: AGILE 2007 Conference, Washington, DC: IEEE Computer Socie-</mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          ty, pp.
          <fpage>50</fpage>
          -
          <lpage>58</lpage>
          (
          <year>2007</year>
          )
          <fpage>10</fpage>
          .
          <string-name>
            <surname>Ton</surname>
          </string-name>
          , H.:
          <article-title>A Strategy for Balancing Business Value and Story Size</article-title>
          . In: Agile
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          2007 Conference. Washington, DC: IEEE Computer Society, pp.
          <fpage>279</fpage>
          -
          <lpage>284</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          (
          <year>2007</year>
          )
          <fpage>11</fpage>
          .
          <string-name>
            <surname>Kulak</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          &amp;
          <string-name>
            <surname>Guiney</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          : Use Cases: Requirements in Context. Addison-
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          <string-name>
            <surname>Wesley</surname>
          </string-name>
          (
          <year>2004</year>
          )
          <fpage>12</fpage>
          .
          <string-name>
            <surname>Homrighausen</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Six</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          , &amp;
          <string-name>
            <surname>Winter</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <string-name>
            <surname>Round-Trip Prototyping</surname>
          </string-name>
          Based on
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          <string-name>
            <given-names>Requirements</given-names>
            <surname>Engineering</surname>
          </string-name>
          ,
          <volume>7</volume>
          (
          <issue>1</issue>
          ), pp.
          <fpage>34</fpage>
          -
          <lpage>45</lpage>
          (
          <year>2002</year>
          )
          <fpage>13</fpage>
          .
          <string-name>
            <surname>Cohn</surname>
            ,
            <given-names>M.:</given-names>
          </string-name>
          <article-title>User Stories Applied: for Agile Software Development</article-title>
          . Addison-
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          <string-name>
            <surname>Wesley</surname>
          </string-name>
          (
          <year>2004</year>
          )
          <fpage>14</fpage>
          .
          <string-name>
            <surname>Moore</surname>
            ,
            <given-names>J. M.</given-names>
          </string-name>
          :
          <string-name>
            <surname>Communicating Requirements Using End-User GUI</surname>
          </string-name>
          Construc-
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          <article-title>tions with Argumentation</article-title>
          .
          <source>In: 18th IEEE International Conference on Auto-</source>
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          <source>mated Software Engineering</source>
          , pp.
          <fpage>360</fpage>
          -
          <lpage>363</lpage>
          , IEEE Computer Society (
          <year>2003</year>
          )
          <fpage>15</fpage>
          .
          <string-name>
            <surname>Panach</surname>
            ,
            <given-names>J. I.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>España</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Pederiva</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          , &amp;
          <string-name>
            <surname>Pastor</surname>
            ,
            <given-names>O.</given-names>
          </string-name>
          : Capturing Interaction
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          <source>nal of Universal Computer Science</source>
          ,
          <volume>14</volume>
          (
          <issue>9</issue>
          ), pp.
          <fpage>1480</fpage>
          -
          <lpage>1495</lpage>
          (
          <year>2008</year>
          )
          <fpage>16</fpage>
          .
          <string-name>
            <surname>Rivero</surname>
            ,
            <given-names>J. M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Rossi</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Grigera</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Burella</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <given-names>Robles</given-names>
            <surname>Luna</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E.</given-names>
            ,
            <surname>Gordillo</surname>
          </string-name>
          ,
          <string-name>
            <surname>S.</surname>
          </string-name>
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          <string-name>
            <surname>Approach</surname>
          </string-name>
          . In: 10th International Conference on Web Engineering, pp.
          <fpage>13</fpage>
          -
          <lpage>24</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          <string-name>
            <surname>Springer</surname>
          </string-name>
          (
          <year>2010</year>
          )
          <fpage>17</fpage>
          .
          <string-name>
            <surname>Fowler</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Beck</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Brant</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Opdyke</surname>
            ,
            <given-names>W.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Roberts</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          : Refactoring: Im-
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          <article-title>proving the Design of Existing Code</article-title>
          .
          <string-name>
            <surname>Addison-Wesley Professional</surname>
          </string-name>
          (
          <year>1999</year>
          )
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>