<!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>Automated Model Transformations Based on STRIPS Planning</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Oldich Nouza</string-name>
          <email>nouza@fj.cvut.cz</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Vojt¥ch Merunka</string-name>
          <email>merunka@pef.czu.cz</email>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Miroslav Virius</string-name>
          <email>virius@fj.cvut.cz</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Czech Technical University in Prague, Faculty of Nuclear Sciences and Physical Engineering, Department of Software Engineering in Economy</institution>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Czech University of Life Sciences Prague, Faculty of Economics and Management, Department of Information Engineering</institution>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2010</year>
      </pub-date>
      <fpage>1</fpage>
      <lpage>13</lpage>
      <abstract>
        <p>This paper deals with application of STRIPS planning in automated model transformations. Object oriented model is viewed as a state space containing possible models as states and elementary transformations as state transitions. A source model is represented by an initial state, a target model by a goal state. Automation of model transformation consists in nding a plan to reach a goal state in this state space.</p>
      </abstract>
      <kwd-group>
        <kwd>automated model transformations</kwd>
        <kwd>modeling</kwd>
        <kwd>object oriented approach</kwd>
        <kwd>refactoring</kwd>
        <kwd>SBAT</kwd>
        <kwd>STRIPS planning</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1 Introduction</title>
      <p>
        Transformations play a key role in software engineering. Although there exist
satisable solutions of automated transformations of models to text, the same
cannot be said about transformations of models to models. This area is still in
phase of research and exploring of possibilities [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ].
      </p>
      <p>
        According to the approaches of present implemented in several CASE tools,
every model transformation requires application of the corresponding
transformation rule with suitable parameters [
        <xref ref-type="bibr" rid="ref13 ref3 ref4 ref6">3, 4, 6, 13</xref>
        ] Unfortunately, as mentioned
in [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ], this approach has one big disadvantage, which is a low reusability. For
every transformation that has no rule dened, it is necessary to either apply a
composition of other rules, or dene a new transformation rule. In this paper, we
introduce transformation engine named SBAT (STRIPS Based Transformation
      </p>
      <sec id="sec-1-1">
        <title>Engine) that does not require such steps.</title>
      </sec>
    </sec>
    <sec id="sec-2">
      <title>2 Model Transformations</title>
      <p>
        There are several ways how to dene model transformation. In this paper, we
introduce the denition presented in [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] and cited by [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]:
A transformation is the automatic generation of a target model from a
source model, according to a transformation denition. A transformation
denition is a set of transformation rules that together describe how a
model in the source language can be transformed into a model in the
target language. A transformation rule is a description of how one or
more constructs in the source language can be transformed into one or
more constructs in the target language.
      </p>
      <sec id="sec-2-1">
        <title>2.1 Classication of Transformations</title>
        <p>
          Publication [
          <xref ref-type="bibr" rid="ref8">8</xref>
          ] describes two criteria of classication of model transformations.
        </p>
      </sec>
      <sec id="sec-2-2">
        <title>The rst one is a dierence of abstraction level of source and target models:</title>
        <p>Horizontal transformation A transformation where source and target models
have the same level of abstraction. A typical example is refactoring.
Vertical transformation A transformation where source and target models
have a dierent level of abstraction. A typical example is renement.
The second classication criteria is a dierence of modeling languages in which
the source and targets models are expressed:
Endogenous transformation A transformation where source and target models
are expressed in the same language. Typical examples are refactoring and
normalization.</p>
        <p>Exogenous transformation A transformation where source and target models
are expressed in dierent languages. Typical examples are code generation
and reverse engineering.</p>
      </sec>
      <sec id="sec-2-3">
        <title>In this paper, we focus more closely on refactoring.</title>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>3 Refactoring</title>
      <p>
        There exist several ways how to dene refactoring. The denition presented in
[
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] says that refactoring is an improvement of software system without changing
its behavior. In other words, for the same input, the refactored software must
return the same output as the original software. Detail information on refactoring
is available in [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ].
      </p>
      <sec id="sec-3-1">
        <title>3.1 Complex Refactorings and Primitive Refactorings</title>
        <p>
          The idea of complex refactoring as composition of nite primitive (atomic)
refactorings was rst published in [
          <xref ref-type="bibr" rid="ref10">10</xref>
          ], where formal denition of C++ code
refactoring was discussed, and later in [
          <xref ref-type="bibr" rid="ref12">12</xref>
          ], where it was demonstrated on refactoring of
UML models. We have used the same idea to construct the SBAT transformation
engine.
        </p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>4 STRIPS Planning</title>
      <sec id="sec-4-1">
        <title>Technical report [9] denes STRIPS as following:</title>
        <p>STRIPS (STanford Research Institute Problem Solver) belongs to the
class of problem solvers that search a space of world models to nd one
in which a given goal is achieved. For any world model, we assume there
exists a set of applicable operators each of which transforms the world
model to some other world model. The task of the problem solver is to
nd some composition of operators that transforms a given initial world
model into one that satises some particular goal condition.</p>
        <p>The STRIPS language is based on the calculus of rst-order predicate logic.</p>
      </sec>
      <sec id="sec-4-2">
        <title>Formally, the STRIPS problem can be expressed by the following denitions:</title>
        <p>Denition 1. STRIPS problem is an ordered triple (I; O; G), where I is an
initial state, O is a set of operators, and G is a goal state condition.
Denition 2. Operator o (x) is dened as an ordered triple (P; A; D), whereP =
(x) is an application condition, A = [A1 (x) ; : : : ; Al (x)] is a set of formulas
which become true after operator application, D = [D1 (x) ; : : : Dm (x)] is a set
of formulas which become false after operator application, x = (x1; : : : xn) are
free variables contained in formulas P; A1; : : : ; Al; D1; : : : Dm, n 2 N+; l; m 2 N0.</p>
      </sec>
      <sec id="sec-4-3">
        <title>Elements of A are called add-eects , elements of D delete-eects .</title>
        <p>Denition 3. Let o (x1; : : : ; xn) = (P; A; D) 2 O be operator. A transition
function o0 : (x1 x2 : : : xn S) ! S, where S is a state set, is dened in the
following way:
o’ (x1; : : : ; xn; s) d=ef (s [ A)
s</p>
        <p>D
P
?
(1)
A goal is to nd such list of operators applications, which cause transition for
initial state to the state satisfying the goal state condition. More formally:
Denition 4. State sm is a solution of problem (I; O; G), if there exists a list of
operators applications o1 h1 ; : : : ; om hm , where hi are vectors of constants,
m 2 N, and:
1. s0 = I
2. (8i 2 m^ ) si = o0i 1 hi 1; si 1
3. sm G</p>
      </sec>
      <sec id="sec-4-4">
        <title>G, then the solution, which is I in this case, is called trivial solution.</title>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>5 SBAT Transformation Engine</title>
      <sec id="sec-5-1">
        <title>5.1 Requirements</title>
        <p>Resulting from the facts on present state model transformation discussed in
the introduction of this paper, we have decided to design a new transformation
engine fullling the following requirements:
1. The engine will support model transformations such as refactoring.
2. The input of transformation process will be the source model and conditions
of a target model.
3. The output of transformation process will be a target model, or information
that the source model cannot be transformed to any model fullling the
input conditions.
4. The source model and the target model will be consistent in light of behavior
of modeled system.
5. The transformation process will be fully automatized, without need to
specify transformation rules on input.
6. The engine will be universal and suciently reusable for wide scale of object
models.</p>
      </sec>
      <sec id="sec-5-2">
        <title>5.2 Formal Denition of Object Model</title>
        <p>
          In this paper, formal denition of object model is based on simplied metamodel
of UML 2.0 class diagrams, in detail described in [
          <xref ref-type="bibr" rid="ref11">11</xref>
          ]. Because of intended
generality, we do not focus on implementation details, such as method parameters
and bodies, access mode of class members, etc.
5.2.1 Model as State Space For our purposes we use the primitive
refactoring composition mentioned earlier. For this reason, we dene model as a state
space, where state set represents model in all possible states and state transitions
represent primitive refactorings.
        </p>
        <p>Denition 5. Let C be a class universe, A attribute universe, and F method
universe. LetObject; Client 2 C be classes, where 8 (x 2 C [Object]) (Object
which means that Object is parent of all other classes and Client represent a
client class, whose object sends messages to objects of classes in model. Let be
empty value. Model state s is an ordered 5-tuple (Cs; ins; supers; types; sends),
where
c),
Cs
ins</p>
        <p>C [Object; Client] is a nite set of classes of model in state s,
((A [ F ) Cs) is a binary relation named is in class dened as
def
ins = f(x; y) jx 2 (Attr (y) [ M eth (y)) ^ y 2 Cs g ,
(2)
where Attr (y) and M eth (y) are sets of attributes and methods respectively of
class y,
supers
((Cs [ [Object])</p>
        <p>Cs) is a binary relation is superclass
dened as
def
supers = f(x; y) jx = super (y) ^ x; y 2 Cs g ,
where super (y) means a superclass of y,
types (A Cs) [ (F (Cs)) is a binary relation named is of type
as
dened
def
types = f(x; y) jx = type (y) ^ y 2 Cs g ,
where type (y) means a type of y,
sends (F (Cs [ [Client])
sends message dened as</p>
        <p>(A [ F )
def
sends = f(x; y; u; v) j(x; y) 2 ins</p>
      </sec>
    </sec>
    <sec id="sec-6">
      <title>Cs) is a 4-ary relation named</title>
      <p>where lambda-expression
instance of class w.</p>
      <p>The following conditions must be fullled:
in the class hierarchy, each attribute appears at most once, so
^ (9w) ((u; w) 2 ins ^ (u
^ hx; i 2 M eth (y)g ,</p>
      <p>w _ u = w))
contains message sending o C u, where o is an
(3)
(4)
(5)
(6)
(7)
(8)
(8x 2 A) (8y; z 2 C) (ins (x; y) ^ ins (x; z) ! : (y
z) ^ : (z
y)) ,
each attribute is of some type, so</p>
      <p>(8x 2 A) (9y 2 Cs) (types (x; y)) ,
each attribute is of at most one type and each method has at most one return
value type, so</p>
      <p>(8x 2 (A [ F )) (8y; z 2 Cs) (types (x; y) ^ types (x; z) ! y = z) :</p>
      <sec id="sec-6-1">
        <title>Denition 6. states and mation rules.</title>
      </sec>
      <sec id="sec-6-2">
        <title>Model is a state space (M; ), where M is a nite set of model</title>
        <p>= Sin=1 'i : M Eki ! M ; (8i 2 n^) (ki 2 N) is a set of
transfor</p>
      </sec>
      <sec id="sec-6-3">
        <title>5.3 Model Transformation Problem</title>
      </sec>
      <sec id="sec-6-4">
        <title>Each model transformation requires answers to the following questions [8]:</title>
      </sec>
      <sec id="sec-6-5">
        <title>1. What needs to be transformed?</title>
      </sec>
      <sec id="sec-6-6">
        <title>2. What will be the result of the transformation? To nd answers, we have to formulate the transformation problem and set the principle of its solution. This can be done by several ways, we have decided to apply the STRIPS planning.</title>
      </sec>
      <sec id="sec-6-7">
        <title>5.4 STRIPS Planning application</title>
        <p>Let’s assume any nite subset B of object universal, containing elements of
all possible model states. To formulate STRIPS problem (I; O; G) for model
transformation, we must describe the model states and transformation rules
using rst-order predicate logic calculus. For this purpose, we dene predicates
shown in table 1.
5.4.1 Initial State Formulation Let mI = (CI ; inI ; superI ; typeI ; sendI ) be
a model in initial state. We construct initial state I of STRIPS problem by the
following steps:
1. Put I := ?.</p>
      </sec>
      <sec id="sec-6-8">
        <title>2. Add formulas about existence of classes in model:</title>
        <p>a) (8c 2 CI ) put (I := I [ [inM odel (c)]) and
b) (8c 2 (B CI )) put (I := I [ [outOf M odel (c)]).</p>
      </sec>
      <sec id="sec-6-9">
        <title>3. Add formulas about class attributes:</title>
        <p>a) (8 (a; c) 2 (inI \ (B \ A; CI ))) put
(I := I [ attrInClass (a; c)) and
b) (8 (a; c) 2 ((B \ A; B \ C) inI )) put</p>
        <p>(I := I [ attrOutOf Class (a; c)).
4. Add formulas about class methods:
a) (8 ( ; c) 2 (inI \ (B \ F; CI ))) put</p>
        <p>(I := I [ methInClass ( ; c)) and
b) (8 ( ; c) 2 ((B \ F; B \ C) inI )) put</p>
        <p>(I := I [ methOutOf Class ( ; c)).
5. Add formulas about inheritance:</p>
        <p>(8 (c; d) 2 superI ) put (I := I [ superClass (c; d)).
6. Add formulas about attribute types and return value types of methods:
a) (8 (a; c) 2 (typeI \ (B \ A; CI ))) put</p>
        <p>(I := I [ hasT ype (a; c)) and
b) (8 ( ; c) 2 (typeI \ (B \ F; CI ))) put (I := I [ hasT ype ( ; c)).</p>
      </sec>
      <sec id="sec-6-10">
        <title>7. Add formulas about message sending:</title>
        <p>(8 (a; c; b; d) 2 sendI ) put (I := I [ sending (a; b; c; d)).</p>
      </sec>
      <sec id="sec-6-11">
        <title>5.4.2 Formulation of Goal State Condition</title>
        <p>dened by the formula that is true in any goal state.</p>
        <p>A goal state condition G is
5.4.3 Formulation of Operator Set The set of operators O is dened
identically for each particular problem, because it represents a set of primitive
refactorings. The complete denition of the operator set is described in table 3 in
appendix.</p>
      </sec>
      <sec id="sec-6-12">
        <title>5.5 Example</title>
      </sec>
      <sec id="sec-6-13">
        <title>5.5.1 Problem Let’s suppose a simplied class model of le system (see g. 1).</title>
        <p>*</p>
        <p>Folder
+name
5.5.2 Solution The initial model state ms = (Cs; ins; supers; types; sends),
where:</p>
        <p>Cs = [F older; F ile; String]
ins = [(name; F older) ; (owner; F older) ; (name; F ile) ; (owner; F ile)]
supers = [(Object; F older) ; (Object; F ile) ; (Object; String)]
types = [(name; String) ; (owner; F older)]
sends = f(Client; main; x; y) j(x; y) 2 ins g</p>
      </sec>
      <sec id="sec-6-14">
        <title>The corresponding initial state of STRIPS problem is the following:</title>
        <p>I = [inM odel (F older) ; inM odel (F ile) ; inM odel (String) ;
outOf M odel (Element) ;
attrInClass (name; F older) ; attrInClass (owner; F older) ;
attrInClass (name; F ile) ; attrInClass (owner; F ile) ;
attrOutOf Class (name; Elememt) ; attrOutOf Class (owner; Element) ;
superClass (Object; F ile) ; superClass (Object; F older) ;
hasT ype (owner; F older) ; hasT ype (name; String) ;
sending (Client; main; F older; name) ;
sending (Client; main; F older; owner) ;
sending (Client; main; F ile; name) ;
sending (Client; main; F ile; owner)]</p>
      </sec>
      <sec id="sec-6-15">
        <title>The goal state condition is the following:</title>
        <p>G =inM odel (Element) ^ attrInClass (name; Element) ^
attrInClass (owner; Element) ^ superClass (Element; F ile) ^
superClass (Element; F odler)
The STRIPS planner reaches the goal state by application of satisable operators
(see table 2).
(9)
(10)
A class model in UML notation corresponding to the goal state is shown in g. 2.</p>
      </sec>
    </sec>
    <sec id="sec-7">
      <title>6 Conclusion and Future Work</title>
      <p>In this paper we have introduced SBAT transformation engine based on STRIPS
planning system. This engine automates refactoring of the given source model
to a target model fullling the input condition.</p>
      <p>The main asset of SBAT engine for practice is a contribution to an
improvement of automation of object model transformations, which consequently would
implicate saved human resources for software projects. Then, these resources
could be allocated for example on software debugging or testing tasks, rather
than on model transformation ones. Another asset should be a theoretical
background for research activities in the area of model transformations.
*</p>
      <p>Element</p>
      <sec id="sec-7-1">
        <title>Several consecutive research topics appeared during the SBAT development, e.g. the model state space optimization by reduction of states count or implementation of SBAT in some CASE tool.</title>
      </sec>
    </sec>
    <sec id="sec-8">
      <title>Acknowledgment</title>
      <p>The authors would like to acknowledge the support of the research grant project</p>
      <sec id="sec-8-1">
        <title>SGS10/094 of the Czech Ministry of Education, Youth and Sports.</title>
        <p>Appendix: Primitive Refactorings as STRIPS Operators
Copy method
from class c to its
subclass b
Copy method
class c from its
subclass b
Add-eects
Delete-eects
Declaration
Condition</p>
      </sec>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Czarnecki</surname>
            <given-names>K.</given-names>
          </string-name>
          and
          <string-name>
            <surname>Helsen</surname>
            <given-names>S.</given-names>
          </string-name>
          :
          <article-title>Feature-based survey of model transformation approaches</article-title>
          .
          <source>In: IBM Systems Journal</source>
          <year>2006</year>
          , vol.
          <volume>45</volume>
          , no.
          <issue>3</issue>
          , pp.
          <fpage>621</fpage>
          -
          <lpage>645</lpage>
          . (
          <year>2006</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Fowler</surname>
            <given-names>M.</given-names>
          </string-name>
          :
          <string-name>
            <surname>Refactoring</surname>
          </string-name>
          .
          <source>Addison-Wesley. ISBN 0-201-48567-2</source>
          . (
          <year>1999</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Gray</surname>
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lin</surname>
            <given-names>Y.</given-names>
          </string-name>
          , and Zhang J.:
          <article-title>Automating Change Evolution in Model-Driven Engineering</article-title>
          . In
          <source>Computer</source>
          <year>2006</year>
          , vol.
          <volume>31</volume>
          , no.
          <issue>2</issue>
          , pp.
          <fpage>51</fpage>
          . (
          <year>2006</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>JØzequel J-M.: Model Transformation Techniques</surname>
          </string-name>
          . Available online at http:// modelware.inria.fr/static_pages/slides/ModelTransfo.pdf . (
          <year>2005</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Kleppe</surname>
            <given-names>A. G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Warmer</surname>
            <given-names>J.</given-names>
          </string-name>
          , and Bast W.: MDA Explained:
          <article-title>The Model Driven Architecture: Practice and Promise</article-title>
          . Boston (MA, USA):
          <article-title>Addison-Wesley Longman Publishing Co</article-title>
          ., Inc.,
          <volume>170</volume>
          p.
          <source>ISBN:032119442X</source>
          . (
          <year>2003</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Lin</surname>
            <given-names>Y</given-names>
          </string-name>
          amd
          <string-name>
            <surname>Gray</surname>
            <given-names>J</given-names>
          </string-name>
          :
          <article-title>A model transformation approach to automatic model construction and evolution</article-title>
          .
          <source>In Proceedings of the 20th IEEE/ACM international Conference on Automated Software Engineering</source>
          , pp.
          <fpage>448</fpage>
          -
          <lpage>451</lpage>
          . (
          <year>2005</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Markovic</surname>
            <given-names>S.:</given-names>
          </string-name>
          <article-title>Composition of UML Described Refactoring Rules</article-title>
          .
          <source>In OCL and Model Driven Engineering, UML 2004 Conference Workshop</source>
          , pp.
          <fpage>45</fpage>
          -
          <lpage>59</lpage>
          . (
          <year>2004</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Mens</surname>
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Czarnecki</surname>
            <given-names>K</given-names>
          </string-name>
          , and Gorp P. V.
          <article-title>: A Taxonomy of Model Transformations. In Language Engineering for Model-Driven Software Development, ser</article-title>
          .
          <source>Dagstuhl Seminar Proceedings. Internationales Begegnungs- und Forschungszentrum fr Informatik (IBFI)</source>
          ,
          <source>Dagstuhl (Germany)</source>
          . (
          <year>2005</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Nilson</surname>
            <given-names>N. J.</given-names>
          </string-name>
          and
          <string-name>
            <surname>Fikes</surname>
            <given-names>R. E. STRIPS:</given-names>
          </string-name>
          <article-title>A new approach to the application of theroem proving to problem solving</article-title>
          .
          <source>Standford Research Institute</source>
          , Menlo Park (California) 34 p. (
          <year>1970</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Opdyke W. Refactoring</surname>
          </string-name>
          Object-Oriented Frameworks. University of Illinois at Urbana-Champaign, Champaign, (IL, USA),
          <source>PhD. thesis</source>
          , 197 p. (
          <year>1992</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Object Management</surname>
          </string-name>
          <article-title>Group (OMG): OMG Unied Modeling Language (OMG UML)</article-title>
          ,
          <source>Infrastructure: Version 2.2</source>
          . 226 p.
          <article-title>Available online at www</article-title>
          .omg.org. (
          <year>2009</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12. SunyØ G.,
          <string-name>
            <surname>Pollet</surname>
            <given-names>D.</given-names>
          </string-name>
          , Le Traon Y.,
          <string-name>
            <surname>JØzØquel</surname>
          </string-name>
          J-M.
          <article-title>: Refactoring UML Models</article-title>
          .
          <source>In Proceedings of the 4th International Conference on The Unied Modeling Language, Modeling Languages, Concepts</source>
          ,
          <source>and Tools</source>
          . Springer-Verlag,
          <source>London (UK)</source>
          , pp.
          <fpage>134</fpage>
          -
          <lpage>148</lpage>
          . ISBN 3-540-42667-1. (
          <year>2001</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13. Zhang J.,
          <string-name>
            <surname>Lin</surname>
            <given-names>Y.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Gray</surname>
          </string-name>
          , J.:
          <article-title>Generic and Domain-Specic Model Refactoring using a Model Transformation Engine</article-title>
          .
          <source>In Volume II of Research and Practice in Software Engineering</source>
          , pp.
          <fpage>199</fpage>
          -
          <lpage>218</lpage>
          . (
          <year>2005</year>
          )
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>