<?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>Project-Team:FOCUS</title>
    <link rel="stylesheet" href="../static/css/raweb.css" type="text/css"/>
    <meta name="description" content="New Software and Platforms - Others"/>
    <meta name="dc.title" content="New Software and Platforms - Others"/>
    <meta name="dc.subject" content=""/>
    <meta name="dc.publisher" content="INRIA"/>
    <meta name="dc.date" content="(SCHEME=ISO8601) 2014-01"/>
    <meta name="dc.type" content="Report"/>
    <meta name="dc.language" content="(SCHEME=ISO639-1) en"/>
    <meta name="projet" content="FOCUS"/>
    <!-- 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">Project-Team Focus</a>
        </div>
        <span>
          <a href="uid1.html">Members</a>
        </span>
      </div>
      <div class="TdmEntry">
        <a href="./uid3.html">Overall Objectives</a>
      </div>
      <div class="TdmEntry">Research Program<ul><li><a href="uid5.html&#10;&#9;&#9;  ">Models</a></li></ul></div>
      <div class="TdmEntry">Application Domains<ul><li><a href="uid7.html&#10;&#9;&#9;  ">Ubiquitous Systems</a></li><li><a href="uid13.html&#10;&#9;&#9;  ">Service Oriented Computing and Cloud Computing</a></li></ul></div>
      <div class="TdmEntry">New Software and Platforms<ul><li><a href="uid15.html&#10;&#9;&#9;  ">Jolie</a></li><li class="tdmActPage"><a href="uid21.html&#10;&#9;&#9;  ">Others</a></li></ul></div>
      <div class="TdmEntry">New Results<ul><li><a href="uid31.html&#10;&#9;&#9;  ">Highlights of the Year</a></li><li><a href="uid32.html&#10;&#9;&#9;  ">Service-oriented computing</a></li><li><a href="uid35.html&#10;&#9;&#9;  ">Models for reliability</a></li><li><a href="uid38.html&#10;&#9;&#9;  ">Cloud Computing</a></li><li><a href="uid41.html&#10;&#9;&#9;  ">Resource Control</a></li><li><a href="uid45.html&#10;&#9;&#9;  ">Verification techniques for
extensional properties</a></li></ul></div>
      <div class="TdmEntry">Partnerships and Cooperations<ul><li><a href="uid50.html&#10;&#9;&#9;  ">National Initiatives</a></li><li><a href="uid55.html&#10;&#9;&#9;  ">European Initiatives</a></li><li><a href="uid71.html&#10;&#9;&#9;  ">International Research Visitors</a></li></ul></div>
      <div class="TdmEntry">Dissemination<ul><li><a href="uid88.html&#10;&#9;&#9;  ">Promoting Scientific Activities</a></li><li><a href="uid89.html&#10;&#9;&#9;  ">Teaching - Supervision - Juries</a></li><li><a href="uid141.html&#10;&#9;&#9;  ">Popularization</a></li><li><a href="uid146.html&#10;&#9;&#9;  ">Institutional commitment</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>
          <li>
            <a id="tdmbibentfoot" href="bibliography.html#References">References in notes</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 
	    2014</a> | <a href="http://www.inria.fr/en/teams/focus">Presentation of the Project-Team FOCUS</a> | <a href="http://focus.cs.unibo.it/bin/view/Main/WebHome">FOCUS Web Site
	  </a></small>
        </div>
        <div id="head_adroite">
          <table class="qrcode">
            <tr>
              <td>
                <a href="focus.xml">
                  <img style="align:bottom; border:none" alt="XML" src="../static/img/icons/xml_motif.png"/>
                </a>
              </td>
              <td>
                <a href="focus.pdf">
                  <img style="align:bottom; border:none" alt="PDF" src="IMG/qrcode-focus-pdf.png"/>
                </a>
              </td>
              <td>
                <a href="../focus/focus.epub">
                  <img style="align:bottom; border:none" alt="e-pub" src="IMG/qrcode-focus-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="./uid15.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="./uid31.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: 
      New Software and Platforms</h2>
        <h3 class="titre3">Others</h3>
        <p>Below we list some software that has been developed, or is under
development, in Focus.</p>
        <ul>
          <li>
            <p class="notaparagraph"><a name="uid22"> </a><i>Deadlock analysis</i>
(<a href="http://df4abs.nws.cs.unibo.it/">http://df4abs.nws.cs.unibo.it/</a> ).</p>
            <p><a name="uid22"> </a>We have prototyped a framework for statically detecting deadlocks in
a concurrent object-oriented language with asynchronous method calls
and cooperative scheduling of method activations (the language is
inspired by the ABS language developed in the EU project HATS and currently
extended with primitives for cloud-computing in the EU project ENVISAGE).
Since this language features recursion and dynamic resource creation, deadlock detection is extremely complex and state-of-the-art solutions either give imprecise answers or do not scale.
In order to augment precision and scalability we propose a modular
framework that allows several techniques to be combined. The basic
component of the framework is a front-end inference algorithm that
extracts abstract behavioural descriptions of methods, called
contracts, which retain resource dependency information. Then these
contracts are analysed by a back-end that uses a fix-point technique
to derive in a deterministic way the deadlock information.</p>
          </li>
          <li>
            <p class="notaparagraph"><a name="uid23"> </a><i>CaReDeb</i> (<a href="http://www.cs.unibo.it/caredeb">http://www.cs.unibo.it/caredeb</a> ).</p>
            <p><a name="uid23"> </a>Reversible debugging provides developers with a way to execute their
applications both forward and backward, seeking the cause of an
unexpected or undesired event. We have developed CaReDeb, the first
prototype of a causal-consistent reversible debugger. Causal
consistent here means that independent actions are undone
independently, while dependent actions are undone in reverse
order. This allows the programmer to concentrate on the threads
responsible of the bug, independently of the actual
interleaving. CaReDeb provides primitives that given a misbehaviour,
e.g., a variable has not the expected value, allow one to go back to the
action responsible for it, e.g., the one that assigned the wrong value
to the variable. Notably, the programmer has no need to know which
thread the action belongs to, since this is found automatically by the
debugger. The procedure can be iterated till the bug is found. CaReDeb
targets a fragment of the language Oz, which is at the basis of
Mozart. The considered fragment provides functional variables,
procedures, threads, and asynchronous communication via ports.</p>
          </li>
          <li>
            <p class="notaparagraph"><a name="uid24"> </a><i>AIOCJ</i> (<a href="http://www.cs.unibo.it/projects/jolie/aiocj.html">http://www.cs.unibo.it/projects/jolie/aiocj.html</a> ).</p>
            <p><a name="uid24"> </a>AIOCJ is a framework for programming adaptive distributed systems
based on message passing. AIOCJ comes as a plugin for Eclipse,
AIOCJ-ecl, allowing to edit descriptions of distributed systems as
adaptive interaction-oriented choreographies (AIOC). From
interaction-oriented choreographies the description of single
participants can be automatically derived. Adaptation is specified by
rules allowing to replace predetermined parts of the AIOC with a new
behaviour. A suitable protocol ensures that all the participants are
updated in a coordinated way. As a result, the distributed system
follows the specification given by the AIOC under all changing sets of
adaptation rules and environment conditions. In particular, the system
is always deadlock-free.
AIOCJ can interact with external services, seen as functions, by
specifying their URL and the protocol they support (HTTP, SOAP,
...). Deadlock-freedom guarantees of the application are preserved
provided that those services do not block.</p>
          </li>
          <li>
            <p class="notaparagraph"><a name="uid25"> </a><i>METIS</i> (<a href="https://github.com/aeolus-project/metis">https://github.com/aeolus-project/metis</a> )</p>
            <p><a name="uid25"> </a>As partners of the Aeolus project we
have developed a tool for the automatic synthesis of deployment plans.
A deployment plan is a sequence of actions that, when performed,
allows the deployment of a given configuration of components. METIS
(Modern Engineered Tool for Installing Software systems) is a tool
that enables one to automatically generate a deployment plan, starting
from a description of the configuration following the Aeolus model.
The software is open source. It is written entirely in
OCaml and is about 3.5K lines of source code. The tool is based on
theoretical results that guarantee its soundness and completeness,
while maintaining polynomial computational complexity.
METIS already showed its effectiveness in practice by handling
synthesized problem instances with hundreds of components in less than
a minute. We are currently validating Metis in a production
environment by integrating it in Armonic, an infrastructure for cloud
application deployment in OpenStack cloud systems developed by the
Mandriva company.</p>
          </li>
          <li>
            <p class="notaparagraph"><a name="uid26"> </a><i>SUNNY-CP</i> (<a href="https://github.com/jacopoMauro/sunny-cp">https://github.com/jacopoMauro/sunny-cp</a> )</p>
            <p><a name="uid26"> </a>Within the Constraint Programming (CP) paradigm, a portfolio approach
enables to combine a number of different constraint solvers in order
to create a globally better solver, dubbed a portfolio solver. After
several empirical evaluations (e.g.,
<a href="./bibliography.html#focus-2014-bid1">[22]</a> , <a href="./bibliography.html#focus-2014-bid2">[23]</a> , <a href="./bibliography.html#focus-2014-bid3">[24]</a> ) we have
decided to
develop <i>SUNNY-CP</i>, a portfolio solver for solving both Constraint
Satisfaction Problems and Constraint Optimization Problems. The goal
of <i>SUNNY-CP</i> is to provide a flexible, configurable, and usable CP
portfolio solver that can be set up and executed just like a regular
individual CP solver. To the best of our knowledge, <i>SUNNY-CP</i> is the
only sequential portfolio solver able to solve generic CP problems,
and it was the only portfolio solver that attended the MiniZinc
Challenge 2014 (i.e., the only active international competition to
evaluate the performance of CP solvers). (<i>SUNNY-CP</i>
performed very well, ranking 4th in the competition and receiving an
honourable mention by the challenge organizers.) The
application of <i>SUNNY-CP</i> in the optimization problems defined within the Aeolus
project have lead to time improvements beyond an order of
magnitude. <i>SUNNY-CP</i> is mainly written in Python, and we are currently
enhancing the tool in order to make it more usable, flexible, and
parallel (i.e., able to properly exploit multiple cores).</p>
          </li>
        </ul>
        <p>The sofware below have not undergone substantial modifications during
2014.</p>
        <ul>
          <li>
            <p class="notaparagraph"><a name="uid27"> </a><i>Croll-pi Interpreter</i> (<a href="http://proton.inrialpes.fr/~mlienhar/croll-pi/implem/">http://proton.inrialpes.fr/~mlienhar/croll-pi/implem/</a> ).
Croll-pi is a
concurrent reversible language featuring a rollback operator to undo a
past action (together with all the actions depending on it), and a
compensation mechanism to avoid cycling by redoing the same action again
and again.
We have developed an interpreter for croll-pi using Maude.</p>
          </li>
          <li>
            <p class="notaparagraph"><a name="uid28"> </a><i>IntML</i> is a functional programming language guaranteeing
sublinear space bounds for all programs <a href="./bibliography.html#focus-2014-bid4">[51]</a> .
See the Activity Reports of previous years (in particular 2010) for
more details.</p>
          </li>
          <li>
            <p class="notaparagraph"><a name="uid29"> </a><i>Lideal</i> (<a href="http://lideal.cs.unibo.it/">http://lideal.cs.unibo.it/</a> )
is an experimental tool implementing type inference for dependently linear type systems.
The tool reduces the problem of evaluating the complexity of PCF (i.e.
functional programs with primitive integers and recursive definitions)
to checking a set of first-order inequalities for validity. The latter
can then be handled through SMT solvers or put in a form suitable for
managing them with tools such as CoQ.
See the Activity Reports of previous years (in particular 2010) for
more details.</p>
          </li>
        </ul>
      </div>
      <!--FIN du corps du module-->
      <br/>
      <div class="bottomNavigation">
        <div class="tail_aucentre">
          <a href="./uid15.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="./uid31.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>
