<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0 plus SVG 1.1//EN" "http://www.w3.org/2002/04/xhtml-math-svg/xhtml-math-svg.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8"/>
    <title>Team:SCALE</title>
    <link rel="stylesheet" href="../static/css/raweb.css" type="text/css"/>
    <meta name="description" content="Overall Objectives - Overall Objectives"/>
    <meta name="dc.title" content="Overall Objectives - Overall Objectives"/>
    <meta name="dc.subject" content=""/>
    <meta name="dc.publisher" content="INRIA"/>
    <meta name="dc.date" content="(SCHEME=ISO8601) 2015-01"/>
    <meta name="dc.type" content="Report"/>
    <meta name="dc.language" content="(SCHEME=ISO639-1) en"/>
    <meta name="projet" content="SCALE"/>
    <!-- Piwik -->
    <script type="text/javascript" src="/rapportsactivite/piwik.js"></script>
    <noscript><p><img src="//piwik.inria.fr/piwik.php?idsite=49" style="border:0;" alt="" /></p></noscript>
    <!-- End Piwik Code -->
  </head>
  <body>
    <div class="tdmdiv">
      <div class="logo">
        <a href="http://www.inria.fr">
          <img style="align:bottom; border:none" src="../static/img/icons/logo_INRIA-coul.jpg" alt="Inria"/>
        </a>
      </div>
      <div class="TdmEntry">
        <div class="tdmentete">
          <a href="uid0.html">Team Scale</a>
        </div>
        <span>
          <a href="uid1.html">Members</a>
        </span>
      </div>
      <div class="TdmEntry">Overall Objectives<ul><li><a href="./uid3.html">From Oasis to Scale</a></li><li class="tdmActPage"><a href="./uid4.html">Overall Objectives</a></li></ul></div>
      <div class="TdmEntry">Research Program<ul><li><a href="uid12.html&#10;&#9;&#9;  ">Safely and easily
programming large-scale distributed applications</a></li><li><a href="uid16.html&#10;&#9;&#9;  ">Easily, safely and efficiently running large-scale distributed applications</a></li></ul></div>
      <div class="TdmEntry">Application Domains<ul><li><a href="uid21.html&#10;&#9;&#9;  ">Simulation</a></li><li><a href="uid24.html&#10;&#9;&#9;  ">Big data</a></li></ul></div>
      <div class="TdmEntry">
        <a href="./uid27.html">Highlights of the Year</a>
      </div>
      <div class="TdmEntry">New Software and Platforms<ul><li><a href="uid30.html&#10;&#9;&#9;  ">BigGrph</a></li><li><a href="uid36.html&#10;&#9;&#9;  ">BtrPlace</a></li><li><a href="uid41.html&#10;&#9;&#9;  ">EventCloud</a></li><li><a href="uid45.html&#10;&#9;&#9;  ">OSA</a></li><li><a href="uid49.html&#10;&#9;&#9;  ">Vercors Component Editor (VCE)</a></li></ul></div>
      <div class="TdmEntry">New Results<ul><li><a href="uid54.html&#10;&#9;&#9;  ">Programming Languages for Distributed Systems</a></li><li><a href="uid68.html&#10;&#9;&#9;  ">Run-time/middle-ware level</a></li><li><a href="uid70.html&#10;&#9;&#9;  ">Application level</a></li></ul></div>
      <div class="TdmEntry">Partnerships and Cooperations<ul><li><a href="uid74.html&#10;&#9;&#9;  ">National Initiatives</a></li><li><a href="uid96.html&#10;&#9;&#9;  ">European Initiatives</a></li><li><a href="uid117.html&#10;&#9;&#9;  ">International Initiatives</a></li><li><a href="uid136.html&#10;&#9;&#9;  ">International Research Visitors</a></li></ul></div>
      <div class="TdmEntry">Dissemination<ul><li><a href="uid146.html&#10;&#9;&#9;  ">Promoting Scientific Activities</a></li><li><a href="uid172.html&#10;&#9;&#9;  ">Teaching - Supervision - Juries</a></li><li><a href="uid208.html&#10;&#9;&#9;  ">Popularization</a></li></ul></div>
      <div class="TdmEntry">
        <div>Bibliography</div>
      </div>
      <div class="TdmEntry">
        <ul>
          <li>
            <a id="tdmbibentmajor" href="bibliography.html">Major publications</a>
          </li>
          <li>
            <a id="tdmbibentyear" href="bibliography.html#year">Publications of the year</a>
          </li>
        </ul>
      </div>
    </div>
    <div id="main">
      <div class="mainentete">
        <div id="head_agauche">
          <small><a href="http://www.inria.fr">
	    
	    Inria
	  </a> | <a href="../index.html">
	    
	    Raweb 
	    2015</a> | <a href="http://www.inria.fr/en/teams/scale">Presentation of the Team SCALE</a> | <a href="http://team.inria.fr/scale">SCALE Web Site
	  </a></small>
        </div>
        <div id="head_adroite">
          <table class="qrcode">
            <tr>
              <td>
                <a href="scale.xml">
                  <img style="align:bottom; border:none" alt="XML" src="../static/img/icons/xml_motif.png"/>
                </a>
              </td>
              <td>
                <a href="scale.pdf">
                  <img style="align:bottom; border:none" alt="PDF" src="IMG/qrcode-scale-pdf.png"/>
                </a>
              </td>
              <td>
                <a href="../scale/scale.epub">
                  <img style="align:bottom; border:none" alt="e-pub" src="IMG/qrcode-scale-epub.png"/>
                </a>
              </td>
            </tr>
            <tr>
              <td/>
              <td>PDF
</td>
              <td>e-Pub
</td>
            </tr>
          </table>
        </div>
      </div>
      <!--FIN du corps du module-->
      <br/>
      <div class="bottomNavigation">
        <div class="tail_aucentre">
          <a href="./uid3.html" accesskey="P"><img style="align:bottom; border:none" alt="previous" src="../static/img/icons/previous_motif.jpg"/> Previous | </a>
          <a href="./uid0.html" accesskey="U"><img style="align:bottom; border:none" alt="up" src="../static/img/icons/up_motif.jpg"/>  Home</a>
          <a href="./uid12.html" accesskey="N"> | Next <img style="align:bottom; border:none" alt="next" src="../static/img/icons/next_motif.jpg"/></a>
        </div>
        <br/>
      </div>
      <div id="textepage">
        <!--DEBUT2 du corps du module-->
        <h2>Section: 
      Overall Objectives</h2>
        <h3 class="titre3">Overall Objectives</h3>
        <p>Nowadays, distributed applications can be found on an ever increasing number of interconnected computing infrastructures, ranging from small scale embedded devices to personnal devices, including laptops, desktops, palmtops, and tablets, and finally to large scale data-centers and high performance computing infrastructures. In addition to this <i>inter</i>-platform heteregeneity, we also face higher levels of <i>intra</i>-platform hetrogeneity, with the advent of multi-core architectures, virtual threads, GPUs, and new virtualization technologies. Programming distributed applications in such an heterogeneous environment, with high level of confidence both in terms of performance and security, is still a challenge, and raises many questions.</p>
        <p>The overall objective of <span class="smallcap">Scale </span> is to provide a unified programming
language and execution model for such a large-scale multi-level parallelism.
We want to contribute to the design of the programming languages that
will be used to program large-scale distributed applications in
2020. The characteristics we want to put forward are:
<i>ease of programming</i> and <i>guarantees of correctness</i>. For
this purpose our approach mixes distributed systems, theory of programming
languages, middleware implementations, and resource management.
Guided by this interaction the <span class="smallcap">Scale </span> team contributes to
the creation of safe and efficient environments for programming
and running distributed applications.</p>
        <a name="uid5"/>
        <h4 class="titre4">The <span class="smallcap">Scale </span> team and its positioning</h4>
        <p>The strength of <span class="smallcap">Scale </span> is to put together researchers in programming
languages, from a rather theoretical perspective, with researchers in
middleware and object-oriented programming with a strong expertise on
distributed systems and their applications.</p>
        <p>During the last decade, the landscape of programming languages for
distributed systems has changed. Actors and active objects have
gained interest both from the industrial point of view, as illustrated
by the success of Scala and Akka (<a href="http://akka.io">http://akka.io</a> ), and from the academic point of view,
for example through the projects around ABS and Creol. Our new
proposal, multi-active objects, gives a novel alternative in this world.
It is expected to be more efficient and more easily
applicable than academic languages, but with a better
formalisation and more proved properties than the languages targeting
industrial usage. In particular we believe we are able to provide
the expertise allowing the transfer of academic results on active
objects into language constructs and runtime support that can be
adopted by industrial platforms like Akka.</p>
        <p>The global objective to make safe programming accessible to most
programmers directs the choice of the target programming
language for our developments toward Java. This choice is not only the result of our expertise, but also because it is well known, accessible by most programmers, and also because the underlying JVM can be shared with other languages. This last feature opens interesting perspectives in terms of sharing and reuse of our software contributions. However, this choice is not exclusive. In particular, the approach we propose should be easy to transfer to other programming languages.</p>
        <p>While we still rely on active objects as a
medium-grain parallelism abstraction, we also propose new ways of
parallelizing the execution inside active objects (fine-grain
parallelism), and autonomic ways to deploy and run the coarse-grain entities
composing the application.
However, these various
levels of programming and execution environments cannot be designed
independently. They all rely on a small set of common
abstractions. Typically the service of a request is a notion that can
be reasoned about at all the considered levels. We think that providing such
unifying programming and execution abstractions, and their formal
specification, makes the originality and the strength of <span class="smallcap">Scale </span>,
while unifying our contributions.</p>
        <p>Finally, the <span class="smallcap">Scale </span> team wants to put a strong emphasis on
safety for distributed applications. We want to apply
our expertise about reasoning on language, programs, and protocols in
order to ensure the safe execution of distributed systems and
applications. The fact that we are able to prove the safe behaviour of
applications that achieve performances comparable to unproven and
unsafe distributed systems is probably the biggest strength of the
<span class="smallcap">Scale </span> team. Concerning safety, our approach is threefold: 1) provide
high-level programming abstractions that makes the writing of
distributed programs easier (and thus reduce the chances to write
bugged programs); 2) prove the correctness of the platform we propose,
by proving both properties of the programming language and properties
on the tools and protocols we use; and 3) provide tools so that the
users can specify the behaviour of their application and verify that it
is correct.</p>
        <a name="uid7"/>
        <h4 class="titre4">Research challenges and objectives</h4>
        <p>To summarise, the challenges we address in the <span class="smallcap">Scale </span> team are
the following:</p>
        <ul>
          <li>
            <p class="notaparagraph"><a name="uid8"> </a><i>Safe and easy
programming of large-scale distributed applications</i>. We work to design a
unified programming model for the development of applications mixing
local concurrency, e.g. at the level of multicore hardware, and
large-scale distributed parallelism, like in cloud architecture. The
language is based on the multi-active object language we
designed in the last two years, extended with features for easing
its programming.</p>
            <p><a name="uid8"> </a>Among the improvements of the language, the
strongest challenges are: 1) provide in the same programming model,
simplicity of programming for non-experts, and optimisation
capabilities for advanced users; and 2) safety guarantees, including a
wide variety of analysis methods supporting the development of correct applications;
these analysis methods include static verification of Java annotations and behavioural analysis of dynamic systems of unbounded size.</p>
          </li>
          <li>
            <p class="notaparagraph"><a name="uid9"> </a><i>Easy, safe and efficient execution of large-scale
distributed applications</i>.
We work to design a runtime
environment supporting our approach and showing its practical
effectiveness. Also, and more originally, this challenge
includes resource management aspects, and the possibility for the
programmer to <i>easily</i> express resource requirements on his/her
applications.
Finally, the runtime support for application is also crucial here, and
will include in Scale a wide range of aspects ranging from elasticity
concerns to support for distributed debugging.</p>
            <p><a name="uid9"> </a>Here, the biggest research challenges are: 1) allow the non-expert
programmer to express constraints on his/her program that will allow us to
better deploy the application and run it efficiently; 2) prove the
correctness of the runtime platform and the tools we propose.</p>
          </li>
          <li>
            <p class="notaparagraph"><a name="uid10"> </a><i>Experiments on real life scenarios</i>. Those
scenarios will mostly be taken from big-data and simulation
application domains.</p>
            <p><a name="uid10"> </a>Here, the biggest research challenges are 1) Provide a convenient
environment for programming and running big-data analytics. One of
the key challenge we want to address is how to scale and adapt
analytics at runtime both from the technical and from the business
point of views. The streaming data variability, velocity, and volume
evolve at runtime, so should the analytics computation. Even the
computation itself might evolve depending on preliminary results,
thus the business computation also has to be adaptable. 2) Provide
an efficient support for the distributed execution of large
discrete-event simulations; we target deployment of large
instances of component-based simulation models, and processing of
the large amount of data samples produced by simulations.</p>
          </li>
        </ul>
      </div>
      <!--FIN du corps du module-->
      <br/>
      <div class="bottomNavigation">
        <div class="tail_aucentre">
          <a href="./uid3.html" accesskey="P"><img style="align:bottom; border:none" alt="previous" src="../static/img/icons/previous_motif.jpg"/> Previous | </a>
          <a href="./uid0.html" accesskey="U"><img style="align:bottom; border:none" alt="up" src="../static/img/icons/up_motif.jpg"/>  Home</a>
          <a href="./uid12.html" accesskey="N"> | Next <img style="align:bottom; border:none" alt="next" src="../static/img/icons/next_motif.jpg"/></a>
        </div>
        <br/>
      </div>
    </div>
  </body>
</html>
