<!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>Towards Purpose-Driven Virtual Machines</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Naod Duga Jebessa</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Guido van 't Noordende</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Cees de Laat</institution>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>University of Amsterdam Science Park 904</institution>
          ,
          <addr-line>1098XH Amsterdam</addr-line>
          ,
          <country country="NL">The Netherlands</country>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2013</year>
      </pub-date>
      <abstract>
        <p>Virtual machines (VMs) are often generic though they are meant to serve a speci c purpose. The redundancy of generic VMs may incur costs in security (due to bigger attack surface and a larger trusted computing base) and performance (due to extra VM image size as well as overheads in CPU and memory). We are working on techniques to build minimal, application-speci c and secure virtual machines from declarative descriptions. An application running in a VM has dependencies on other applications, libraries, kernel features and (virtual) hardware. We model such a dependency as a graph. The VM is treated as an optimized system built speci cally to satisfy this dependency out of a set of interdependent components such as packages and kernels from OS distributions. Such distributions and installations based on them are inherently complex networks that could bene t from a formal, rigorous treatment in order to perform security and performance optimization. In this paper, we describe our motivation and vision for this project, outline our approach, brie y report on current status, discuss challenges and research problems that we intend to work on in the future.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>Introduction</title>
      <p>Copyright ⃝c by the paper's authors. Copying permitted only for private and academic purposes.
demand from existing components. Doing so should allow us to do ne grained and automated optimization.
Moreover, it would be easier to reason over the security or other properties of the system using a semantically
rich model, than over an unstructured virtual machine image.
2</p>
    </sec>
    <sec id="sec-2">
      <title>Approach</title>
      <p>
        We use graph models for OS distributions and virtual machines built from them. The purpose of the VM
is declared using a domain-speci c language (DSL [
        <xref ref-type="bibr" rid="ref17 ref23">17, 23</xref>
        ]). The declarative description is then used as an
input to a pipeline used to build an optimized VM. The problem is partitioned into two major subproblems.
The rst subproblem, corresponding to the two stages in our four stage pipeline (see D and C in gure 1),
focuses on descriptions and as such involves language and semantics related issues as well as ways to capture
user/application requirements. The second subproblem is about translating the descriptions to concrete systems
that meet constraints derived from the second stage. For brevity, we have shown the outputs of each stage while
arrows represent intermediate blocks.
2.1
      </p>
      <sec id="sec-2-1">
        <title>Operating Systems as Complex Networks</title>
        <p>
          It is possible to model an operating system distribution as a graph of interdependent components. An operating
system OSi can have v versions, each comprising a set P of packages with a dependency graph Gp and a kernel
whose features [
          <xref ref-type="bibr" rid="ref4 ref7">4, 7</xref>
          ] can be represented as a dependency graph Gk. It is worth noting that there is an implicit
dependency between Gp and Gk as applications and libraries expect a kernel to interact with and because many
distributions treat the kernel itself as a package.
        </p>
        <p>Because we can annotate the graph model with external information about, say, security-related statistics on
packages, we will be able to employ security-aware constraints in our optimization pipeline. This pipeline is part
of a toolchain for building virtual machines that we are developing.</p>
        <p>
          An ongoing work is to use ideas from network science and complexity [
          <xref ref-type="bibr" rid="ref1 ref2">1, 2</xref>
          ] to understand the structure and
dynamics of OS distributions and installations [
          <xref ref-type="bibr" rid="ref5">5</xref>
          ]. As an example, we created an annotated semantic graph
of Debian Squeeze that comes with a Linux 2.6 kernel for i386. This graph has approximately 40 thousand
nodes and 170 thousand edges. Figure 2 shows a visualization of the graph. One can imagine how challenging
it is to manipulate this model and gain insight from it. However, we simplify the problem by focusing on the
dependency graph of a small set of applications on a speci c OS, as shown in gures 3 and 4.
2.2
        </p>
      </sec>
      <sec id="sec-2-2">
        <title>Declarative Descriptions and Constraints</title>
        <p>The VM is declaratively described in a domain-speci c language (DSL). The description speci es minimal
requirements from the VM such as set of packages, kernel features and system con gurations for software, (virtual)
hardware, networks, and so on. This description is then analyzed to ll in details and create a constraint for
optimization, as shown in gure 1. The DSL should be expressive enough and should allow explicit declarations
through conjunction, negation, and disjunction. For example, a description may have a list of requirements
that must be satis ed (conjunction), unneeded functionality (negation), and alternatives for a certain feature
(disjunction). Implicit requirements in the VM will be incorporated as default constraints upon analysis. For
example, if the declarative description does not state what version of an OS to use, a default version may be
selected. Declarative descriptions and constraints have several advantages. They can be versioned to allow
rollback; can be based on existing templates; and can be reasoned about (say, to map a declaration/constraint
to an already built VM).
2.3</p>
      </sec>
      <sec id="sec-2-3">
        <title>Optimization and Reasoning About VM Security</title>
        <p>
          We look at the VM as the minimal composition from a set of interdependent components in package dependency
graphs Gpi and kernel feature graphs Gkj that satis es the constraint set forth by the declarative description.
Dependency resolution is an NP-complete problem [
          <xref ref-type="bibr" rid="ref3">3</xref>
          ]. The fact that we add constraints might lead to declarations
with constraints that are not satis ed. From the package dependency graph point of view (see gure 4 for a speci c
application1), the problem is nding an optimal installation that satis es constraints pertaining to packages [
          <xref ref-type="bibr" rid="ref8">8</xref>
          ].
For the kernel, this translates to (de)selecting features based on constraints on the kernel, speci cally device
drivers, le systems and protocol stacks [
          <xref ref-type="bibr" rid="ref4 ref7">4, 7</xref>
          ].
        </p>
        <p>Let us consider the case where there is a security advisory for a network exploitable vulnerability in package X
version a.b.c for a speci c OS. A query to the declarative description and the blueprint of the VM would show
if we have that speci c version in the virtual machine. This could be automated and can be an integral part of
a simpli ed security lifecycle management pipeline.</p>
        <p>A practical problem with this approach is that security advisories (like CVE/DSA2) are not semantically rich
enough. We see promising research with practical signi cance in employing semantic technologies to describe,
consume and process security-related information.
2.4</p>
      </sec>
      <sec id="sec-2-4">
        <title>Building Virtual Machines</title>
        <p>Having installed an optimized package set on top of a possibly optimized kernel, a VM image can be con gured
with cryptographic keys, users, passwords and the like along with extra dependencies like memory, processor,
storage and network settings to a speci c target hypervisor.</p>
        <p>We are building a proof-of-concept setup to validate the ideas presented so far. There are at least four engineering
challenges. First, there are quite a few hypervisors to target, each with a somewhat different view of a guest
1http://fsl.fmrib.ox.ac.uk
2http://cve.mitre.org/, http://www.debian.org/security/
VM. To this end, we plan to have a modular and extensible VM building pipeline. The design of the hypervisor
might also constrain how we optimize the VM and it is worth considering hypervisor-VM optimization in this
regard, e.g. with respect to drivers.</p>
        <p>Second, there are a range of VM image formats and containers to target. The qcow2 format used by
KVM/QEMU, for instance, is quite different from formats like Xen raw disk, AMI (Amazon, with separate
kernel and ramdisk), Microsoft Hyper-V's vhd, VirtualBox vdi, and vmdk (VMware). However, a modular design
should allow us to build a VM and target it to different formats. This is possible because most formats are more
or less indifferent to how we optimize the internal subsystems of the VM and because there are readily available
conversion tools.</p>
        <p>Third, there are a plethora of operating systems that we can build virtual machines from. Modeling each OS as
an annotated dependency graph is a difficult endeavor. Hence, we plan to work on a set of representative OS
distributions. Even though our approach is ideal for the Unix philosophy and package-based source/binary OS
distributions, it should be possible to extend the idea to other platforms, as the formalism we are developing is
fairly generic.</p>
        <p>Last but not least, there is the issue of efficient VM building. One might consider having a ready made 'base'
VM setup for commonly used virtual machines and con gure a candidate based on the constraints set forth by
the declarative description. This approach may be useful when the time to build and deploy is of signi cant
importance, as building a custom kernel takes several minutes and package installation and con guration takes
signi cant time as well.
3</p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>Research Challenges and Future Work</title>
      <p>
        1. How do we manage complexity and heterogeneity? : One challenge is coming up with a fairly generic
abstraction that can be used to model a VM based on any one of a range of OS distributions; built for one or more
hypervisors and processor architectures; and can be targeted at one or more cloud stacks. We believe that
dependency graphs and complex networks are a viable foundation to start with, together with an
information model for each component from which the VM is composed from. In such an approach, we treat the
VM as a layered stack of dependencies in hardware, hypervisor, kernel features, libraries, applications and
con gurations. Such a graph model allows us to separate theoretical problems from implementation issues.
The model would bene t from existing research in complex networks [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ], graph theory [
        <xref ref-type="bibr" rid="ref12 ref2 ref21">2, 12, 21</xref>
        ], boolean
satis ability and dependency resolution [
        <xref ref-type="bibr" rid="ref13 ref14 ref19 ref3">3, 19, 13, 14</xref>
        ]. We could leverage existing tools and demonstrate
our ideas through a proof of concept pipeline instead of a complete implementation that supports all major
operating systems and hypervisors.
2. How do we describe the speci c purpose of a VM? : People often use natural languages to describe what a
speci c machine is for, be it physical or virtual, even though the machine is, in principle, general-purpose.
The design of a declarative language for VM description calls for a tradeoff between simplicity and
expressiveness. The rst challenge arises from the fact that a user cannot be expected to explicitly declare
everything. So the language [
        <xref ref-type="bibr" rid="ref20 ref23">20, 23</xref>
        ] should have constructs to support implicit declarations. Second, the
expressive power of the language dictates much of what is done after processing a description. For example,
a very ne-grained description (e.g. with conjunctive normal form constraints) may be difficult to satisfy,
due to a limited search space and making the optimization problem at hand difficult (as in too many
variables and constraints) and time-consuming (translating the solution to a concrete VM). A coarse-grained
description, on the other hand, may introduce indeterminism, sub-optimal or too-optimized solutions, and
an increased search space.
3. How do we ll the semantic gap in security? : To our surprise, much of the available security-related
information (e.g. from CVE or speci c vendors) is not structured enough to be used by automated tools. In our
particular case, for example, it is not easy to gather vulnerability information so as to measure or evaluate
the security of a VM instance due the ambiguity, incompleteness and a non-standard vocabulary, to mention
a few, of security advisories. Along with our work in measuring security of a VM and on attack surface
evaluation metrics, we plan to suggest a semantically rich, machine-readable format to describe vulnerabilities
and develop a logic formalism for attack scenarios, specially for use by OS distributions like Debian.
4. What is this all for? : In cloud parlance, our idea is conceptually equivalent to offering a PaaS on demand,
targeted at an existing IaaS. A good example might be creating a VM cluster for a DNA processing
application that expects a certain runtime environment, including an OS installation and all required dependencies.
Hence, our project essentially maps high-level application requirements to low-level infrastructure details.
Moreover, some application scenarios are security and privacy sensitive. Hence, we are advocating a
disciplined way of building VMs with the hypothesis that a pipeline that translates declarative descriptions to
concrete VMs would allow for 'white-box machines' (whose internal manifest is clearly known), hence
allowing us to reason about certain attributes of such a VM like its trusted compute base (TCB) size, the size
of its attack surface, the possibility of exploitation given an attack scenario, or trustworthiness in general.
While security is the main goal of our work, the approach could have advantages in smaller VMs that could
perform well [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ] and are easy to maintain, allowing users and frontend tools to automatically build virtual
machines. As future work, we plan to build demos and explore use cases and usability as the feedback from
such endeavors will allow us to re ne our approach to the problem.
5. Validation and Evaluation Techniques : We are working on the assumption that optimized, purpose-driven
VMs are likely to be more secure and could possibly perform better. In addition, our approach of employing
a declarative VM description language might improve usability, exibility and maintainability. All the above
hypotheses need to be tested. The security of a VM is not straightforward to quantify due to the absence
of an evaluation metric. However, having the knowledge of the VM internals should allow us to propose
novel metrics that we can use to compare the security of optimized VMs with their generic counterparts.
Performance of the VM building pipeline and the built VMs, on the other hand, can readily be evaluated in
terms of time taken to build a VM (compared to manual building and off-the-shelf deployment of an existing
VM image); the CPU and memory usage while the VM is running; and VM image size (which is important
during migration, for example). Usability, exibility and maintainability could be evaluated through use
cases that make use of our tools, albeit subjectively.
4
      </p>
    </sec>
    <sec id="sec-4">
      <title>Related Work</title>
      <p>
        There are quite a few projects that aim at building VMs [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ], image manipulation3, con guration tools &amp; APIs4,
and interaction with hypervisors5, the majority of which are open source. We are aware of at least half a dozen
solutions focusing on VM building, with varying maturity and OS support. Our work differs in two major ways
and is, in essence, orthogonal to most. First, building a VM is only part of what we do and as such it can be
considered as an implementation issue. Second, we are introducing a purpose-driven (declarative) VM-building
paradigm wherein we do ne-grained optimization with implications in security, performance and exibility, as
opposed to straightforward installation as is often done by existing solutions6.
      </p>
      <p>
        3http://libguestfs.org/
4http://augeas.net/, http://cfengine.com/
5http://libvirt.org/
6http://wiki.debian.org/VMBuilder, http://virt-manager.org/
Few authors have studied operating system distributions as complex networks [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] and we believe there is more
to be done, specially in the context of security, OS complexity and virtual machines. The authors in [
        <xref ref-type="bibr" rid="ref3 ref5">3, 5</xref>
        ]
have done detailed studies on formalisms and tools to manage complexity of package-based OS distributions
showing that they exhibit the small world property [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] of many networks. We hope to work towards a graph
theoretic attack surface metric [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ] that takes into consideration semantic metadata about components and the
composition thereof, of a virtual machine. This would allow us to evaluate the security advantages of minimal
and application-speci c VMs.
      </p>
      <p>
        In the domain of software engineering, researchers have studied automatic generation [
        <xref ref-type="bibr" rid="ref15 ref16 ref22">15, 16, 22</xref>
        ], predictable
assembly [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ], variability and feature models [
        <xref ref-type="bibr" rid="ref4 ref7 ref9">4, 7, 9</xref>
        ] as applied to OS kernels.
5
      </p>
    </sec>
    <sec id="sec-5">
      <title>Conclusion</title>
      <p>For many users, a virtual machine is a black box that is difficult to reason about, trust, con gure and maintain.
While this is most certainly true for inexperienced users, expert users also nd themselves working with
precon gured or generic VM images, which is anything but transparent. Furthermore, automated infrastructure
provisioning tools are increasingly using virtual machine technology to serve computational needs by deploying
VMs on demand, often from pre-built images. We believe that there is a missing link between the purpose of a
VM on one hand and the way a VM is built on the other. We need a generic and disciplined process to build
our virtual machines.</p>
      <p>Our work ts in the wider problem of security and privacy in clouds. One aspect is having trustworthy VM
installations that can be (remotely) attested. The user might want to just declare and expect to get a fairly secure
VM while the cloud provider might expect to have some guarantee that the VM is 'safe' to deploy. Depending
on the use case, the declarative description and intermediate steps in our pipeline could be used or extended
to incorporate mutual trust, where both parties can verify relevant properties of the virtual machine. Another
aspect is the issue of privacy in clouds which we believe can bene t from a trustworthy execution environment.
If a VM can be attacked and owned, it will be a breach of the necessary condition of con dentiality of the data
it is supposed to process (as part of its purpose), secret keys it has stored, etc.</p>
      <p>In this paper, we have described the idea of a purpose-driven virtual machine. Our motivation is the observation
that a VM is often meant to serve a speci c purpose and the fact that generic VMs have redundant components
that may be omitted, giving advantages in security and performance. Using declarative descriptions of
application requirements, we are able to generate virtual machines on demand out of component ecosystems (i.e. OS
distributions) modeled as complex networks. We have discussed our approach and outlined some theoretical and
practical problems that we intend to work on in the future.</p>
      <p>Acknowledgment: This research is supported by the Dutch national research program COMMIT
(http://www.commit-nl.nl ). We would like to thank the anonymous reviewers whose comments helped improve
the paper.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>M.</given-names>
            <surname>Newman</surname>
          </string-name>
          ,
          <string-name>
            <surname>A-L. Barabasi</surname>
            , and
            <given-names>D.J.</given-names>
          </string-name>
          <string-name>
            <surname>Watts</surname>
          </string-name>
          .
          <year>2006</year>
          .
          <article-title>The Structure and Dynamics of Networks: (Princeton Studies in Complexity)</article-title>
          . Princeton University Press, Princeton, NJ, USA.
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>J.</given-names>
            <surname>Kleinberg</surname>
          </string-name>
          .
          <year>2000</year>
          .
          <article-title>The small-world phenomenon: an algorithm perspective</article-title>
          .
          <source>In Proceedings of the thirtysecond annual ACM symposium on Theory of computing (STOC '00)</source>
          . ACM, New York, NY, USA,
          <fpage>163</fpage>
          -
          <lpage>170</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>F.</given-names>
            <surname>Mancinelli</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Boender</surname>
          </string-name>
          , R. di Cosmo,
          <string-name>
            <given-names>J.</given-names>
            <surname>Vouillon</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Durak</surname>
          </string-name>
          ,
          <string-name>
            <given-names>X.</given-names>
            <surname>Leroy</surname>
          </string-name>
          , and
          <string-name>
            <given-names>R.</given-names>
            <surname>Treinen</surname>
          </string-name>
          .
          <year>2006</year>
          .
          <article-title>Managing the Complexity of Large Free and Open Source Package-Based Software Distributions</article-title>
          .
          <source>In Proceedings of the 21st IEEE/ACM International Conference on Automated Software Engineering (ASE '06)</source>
          . IEEE Computer Society, Washington, DC, USA.
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>T.</given-names>
            <surname>Berger</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>She</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Lotufo</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Wasowski</surname>
          </string-name>
          , and
          <string-name>
            <given-names>K.</given-names>
            <surname>Czarnecki</surname>
          </string-name>
          .
          <year>2010</year>
          .
          <article-title>Variability modeling in the real: a perspective from the operating systems domain</article-title>
          .
          <source>In Proceedings of the IEEE/ACM international conference on Automated software engineering (ASE '10)</source>
          . ACM, New York, NY, USA,
          <fpage>73</fpage>
          -
          <lpage>82</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>P.</given-names>
            <surname>Abate</surname>
          </string-name>
          , R. di Cosmo,
          <string-name>
            <given-names>J.</given-names>
            <surname>Boender</surname>
          </string-name>
          , and
          <string-name>
            <given-names>S.</given-names>
            <surname>Zacchiroli</surname>
          </string-name>
          .
          <year>2009</year>
          .
          <article-title>Strong dependencies between software components</article-title>
          .
          <source>In Proceedings of the 2009 3rd International Symposium on Empirical Software Engineering and Measurement (ESEM '09)</source>
          . IEEE Computer Society, Washington, DC, USA,
          <fpage>89</fpage>
          -
          <lpage>99</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>S.A.</given-names>
            <surname>Hissam</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G.A.</given-names>
            <surname>Moreno</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.A.</given-names>
            <surname>Stafford</surname>
          </string-name>
          , and
          <string-name>
            <given-names>K.C.</given-names>
            <surname>Wallnau</surname>
          </string-name>
          .
          <year>2002</year>
          .
          <article-title>Packaging Predictable Assembly</article-title>
          .
          <source>In Proceedings of the IFIP/ACM Working Conference on Component Deployment (CD '02)</source>
          ,
          <string-name>
            <given-names>J.M.</given-names>
            <surname>Bishop</surname>
          </string-name>
          (Ed.). Springer-Verlag, London, UK, UK,
          <fpage>108</fpage>
          -
          <lpage>124</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>R. di</given-names>
            <surname>Cosmo</surname>
          </string-name>
          and
          <string-name>
            <given-names>S.</given-names>
            <surname>Zacchiroli</surname>
          </string-name>
          .
          <year>2010</year>
          .
          <article-title>Feature diagrams as package dependencies</article-title>
          .
          <source>In Proceedings of the 14th international conference on Software product lines: going beyond (SPLC'10), J. Bosch and J. Lee (Eds.)</source>
          . Springer-Verlag, Berlin, Heidelberg,
          <fpage>476</fpage>
          -
          <lpage>480</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>P.</given-names>
            <surname>Abate</surname>
          </string-name>
          , R. di Cosmo,
          <string-name>
            <given-names>R.</given-names>
            <surname>Treinen</surname>
          </string-name>
          , and
          <string-name>
            <given-names>S.</given-names>
            <surname>Zacchiroli</surname>
          </string-name>
          .
          <year>2013</year>
          .
          <article-title>A modular package manager architecture</article-title>
          .
          <source>Inf. Softw. Technol</source>
          .
          <volume>55</volume>
          ,
          <issue>2</issue>
          (
          <year>February 2013</year>
          ),
          <fpage>459</fpage>
          -
          <lpage>474</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>L.</given-names>
            <surname>Passos</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Czarnecki</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Wasowski</surname>
          </string-name>
          .
          <year>2012</year>
          .
          <article-title>Towards a catalog of variability evolution patterns: the Linux kernel case</article-title>
          .
          <source>In Proceedings of the 4th International Workshop on Feature-Oriented Software Development (FOSD '12)</source>
          , Ina Schaefer and Thomas Thm (Eds.). ACM, New York, NY, USA,
          <fpage>62</fpage>
          -
          <lpage>69</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>P.K.</given-names>
            <surname>Manadhata</surname>
          </string-name>
          and
          <string-name>
            <given-names>J.M.</given-names>
            <surname>Wing</surname>
          </string-name>
          .
          <year>2011</year>
          .
          <article-title>An Attack Surface Metric</article-title>
          .
          <source>IEEE Trans. Softw. Eng</source>
          .
          <volume>37</volume>
          ,
          <issue>3</issue>
          (May
          <year>2011</year>
          ),
          <fpage>371</fpage>
          -
          <lpage>386</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>I.</given-names>
            <surname>Krsul</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Ganguly</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Zhang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.A. B.</given-names>
            <surname>Fortes</surname>
          </string-name>
          , and
          <string-name>
            <given-names>R.J.</given-names>
            <surname>Figueiredo</surname>
          </string-name>
          .
          <year>2004</year>
          .
          <article-title>VMPlants: Providing and Managing Virtual Machine Execution Environments for Grid Computing</article-title>
          .
          <source>In Proceedings of the 2004 ACM/IEEE conference on Supercomputing (SC '04)</source>
          . IEEE Computer Society, Washington, DC, USA,
          <fpage>7</fpage>
          -.
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>M.</given-names>
            <surname>Newman</surname>
          </string-name>
          .
          <year>2010</year>
          .
          <article-title>Networks: An Introduction</article-title>
          . Oxford University Press, Inc., New York, NY, USA.
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>G.</given-names>
            <surname>Jenson</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Dietrich</surname>
          </string-name>
          , and
          <string-name>
            <given-names>H.W.</given-names>
            <surname>Guesgen</surname>
          </string-name>
          .
          <year>2010</year>
          .
          <article-title>An empirical study of the component dependency resolution search space</article-title>
          .
          <source>In Proceedings of the 13th international conference on Component-Based Software Engineering (CBSE'10)</source>
          , L. Grunske,
          <string-name>
            <given-names>R.</given-names>
            <surname>Reussner</surname>
          </string-name>
          , and
          <string-name>
            <given-names>F.</given-names>
            <surname>Plasil</surname>
          </string-name>
          (Eds.). Springer-Verlag, Berlin, Heidelberg,
          <fpage>182</fpage>
          -
          <lpage>199</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>L.</given-names>
            <surname>Bordeaux</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y.</given-names>
            <surname>Hamadi</surname>
          </string-name>
          , and
          <string-name>
            <given-names>L.</given-names>
            <surname>Zhang</surname>
          </string-name>
          .
          <year>2006</year>
          .
          <article-title>Propositional Satis ability and Constraint Programming: A comparative survey</article-title>
          .
          <source>ACM Comput. Surv</source>
          .
          <volume>38</volume>
          ,
          <issue>4</issue>
          ,
          <string-name>
            <surname>Article 12</surname>
          </string-name>
          (
          <year>December 2006</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>L.</given-names>
            <surname>Guthier</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Yoo</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Jerraya</surname>
          </string-name>
          .
          <year>2001</year>
          .
          <article-title>Automatic generation and targeting of application speci c operating systems and embedded systems software</article-title>
          .
          <source>In Proceedings of the conference on Design, automation and test in Europe (DATE '01)</source>
          , W. Nebel and A.
          <string-name>
            <surname>Jerraya</surname>
          </string-name>
          (Eds.). IEEE Press, Piscataway, NJ, USA,
          <fpage>679</fpage>
          -
          <lpage>685</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>A.</given-names>
            <surname>Sarmento</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Kriaa</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Grasset</surname>
          </string-name>
          ,
          <string-name>
            <surname>M-W. Youssef</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          <string-name>
            <surname>Bouchhima</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          <string-name>
            <surname>Rousseau</surname>
            ,
            <given-names>W.</given-names>
          </string-name>
          <string-name>
            <surname>Cesario</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.A.</given-names>
            <surname>Jerraya</surname>
          </string-name>
          .
          <year>2005</year>
          .
          <article-title>Service dependency graph: an efficient model for hardware/software interfaces modeling and generation for SoC design</article-title>
          .
          <source>In Proceedings of the 3rd IEEE/ACM/IFIP international conference on Hardware/software codesign and system synthesis (CODES+ISSS '05)</source>
          . ACM, New York, NY, USA,
          <fpage>261</fpage>
          -
          <lpage>266</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <surname>A. van Deursen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Klint</surname>
          </string-name>
          , and
          <string-name>
            <given-names>J.</given-names>
            <surname>Visser</surname>
          </string-name>
          .
          <year>2000</year>
          .
          <article-title>Domain-speci c languages: an annotated bibliography</article-title>
          .
          <source>SIGPLAN Not</source>
          .
          <volume>35</volume>
          ,
          <issue>6</issue>
          (
          <year>June 2000</year>
          ),
          <fpage>26</fpage>
          -
          <lpage>36</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>N.D.</given-names>
            <surname>Jebessa</surname>
          </string-name>
          , G. van 't
          <string-name>
            <surname>Noordende</surname>
          </string-name>
          , C. de Laat.
          <year>2012</year>
          .
          <article-title>Optimizing Security for Virtual Machine Applications</article-title>
          .
          <source>In HPDC 2012</source>
          .
          <article-title>The 21st International ACM Symposium on High-Performance Parallel and Distributed Computing (Poster Abstract)</article-title>
          .
          <source>(July</source>
          <year>2012</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <given-names>T.</given-names>
            <surname>Zimmermann</surname>
          </string-name>
          , and
          <string-name>
            <given-names>N.</given-names>
            <surname>Nagappan</surname>
          </string-name>
          .
          <year>2007</year>
          .
          <article-title>Predicting subsystem failures using dependency graph complexities</article-title>
          .
          <source>In Software Reliability 2007. ISSRE'07. The 18th IEEE International Symposium on</source>
          , pp.
          <fpage>227</fpage>
          -
          <lpage>236</lpage>
          . IEEE,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <given-names>R.J.</given-names>
            <surname>Stainton</surname>
          </string-name>
          .
          <year>1996</year>
          .
          <article-title>Philosophical perspectives on language</article-title>
          . Peterborough, Ont., Broadview Press.
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21]
          <string-name>
            <given-names>S.E.</given-names>
            <surname>Schaeffer</surname>
          </string-name>
          .
          <year>2007</year>
          .
          <article-title>Survey: Graph clustering</article-title>
          .
          <source>Comput. Sci. Rev</source>
          .
          <volume>1</volume>
          ,
          <issue>1</issue>
          (
          <year>August 2007</year>
          ),
          <fpage>27</fpage>
          -
          <lpage>64</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [22]
          <string-name>
            <given-names>K.</given-names>
            <surname>Czarnecki</surname>
          </string-name>
          and
          <string-name>
            <given-names>U.W.</given-names>
            <surname>Eisenecker</surname>
          </string-name>
          .
          <year>2000</year>
          .
          <article-title>Generative Programming: Methods, Tools, and Applications</article-title>
          . ACM Press/Addison-Wesley Publ. Co., New York, NY, USA.
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          [23]
          <string-name>
            <given-names>M.</given-names>
            <surname>Mernik</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Heering</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.M.</given-names>
            <surname>Sloane</surname>
          </string-name>
          .
          <year>2005</year>
          .
          <article-title>When and how to develop domain-speci c languages</article-title>
          .
          <source>ACM Comput. Surv</source>
          .
          <volume>37</volume>
          ,
          <issue>4</issue>
          (
          <year>December 2005</year>
          ),
          <fpage>316</fpage>
          -
          <lpage>344</lpage>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>