<!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>Crepe Complete: Multi-ob jective optimisation for your models?</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Dionysios Efstathiou</string-name>
          <email>dionysios.efstathiou@kcl.ac.uk</email>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>James R. Williams</string-name>
          <email>james.r.williams@york.ac.uk</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Ste en Zschaler</string-name>
          <email>szschaler@acm.org</email>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Department of Computer Science, University of York</institution>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Department of Informatics, King's College London</institution>
        </aff>
      </contrib-group>
      <abstract>
        <p>Search-based software engineering views software development as a process of searching through the design space for an optimal solution according to some quality criteria. It seems natural to try and build automated implementations of this idea based on concepts from model-driven engineering|using meta-models as characterisations of design spaces and model transformations as algorithms / heuristics for the exploration of the design space. Yet, there is only very limited research in this area. In this paper, we contribute to the discussion in two ways: 1) we provide an extension of Crepe, a framework for singleobjective optimisation based on the Epsilon tool set, to support multiobjective optimisation, and 2) we present an experimental comparison between a multi-objective optimisation problem implemented in the extended Crepe and the same problem implemented in native Java using an optimised internal representation of the search space and of solution candidates. The experiment highlights key areas of improvement required in Crepe to enable it to fully compete with bespoke implementations.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>
        Search-Based Software Engineering (SBSE) [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] views software development as
a process of searching a (potentially large) design space for a design optimally
addressing the given requirements. The goal, then, is to reduce the need for
humans to perform this search, which would be slow and potentially unreliable
or error prone. Instead, SBSE research aims to identify ways of automating the
search, using techniques from meta-heuristic search or operations research. The
eld has grown over the past decade; there are a number of elds in software
development where automated search can be applied with good results [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ].
      </p>
      <p>
        Model-driven engineering (MDE) [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] aims to develop software systems using
models; that is, at a higher level of abstraction than o ered by currently
prevalent programming languages. Because of this higher level of abstraction, often
combined with the use of domain-speci c modelling languages, a number of
processes in software development can be automated or semi-automated. Centrally,
? The work reported in this paper has been partially funded by the European Union
under FP7 ITN RELATE and FP7 STREP OSSMETER.
      </p>
      <p>
        MDE propagates the use of model transformations [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] to automate analysis of
models or generation of fully executable implementations.
      </p>
      <p>It seems obvious that a combination of MDE and SBSE could bene t from
the advantages of each approach: SBSE studies speci c techniques for
searching speci c kinds of design spaces, but lacks a general technique for simply and
systematically implementing such searches for di erent design spaces. MDE,
on the other hand, provides good techniques for automating processes in
software development in a generalisable way, but lacks speci c support for
searchor optimisation-based techniques. A combination of the two approaches could
provide a framework of model-transformation techniques to enable e ective
implementation of search algorithms for speci c domains.</p>
      <p>Two problems need to be solved to combine MDE and SBSE:
1. We need to de ne general implementations of search algorithms and
identify the parameters required to specialise these for particular domains. At a
minimum, these parameters will need to be in the form of meta-models that
allow the description of the domain (i.e., of the design space to be searched).
2. We need to ensure search is e cient. Search-based algorithms can take a long
time to run, so performance considerations are important in their design.
Note that the two issues are potentially in con ict: realising a generic
implementation may induce an additional performance hit. Performance in
optimisation algorithms is substantially in uenced by the representation of candidate
solutions and the e ciency with which these can be manipulated. A generic,
model-based implementation may cause problems in this regard.</p>
      <p>
        In this paper, we address the two above problems in the following ways:
1. We present a set of meta-models and generic model-driven framework
implementing meta-heuristic, multi-objective optimisation. This is based on
Crepe [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ], which supports single-objective optimisation already.
2. We compare the performance of this framework with the performance of
a hand-crafted implementation for a speci c SBSE problem and provide a
rst discussion of the trade o between ease of implementation (aided by the
generality of the framework) and loss of e ciency.
2
      </p>
    </sec>
    <sec id="sec-2">
      <title>Related Work</title>
      <p>
        While there is some work on applying search-based or optimisation-based
techniques with MDE (see [
        <xref ref-type="bibr" rid="ref4 ref5">4, 5</xref>
        ] for some examples), work on generic support for
search-based or optimisation-based exploration of models is still rare. To the
best of our knowledge, only two other works exist:
      </p>
      <p>
        QVTR2 [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] propose an extension of QVTR where di erent alternatives are
encoded as non-deterministic relations. These are incrementally rewritten into
deterministic relations by 1) making a non-deterministic choice, 2) asking a
developer to compare the outcome of that choice to results produced by another
Data Collection
      </p>
      <p>Data Processing</p>
      <p>Internal Emergency
External Emergency</p>
      <p>Notification
choice, and 3) xing the preferred choice by rewriting the original
transformation speci cation. While this enables the implementation of optimisation-based
approaches, it requires a substantial amount of manual intervention.</p>
      <p>
        The approach recently proposed by Denil et al. [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] also encodes the design
space partially as transformation rules. Search strategies are encoded in the
rulescheduling, which can be freely de ned in the underlying transformation system
FTG+PM. The design space is further constrained by providing a xed set of
model elements that can be recombined by the transformation rules. Beyond this,
however, the proposed approach seems to require a complete reimplementation
of both the rules and the search strategy for every new problem.
      </p>
      <p>
        The use of meta-model{like structures to represent candidate solutions in
evolutionary optimisation has rst been explored by Christopher Simons in [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ].
Canfora et al. [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ] were the rst to use genetic algorithms for discovering
QoSoptimal service compositions. An extensive survey of various optimisation
techniques applied to the service composition search problem can be found in [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ].
3
      </p>
    </sec>
    <sec id="sec-3">
      <title>Motivating Example</title>
      <p>Consider a system for improving the decision making of re ghters in emergency
situations. Fire ghters are equipped with mobile devices with various networking
capabilities. These devices form an infrastructure-less mobile ad hoc network
enabling them to o er their resources|such as application data and network|
as software services. Service composition enables devices to combine multiple
services into composite applications in order to satisfy complex functional goals.</p>
      <p>For example, consider a forest re where a commanding re ghter uses a
composite application to identify endangered re ghters and react appropriately.
The commander aggregates information about the condition of his subordinates
(position, heart rate, oxygen level). This data needs to be fed to a processing
service which assesses if something is going wrong. In the case of an emergency
event (e.g., a re ghter has stopped moving and high levels of carbon dioxide in
the blood are observed), another team in the close proximity must be noti ed to
intervene along with an external medical team which must be ready to approach.
Figure 1 depicts the underlying composite application as a work ow.</p>
      <p>Availability of resources (e.g., network bandwidth, battery power) strongly
a ects the quality of the services o ered. Di erent choices of concrete services
(and hosting nodes) for each of the abstract services in Fig. 1 lead to di erent
overall quality of service (QoS). Finding service compositions with optimal QoS
1..* abstractServices</p>
      <p>1 end
AbstractService 1 start
star1t ttrscaba* ircvseeSend1
AbstractPlan</p>
      <p>1
abstractPlan</p>
      <p>1..* concreteServices
0..* concreteServices ConcreteService 1..*</p>
      <p>concreteServices
1 providedService
target</p>
      <p>Orchestrator
Orchestrator 0..1
star1t end1 1o.r.c*hestrators
1 providedBy
0..* networkNodes Node 1deployedOn</p>
      <p>
        1 hostedOn
0..* serviceUser User
CompositeApplication
0..* concretePlans ConcretePlan
trade-o s is challenging. The size of the search space makes meta-heuristic search
techniques [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ] interesting candidates for addressing this problem [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ].
      </p>
      <p>Figure 2 describes the search space of the re ghter problem using a
metamodel. Each instance of the meta-model represents a candidate solution, whose
QoS can be analysed|for example, using a simulation. The parts of the
metamodel shaded in grey represent the problem description; that is, the abstract
work ow as well as the available nodes and concrete services. Any candidate
solution for the same problem will share the same instances of this part. In
contrast, the elements shaded in orange represent a speci c candidate solution
by specifying the speci c concrete services and orchestrators selected.
4</p>
    </sec>
    <sec id="sec-4">
      <title>Crepe { Search-Based Algorithms for MDE</title>
      <p>
        Meta-heuristic search-based optimisation algorithms are commonly implemented
with respect to an encoding of the problem domain (traditionally binary or
integer vectors). This encoding (the genotype) is translated into the native format
(the phenotype) of the solution to be evaluated by a tness function. Genetic
operators (mutation and crossover) act upon the encoded form of solutions,
modifying and combining di erent solutions, with the intention of producing
new solutions with higher tness. Crepe [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] provides such an encoding, and
associated genetic operators, for MDE models. Crepe can encode the space of
models that conform to any given meta-model, enabling metaheuristic
optimisation techniques to be applied to any problem whose solution can be
represented by a meta-model instance. Crepe is implemented in the Epsilon Object
Language (EOL) [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ] and processes models based on the Ecore meta-modelling
language [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ]. In this section, we brie y overview the key features and limitations
of Crepe. A full description of Crepe can be found in [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ].
4.1
      </p>
      <sec id="sec-4-1">
        <title>Crepe Components</title>
        <p>There are three main components of Crepe: the structure of the genotype, the
nitisation information, and the mappings between genotype and phenotype. In
Population</p>
        <p>* individuals</p>
        <p>Individual
fitness : Double
mutated : Boolean
elite : Boolean
parents 0. 2
*
generations</p>
        <p>Search
* Segment
segments classBit : Integer</p>
        <p>FeaturePair
* featureSelectorBit : Integer
featurePairs featureValueBit : Integer
the spirit of MDE, all components in Crepe are either models or model
transformations. Fig. 3 shows the meta-model that describes a single execution of
a search algorithm. Genotypic individuals are grouped into populations. The
genotype of candidate solutions is a structured sequence of integers: individuals
are composed of segments, which are composed of feature pairs. Each segment
represents a single object in the model being encoded. Feature pairs are used
to assign values to the di erent features (attributes, references) of that object.
Generic model transformations translate individuals into models that conform
to a user-provided meta-model (and vice versa).</p>
        <p>To make these transformations possible, the user needs to de ne a nitisation
model { a model containing information that constrains the model space. For
instance, when generating model objects that have string-valued attributes, the
nitisation model can be used to restrict the set of strings that can be assigned
to objects with that attribute. Finitisation models can also restrict structures as
well as data; for instance, enforcing an upper bound on a reference, or stating
that certain meta-classes should not be instantiated.</p>
        <p>Each transformed individual is passed to a user-de ned tness function for
evaluation. This function returns a double which Crepe assigns to the individual's
tness attribute, for search algorithms to consume.
4.2</p>
      </sec>
      <sec id="sec-4-2">
        <title>Limitations: Single Objective Only and Meta-Model Constraints</title>
        <p>
          To date, Crepe has only supported problems that have a single tness value.
Many real-world problems, however, are multi-objective and currently these
different objectives would need to be aggregated to be used in Crepe. Moreover,
meta-models are only able to de ne certain structural characteristics of
conforming models; in order to de ne more complex constraints, such as class invariants
or relationships between features, languages such as the Object Constraint
Language [
          <xref ref-type="bibr" rid="ref15">15</xref>
          ] are used. Crepe does not support these extra constraints, meaning
that the model space encoded can contain models that are structurally correct,
but semantically invalid, thereby requiring an additional ltering step.
4.3
        </p>
      </sec>
      <sec id="sec-4-3">
        <title>Extending Crepe</title>
        <p>We have extended Crepe to address these limitations:</p>
        <p>MOIndividual
rank : Integer
sparsity : Double</p>
        <p>Objective
* score : Double
objectives minimise : Boolean
Support for Multi-Objective Optimisation In order to support
multiobjective optimisation algorithms in Crepe, we have specialised the search
metamodel. As shown in Fig. 3, individuals only have a single tness attribute. We
therefore specialise the Individual class to enable individuals to have multiple
tness values, as shown in Fig. 4. Objectives are represented by their own
metaclass and have both a tness score and a ag that speci es whether the objective
should be minimised or maximised.</p>
        <p>
          Whereas in the single objective version of Crepe, the user-de ned tness
function returns a double representing the tness, for multi-objective problems
it needs to return a sequence of Objective objects|one for each of the problem's
objectives. Crepe assigns the collection to the individual's objectives reference
(Fig. 4), and multi-objective optimisation algorithms can use these, and Crepe's
existing genetic operators [
          <xref ref-type="bibr" rid="ref4">4</xref>
          ], to guide the search.
        </p>
        <p>Support for Model Constraints To support constraints, and therefore ensure
Crepe produces semantically valid models, we provide a means for the user to
programmatically de ne nitisations for speci c features. Whilst transforming a
segment into a model object, Crepe now delegates the job of selecting appropriate
values for that object's features to a user-de ned function. This means that the
user can select the appropriate nitisation values based on the current state of
the object. If the user-de ned function returns a null value for that feature,
Crepe will compute the feature's standard set of nitisations. Otherwise, the
values returned by the user-de ned function are used.</p>
        <p>For example, a constraint in the re- ghting case study is that orchestrators
must be deployed on separate nodes (the deployedOn reference). By default,
Crepe will indiscriminately select nodes to be assigned to that reference. Using
the new nitisation-constraint method, the user can specify to only select nodes
that haven't previously been assigned to an orchestrator.
5</p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>Experimental Evaluation</title>
      <p>
        To evaluate how Crepe compares to a problem-speci c optimisation tool, we
apply it to the re- ghting scenario. Both Crepe and the bespoke technique
presented in [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ] use the NSGA-II [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ] optimisation algorithm, but di er in
their implementation: Crepe uses the generic methods presented in the preceding
sections, while [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ] uses a bespoke implementation and encoding.
      </p>
      <p>In this section, we rst brie y discuss the Crepe implementation of the
reghting scenario, before giving some more details on our experimental setup and
reporting the results of our experiment.</p>
      <p>Orchestrator</p>
      <p>AbsConSatisfaction
*
acs
aService</p>
      <p>AbstractService
cService</p>
      <p>ConcreteService</p>
      <sec id="sec-5-1">
        <title>Implementing the Fire ghter Scenario in Crepe</title>
        <p>The solution to the scenario is a model that conforms to the meta-model in
Fig. 2. Crepe does not need to nd the entire model, however, as the set of
abstract and concrete services is predetermined. The goal is to discover the optimal
con guration of nodes that orchestrate appropriate services. An input to Crepe
therefore is an existing service composition model containing the available
services. For each solution, Crepe creates a copy of this model with the appropriate
orchestrators. In the nitisation model we specify that we don't want Crepe to
produce abstract or concrete services, only allowing Crepe to create
Orchestrator objects. We also use the input model to nitise the solutions' orchestrators
with the prede ned set of abstract and concrete services.</p>
        <p>Ensuring the constraints of the service-composition model required the
introduction of a new meta-class. In its existing form (Fig. 2), there is no explicit
relation between the abstract and concrete services provided by an Orchestrator
meaning that arbitrary selections of services are structurally valid but
semantically incorrect: for each orchestrated abstract service, one of its associated
concrete services must also be orchestrated. To address this, we have introduced
a new meta-class tying together abstract and concrete services, as shown in
Fig. 5. The user-de ned nitisation operation (cf. Sect. 4.3) nitises the cService
reference only with valid concrete services with respect to the selected abstract
service. Implementing the context-speci c nitisation operation took 38 lines of
EOL and covered constraints for six di erent meta-model features. The full set
of constraints and code to run the case study is available on-line.3</p>
        <p>
          The bespoke solution [
          <xref ref-type="bibr" rid="ref12">12</xref>
          ] uses surrogate functions to approximate tness
of candidate solutions and make the optimisation feasible. We rst collected
a dataset of solutions evaluated on a detailed but computationally expensive
simulation tool. Based on this dataset, we built surrogate functions using the
lightweight multivariate adaptive regression splines technique [
          <xref ref-type="bibr" rid="ref17">17</xref>
          ]. The
Crepebased implementation reuses the developed surrogate functions. Speci cally, we
considered response time, energy consumption, and service availability for a
candidate service composition.
3
https://github.com/efstathiou/crepe/tree/dev/crepe.examples/servicecomposition-de
We created a network of 84 nodes (4 group, 16 engine, and 64 team members
and leaders) which o er the software services mentioned in Sect. 3 and
cooperatively form an infrastructure-less mobile ad hoc network. The initial state of
the network was determined through a simulation run and was then made
available to both implementations. We ran both techniques for 30 generations with a
population size of 96. For statistical signi cance each run was repeated 30 times
and used the Mann-Whitney test [
          <xref ref-type="bibr" rid="ref18">18</xref>
          ]. We used Cohen's d [
          <xref ref-type="bibr" rid="ref18">18</xref>
          ] to estimate the
e ect size of the di erence between the results achieved.
We were interested in comparing both the performance and the quality of the
optimisation in both implementations.
        </p>
        <p>First, we compared the execution time of the two implementations. A single
run of the NSGA-II for 30 generations lasts on average 43 minutes for Crepe
and 1 minute for the bespoke implementation using a machine with Intel Core
i7 vPro with 12GB DDR3 RAM, running the Linux 3.2.0-40 kernel.</p>
        <p>Next, we compared the quality of the results produced after 30 generations.
Figure 6 shows the hypervolume indicator achieved by the NSGA-II algorithm for
both the Crepe and the bespoke Java-based implementation. The Mann-Whitney
test results show that the results achieved by the bespoke implementation were
signi cantly better (p value = 2:4876 10 11) than those of Crepe with a large
Cohen e ect size.
6</p>
      </sec>
    </sec>
    <sec id="sec-6">
      <title>Discussion</title>
      <p>Our experiment shows that, while Crepe produces solutions of acceptable quality,
they are less good than the solutions produced by a bespoke implementation
and it takes substantially longer for Crepe to compute them. In this section, we
discuss these results in some more detail.</p>
      <p>We expected Crepe to be somewhat slower than the bespoke implementation
because of a) its generic nature and b) its use of models (i.e., explicit object
structures) rather than vectors to represent the genotype of candidate solutions. We
have been somewhat surprised by the substantial performance hit incurred and
are currently investigating the reasons in detail. However, two things should be
kept in mind when looking at Crepe's performance: 1) the time taken would still
be acceptable in the context of a wider software-development activity (though
not for on-line use) and 2) the optimisation performance should be weighed
against the time saved in building the optimisation algorithm. One potential
solution to the performance problem is to replace the slowest parts of Crepe
with highly optimised Java-based implementations which can be invoked from
the interpreted EOL.</p>
      <p>
        Even after tuning its parameters, Crepe favoured solutions with fewer
orchestrators and therefore the discovered Pareto front was on average less
optimal than the bespoke implementation's front (Fig. 6). In our initial experiments,
we found that Crepe was biased towards solutions with between one and three
orchestrators, essentially optimising more centralised solutions and producing
Pareto fronts with a low hypervolume. We have previously shown [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ] that
centralised orchestrations are not optimal for distributed networks. To address this,
we tuned the parameters that determine the sizes of individuals produced by
Crepe to optimise for a size that produces solutions without such a strong bias.
Crepe does not guarantee that all features are assigned values. For instance, if
there are fewer feature pairs in a segment than features in the encoded model
object, some features will be left empty. We con gured the number of segments
and features to allow space for all data required. Even so, we found that there
were occasional solutions (&lt; 5%) with missing features that made them invalid.
This could be down to the custom nitisations forcing the search algorithm to be
too restrictive. To address this, the tness function deterministically selects
appropriate values for any missing features. However, this may introduce bias as it
essentially ignores the heuristics and tness evaluations for these features. Note,
however, that the results indicate (Fig. 6) that, in some iterations, Crepe does
explore near-optimal solutions with various orchestrations and achieves results
similar to the bespoke approach.
7
      </p>
    </sec>
    <sec id="sec-7">
      <title>Conclusions and Outlook</title>
      <p>
        This paper has explored the challenge of general-purpose model-based
optimisation frameworks, and presented Crepe's rst foray into the multi-objective
optimisation domain. We have described the required extensions to Crepe: support
for multiple objectives, and a new approach to nitisation which allows users
to have more control over the encoded models. By comparing Crepe against a
highly optimised problem-speci c representation, we found that Crepe was able
to discover equally optimal solutions, but on average performed worse on this
speci c problem. As expected, the execution time of Crepe was much longer,
however still within a range that would be acceptable during development. We
believe that a generic model-based framework like Crepe can be a good starting
point for combining MDE and SBSE. However, research is still needed to
improve the quality of the solutions as well as the performance of the optimisation.
In particular, we plan to extend the scalability analysis of Crepe performed in [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]
by applying it to real-world problems de ned using di erent size metamodels.
      </p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Harman</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>McMinn</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Souza</surname>
            ,
            <given-names>J.T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Yoo</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          : Search Based Software Engineering: Techniques, Taxonomy, Tutorial. In:
          <article-title>Empirical Software Engineering and Veri cation</article-title>
          . Volume
          <volume>7007</volume>
          . (
          <year>2012</year>
          )
          <volume>1</volume>
          {
          <fpage>59</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Schmidt</surname>
            ,
            <given-names>D.C.</given-names>
          </string-name>
          :
          <string-name>
            <surname>Model-Driven Engineering</surname>
          </string-name>
          . IEEE Computer
          <volume>39</volume>
          (
          <issue>2</issue>
          ) (
          <year>February 2006</year>
          )
          <volume>25</volume>
          {
          <fpage>31</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Sendall</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kozaczynski</surname>
            ,
            <given-names>W.</given-names>
          </string-name>
          :
          <article-title>Model Transformation: The Heart and Soul of ModelDriven Software Development</article-title>
          .
          <source>IEEE Software</source>
          <volume>20</volume>
          (
          <issue>5</issue>
          ) (
          <year>September 2003</year>
          )
          <volume>42</volume>
          {
          <fpage>45</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Williams</surname>
            ,
            <given-names>J.R.:</given-names>
          </string-name>
          <article-title>A Novel Representation for Search-Based Model-Driven Engineering</article-title>
          .
          <source>PhD thesis</source>
          , University of York (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          <source>5. 1st Int'l Workshop on Combining Modelling and Search-Based Software Engineering (CMSBSE'13)</source>
          .
          <source>In: 1st Int'l Workshop on Combining Modelling and SearchBased Software Engineering (CMSBSE'13)</source>
          . (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Drago</surname>
            ,
            <given-names>M.L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Mirandola</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ghezzi</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          :
          <article-title>QVTR2: a Rational and Performanceaware Extension to the Relations Language</article-title>
          .
          <source>In: Proc. 3rd Int'l Workshop on Nonfunctional Properties in Domain-Speci c Modelling Languages (NFPinDSML'10)</source>
          . (
          <year>2010</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Denil</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Jukss</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Verbrugge</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Vangheluwe</surname>
          </string-name>
          , H.:
          <article-title>Search-Based Model Optimization using Model Transformations</article-title>
          . In Amyot, D.,
          <string-name>
            <surname>Mussbacher</surname>
          </string-name>
          , G., eds.
          <source>: Proc. 8th System Analysis and Modelling Conf. (SAM'14)</source>
          . (
          <year>2014</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Simons</surname>
            ,
            <given-names>C.L.</given-names>
          </string-name>
          :
          <article-title>Interactive, Evolutionary Computing in Early Lifecycle Software Engineering Design</article-title>
          .
          <source>PhD thesis</source>
          , University of the West of England (May
          <year>2011</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Canfora</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Di</surname>
            <given-names>Penta</given-names>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            ,
            <surname>Esposito</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            ,
            <surname>Villani</surname>
          </string-name>
          ,
          <string-name>
            <surname>M.L.</surname>
          </string-name>
          :
          <article-title>An Approach for QoSAware Service Composition Based on Genetic Algorithms</article-title>
          . In: GECCO. (
          <year>2005</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Strunk</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>QoS-Aware Service Composition: A Survey</article-title>
          .
          <source>In: Proc. 8th European Conference on Web Services</source>
          . (
          <year>2010</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Blum</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Roli</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>Metaheuristics in Combinatorial Optimization: Overview and Conceptual Comparison</article-title>
          .
          <source>ACM Comput. Surv</source>
          .
          <volume>35</volume>
          (
          <issue>3</issue>
          ) (
          <year>2003</year>
          )
          <volume>268</volume>
          {
          <fpage>308</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Efstathiou</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>McBurney</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Zschaler</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bourcier</surname>
          </string-name>
          , J.:
          <article-title>Surrogate-Assisted Optimisation of Composite Applications in Mobile Ad hoc Networks</article-title>
          .
          <source>In: Proc. ACM Genetic and Evolutionary Computation Conference (GECCO'14)</source>
          . (
          <year>2014</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>Kolovos</surname>
            ,
            <given-names>D.S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Paige</surname>
            ,
            <given-names>R.F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Polack</surname>
            ,
            <given-names>F.A.C.</given-names>
          </string-name>
          :
          <article-title>The Epsilon Object Language (EOL)</article-title>
          .
          <source>In: Model Driven Architecture | Foundations and Applications</source>
          . Volume
          <volume>4066</volume>
          of Lecture Notes in Computer Science., Springer (
          <year>2006</year>
          )
          <volume>128</volume>
          {
          <fpage>142</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>Steinberg</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Budinsky</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Paternostro</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Merks</surname>
          </string-name>
          , E.:
          <article-title>EMF Eclipse Modeling Framework</article-title>
          . Second edn.
          <source>The Eclipse Series. Addison-Wesley</source>
          (
          <year>2009</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15. Object Management Group:
          <article-title>UML 2.0 OCL Final Adopted Speci cation</article-title>
          .
          <source>OMG document ptc/2003-10-14 (October</source>
          <year>2003</year>
          ) URL http://www.omg.org/cgibin/doc?ptc/03-10-14.
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <surname>Deb</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Pratap</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Agarwal</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Meyarivan</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          :
          <article-title>A Fast Elitist Multi-Objective Genetic Algorithm: NSGA-II</article-title>
          .
          <source>IEEE Trans. Evol. Comp</source>
          .
          <volume>6</volume>
          (
          <year>2000</year>
          )
          <volume>182</volume>
          {
          <fpage>197</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17.
          <string-name>
            <surname>Hastie</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Tibshirani</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Friedman</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          :
          <source>The Elements of Statistical Learning</source>
          . Springer (
          <year>2003</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18.
          <string-name>
            <surname>Arcuri</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Briand</surname>
          </string-name>
          , L.C.
          <article-title>: A Practical Guide for Using Statistical Tests to Assess Randomized Algorithms in Software Engineering</article-title>
          . In: ICSE. (
          <year>2011</year>
          )
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>