=Paper= {{Paper |id=None |storemode=property |title=Automated Model Transformations Based on STRIPS Planning |pdfUrl=https://ceur-ws.org/Vol-601/EOMAS10_paper1.pdf |volume=Vol-601 }} ==Automated Model Transformations Based on STRIPS Planning== https://ceur-ws.org/Vol-601/EOMAS10_paper1.pdf
                       Automated Model Transformations Based on
                                  STRIPS Planning
                                               1                      2                    3
                              Old°ich Nouza , Vojt¥ch Merunka , and Miroslav Virius

                   1
                      Czech Technical University in Prague, Faculty of Nuclear Sciences and Physical
                            Engineering, Department of Software Engineering in Economy,
                                                    nouza@fj.cvut.cz
                 2
                     Czech University of Life Sciences Prague, Faculty of Economics and Management,
                                        Department of Information Engineering,
                                                   merunka@pef.czu.cz
                   3
                      Czech Technical University in Prague, Faculty of Nuclear Sciences and Physical
                            Engineering, Department of Software Engineering in Economy,
                                                    virius@fj.cvut.cz

                         Abstract. 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 transfor-
                         mations as state transitions. A source model is represented by an initial
                         state, a target model by a goal state. Automation of model transforma-
                         tion consists in nding a plan to reach a goal state in this state space.

                         Key words: automated model transformations, modeling, object ori-
                         ented approach, refactoring, SBAT, STRIPS planning


                 1 Introduction
                 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 [1].
                       According to the approaches of present implemented in several CASE tools,
                 every model transformation requires application of the corresponding transfor-
                 mation rule with suitable parameters [3, 4, 6, 13] Unfortunately, as mentioned
                 in [4], 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
                 Engine) that does not require such steps.




                 2 Model Transformations
                 There are several ways how to dene model transformation. In this paper, we
                 introduce the denition presented in [5] and cited by [8]:




J. Barjis, M.M. Narasipuram, G. Rabadi, J. Ralyté, and P. Plebani (Eds.):
CAiSE 2010 Workshop EOMAS’10, Hammamet, Tunisia, pp. 1-13, 2010.
2         Old°ich Nouza, Vojt¥ch Merunka, and Miroslav Virius

      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.



2.1 Classication of Transformations
Publication [8] describes two criteria of classication of model transformations.
The rst one is a dierence of abstraction level of source and target models:


    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.
    Exogenous transformation  A transformation where source and target models
      are expressed in dierent languages. Typical examples are code generation
      and reverse engineering.


In this paper, we focus more closely on refactoring.




3 Refactoring
There exist several ways how to dene refactoring. The denition presented in
[7] 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 [2].



3.1 Complex Refactorings and Primitive Refactorings
The idea of complex refactoring as composition of nite primitive (atomic) refac-
torings was rst published in [10], where formal denition of C++ code refactor-
ing was discussed, and later in [12], where it was demonstrated on refactoring of
UML models. We have used the same idea to construct the SBAT transformation
engine.
               Automated Model Transformations Based on STRIPS Planning                   3

4 STRIPS Planning
Technical report [9] denes STRIPS as following:

    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.

The STRIPS language is based on the calculus of rst-order predicate logic.
Formally, the STRIPS problem can be expressed by the following denitions:

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
                                                                               +          0
free variables contained in formulas P, A1 , . . . , Al , D1 , . . . Dm , n ∈ N , l, m ∈ N .
Elements of A are called add-eects, elements of D delete-eects.

Denition 3. Let o (x1 , . . . , xn ) = (P, A, D) ∈ O be operator. A transition func-
         0
tion o  : (x1 × x2 × . . . × xn × S) → S , where S is a state set, is dened in the
following way:

                                             def (s ∪ A) − D      ∅
                       o' (x1 , . . . , xn , s) =                                       (1)
                                                      sP
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 ∈ N, and:

 1. s0 = I
                    0
                                         
 2. (∀i ∈ m̂) si = oi−1    hi−1 , si−1
 3. sm  G

If I  G, then the solution, which is I in this case, is called trivial solution.
4         Old°ich Nouza, Vojt¥ch Merunka, and Miroslav Virius

5 SBAT Transformation Engine
5.1 Requirements
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 spec-
     ify transformation rules on input.
 6. The engine will be universal and suciently reusable for wide scale of object
     models.



5.2 Formal Denition of Object Model
In this paper, formal denition of object model is based on simplied metamodel
of UML 2.0 class diagrams, in detail described in [11]. Because of intended gen-
erality, 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 refactor-
ing 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.

Denition 5. Let C be a class universe, A attribute universe, and F method
universe. LetObject, Client ∈ C be classes, where ∀ (x ∈ C − [Object]) (Object ≺ c),
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

 Cs ⊂ C − [Object, Client] is a nite set of classes of model in state s,
 ins ⊆ ((A ∪ F ) × Cs ) is a binary relation named is in class dened as

                     def
                 ins = {(x, y) |x ∈ (Attr (y) ∪ M eth (y)) ∧ y ∈ Cs } ,             (2)

    where Attr (y) and M eth (y) are sets of attributes and methods respectively of
    class y ,
              Automated Model Transformations Based on STRIPS Planning               5

 supers ⊆ ((Cs ∪ [Object]) × Cs ) is a binary relation is superclass dened as

                                 def
                    supers = {(x, y) |x = super (y) ∧ x, y ∈ Cs } ,                (3)

  where super (y) means a superclass of y ,
 types ⊆ (A × Cs ) ∪ (F × (Cs )) is a binary relation named is of type dened
  as

                                  def
                          types = {(x, y) |x = type (y) ∧ y ∈ Cs } ,               (4)

  where type (y) means a type of y ,
 sends    ⊆ (F × (Cs ∪ [Client]) × (A ∪ F ) × Cs ) is a 4-ary relation named
  sends message dened as

                           def
                   sends = {(x, y, u, v) |(x, y) ∈ ins
                                 ∧ (∃w) ((u, w) ∈ ins ∧ (u ≺ w ∨ u = w))           (5)

                                 ∧ hx, Λi ∈ M eth (y)} ,
  where lambda-expression Λ contains message sending o C u, where o is an
  instance of class w .

The following conditions must be fullled:

 in the class hierarchy, each attribute appears at most once, so

       (∀x ∈ A) (∀y, z ∈ C) (ins (x, y) ∧ ins (x, z) → ¬ (y ≺ z) ∧ ¬ (z ≺ y)) ,    (6)


 each attribute is of some type, so

                              (∀x ∈ A) (∃y ∈ Cs ) (types (x, y)) ,                 (7)


 each attribute is of at most one type and each method has at most one return
  value type, so

          (∀x ∈ (A ∪ F )) (∀y, z ∈ Cs ) (types (x, y) ∧ types (x, z) → y = z) .    (8)


Denition 6. Model
                  is a state space (M,
                                       Φ), where M is a nite set of model
                    n
                           ϕi : M × E ki → M , (∀i ∈ n̂) (ki ∈ N) is a set of transfor-
             S
states and Φ =      i=1
mation rules.


5.3 Model Transformation Problem
Each model transformation requires answers to the following questions [8]:

1. What needs to be transformed?
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.
6        Old°ich Nouza, Vojt¥ch Merunka, and Miroslav Virius

5.4 STRIPS Planning application
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.



         Table 1. Predicates for STRIPS problem formulation in SBAT engine
           Predicate             Declaration              Denition
     class c is in model         inM odel (c)                 c ∈ Cs
       class c is not in       outOf M odel (c)            c ∈ (B − Cs )
            model
    attribute a is in class  attrInClass (a, c)             (a, c) ∈ ins
                 c
     attribute a is not in attrOutOf Class (a, c) ¬ ((a, c) ∈ ins ) ∧ a ∈ (B ∩ A)
             class c
     method µ is in class methInClass (µ, c)                (µ, c) ∈ ins
                 c
      method µ is not in methOutOf Class (µ, c) ¬ ((µ, c) ∈ ins ) ∧ µ ∈ (B ∩ F )
             class c
     attribute a is of type    hasT ype (a, t)             (a, t) ∈ types
                 t
     method µ has return hasRetT ype (µ, t)                (µ, t) ∈ types
          value type t
      class c is superclass   superClass (c, d)           (c, d) ∈ supers
               of d
     class c is a parent of     parent (c, d)                   c≺d
                 d
      method µof class c     sending (µ, c, η, d)       (µ, c, η, d) ∈ sends
       sends messageη to
        objects of class d



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 := ∅.
 2. Add formulas about existence of classes in model:

    a)   (∀c ∈ CI ) put (I := I ∪ [inM odel (c)]) and
    b)   (∀c ∈ (B − CI )) put (I := I ∪ [outOf M odel (c)]).
 3. Add formulas about class attributes:

    a)   (∀ (a, c) ∈ (inI ∩ (B ∩ A, CI ))) put
         (I := I ∪ attrInClass (a, c)) and
              Automated Model Transformations Based on STRIPS Planning            7

    b)   (∀ (a, c) ∈ ((B ∩ A, B ∩ C) − inI )) put
         (I := I ∪ attrOutOf Class (a, c)).
 4. Add formulas about class methods:

    a) (∀ (µ, c) ∈ (inI ∩ (B ∩ F, CI ))) put
       (I := I ∪ methInClass (µ, c)) and
    b) (∀ (µ, c) ∈ ((B ∩ F, B ∩ C) − inI )) put
       (I := I ∪ methOutOf Class (µ, c)).
 5. Add formulas about inheritance:
    (∀ (c, d) ∈ superI ) put (I := I ∪ superClass (c, d)).
 6. Add formulas about attribute types and return value types of methods:

    a) (∀ (a, c) ∈ (typeI ∩ (B ∩ A, CI ))) put
       (I := I ∪ hasT ype (a, c)) and
    b) (∀ (µ, c) ∈ (typeI ∩ (B ∩ F, CI ))) put (I := I ∪ hasT ype (µ, c)).

 7. Add formulas about message sending:
    (∀ (a, c, b, d) ∈ sendI ) put (I := I ∪ sending (a, b, c, d)).

5.4.2 Formulation of Goal State Condition A goal state condition G is
dened by the formula that is true in any goal state.


5.4.3 Formulation of Operator Set The set of operators O is dened iden-
tically for each particular problem, because it represents a set of primitive refac-
torings. The complete denition of the operator set is described in table 3 in
appendix.



5.5 Example
5.5.1 Problem Let's suppose a simplied class model of le system (see g. 1).



                         *
                                    +owner
                        Folder                             File
                                               *
                     +name                         +name
                                    +owner


                             Fig. 1. File system class model

   The goal is to transform this model into state which satises the composite
design pattern.
8        Old°ich Nouza, Vojt¥ch Merunka, and Miroslav Virius

5.5.2 Solution The initial model state ms = (Cs , ins , supers , types , sends ),
where:

 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 = {(Client, main, x, y) |(x, y) ∈ ins }

The corresponding initial state of STRIPS problem is the following:



 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)]
                                                                                 (9)
The goal state condition is the following:



    G =inM odel (Element) ∧ attrInClass (name, Element) ∧
          attrInClass (owner, Element) ∧ superClass (Element, F ile) ∧          (10)

          superClass (Element, F odler)

The STRIPS planner reaches the goal state by application of satisable operators
(see table 2).
             Automated Model Transformations Based on STRIPS Planning               9

           Table 2. List of operators application to reach the goal state
            Operator application                       Description
            addClass (Element)                Add class Element to the model.
      changeSup (F ile, Object, Element)     Change superclass Object of class
                                                     F ile to Element.
     changeSup (F older, Object, Element) Change superclass Object of class
                                                    F odler to Element.
     attrU p (name, Element, F ile, F older)   Move attribute name to class
                                              Element from its subclasses F ile
                                                        and F older.
     attrU p (owner, Element, F ile, F older) Move attribute owner to class
                                              Element from its subclasses F ile
                                                        and F older.

   The goal state is as follows:



 Goal = [inM odel (F older) , inM odel (F ile) ,
          inM odel (String) , inM odel (Element) ,
          attrInClass (name, Element) , attrInClass (owner, Element) ,
          attrOutOf Class (name, F older) ,
          attrOutOf Class (owner, F older) ,
          attrOutOf Class (name, F ile) , attrOutOf Class (owner, F ile) ,
                                                                                  (11)
          superClass (Element, F ile) , superClass (Element, 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)]
A class model in UML notation corresponding to the goal state is shown in g. 2.




6 Conclusion and Future Work
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.
   The main asset of SBAT engine for practice is a contribution to an improve-
ment 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 back-
ground for research activities in the area of model transformations.
10      Old°ich Nouza, Vojt¥ch Merunka, and Miroslav Virius


                                     Element
                                *

                  +owner

                       Folder                            File
                     +name                       +name



                  Fig. 2. File system as Composite design pattern

     Several consecutive research topics appeared during the SBAT development,
e.g. the model state space optimization by reduction of states count or imple-
mentation of SBAT in some CASE tool.




Acknowledgment
The authors would like to acknowledge the support of the research grant project
SGS10/094 of the Czech Ministry of Education, Youth and Sports.




References
 1. Czarnecki K. and Helsen S.: Feature-based survey of model transformation ap-
    proaches. In: IBM Systems Journal 2006, vol. 45, no. 3, pp. 621-645. (2006)
 2. Fowler M.: Refactoring. Addison-Wesley. ISBN 0-201-48567-2. (1999)
 3. Gray J., Lin Y., and Zhang J.: Automating Change Evolution in Model-Driven
    Engineering. In Computer 2006, vol. 31, no. 2, pp. 51. (2006)
 4. Jézequel J-M.: Model Transformation Techniques. Available online at http://
    modelware.inria.fr/static_pages/slides/ModelTransfo.pdf. (2005)
 5. Kleppe A. G., Warmer J., and Bast W.: MDA Explained: The Model Driven Ar-
    chitecture: Practice and Promise. Boston (MA, USA): Addison-Wesley Longman
    Publishing Co., Inc., 170 p. ISBN:032119442X. (2003)
 6. Lin Y amd Gray J: A model transformation approach to automatic model construc-
    tion and evolution. In Proceedings of the 20th IEEE/ACM international Confer-
    ence on Automated Software Engineering, pp. 448-451. (2005)
 7. Markovic S.: Composition of UML Described Refactoring Rules. In OCL and Model
    Driven Engineering, UML 2004 Conference Workshop, pp. 45-59. (2004)
 8. Mens T., Czarnecki K, and Gorp P. V.: A Taxonomy of Model Transformations.
    In Language Engineering for Model-Driven Software Development, ser. Dagstuhl
    Seminar Proceedings. Internationales Begegnungs- und Forschungszentrum für In-
    formatik (IBFI), Dagstuhl (Germany). (2005)
 9. Nilson N. J. and Fikes R. E. STRIPS: A new approach to the application of theroem
    proving to problem solving. Standford Research Institute, Menlo Park (California)
    34 p. (1970).
                Automated Model Transformations Based on STRIPS Planning           11

10. Opdyke W. Refactoring Object-Oriented Frameworks. University of Illinois at
    Urbana-Champaign, Champaign, (IL, USA), PhD. thesis, 197 p. (1992)
11. Object Management Group (OMG): OMG Unied Modeling Language (OMG
    UML), Infrastructure: Version 2.2. 226 p. Available online at www.omg.org. (2009)
12. Sunyé G., Pollet D., Le Traon Y., Jézéquel J-M.: Refactoring UML Models. In
    Proceedings of the 4th International Conference on The Unied Modeling Lan-
    guage, Modeling Languages, Concepts, and Tools. Springer-Verlag, London (UK),
    pp. 134-148. ISBN 3-540-42667-1. (2001)
13. Zhang J., Lin Y., and Gray, J.: Generic and Domain-Specic Model Refactoring
    using a Model Transformation Engine. In Volume II of Research and Practice in
    Software Engineering, pp. 199-218. (2005)


Appendix: Primitive Refactorings as STRIPS Operators

                 Table 3: Primitive refactorings as STRIPS operators
      Primitive                           STRIPS Operator
     refactoring
                       Declaration      addClass (c)
                       Condition        outOf M odel (c)
                       Add-eects       inM odel (c)
  Add class c
                                        (∀x ∈ B ∩ C) attrOutOf Class (x, c)
                                        (∀x ∈ B ∩ F ) methOutOf Class (x, c)
                      Delete-eects     outOf M odel (c)
                      Declaration       addAttr (a, t, c)
  Add attribute a of Condition          (∀x) (attrOutOf Class (x, d)
  type t into class c                   ∨¬superClass (x, c) ∨ ¬superClass (c, x)
                                        ∨x 6= c) ∧
                                        (∀x) (¬hasT ype (a, x) ∨ (x = t))
                  Add-eects            attrInClass (a, c)
                  Delete-eects         attrOutOf Class (a, c)
                  Declaration           addM eth (µ, c)
  Add method µ to Condition             methOutOf Class (µ, c)∧ (∀x, y, z)
  class c                               (¬sending (x, y, µ, z) ∨ ¬parent (z, c)
                                        ∨ (z 6= c))
                       Add-eects       methInClass (µ, c)
                       Delete-eects    methOutOf Class (µ, c)
                       Declaration      removeClass (c)
                       Condition        inM odel (c)∧ (∀x) (¬parent (c, x)) ∧
  Remove class c
                                        (∀x) ¬attrInClass (x, c) ∧
                                        ¬methInClass (x, c)
                       Add-eects       outOf M odel (c)
                       Delete-eects    inM odel (c)
12            Old°ich Nouza, Vojt¥ch Merunka, and Miroslav Virius
           Primitive                          STRIPS Operator
          refactoring
                           Declaration       removeAttr (a, c)
     Remove
                           Condition         attrInClass (a, c) ∧ (∀x, y, z)
     attribute a from
                                             (¬sending (x, y, µ, z) ∨ ¬parent (c, z)
     class c
                                             ∨ (z 6= c))
                     Add-eects              attrOutOf Class (a, c)
                     Delete-eects           attrInClass (a, c)
                     Declaration             removeM eth (µ, c)
     Remove method µ Condition               methInClass (µ, c) ∧ (∀x, y, z)
     from class c                            (¬sending (x, y, µ, z) ∨ ¬parent (c, z)
                                             ∨ (z 6= c))
                                             ∧ (∀x, y) (¬sending (x, y, µ, c) ∨ (y = c))
                        Add-eects           methOutOf Class (µ, c)
                        Delete-eects        methInClass (µ, c)
                        Declaration          changeAtrrT ype (a, t, u)
     Change type t of Condition              hasT ype (a, t)∧super (u, t)
     attribute a to u   Add-eects           hasT ype (a, u)
                        Delete-eects        hasT ype (a, t)
                        Declaration          changeM ethT ype (µ, t, u)
     Change type t of
                        Condition            hasRetT ype (µ, t)∧super (u, t)
     values returned by
                        Add-eects           hasRetT ype (µ, u)
     method µ to u
                        Delete-eects        hasRetT ype (µ, t)
                        Declaration          changeSup(a, b, c)
     Change superclass Condition             inM odel (c) ∧
     b of class a to c                       superClass (b, a)∧(¬parent (a, c)) ∧
                                             ∀ (x, u, v, w) ((¬superClass (x, c)) ∧
                                             (¬superClass (x, b)) ∨
                                             (¬sending (v, w, u, x))
                                             ∧ (¬sending (u, x, v, w)))
                         Add-eects          superClass (c, a)
                         Delete-eects       superClass (b, a)
     Move attribute a Declaration            attrDown (a, c, (b1 , . . . , bn ))
     from class c to its Condition           attrInClass (a, c) ∧ (∀x)
     all subclasses                          (x = b1 ∨ . . . ∨ x = bn
     b1 , . . . , b n                        ∨¬superClass (c, x))
                                             ∧ (∀x, y) ¬sending (x, y, a, c)
                           Add-eects        attrOutOf Class (a, c)
                                             (∀i ∈ n) attrInClass (a, bi )
                           Delete-eects     attrInClass (a, c)
                                             (∀i ∈ n) attrOutOf Class (a, bi )
     Move attribute a Declaration            attrUp (a, c, (b1 , . . . , bn ))
     to class c from all Condition           (attrInClass (a, x) ∨ ¬superClass (c, x))
     its subclasses                          ∧ (∀x) ((x 6= b1 ∨ . . . ∨ x 6= bn )
     b1 , . . . , b n                        ∨¬superClass (c, x))
                           Add-eects        attrInClass (a, c)
                                             (∀i ∈ n) attrOutOf Class (a, bi )
                           Delete-eects     attrOutOf Class (a, c)
                                             (∀i ∈ n) attrInClass (a, bi )
           Automated Model Transformations Based on STRIPS Planning                 13
    Primitive                          STRIPS Operator
   refactoring
                    Declaration       methDown (µ, c, b)
Copy methodµ
                    Condition         methInClass (µ, c) ∧
from class c to its
                                      methOutOf Class (µ, b)
subclass b
                                      ∧ (superClass (c, b))
                 Add-eects           methInClass (µ, b)
                 Delete-eects        methOutOf Class (µ, b)
                 Declaration          methUp (µ, c, b)
Copy method µ to
                 Condition            methOutOf Class (µ, c) ∧
class c from its
                                      methInClass (µ, b)
subclass b
                                      ∧ (superClass (c, b))
                   Add-eects         methInClass (µ, c)
                   Delete-eects      methOutOf Class (µ, c)
Add message η      Declaration        addSend (µ, c, η, d)
sent to objects of Condition          (¬sending (µ, c, η, d) ∧ methInClass (µ, c)
class d from                          ∨ (∃x) ((parent (x, d) ∨ (x = d)) ∧
method µ of                            (methInClass (η, x))
class c                                ∨ (attrInClass (η, x))))
                                      ∧ (∀x, y) (¬sending (x, y, µ, c)
                                      ∧ (c 6= Client))
                    Add-eects        sending (µ, c, η, d)
                    Delete-eects     ∅
Remove message η Declaration          removeSend (µ, c, η, d)
sent to objects of Condition          sending (µ, c, η, d) ∧ (c 6= Client)
class d from                          ∧ (∀x, y) (¬sending (x, y, µ, c))
method µ of         Add-eects        ∅
class c             Delete-eects     sending (µ, c, η, d)
Split message       Declaration       splitSend (µ, c, η, d, l, e)
sending d C η to Condition            sending (µ, c, η, d) ∧ attrInClass (l, d)
(d C l) C η , where                   ∧hasT ype (l, e)
l is of type e.     Add-eects        sending (µ, c, l, d)
                                      sending (µ, c, η, e)
                      Delete-eects   sending (µ, c, η, d)
Merge message         Declaration     mergeSend (µ, c, η, d, l, e)
sending               Condition       sending (µ, c, η, e) ∧ sending (µ, c, l, d)
(d C l) C η into                      ∧attrInClass (l, d) ∧ hasT ype (l, e)
d C η , where l is of Add-eects      sending (µ, c, η, d)
type e.               Delete-eects   sending (µ, c, l, d)
                                      sending (µ, c, η, e)