<!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>Viewpoint Synchronization of UWE Models</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Daniel Ruiz-Gonza´lez</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Nora Koch</string-name>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Christian Kroiss</string-name>
          <email>kroissg@pst.ifi.lmu.de</email>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Jose´-Rau´l Romero</string-name>
          <email>jrromero@uco.es</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Antonio Vallecillo</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Atenea Research Group. Universidad de Co ́rdoba</institution>
          ,
          <country country="ES">Spain</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>GISUM/Atenea Research Group. Universidad de Ma ́laga</institution>
          ,
          <country country="ES">Spain</country>
        </aff>
        <aff id="aff2">
          <label>2</label>
          <institution>Web Engineering Group, Ludwig-Maximilians-Universita ̈t Mu ̈nchen</institution>
          ,
          <country country="DE">Germany</country>
        </aff>
      </contrib-group>
      <fpage>46</fpage>
      <lpage>60</lpage>
      <abstract>
        <p>Viewpoint modeling has demonstrated to be an effective approach for specifying complex software systems by means of a set of independent views and correspondences between them. As any other software system, a Web application evolves during its lifetime, and its specifications change to meet new requirements or to adapt to business changes. As a consequence, view elements and correspondences can be added, modified or removed, which may cause synchronization and consistency problems in the system specifications. UWE is a Model-Driven Web Engineering approach that uses several viewpoints for addressing the different concerns involved in the specification and development of Web systems. In this paper we examine the explicit and partially automatic specification of correspondences between UWE views, and present a tool for helping synchronize them under the presence of changes to the view elements.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1 Introduction</title>
      <p>Viewpoint modeling is currently seen as an effective technique for specifying complex
software systems by means of a set of viewpoints and correspondences between their
elements. Each viewpoint focuses on a particular aspect of the system, abstracting away
from the rest of the concerns. Correspondences specify the relationships between the
elements in the different views, together with the constraints that guarantee the
consistency among these elements.</p>
      <p>During its life cycle, a software system evolves and its specification is subject to
changes in order to meet new requirements or to adapt to business changes. Thus
designers may have to add, remove and/or modify elements in the views, or in the
correspondences. One of the consequences of adopting a multi-viewpoint approach to system
design is that description of the entities that appear in different views must be consistent.
Thus, we should always keep them synchronized. One possible solution is the adoption
and implementation of synchronization mechanisms able to propagate the changes on
the related views. In particular, a modification in a view may induce a modification in
another view or, alternatively, a set of correspondences may need to be adapted.</p>
      <p>
        Web Engineering is a specific discipline in which both Model-Driven Software
Development and Viewpoint Modeling can be successfully applied. For example, existing
Model-Driven Web Engineering (MDWE) approaches such as OO-H, UWE, OOWS,
WebML, MIDAS or beContent (see [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] for a comprehensive survey covering the
majority of these proposals), already provide a set of suitable methods and tools for the design
and development of most kinds of Web applications. In particular, the UML-based Web
Engineering approach (UWE) is a well-known MDWE methodology that defines four
basic viewpoints on a Web system for structuring its specifications: Content,
Navigation, Business Process and Presentation. However, very few MDWE approaches provide
notations and mechanisms for establishing correspondences between their viewpoints,
or for synchronizing them when they evolve.
      </p>
      <p>
        In this paper we examine the explicit specification of correspondences between
UWE views, and present a tool for synchronizing them under the presence of changes
to the view elements or to the set of correspondences. Correspondences between UWE
model elements can either be derived automatically from relationships at metamodel
level (intensional approach) or specified individually for model elements (extensional
approach). We use classes and dependencies of the Unified Modeling Language (UML),
respectively, for expressing and visualizing the correspondences between UWE views.
Once the correspondences are specified, the possible changes are propagated using
Beanbag [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ], a very flexible and efficient notation and engine for synchronizing
general data dictionaries.
      </p>
      <p>The structure of this paper is as follows. After this introduction, Section 2 presents
some preliminaries about viewpoint modeling and the synchronization process we
propose. Section 3 gives an overview of UWE. Then, Section 4 presents our proposal for
specifying correspondences between UWE views. Section 5 describes how the UWE
views can be synchronized using the information provided by the correspondences, and
the tool we have developed to support the change propagation. Finally, Sections 6 and 7
discuss some related works and present some conclusions, respectively.
2</p>
    </sec>
    <sec id="sec-2">
      <title>Viewpoint Modeling and Synchronization</title>
      <p>
        One way to cope with the inherent complexity of large distributed software systems is
by dividing the design activity according to several areas of concerns, or viewpoints,
each one focusing on a specific aspect of the system, as described in IEEE Std. 1471 [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ].
This approach has been adopted by most MDWE methodologies that propose the
construction of different views (i.e., models) which comprise at least a content model, a
navigation and a presentation model — although naming them differently. Each
viewpoint addresses one particular concern, and normally uses its own specific (viewpoint)
language, which is defined in terms of a set of concepts specific to that concern, their
relationships, and their well-formedness rules. A view is a representation of the whole
system from the perspective of a viewpoint.
      </p>
      <p>
        Although separately specified, developed and maintained to simplify reasoning about
the complete system specifications, viewpoints are not completely independent:
elements in each view need to be related to elements in the other views in order to ensure
the consistency and completeness of the global specifications. Such relationships are
described in terms of correspondences [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ].
      </p>
      <p>
        In a viewpoint modeling context, viewpoint languages are defined in terms of
metamodels, and the views are then models that conform to these metamodels.
Correspondences are defined as models, too, which conform to the appropriate metamodels. Such
Correspondence metamodels can be defined either ad-hoc (see, e.g., [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]) or use a model
transformation language in order to define viewpoint correspondences as model
transformations (see, e.g., [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ]).
      </p>
      <p>System specifications can evolve due to changes in the requirements or for many
other reasons. Thus, the designer may need to perform changes in the views by
modifying, for example, one of their elements. Since the system is described as a set of
dependent views, any action on a view might cause a similar or a different action on
other views. If views are not explicitly related by correspondences, the modeler will
not be able to easily know which elements in the views have some relationship with the
modified element. Since any action on a model element can be affected by a
correspondence, inconsistencies need to be found and solved.</p>
      <p>
        There are several problems that may happen when trying to maintain the
synchronization and consistency between views, once a change has happened (either in an
element of a view, or in a correspondence, see [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]). Sometimes the consistency can
be easily restored if the correspondences provide enough information to propagate the
change.
      </p>
      <p>This is why we need an automated process for change propagation. Hence, we
propose to implement the following synchronization process. Fig. 1 shows an overview of
the process, where some of the actions are further detailed in sub-activity diagrams
as shown e.g. in Fig. 2. The process starts from a set of models with the different
views as for example the views presented in the next section (Sec. 3), the tool
automatically builds the initial set of correspondences between the elements in the separate
views. These extensional correspondences could be derived from a set of intensional
correspondences defined in the corresponding metamodel (see Sec. 4). In addition, the
system designer can define more correspondences depending on the particular
requirements of the application.</p>
      <p>Build views of
model</p>
      <p>Generate
correspondences
automatically</p>
      <p>Specify
correspondences
manually
[add more correspondences]
[else]</p>
      <p>Check "with
Beanbag"
Change/Improve
views of model
&amp; corresp.</p>
      <p>[else]</p>
      <p>Accept/Reject
suggestions
[no more improvements]</p>
      <p>Visualize
annotations</p>
      <p>The consistency of the complete system specification can be checked based on the
different models (each one representing a different view) and the sets of
correspondences between their elements. The refined checking process (Check ”with Beanbag”)
is depicted in Fig. 2, and further detailed in Sec. 5.2.</p>
      <p>: Model&amp;Corresp</p>
      <p>Transform
UML2Beanbag
Run Beanbag</p>
      <p>Transform</p>
      <p>Beanbag2UML
: Annotated-Model&amp;Corresp</p>
      <p>The result of this process is a set of annotations which are added to the original
model. These annotations are represented by means of stereotypes which decorate
elements of the model (including its correspondences) indicating that for these elements
the synchronization imposed by a correspondence has been broken, together with the
proposed changes to restore it. The user can then visualize the annotated model, being
able to modify some of the proposed changes if required. Once the designer is happy
with all the proposed changes, another process simply traverses all model elements and
implements the proposed changes, removing the annotations.
3</p>
    </sec>
    <sec id="sec-3">
      <title>UML-based Web Engineering</title>
      <p>
        UML-based Web Engineering (UWE) is a method for systematic and model-driven
development of Web applications. It follows the principle of “separation of concerns” by
modeling the content, the navigation structure, the business processes, and the
presentation of a Web application separately. UWE implements a model-driven development
process by defining model transformations of different types to derive platform specific
models from platform independent models and to generate running programs [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]. UWE
relies on standards: its modeling language is defined by an extension of the UML
metamodel [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ] and mapped to a so-called UML profile; its transformations are defined using
(de-facto) standard transformation languages like ATL [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ].
      </p>
      <p>
        In order to illustrate UWE’s approach and our proposal we will use a running
example, the Simple Address Book [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ]. It models an application that manages an address
book of contacts. Each contact contains a name, two phone numbers (business and
private), two postal addresses (business and private), and one e-mail address. The system
should offer a page with an introductory text and the list of contacts in the agenda,
which is stored in a database. For each object the set of its non-empty attributes values
is displayed. The address book Web application supports browsing of contacts, adding
new contacts, editing and removing of contacts.
      </p>
      <p>The content model in UWE (represented by a UML class diagram, see Fig. 3)
provides the specification of the domain-relevant information for the Web application. The
content model of our example contains contacts that are organized in an address book.</p>
      <p>Based on the content model, the navigation model of the Web application is built
(Fig. 4) by a model transformation and a set of successive refinements. This model
specifies the hypertext structure of the system, which is described in terms of nodes and
Cat*egocryategories
name : String c0a..t1egory
id : Long
links. Classes stereotyped ¿navigationClassÀ (like AddressBook or Contact) represent
navigable nodes for information retrieval; classes stereotyped ¿processClassÀ (such
as AddContact and RemoveContact) define navigation nodes where transactions may
occur. Direct links are modeled by associations stereotyped ¿navigationLinkÀ (omitted
in Fig. 4); in particular, associations stereotyped ¿processLinkÀ lead to or leave from
process classes. Some special navigation nodes are used to organize links. For example,
several instances of a navigation class are reached by ¿indexÀ classes (like ContactList)
and choices of links are represented by ¿menuÀ classes, like ContactMenu (see Fig. 4).
In the address book application, users can navigate from the homepage either, using
an index with the contacts, to view the information associated to a selected contact, or
along another navigation path to add a new contact to the database.</p>
      <p>&lt;&lt;processLink&gt;&gt;
&lt;&lt;processClass&gt;&gt;</p>
      <p>AddContact
&lt;&lt;processLink&gt;&gt;
&lt;&lt;navigationClass&gt;&gt;</p>
      <p>AddressBook
&lt;&lt;index&gt;&gt;</p>
      <p>ContactList
&lt;&lt;processLink&gt;&gt;
&lt;&lt;navigationClass&gt;&gt;</p>
      <p>Contact
businessAddress
privateAddress</p>
      <p>Each process class in the navigation model is refined by a process structure
(described in a class diagram) defining additional classes used in the process, and by a
process flow (described by a UML activity diagram) modeling the data and control flow
&lt;&lt;processLink&gt;&gt;
&lt;&lt;presentationGroup&gt;&gt;</p>
      <p>Contact
&lt;&lt;text&gt;&gt;
: NameField
&lt;&lt;presentationGroup&gt;&gt;
: BusinessAddressPanel
&lt;&lt;presentationGroup&gt;&gt;
: BusinessAddress
&lt;&lt;text&gt;&gt;
: email
&lt;&lt;presentationGroup&gt;&gt;
: PrivateAddressPanel
&lt;&lt;presentationGroup&gt;&gt;</p>
      <p>: PrivateAddress
&lt;&lt;presentationGroup&gt;&gt;</p>
      <p>: ButtonPanel
&lt;&lt;anchor&gt;&gt;
: RemoveContact
&lt;&lt;anchor&gt;&gt;
: EditContact
of the process. For example, user interactions with the web application are modeled by
UML actions stereotyped as ¿userActionÀ.</p>
      <p>Finally, the presentation model provides an abstract view of the user interface (UI)
of the application, where concrete aspects such as colors and fonts of UI elements are
not considered. A structured class stereotyped as ¿presentationGroupÀ models the
presentation of each navigation class. UI elements (e.g., text, images, etc.) contained in
presentation classes are modeled by classes stereotyped accordingly (¿textÀ, ¿imageÀ,
etc.), indicating the abstract type of the widgets to use. Presentation classes can be
nested, modeling the hierarchical structural of Web pages. A presentation class that is
not contained in another represents a top-level page of the Web application. In addition,
a presentation class is defined for each user action. The presentation model therefore
has the form of a forest of presentation classes. An excerpt of the presentation model of
the address book application is shown in Fig. 5.
4</p>
    </sec>
    <sec id="sec-4">
      <title>Representing Correspondences</title>
      <p>The objective is to build the correspondence model that comprises a set of
correspondences between model elements of a pair of views. The specification of the
correspondences is not a difficult but a tedious task. However the work is worth as it allows for
synchronization of the different views of a model. It is then an unavoidable work.
Therefore our focus is on the automation of the correspondence specification process. This
is particularly easy in UWE due to the characteristics of its metamodel. There are then
basically two approaches to model correspondences between the views of a system:
extensional and intensional.</p>
      <sec id="sec-4-1">
        <title>Extensional Specification of Correspondences</title>
        <p>
          4.1
Extensional models describe correspondences between the particular elements of the
views. In UWE, views are expressed as UML models. The UML 2 language defines
abstraction dependencies, possibly constrained by OCL statements, as the natural
mechanism to model a relationship that relates two elements or sets of elements that represent
the same concept at different levels of abstraction or from different viewpoints [
          <xref ref-type="bibr" rid="ref9">9</xref>
          ].
Thus, correspondences between related elements in two views can be expressed
using UML dependencies between them. We make use of the fact that dependencies are
directed relations, and that the client of the dependency “depends” on the supplier.
This establishes a semantic relationship between them that indicates which one should
change if a modification is made to one of them.
        </p>
        <p>
          Moreover, we mentioned above the importance of endowing correspondence
specifications with enough information to propagate the changes. In some approaches this
is accomplished by adding a constraint, which establishes a relationship that must
hold between the elements related by the correspondence. OCL can be the natural
language of choice here, enabling a very flexible and expressive way to specify such
constraints [
          <xref ref-type="bibr" rid="ref5">5</xref>
          ]. Other authors [
          <xref ref-type="bibr" rid="ref6">6</xref>
          ] also suggest the use of model transformation
languages (e.g., QVT [
          <xref ref-type="bibr" rid="ref12">12</xref>
          ]) for establishing the relations and for specifying (and enforce)
the changes. The problem with these approaches resides precisely in their flexibility and
expressive richness, since they assume the system designer is able to specify complex
constraints using these notations.
        </p>
        <p>A more simple, pragmatic and practical solution is based on the characterization
of the kinds of correspondences that are normally used, and the “componentization”
of their behavior so that they can be easily re-used. For instance, one common kind of
correspondence found in most UML models establishes that the two related elements
should have the same name. Another usual correspondence dictates that an element in a
view should have a subset of the attributes of the related element in the other view. For
example, this is found in UWE models when relating an element in the Content model
with its counterpart in the Presentation model: the attributes of the latter need to be a
subset of the attributes of the former (no new attributes can be added in the presentation
view).</p>
        <sec id="sec-4-1-1">
          <title>Supplier</title>
          <p>Content::Class</p>
          <p>Content::Class
Content::Association</p>
          <p>Navigation::Link
BusinessProcess::UserAction</p>
        </sec>
        <sec id="sec-4-1-2">
          <title>Client</title>
          <p>Navigation::NavigationClass
Navigation::ProcessClass</p>
          <p>Navigation::Index
Presentation::Anchor
Presentation::Button</p>
        </sec>
        <sec id="sec-4-1-3">
          <title>Correspondence type</title>
          <p>sameName
sameName
validIndex
validAnchor
validButton</p>
          <p>Table 1 shows some examples of the most common correspondences found in UWE
specifications. Some of them are specific to UWE (e.g., validIndex), while some others
can be used in any multi-view UML specification (e.g., sameName). The semantics
of each kind of correspondence (i.e., the relation that must hold between the related
elements) is predefined. For example, the semantics of a sameName correspondence
can be defined by the OCL expression fclient.name = supplier.nameg. The fact that
correspondences are defined using directed dependencies also indicates how the change
should be propagated in case of de-synchronization (that is, from the supplier to the
client).</p>
          <p>&lt;&lt;profile&gt;&gt;</p>
          <p>Synch
&lt;&lt;metaclass&gt;&gt;
Dependency</p>
          <p>&lt;&lt;stereotype&gt;&gt;</p>
          <p>CorrespondenceLink
&lt;&lt;stereotype&gt;&gt;
subtype
&lt;&lt;stereotype&gt;&gt;
equals
&lt;&lt;stereotype&gt;&gt;
namesSubset
&lt;&lt;stereotype&gt;&gt;
subsets
&lt;&lt;stereotype&gt;&gt;
sameName
&lt;&lt;stereotype&gt;&gt;
sameType
&lt;&lt;import&gt;&gt;
&lt;&lt;profile&gt;&gt;</p>
          <p>UWE Synch
&lt;&lt;stereotype&gt;&gt;
validAnchor
&lt;&lt;stereotype&gt;&gt;
validButton
&lt;&lt;stereotype&gt;&gt;
validIndex</p>
          <p>The idea is then to stereotype the UML dependencies that represent the
correspondences with the identifier of the semantics they are expected to exhibit. For this reason
we have defined a UML profile, which is shown in Fig. 6. It contains one stereotype for
each kind of correspondence, and is currently structured in two related profiles. The first
one, Synch, contains those correspondences which can be used in any UML multi-view
specification. The second one, UWESynch, contains those kinds of correspondences
which are specific to UWE. Fig. 7 show some examples of these correspondences.</p>
        </sec>
      </sec>
      <sec id="sec-4-2">
        <title>4.2 Intensional Specification of Correspondences</title>
        <p>It is not realistic that the system designer has to deal with definition and visualization
of all the correspondences of a system. In particular, it is almost impossible to cope
with their specification, management and maintenance in case of large systems, with
thousands of correspondences between their elements.</p>
        <p>Intensional approaches define correspondences as relations between types of model
elements at metamodel level, instead of between the model element themselves — i.e.,
between viewpoint elements and not between view elements. However, this approach is
not free from problems either: for typical users of the specification, correspondences are
easier to use, visualize and understand when they are drawn as relationships between
individual elements in the views, instead of expressed as formulae relating metamodel
elements.</p>
        <p>In UWE, some intensional correspondences are defined by its metamodel, which
defines some relations between types of model elements: a navigation class is related to</p>
        <p>Address
id : Long
name : String
postalCode : String
city : String
country : String
&lt;&lt;sameName&gt;&gt;
a class of the content model; an anchor of the presentation model is related to a link in
the navigation model, etc. For example, the relation for the validAnchor correspondence
is specified by the following OCL expression:
client . getPresentationContainer ( ) . getNavigationNode ( ) =
supplier . getLinkSource ( )
and client . class . name = supplier . getLinkTarget ( ) . name</p>
        <p>Note that for the evaluation of the expression we define a set of OCL helper
functions, such as getPresentationContainer and getLinkTarget, which handle the UWE
specific stereotyped elements.</p>
        <p>In our approach, starting with a set of UWE views, our tool automatically generates
the initial set of extensional correspondences from the intensional ones (see Fig. 1)
by interpreting a collection of expressions like the one shown above. Once the whole
set of correspondences is modeled, the designer can then add or modify those which
are required in his/her particular case, although normally they are just a few. The fully
automated generation greatly facilitates the task of defining correspondences in UWE
models.
4.3</p>
      </sec>
      <sec id="sec-4-3">
        <title>Well-formed rules</title>
        <p>
          Apart from specifying the correspondences between model elements, any proper
multiview specification of a system should also allow the specification of required
correspondences, which describe the well-formed rules that the set of correspondences
between elements of views should obey [
          <xref ref-type="bibr" rid="ref13">13</xref>
          ]. For example, UWE requires that every
¿anchorÀ of the presentation view should be related to a ¿navigationLinkÀ or
¿processLinkÀ of the navigation view by a ¿subsetsÀ correspondence. This means that for
a UWE specification to be correct, the set of correspondences should include one of
these correspondences for every element in the presentation view.
        </p>
        <p>In our proposal, this is expressed by a set of OCL constraints on the set of
correspondences. They can be checked by any OCL engine, e.g., the MagicDraw validation
engine that comes with some of its latest versions, or with any external OCL tool. In
any case, validating these well-formed rules over the set of correspondences falls
outside the scope of this paper, as it happens with the validation of the well-formed rules
of the view elements (i.e., the intra-view consistency).
5</p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>Synchronization</title>
      <p>Synchronization of the different views of a model can be performed once
inconsistencies in the views are detected. Inconsistencies can be found by checking that
correspondences are valid for the existing model elements. If not, the synchronization tool
proposes changes with the objective to achieve synchronized views again.
5.1</p>
      <sec id="sec-5-1">
        <title>Correspondence Model</title>
        <p>We have mentioned above that correspondences between the related elements in
separate views are modeled by UML dependencies, stereotyped according to the kind of
semantics we want to impose to the correspondence. UML dependencies provide a very
convenient mechanism for drawing correspondences in a easy manner, and for
visualizing them. However, UML dependencies are quite volatile, in the sense that the user
may easily delete or modify them without the system being aware of the changes. For
example, if the user removes one of the classes related by a dependency, the
dependency is also removed, which may not be completely correct. This is why we need
some kind of more persistent representation of correspondences, which in our approach
is provided by classes stereotyped ¿CorrespondenceClassÀ. Each UML dependency
that represents a correspondence is then associated to one of these classes.</p>
        <p>Correspondence classes are managed by the reSynch tool in a transparent way, and
therefore the user is completely unaware of them. Thus, if the user decides to delete
or modify one UML dependency, the tool is able to know about the change. More
precisely, the tool checks that every UML dependency has its associated correspondence
class. In case of conflicts the tool reacts as follows:
– If there is a UML dependency and it has a correspondence class with the same name
and information, no action is needed (everything is Ok).
– If there is a UML dependency with no associated correspondence class, it is
assumed that the dependency has been added by the user, and therefore the
correspondence class is created and added to the model.
– If there is a correspondence class with no associated UML dependency, it means
that the user has deleted the UML dependency or any of the associated classes.
² If the two related classes exist but the UML dependency does not, the
correspondence class is removed.
² If the supplier class exists but neither the client nor the UML dependency do,
the correspondence class is also removed.
² If the client class exists but neither the supplier nor the UML dependency do, a
warning is raised because the user seems to have removed the supplier and left
the clients with a “dangling” dependency to it.
&lt;&lt;metaclass&gt;&gt;</p>
        <p>Class</p>
        <p>&lt;&lt;stereotype&gt;&gt;
CorrespondenceClass
+client : NamedElement
+supplier : NamedElement
+type : Stereotype</p>
        <p>Fig. 8 shows the specification of the stereotype for correspondence classes, and
Fig. 9 shows an example of the correspondence class associated to the top
correspondence of Fig. 7. As we can see, we have also simulated that the designer has decided
to change the content model, renaming class Address to C Address – probably without
being aware that there was a class in the navigation model that was related to it (maybe
even more elements in other models, not only that one). This has produced an
inconsistency in the models, which could go easily unnoticed if no explicit correspondences
have been specified. And even in this case, the propagation of changes to re-synchronize
the model is not an easy task if it has to be manually performed. This is why we need
the automated process for change propagation described in Sec. 2.</p>
        <p>The synchronization process consists in the definition of the correspondences and —
in case of need of synchronization — the automatic annotation of the model elements of
the different views. The annotation is supported by a a set of UML stereotypes. Fig. 10
shows the UML profile used for annotating the models, while Fig. 11 shows an example
of its application after the synchronization process (using the example model of Fig. 9).
5.2</p>
      </sec>
      <sec id="sec-5-2">
        <title>Tool Support for Synchronizing Models</title>
        <p>
          The tool we have developed is called reSynch [
          <xref ref-type="bibr" rid="ref14">14</xref>
          ] and supports the process depicted
in Fig. 2. It uses the Beanbag tool [
          <xref ref-type="bibr" rid="ref2">2</xref>
          ] to detect and resolve the inconsistencies found.
Beanbag is a very generic and powerful synchronization engine, which handles general
data dictionaries. Thus, the UWE models need to be transformed into the data
dictionaries that Beanbag is able to deal with. This is done by a set of ATL transformations,
which extract the relevant information from the models, and express it using two
dictionaries: one for the model elements involved in the correspondences, and other for the
&lt;&lt;metaclass&gt;&gt;
NamedElement
&lt;&lt;stereotype&gt;&gt;
        </p>
        <p>DeSynch
&lt;&lt;stereotype&gt;&gt;
AddElement
&lt;&lt;stereotype&gt;&gt;
RemoveElement
&lt;&lt;stereotype&gt;&gt; &lt;&lt;stereotype&gt;&gt; &lt;&lt;stereotype&gt;&gt;</p>
        <p>ChangeName ChangeType ChangeVisibility
+newName : String +newType : Type +newVisibility : VisibilityKind
&lt;&lt;stereotype&gt;&gt;
ChangeMultiplicity
+newUpper : Integer
+newLower : Integer
correspondences themselves. For instance, the example depicted in Fig. 9 gets
transformed into the following Beanbag dictionaries:
f / / Dictionary of model elements
”Content : : C_Address”¡&gt;fname¡&gt;”C_Address”g ,
”Navigation : : Address”¡&gt;fname¡&gt;”Address”g ,
g
f / / Dictionary of correspondences
1¡&gt;ftype¡&gt;”sameName ” ,</p>
        <p>client¡&gt;”Navigation : : Address ” , supplier¡&gt;”Content : : C_Address”g ,</p>
        <p>Then the Beanbag engine is executed using a set of synchronizing functions, one
for each type of correspondence. These functions are defined in a Beanbag program
and then compiled into a synchronizer. For instance, the Beanbag function we have
defined for ¿sameNameÀ correspondences is the following:
sameName ( entity1 , entity2 ) f
entity1 . ” name” = entity2 . ” name ” ;</p>
        <p>Please note that the direction of the change propagation (i.e., which element is the
supplier and which one is the client) is deduced from the order in which the elements
are listed in the corresponding entry in the dictionary of correspondences.</p>
        <p>The result of the Beanbag execution is another Beanbag dictionary, with the changes
required to synchronize both models. Such changes include additions, deletions and
modifications to the data dictionaries. In our example, what we get is the following:
”Navigation : : Address”¡&gt;fname¡&gt;”C_Address”g ,
Finally, this information is used to annotate the UWE models with the required changes
to restore the synchronization, producing in this case the model shown in Fig. 11.</p>
      </sec>
    </sec>
    <sec id="sec-6">
      <title>Related Work</title>
      <p>
        There is a large number of approaches related to our work. In the first place we have the
works on synchronizing artifacts in software engineering, mostly influenced by the
original works on multi-view consistency mechanisms [
        <xref ref-type="bibr" rid="ref15 ref16">15,16</xref>
        ]. These studies use a generic
representation of modifications and rely on users to write code to handle each type
of modification in each type of view. This idea has influenced later efforts on general
model synchronization frameworks, such as [
        <xref ref-type="bibr" rid="ref17 ref18 ref19">17,18,19</xref>
        ]. Although in principle these
frameworks allow the definition of correspondences between views and the
propagation of changes, they all try to detect inconsistencies and solve them by changing the
affected elements, but without any well-defined underlying architectural framework that
allows the precise and explicit specification of viewpoints, views, and correspondences
between them. In addition, it is unrealistic to suppose that all inconsistencies can be
automatically solved. This is the main problem of many proposals that try to resolve
views inconsistencies by automatically synchronizing the models using model
transformations (e.g. [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]). In addition, these proposals also suffer the intrinsic problems of
model transformations when used for inconsistency solving, as discussed in [
        <xref ref-type="bibr" rid="ref20 ref21">20,21</xref>
        ].
      </p>
      <p>
        The approach of Cicchetti and Di Ruscio [
        <xref ref-type="bibr" rid="ref22">22</xref>
        ] is similar to our approach, as it
establishes relationships between viewpoints of the models of a Web application. They
provide a weaving model for that. The difference to our approach lies in the semantics
of their relationships, which are used to integrate the different viewpoints. The
relationships of our approach, instead, have the objective to allow the propagation of changes
in case of model evolution.
      </p>
      <p>
        Ultimately, a key issue to realize and implement change management and
propagation is the availability of synchronizing tools that can detect the changes and show
them to the designer, so that he can decide what to do, and how to proceed. This may
imply propagating the changes either forwards, backwards, or even changing the
correspondences. In this respect, the most inspiring work for our proposal are the works
(and tools) by Benjamin Pierce and his colleagues in the Harmony group, who have
explored bidirectional transformations extensively in the context of trees [
        <xref ref-type="bibr" rid="ref23">23</xref>
        ], and more
recently in the context of relational databases [
        <xref ref-type="bibr" rid="ref24">24</xref>
        ]. In particular, Unison [
        <xref ref-type="bibr" rid="ref25">25</xref>
        ] is a
filesynchronization tool for Unix and Windows which allows two replicas of a collection
of files and directories to be stored on different hosts (or different disks on the same
host), modified separately, and then brought up to date by propagating the changes in
each replica to the other. Our proposal aims at providing similar functionality, but for
elements in different views related through correspondences, instead of files in different
hosts related by paths and names, which is a simpler case.
7
      </p>
    </sec>
    <sec id="sec-7">
      <title>Conclusion and Future Work</title>
      <p>Software development is increasingly shifting its focus from coding to modeling, thus
evolution management techniques tend to encompass also the evolution of model-based
artifacts. In particular, in multi-view design, model elements in a view are related by
many-to-many correspondences to other view elements and thus any change
propagation mechanism should manage the conflicting effects that changes may cause in the
whole system.</p>
      <p>
        In this paper we have proposed a synchronization process, a notation for the explicit
specification of correspondences between UWE views, and have briefly presented a tool
for synchronizing these related views under the presence of changes to the view
elements or to the set of correspondences. The tool, called reSynch, is currently in alpha
version and can be downloaded from [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ]. The advantages maintaining the views
synchronized is obviously the guarantee of consistency of the models. The main difficulty
is the management of the information related to the correspondences. The overhead can
be alleviated by an automated process and tool support, as shown in this paper.
      </p>
      <p>
        There are many different lines of work that we plan to address in the very short
term. Firstly we want to fully integrate the tool with MagicUWE, the UWE plugin
for MagicDraw [
        <xref ref-type="bibr" rid="ref26">26</xref>
        ]. Secondly, we want to extend the validation process to take into
account the well-formed rules that the set of UWE correspondences should fulfill. We
also plan to apply our approach to real problems of higher complexity. Finally, we
want to enhance the current visualization facilities of the annotated models so that the
affected elements after the synchronization process change their color and appearance
when visualized with MagicDraw.
      </p>
      <p>Acknowledgements. We would like to thank Yingfei Xiong and the people at the Japan
National Institute of Informatics for their help and support with Beanbag. We would
also like to thank the anonymous reviewers for their insightful comments and
suggestions, that significantly helped to improve the paper. This work has been supported by
the DFG Project MAEWA II, WI 841/7-2, the EU FET-GC2 IP project SENSORIA
(IST-2005-016004) and the Spanish projects TIN2008-03107, TIN2008-00889-E and
P07-TIC-03184.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Rossi</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Pastor</surname>
            ,
            <given-names>O.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Schwabe</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Olsina</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          :
          <article-title>Web Engineering: Modelling and Implementing Web Applications</article-title>
          . Springer Verlag (
          <year>2008</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Xiong</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Zhao</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hu</surname>
            ,
            <given-names>Z.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Takeichi</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Song</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Mei</surname>
          </string-name>
          , H.:
          <article-title>Beanbag: Operation-based Synchronization with Intra-relations</article-title>
          .
          <source>Technical Report GRACE-TR-2008-04, Center for Global Research in Advanced Software Science and Engineering</source>
          , National Institute of Informatics, Japan (
          <year>2008</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3. IEEE:
          <article-title>Recommended Practice for Architectural Description of Software-Intensive Systems</article-title>
          , New York, USA. (
          <year>2000</year>
          ) IEEE Std.
          <volume>1471</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Linington</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          :
          <article-title>Black Cats and Coloured Birds What do Viewpoint Correspondences Do?</article-title>
          <source>In: Proc. of the 4th International Workshop on ODP and Enterprise Computing (WODPEC</source>
          <year>2007</year>
          ), Maryland,
          <string-name>
            <surname>US</surname>
          </string-name>
          , IEEE Digital Library (
          <year>2007</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5. ISO/IEC: Information technology
          <article-title>- Open distributed processing - Use of UML for ODP system specifications</article-title>
          .
          <source>ISO</source>
          and
          <string-name>
            <surname>ITU-T</surname>
            , Geneva,
            <given-names>Switzerland.</given-names>
          </string-name>
          (
          <year>2008</year>
          )
          <article-title>ISO/IEC FDIS 19793</article-title>
          ,
          <string-name>
            <surname>ITU-T X</surname>
          </string-name>
          .
          <year>906</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Romero</surname>
            ,
            <given-names>J.R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Moreno</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Vallecillo</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>Modeling ODP Correspondences using QVT</article-title>
          .
          <source>In: Proc. of MDEIS'06</source>
          . (
          <year>2006</year>
          )
          <fpage>15</fpage>
          -
          <lpage>26</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Eramo</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Pierantonio</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Romero</surname>
            ,
            <given-names>J.R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Vallecillo</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>Change management in multiviewpoint systems using ASP</article-title>
          .
          <source>In: Proc. of WODPEC</source>
          <year>2008</year>
          , Munich, Germany (
          <year>2008</year>
          )
          <fpage>19</fpage>
          -
          <lpage>28</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <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.,
          <string-name>
            <surname>Baumeister</surname>
          </string-name>
          , H.:
          <article-title>UML-Based Web Engineering: An Approach Based on Standards</article-title>
          . In Olsina, L.,
          <string-name>
            <surname>Pastor</surname>
            ,
            <given-names>O.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Rossi</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Schwabe</surname>
          </string-name>
          , D., eds.: Web Engineering:
          <article-title>Modelling and Implementing Web Applications</article-title>
          . Volume
          <volume>12</volume>
          of Human-Computer Interaction Series. Springer, Berlin (
          <year>2008</year>
          )
          <fpage>157</fpage>
          -
          <lpage>191</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9. OMG:
          <article-title>Unified Modeling Language 2.1.1 Superstructure Specification</article-title>
          . OMG,
          <string-name>
            <surname>Needham</surname>
          </string-name>
          (MA), USA. (
          <year>2007</year>
          )
          <article-title>OMG doc</article-title>
          . formal/07-02-05.
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <article-title>The Eclipse Foundation: ATL: The ATLAS Model Transformation Language</article-title>
          . (http: //www.eclipse.org/m2m/atl/,
          <source>last visited 20.3</source>
          .
          <year>2009</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Busch</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Koch</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kroiss</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          :
          <article-title>The Simple Address Book Modeling Example in UWE</article-title>
          . (http://www.pst.ifi.lmu.de/projekte/uwe/ exampleSimpleAddressBook.html)
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <article-title>OMG: MOF QVT Final Adopted Specification</article-title>
          . Object Management Group. (
          <year>2005</year>
          )
          <article-title>OMG doc</article-title>
          . ptc/05-11-01.
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>Romero</surname>
            ,
            <given-names>J.R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Vallecillo</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>Realizing correspondences in multi-viewpoint specifications</article-title>
          .
          <source>In: Proc. of EDOC</source>
          <year>2009</year>
          , Auckland, New Zealand, IEEE CS Press (
          <year>2009</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14. Ruiz-Gonza´lez,
          <string-name>
            <surname>D.</surname>
          </string-name>
          , et al.:
          <article-title>The reSynch Tool</article-title>
          . (http://atenea.lcc.uma.es/ index.php/Portada/Resources/reSynch, last
          <issue>visited Jun 1</issue>
          ,
          <year>2009</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <surname>Finkelstein</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gabbay</surname>
            ,
            <given-names>D.M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hunter</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kramer</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Nuseibeh</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          :
          <article-title>Inconsistency Handling in Multi-perspective Specifications</article-title>
          .
          <source>In: Proc. of ESEC'93</source>
          , London, UK, Springer-Verlag (
          <year>1993</year>
          )
          <fpage>84</fpage>
          -
          <lpage>99</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <surname>Grundy</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hosking</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Mugridge</surname>
          </string-name>
          , W.B.:
          <article-title>Inconsistency Management for Multiple-view Software Development Environments</article-title>
          .
          <source>IEEE Trans. Softw. Eng</source>
          .
          <volume>24</volume>
          (
          <issue>11</issue>
          ) (
          <year>1998</year>
          )
          <fpage>960</fpage>
          -
          <lpage>981</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17.
          <string-name>
            <surname>Ivkovic</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kontogiannis</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          :
          <article-title>Tracing Evolution Changes of Software Artifacts through Model Synchronization</article-title>
          .
          <source>In: Proc. of ICSM'04</source>
          . (
          <year>2004</year>
          )
          <fpage>252</fpage>
          -
          <lpage>261</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18.
          <string-name>
            <surname>Johann</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Egyed</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>Instant and Incremental Transformation of Models</article-title>
          .
          <source>In: Proc. of ASE'04</source>
          , IEEE Computer Society (
          <year>2004</year>
          )
          <fpage>362</fpage>
          -
          <lpage>365</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          19.
          <string-name>
            <surname>Bottoni</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Parisi-Presicce</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Pulcini</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Taentzer</surname>
          </string-name>
          , G.:
          <article-title>Maintaining coherence between models with distributed rules: from theory to Eclipse</article-title>
          .
          <source>Electron. Notes Theor. Comput. Sci</source>
          .
          <volume>211</volume>
          (
          <year>2008</year>
          )
          <fpage>87</fpage>
          -
          <lpage>98</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          20.
          <string-name>
            <surname>Stevens</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          :
          <article-title>Bidirectional Model Transformations in QVT: Semantic Issues and Open Questions</article-title>
          .
          <source>In: Proc. of MoDELS'07</source>
          . Volume
          <volume>4735</volume>
          of Lecture Notes in Computer Science., Springer (
          <year>2007</year>
          )
          <fpage>1</fpage>
          -
          <lpage>15</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          21.
          <string-name>
            <surname>Garcia</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <article-title>Bidirectional Synchronization of Multiple Views of Software Models</article-title>
          .
          <source>In: Proc. of DSML'08. Volume 324 of CEUR Workshop Proceedings</source>
          . (
          <year>2008</year>
          )
          <fpage>7</fpage>
          -
          <lpage>19</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          22.
          <string-name>
            <surname>Cicchetti</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ruscio</surname>
          </string-name>
          , D.D.:
          <article-title>Decoupling Web Application Concerns through Weaving Operations</article-title>
          .
          <source>Science of Computer Programming, Elsevier</source>
          <volume>70</volume>
          (
          <issue>1</issue>
          ) (
          <year>2008</year>
          )
          <fpage>62</fpage>
          -
          <lpage>86</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          23.
          <string-name>
            <surname>Foster</surname>
            ,
            <given-names>J.N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Greenwald</surname>
            ,
            <given-names>M.B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Moore</surname>
            ,
            <given-names>J.T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Pierce</surname>
            ,
            <given-names>B.C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Schmitt</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>Combinators for bidirectional tree transformations: A linguistic approach to the view-update problem</article-title>
          .
          <source>ACM Trans. Program. Lang. Syst</source>
          .
          <volume>29</volume>
          (
          <issue>3</issue>
          ) (
          <year>2007</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          24.
          <string-name>
            <surname>Bohannon</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Pierce</surname>
            ,
            <given-names>B.C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Vaughan</surname>
            ,
            <given-names>J.A.</given-names>
          </string-name>
          :
          <article-title>Relational Lenses: A Language for updatable Views</article-title>
          .
          <source>In: Proc. of PODS'</source>
          <year>2006</year>
          ,
          <string-name>
            <surname>ACM</surname>
          </string-name>
          (
          <year>2006</year>
          )
          <fpage>338</fpage>
          -
          <lpage>347</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          25. The Harmony Group:
          <article-title>The Unison File Synchronizer</article-title>
          . (http://www.cis.upenn.edu/ ˜bcpierce/unison,
          <source>last visited 20.3</source>
          .
          <year>2009</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          26. LMU -
          <article-title>Institute for Informatics, Programming and Software Engineering: UWE - MagicUWE</article-title>
          . (http://uwe.pst.ifi.lmu.de/toolMagicUWE.html,
          <source>last visited 22.5</source>
          .
          <year>2009</year>
          )
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>