<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE raweb PUBLIC "-//INRIA//DTD" "raweb2.dtd">
<raweb xmlns:html="http://www.w3.org/1999/xhtml" xmlns:xlink="http://www.w3.org/1999/xlink" xml:lang="en" year="2005">
  <identification id="phoenix" isproject="false">
    <shortname>Phoenix</shortname>
    <projectName>Programming Language Technology For Communication Services</projectName>
    <theme>COM</theme>
    <team id="uid1">
      <participants category="Team_Leader">
        <person key="phoenix-2005-id18078">
          <firstname>Charles</firstname>
          <lastname>Consel</lastname>
          <moreinfo>Professor, ENSEIRB</moreinfo>
        </person>
      </participants>
      <participants category="ENSEIRB_personnel">
        <person key="phoenix-2005-id18098">
          <firstname>Laurent</firstname>
          <lastname>Réveillère</lastname>
          <moreinfo>Associate Professor, ENSEIRB</moreinfo>
        </person>
      </participants>
      <participants category="External_collaborator">
        <person key="jacquard-2005-id18435">
          <firstname>Julia</firstname>
          <lastname>Lawall</lastname>
          <moreinfo>Associate Professor at the University of Copenhagen</moreinfo>
        </person>
      </participants>
      <participants category="Ph.D._students">
        <person key="phoenix-2005-id18137">
          <firstname>Laurent</firstname>
          <lastname>Burgy</lastname>
          <moreinfo>From October 1, 2004, regional scholarship</moreinfo>
        </person>
        <person key="phoenix-2005-id18152">
          <firstname>Fabien</firstname>
          <lastname>Latry</lastname>
          <moreinfo>From October 1, 2004, Inria scholarship</moreinfo>
        </person>
        <person key="phoenix-2005-id18166">
          <firstname>Nicolas</firstname>
          <lastname>Palix</lastname>
          <moreinfo>From October 1, 2004, Inria scholarship</moreinfo>
        </person>
        <person key="phoenix-2005-id18180">
          <firstname>Sapan</firstname>
          <lastname>Bhatia</lastname>
          <moreinfo>From January 1, 2003, Inria and regional scholarship</moreinfo>
        </person>
        <person key="phoenix-2005-id18194">
          <firstname>Mathieu</firstname>
          <lastname>Minard</lastname>
          <moreinfo>Thomson Multimedia (industrial Ph.D. student)</moreinfo>
        </person>
        <person key="phoenix-2005-id18208">
          <firstname>Wilfried</firstname>
          <lastname>Jouve</lastname>
          <moreinfo>From October 3, 2005, Phoenix scholarship</moreinfo>
        </person>
        <person key="phoenix-2005-id18222">
          <firstname>Julien</firstname>
          <lastname>Lancia</lastname>
          <moreinfo>From November 14, 2005, Thales (industrial Ph.D. student)</moreinfo>
        </person>
      </participants>
    </team>
    <UR name="Futurs"/>
    <moreinfo>
      <p>The Phoenix group is located in Bordeaux. Phoenix is a joint research group with LaBRI (Laboratoire Bordelais de Recherche en Informatique) – the computer science department at the University of Bordeaux I – CNRS (Centre National de la Recherche Scientifique) – a French national scientific
      research center – and ENSEIRB (Ecole Nationale Supérieure en Electronique, Informatique et Radiocommunications de Bordeaux) – an electronics, computer science, and telecommunications engineering school at Bordeaux. The group is physically located at ENSEIRB.</p>
    </moreinfo>
  </identification>
  <presentation id="uid3">
    <bodyTitle>Overall Objectives</bodyTitle>
    <subsection level="1" id="uid4">
      <bodyTitle>Context</bodyTitle>
      <keyword>Operating systems</keyword>
      <keyword>networking</keyword>
      <keyword>client-server model</keyword>
      <keyword>telephony</keyword>
      <keyword>communication services</keyword>
      <keyword>language design</keyword>
      <keyword>program analysis and transformation</keyword>
      <keyword>specialization</keyword>
      <keyword>compilation</keyword>
      <keyword>domain analysis and engineering</keyword>
      <p>The frantic nature of technological advances in the area of multimedia communications, compounded with the effective convergence between telecommunication and computer networks, is opening up a host of new functionalities, placing service creation as a fundamental vehicle to bring these
      changes to end-users.</p>
      <p>This situation has three main consequences: (1) service creation is increasingly becoming a 
      <i>software intensive area</i>; (2) because communication services are often heavily relied on, intensive service creation must preserve 
      <i>robustness</i>; (3) the growing multimedia nature of communication services imposes 
      <i>high-performance requirements</i>on services and underlying layers.</p>
    </subsection>
    <subsection level="1" id="uid5">
      <bodyTitle>Overview</bodyTitle>
      <keyword>Operating systems</keyword>
      <keyword>networking</keyword>
      <keyword>client-server model</keyword>
      <keyword>telephony</keyword>
      <keyword>communication services</keyword>
      <keyword>language design</keyword>
      <keyword>program analysis and transformation</keyword>
      <keyword>specialization</keyword>
      <keyword>compilation</keyword>
      <keyword>domain analysis and engineering</keyword>
      <p>The phoenix group aims to develop principles, techniques and tools for the development of 
      <i>communication services</i>. To address the requirements of this domain, the scope of our research comprises the key elements underlying communication services: the infrastructure that enables communication to be set up (
      <i>e.g.,</i>signalling platform, transport protocols, and session description); the software architecture underlying services (
      <i>e.g.,</i>the client-server model, programming interfaces, and the notion of service logic); and, communication terminals (
      <i>e.g.,</i>terminal features and embedded systems).</p>
      <p>Our approach covers three key aspects of the area of communication services: (1) definition of new Domain-Specific Languages (DSLs), using programming language technology to enable the specification of robust services; (2) study of the layers underlying communication services to improve
      flexibility and performance; (3) application to concrete areas to validate our approach.</p>
    </subsection>
  </presentation>
  <fondements id="uid6">
    <bodyTitle>Scientific Foundations</bodyTitle>
    <subsection level="1" id="uid7">
      <bodyTitle>Introduction</bodyTitle>
      <p>Our proposed project builds upon results that have been obtained by the Compose research group whose aim was to study new approaches to developing adaptable software components in the domain of systems and networking. In this section, we review the accomplishments of Compose, only
      considering the ones achieved by the current project members, to demonstrate our expertise in the key areas underlying our project, namely</p>
      <simplelist>
        <li id="uid8">
          <p>Programming language technology: language design and implementation, domain-specific languages, program analysis and program transformation.</p>
        </li>
        <li id="uid9">
          <p>Operating Systems and Networking: design, implementation and optimization.</p>
        </li>
        <li id="uid10">
          <p>Software engineering: software architecture, methodologies, techniques and tools.</p>
        </li>
      </simplelist>
      <p>By combining expertise in these areas, the research work of the Compose group contributed to demonstrating the usefulness of adaptation methodologies, such as domain-specific languages, and the effectiveness of adaptation tools, such as program specializers. Our work aimed to show how
      adaptation methodologies and tools can be integrated into the development process of real-size software components. This contribution relied on advances in methodologies to develop adaptable programs, and techniques and tools to adapt these programs to specific usage contexts.</p>
    </subsection>
    <subsection level="1" id="uid11">
      <bodyTitle>Adaptation Methodologies</bodyTitle>
      <p>Although industry has long recognized the need to develop adaptable programs, methodologies to develop them are still at the research stage. We have presented preliminary results in this area with a detailed study of the applicability of program specialization to various software
      architectures 
      <ref xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xlink:href="#bid0" location="biblio" xyref="2812752148019"/>. Our latest contributions in this area span from a revolutionary approach based on the definition of programming
      languages, dedicated to a specific problem family, to a direct exploitation of specialization opportunities generated by a conventional programming methodology.</p>
      <subsection level="2" id="uid12">
        <bodyTitle>Domain-Specific languages</bodyTitle>
        <p>DSLs represent a promising approach to modeling a problem family. Yet, this approach currently suffers from the lack of methodology to design and implement DSLs. To address this basic need, we have introduced the Sprint methodology for DSL development 
        <ref xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xlink:href="#bid1" location="biblio" xyref="2812752148019"/>. This methodology bridges the gap between semantics-based approaches to developing general-purpose languages and
        software engineering. Sprint is a complete software development process starting from the identification of the need for a DSL to its efficient implementation. It uses the denotational framework to formalize the basic components of a DSL. The semantic definition is structured so as to stage
        design decisions and to smoothly integrate implementation concerns.</p>
      </subsection>
      <subsection level="2" id="uid13">
        <bodyTitle>Declaring adaptation</bodyTitle>
        <p>A less drastic strategy to developing efficient adaptable programs consists of making specific issues of adaptation explicit via a declarative approach. To do so, we enrich Java classes with declarations, named 
        <i>adaptation classes</i>, aimed to express adaptive behaviors 
        <ref xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xlink:href="#bid2" location="biblio" xyref="2812752148019"/>. As such, this approach allows the programmer to separate the concerns between the basic features of the
        application and its adaptation aspects. A dedicated compiler automatically generates Java code that implements the adaptive features.</p>
      </subsection>
      <subsection level="2" id="uid14">
        <bodyTitle>Declaring specialization</bodyTitle>
        <p>When developing components, programmers often hesitate to make them highly generic and configurable. Indeed, genericity and configurability systematically introduce overheads in the resulting component. However, the causes of these overheads are usually well-known by the programmers and
        their removal could often be automated, if only they could be declared to guide an optimizing tool. The Compose group has worked towards solving this problem.</p>
        <p>We introduced a declaration language which enables a component developer to express the configurability of a component. The declarations consist of a collection of specialization scenarios that precisely identify what program constructs are of interest for specialization. The scenarios
        of a component do not clutter the component code; they are defined aside in a 
        <i>specialization module</i> 
        <ref xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xlink:href="#bid3" location="biblio" xyref="2812752148019"/>, 
        <ref xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xlink:href="#bid4" location="biblio" xyref="2812752148019"/>, 
        <ref xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xlink:href="#bid5" location="biblio" xyref="2812752148019"/>, 
        <ref xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xlink:href="#bid6" location="biblio" xyref="2812752148019"/>.</p>
        <p>This work was done in the context of C and declarations were intended to drive our C specializer.</p>
      </subsection>
      <subsection level="2" id="uid15">
        <bodyTitle>Specializing design patterns</bodyTitle>
        <p>A natural approach to systematically applying program specialization is to exploit opportunities offered by a programming methodology. We have studied a development methodology for object-oriented languages, called design patterns. Design patterns encapsulate knowledge about the design
        and implementation of highly adaptable software. However, adaptability is obtained at the expense of overheads introduced in the finished program. These overheads can be identified for each design pattern. Our work consisted in using knowledge derived from design patterns to eliminate these
        overheads in a systematic way. To do so, we analyzed the specialization opportunities provided by specific uses of design patterns, and determined how to eliminate these overheads using program specialization. These opportunities were documented in declarations, called specialization
        patterns, and were associated with specific design patterns 
        <ref xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xlink:href="#bid7" location="biblio" xyref="2812752148019"/>. The specialization of a program composed of design patterns was then driven by the corresponding declarations.
        This work was presented in the context of Java and uses our Java specializer 
        <ref xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xlink:href="#bid8" location="biblio" xyref="2812752148019"/>.</p>
      </subsection>
      <subsection level="2" id="uid16">
        <bodyTitle>Specializing software architectures</bodyTitle>
        <p>The source of inefficiency in software architectures can be identified in the data and control integration of components, because flexibility is present not only at the design level but also in the implementation. We proposed the use of program specialization in software engineering as a
        systematic way to improve performance and, in some cases, to reduce program size. We studied several representative, flexible mechanisms found in software architectures: selective broadcast, pattern matching, interpreters, layers and generic libraries. We showed how program specialization
        can systematically be applied to optimize those mechanism 
        <ref xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xlink:href="#bid9" location="biblio" xyref="2812752148019"/>, 
        <ref xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xlink:href="#bid0" location="biblio" xyref="2812752148019"/>.</p>
      </subsection>
    </subsection>
    <subsection level="1" id="uid17">
      <bodyTitle>Adaptation in Systems Software</bodyTitle>
      <subsection level="2" id="uid18">
        <bodyTitle>DSLs in Operating Systems</bodyTitle>
        <p>Integrating our adaptation methodologies and tools into the development process of real-size software systems was achieved by proposing a new development process. Specifically, we proposed a new approach to designing and structuring operating systems (OSes) 
        <ref xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xlink:href="#bid10" location="biblio" xyref="2812752148019"/>. This approach was based on DSLs and enables rapid development of robust OSes. Such approach is critically needed
        in application domain, like appliances, where new products appear at a rapid pace and needs are unpredictable.</p>
      </subsection>
      <subsection level="2" id="uid19">
        <bodyTitle>Devil - a DSL for device drivers</bodyTitle>
        <p>Our approach to developing systems software applied to the domain of device drivers. Indeed, peripheral devices come out at a frantic pace, and the development of drivers is very intricate and error prone. The Compose group developed a DSL, named Devil (DEvice Interface Language), to
        solve these problems; it was dedicated to the basic communication with a device. Devil allowed the programmer to easily map device documentation into a formal device description that can be verified and compiled into executable code.</p>
        <p>From a software engineering viewpoint, Devil captures domain expertise and systematizes re-use because it offers suitable built-in abstractions 
        <ref xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xlink:href="#bid11" location="biblio" xyref="2812752148019"/>. A Devil description formally specifies the access mechanisms, the type and layout of data, as well as behavioral
        properties involved in operating the device. Once compiled, a Devil description implements an interface to an idealized device and abstracts the hardware intricacies.</p>
        <p>From an operating systems viewpoint, Devil can be seen as an 
        <i>interface definition language</i>for hardware functionalities. To validate the approach, Devil was put to practice 
        <ref xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xlink:href="#bid12" location="biblio" xyref="2812752148019"/>: its expressiveness was demonstrated by the wide variety of devices that have been specified in Devil. No loss in
        performance was found for the compiled Devil description compared to an equivalent C code.</p>
        <p>From a dependable system viewpoint, Devil improves safety by enabling descriptions to be statically checked for consistency and generating stubs including additional run-time checks 
        <ref xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xlink:href="#bid13" location="biblio" xyref="2812752148019"/>. Mutation analysis were used to evaluate the improvement in driver robustness offered by Devil. Based on our
        experiments, Devil specifications were found up to 6 times less prone to errors than writing C code.</p>
        <p>Devil was the continuation of a study of graphic display adaptors for a X11 server. We developed a DSL, called GAL (Graphics Adaptor Language), aimed to specify device drivers in this context 
        <ref xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xlink:href="#bid14" location="biblio" xyref="2812752148019"/>. Although covering a very restricted domain, this language was a very successful proof of concept.</p>
      </subsection>
      <subsection level="2" id="uid20">
        <bodyTitle>Plan-P - a DSL for programmable routers</bodyTitle>
        <p>Besides device drivers, the Compose group also explored the area of networking in the context of DSLs. More specifically, we developed a language, named Plan-P, that enables the network to be programmable and thus to offer extensibility 
        <ref xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xlink:href="#bid15" location="biblio" xyref="2812752148019"/>. As such, Plan-P enables protocols to be defined for specific applications. Plan-P extends a language, named
        Plan, developed by the University of Pennsylvania and devoted to network diagnostics. Plan-P enables routers to be programmed in a safe and secure way without any loss in bandwidth. To achieve safety and security, the language is restricted, and programs are downloaded into the routers as
        DSL source code to enable thorough verifications. For efficiency, a light Just-In-Time compiler is generated from the Plan-P interpreter via program specialization. This compiler is installed on routers to compile uploaded Plan-P source code.</p>
      </subsection>
    </subsection>
    <subsection level="1" id="uid21">
      <bodyTitle>Adaptation Tools and Techniques</bodyTitle>
      <p>To further the applicability of our approach, we have strengthened and extended adaptation tools and techniques. We have produced a detailed description of the key program analysis for imperative specialization, namely binding-time analysis 
      <ref xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xlink:href="#bid16" location="biblio" xyref="2812752148019"/>. This analysis is at the heart of our program specializer for C, named Tempo 
      <ref xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xlink:href="#bid16" location="biblio" xyref="2812752148019"/>. We have examined the importance of the accuracy of these analyses to successfully specialize existing programs.
      This study was conducted in the context of systems software 
      <ref xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xlink:href="#bid17" location="biblio" xyref="2812752148019"/>.</p>
      <p>Tempo is the only specializer which enables programs to be specialized both at compile time and run time. Yet, specialization is always performed in one stage. As a consequence, this process cannot be factorized even if specialization values become available at multiple stages. We present
      a realistic and flexible approach to achieving efficient incremental run-time specialization 
      <ref xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xlink:href="#bid18" location="biblio" xyref="2812752148019"/>. Rather than developing new techniques, our strategy for incremental run-time specialization reuses existing
      technology by iterating a specialization process. Our approach has been implemented in Tempo.</p>
      <p>While program specialization encodes the result of early computations into a new program, 
      <i>data specialization</i>encodes the result of early computations into data structures. Although aiming at the same goal, namely processing early computations, these two forms of specialization have always been studied separately. The Compose group has proposed an extension of Tempo to
      perform both program and data specialization 
      <ref xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xlink:href="#bid19" location="biblio" xyref="2812752148019"/>. We showed how these two strategies can be integrated in a single specializer. Most notably, having both strategies
      enabled us to assess their benefits, limitations and their combination on a variety of programs.</p>
      <p>Interpreters and run-time compilers are increasingly used to cope with heterogeneous architectures, evolving programming languages, and dynamically-loaded code. Although solving the same problem, these two strategies are very different. Interpreters are simple to implement but yield poor
      performance. Run-time compilation yields better performance, but is costly to implement. One approach to reconciling these two strategies is to develop interpreters for simplicity but to use specialization to achieve efficiency. Additionally, a specializer like Tempo can remove the
      interpretation overhead at compile time as well as at run time. We have conducted experiments to assess the benefits of applying specialization to interpreters 
      <ref xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xlink:href="#bid20" location="biblio" xyref="2812752148019"/>. These experiments have involved bytecode and structured-language interpreters. Our experimental data showed that
      specialization of structured-language interpreters can yield performance comparable to that of the compiled code of an optimizing compiler.</p>
      <p>Besides targeting C, we developed the first program specializer for an object-oriented language. This specializer, named JSpec, processes Java programs 
      <ref xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xlink:href="#bid8" location="biblio" xyref="2812752148019"/>. JSpec is constructed from existing tools. Java programs are translated into C using our Java compiler, named
      Harissa. Then, the resulting C programs are specialized using Tempo. The specialized C program is executed in the Harissa environment. JSpec has been used for various applications and has shown to produce significant speedups 
      <ref xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xlink:href="#bid21" location="biblio" xyref="2812752148019"/>.</p>
    </subsection>
  </fondements>
  <domaine id="uid22">
    <bodyTitle>Application Domains</bodyTitle>
    <subsection level="1" id="uid23">
      <bodyTitle>Telephony Services</bodyTitle>
      <keyword>telecommunications</keyword>
      <keyword>multimedia</keyword>
      <keyword>adaptation</keyword>
      <keyword>SIP</keyword>
      <p>IP telephony materializes the convergence between telecommunications and computer networks. This convergence is dramatically changing the face of the telecommunications domain moving from proprietary, closed platforms to distributed systems based on network protocols. In particular, a
      telephony platform is based on a client-server model and consists of a 
      <i>signalling server</i>that implements a particular signalling protocol (
      <i>e.g.,</i>the Session Initiation Protocol 
      <ref xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xlink:href="#bid22" location="biblio" xyref="2812752148019"/>). A signalling server is able to perform telephony-related operations that include resources accessible from the
      computer network, such as Web resources, databases...This evolution brings a host of new functionalities to the domain of telecommunications. Such a wide spectrum of functionalities enables Telephony to be customized with respect to preferences, trends and expectations of ever demanding
      users. These customizations critically rely on a proliferation of telephony services. In fact, introducing new telephony services is facilitated by the open nature of signalling servers, as shown by all kinds of servers in distributed systems. However, in the context of telecommunications,
      such evolution should lead service programming to be done by non-expert programmers, as opposed to developers certified by telephony manufacturers. To make this evolution worse, the existing techniques to program server extensions (
      <i>e.g.,</i>Common Gateway Interface 
      <ref xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xlink:href="#bid23" location="biblio" xyref="2812752148019"/>) are rather low level, involves crosscutting expertises (
      <i>e.g.,</i>networking, distributed systems, and operating systems) and requires tedious session management. These shortcomings make the programming of telephony services an error-prone process, jeopardizing the robustness of a platform.</p>
      <p>We are developing a DSL, named SPL (
      <i>Session Processing Language</i>), aimed to ease the development of telephony services without sacrificing robustness.</p>
    </subsection>
    <subsection level="1" id="uid24">
      <bodyTitle>Multimedia Streaming Services</bodyTitle>
      <keyword>telecommunications</keyword>
      <keyword>multimedia</keyword>
      <keyword>adaptation</keyword>
      <keyword>streaming</keyword>
      <p>Mobility and wireless networks pose a major challenge to media delivery: how does one mass-deliver media while at the same time personalizating it to account for diverse needs such as multiple heterogeneous rendering terminals, user requirements, network bandwidth, 
      <i>etc.</i>? Such personalization involves transcoding and transforming multimedia resources along the image chain.</p>
      <p>To do so, various treatments, commonly supported by hardware, are gradually being shifted to software, to face unpredictable needs. On the one hand, this shift helps to keep pace with the rapidly evolving domain of media delivery. On the other hand, it imposes very high-performance
      requirements for treatments that were earlier hardware supported. As a consequence, developing a streaming application often involves low-level programming, critical memory management, and finely tuned scheduling of processing steps.</p>
      <p>To address these problems, we have designed and implemented a DSL, named 
      <i>Spidle</i>, for specifying streaming applications 
      <ref xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xlink:href="#bid24" location="biblio" xyref="2812752148019"/>. Our approach consists in</p>
      <simplelist>
        <li id="uid25">
          <p>Identifying (and possibly modifying) a protocol (
          <i>e.g.,</i>RTSP) for multimedia streaming.</p>
        </li>
        <li id="uid26">
          <p>Making a streaming server, based on the previously identified protocol, programmable using Spidle. This work will permit streaming adaptations to the client needs and preferences.</p>
        </li>
        <li id="uid27">
          <p>Defining realistic adaptation scenarios to validate our approach. This work may lead us to extend Spidle to cope with the target scenarios.</p>
        </li>
        <li id="uid28">
          <p>Assessing our approach by conducting a thorough experimental study.</p>
        </li>
      </simplelist>
    </subsection>
  </domaine>
  <logiciels id="uid29">
    <bodyTitle>Software</bodyTitle>
    <subsection level="1" id="uid30">
      <bodyTitle>Tempo - A Partial Evaluator for C</bodyTitle>
      <participants category="None">
        <person key="phoenix-2005-id18078">
          <firstname>Charles</firstname>
          <lastname>Consel</lastname>
          <moreinfo>correspondent</moreinfo>
        </person>
        <person key="jacquard-2005-id18435">
          <firstname>Julia</firstname>
          <lastname>Lawall</lastname>
        </person>
      </participants>
      <keyword>partial evaluation</keyword>
      <keyword>C language</keyword>
      <keyword>run-time specialization</keyword>
      <p>Tempo is a partial evaluator for C programs. It is an off-line specializer; it is divided into two phases: analysis and specialization.</p>
      <p>The input to the analysis phase consists of a program and a description of which inputs will be known during specialization and which will be unknown. Based on this knowledge, dependency analyses propagate information about known and unknown values throughout the code and produce an
      annotated program, indicating how each program construct should be transformed during specialization. Because C is an imperative language including pointers, the analysis phase performs alias and side-effect analyses in addition to binding-time analyses. The accuracy of these analyses is
      targeted towards keeping track of known values across procedures, data structures, and pointers. Following the analysis phase, the specialization phase generates a specialized program based on the annotated program and the values of the known inputs. Tempo can specialize programs at compile
      time (i.e., source-to-source transformation) as well as run time (i.e., run-time binary code generation).</p>
      <p>The Tempo specializer has been applied in various domains such as operating systems and networking, computer graphics, scientific computation, software engineering and domain specific languages. It has been made publicly available since April 1998. Its documentation is available on line,
      as well as tutorial slides.</p>
    </subsection>
    <subsection level="1" id="uid31">
      <bodyTitle>SPL - A Domain-Specific Language for Robust Session Processing Services</bodyTitle>
      <participants category="None">
        <person key="phoenix-2005-id18078">
          <firstname>Charles</firstname>
          <lastname>Consel</lastname>
        </person>
        <person key="phoenix-2005-id18098">
          <firstname>Laurent</firstname>
          <lastname>Réveillère</lastname>
          <moreinfo>correspondent</moreinfo>
        </person>
        <person key="phoenix-2005-id18137">
          <firstname>Laurent</firstname>
          <lastname>Burgy</lastname>
        </person>
        <person key="phoenix-2005-id18152">
          <firstname>Fabien</firstname>
          <lastname>Latry</lastname>
        </person>
        <person key="phoenix-2005-id18166">
          <firstname>Nicolas</firstname>
          <lastname>Palix</lastname>
        </person>
      </participants>
      <keyword>services</keyword>
      <keyword>telephony</keyword>
      <keyword>adaptation</keyword>
      <keyword>SIP</keyword>
      <keyword>sessions</keyword>
      <p>SPL is a high-level domain-specific language for specifying robust Internet telephony services.</p>
      <p>SPL reconciles programmability and reliability of telephony services, and offers high-level constructs that abstract over intricacies of the underlying protocols and software layers. SPL makes it possible for owners of telephony platforms to deploy third-party services without compromising
      safety and security. This openness is essential to have a community of service developers that addresses such a wide spectrum of new functionalities. The SPL compiler is nearing completion.</p>
    </subsection>
    <subsection level="1" id="uid32">
      <bodyTitle>Stingy - A Domain-Specific Compiler for High-performance Network Servers</bodyTitle>
      <participants category="None">
        <person key="phoenix-2005-id18180">
          <firstname>Sapan</firstname>
          <lastname>Bhatia</lastname>
          <moreinfo>correspondent</moreinfo>
        </person>
        <person key="phoenix-2005-id18078">
          <firstname>Charles</firstname>
          <lastname>Consel</lastname>
        </person>
        <person key="jacquard-2005-id18435">
          <firstname>Julia</firstname>
          <lastname>Lawall</lastname>
        </person>
      </participants>
      <keyword>Cache Optimizations</keyword>
      <keyword>Event-driven Programs</keyword>
      <keyword>Domain-specific optimizations</keyword>
      <p>Event-driven programming has emerged as a standard to implement high-performance servers due to its flexibility and low OS overhead. Still, memory access remains a bottleneck. Generic optimization techniques yield only small improvements in the memory access behavior of event-driven
      servers, as such techniques do not exploit their specific structure and behavior.</p>
      <p>The Stingy compiler implementes an optimization framework dedicated to event-driven servers, based on a strategy to eliminate data-cache misses. Our approach exploits the flexible scheduling and deterministic execution of event-driven servers. It is based on a novel memory manager combined
      with a tailored scheduling strategy to restrict the working data set of the program to a memory region mapped directly into the data cache.</p>
      <p>In practice, the Stingy compiler accepts as input an event-driven server written in C and annotated to expose a specific memory management and scheduling interface. As output, it generates C code for an optimized version of the server. The Stingy compiler has been tested on the following
      servers: The TUX, thttpd, Flash, boa, mathopd. It has also been applied to the Cactus QoS framework and the Squid proxy server. The highest speedup observed under heavy loads is on the TUX server (in the range of 40%). For the remaining servers, gains are in the region of 10-15%.</p>
    </subsection>
  </logiciels>
  <resultats id="uid33">
    <bodyTitle>New Results</bodyTitle>
    <subsection level="1" id="uid34">
      <bodyTitle>A Generative Programming Approach To Developing DSL Compilers</bodyTitle>
      <participants category="None">
        <person key="phoenix-2005-id18078">
          <firstname>Charles</firstname>
          <lastname>Consel</lastname>
        </person>
        <person key="phoenix-2005-id18152">
          <firstname>Fabien</firstname>
          <lastname>Latry</lastname>
        </person>
        <person key="phoenix-2005-id18098">
          <firstname>Laurent</firstname>
          <lastname>Réveillère</lastname>
        </person>
      </participants>
      <p>Domain-Specific Languages (DSLs) represent a proven approach to raising the abstraction level of programming. They offer highlevel constructs and notations dedicated to a domain, structuring program design, easing program writing, masking the intricacies of underlying software layers, and
      guaranteeing critical properties.</p>
      <p>On the one hand, DSLs facilitate a straightforward mapping between a conceptual model and a solution expressed in a specific programming language. On the other hand, DSLs complicate the compilation process because of the gap in the abstraction level between the source and target language.
      The nature of DSLs make their compilation very different from the compilation of common General-Purpose Languages (GPLs). In fact, a DSL compiler generally produces code written in a GPL; low-level compilation is left to the compiler of the target GPL. In essence, a DSL compiler defines some
      mapping of the high-level information and features of a DSL into the target GPL and underlying layers (e.g., middleware, protocols, objects, . . . ).</p>
      <p>This paper presents a methodology to develop DSL compilers, centered around the use of generative programming tools. Our approach enables the development of a DSL compiler to be structured on facets that represent dimensions of compilation. Each facet can then be implemented in a modular
      way, using aspects, annotations and specialization. Because these tools are high level, they match the needs of a DSL, facilitating the development of the DSL compiler, and making it modular and retargetable.</p>
      <p>We illustrate our approach with a DSL for telephony services. The structure of the DSL compiler is presented, as well as practical uses of generative tools for some compilation facets. For more information, see: 
      <ref xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xlink:href="#bid25" location="biblio" xyref="2812752148019"/>.</p>
    </subsection>
    <subsection level="1" id="uid35">
      <bodyTitle>Clearwater: Extensible, Flexible, Modular Code Generation</bodyTitle>
      <participants category="None">
        <person key="phoenix-2005-id18078">
          <firstname>Charles</firstname>
          <lastname>Consel</lastname>
        </person>
      </participants>
      <p>Distributed applications typically interact with a number of heterogeneous and autonomous components that evolve independently. Methodical development of such applications can benefit from approaches based on domain-specific languages (DSLs). However, the evolution and customization of
      heterogeneous components introduces significant challenges to accommodating the syntax and semantics of a DSL in addition to the heterogeneous platforms on which they must run. In this paper, we address the challenge of implementing code generators for two such DSLs that are flexible
      (resilient to changes in generators or input formats), extensible (able to support multiple output targets and multiple input variants), and modular (generated code can be rewritten). Our approach, Clearwater, leverages XML and XSLT standards: XML supports extensibility and mutability for
      inprogress specification formats, and XSLT provides flexibility and extensibility for multiple target languages. Modularity arises from using XML meta-tags in the code generator itself, which supports controlled addition, subtraction, or replacement to the generated code via XML-weaving. We
      discuss the use of our approach and show its advantages in two non-trivial code generators: the Infopipe Stub Generator (ISG) to support distributed flow applications, and the Automated Composable Code Translator to support automated distributed application deployment. As an example, the ISG
      accepts as input an XML description and generates output for C, C++, or Java using a number of communications platforms such as sockets and publish-subscribe. For more information, see: 
      <ref xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xlink:href="#bid26" location="biblio" xyref="2812752148019"/>.</p>
    </subsection>
  </resultats>
  <contrats id="uid36">
    <bodyTitle>Contracts and Grants with Industry</bodyTitle>
    <subsection level="1" id="uid37">
      <bodyTitle>ACI Security COrSS</bodyTitle>
      <participants category="None">
        <person key="phoenix-2005-id18137">
          <firstname>Laurent</firstname>
          <lastname>Burgy</lastname>
        </person>
        <person key="phoenix-2005-id18078">
          <firstname>Charles</firstname>
          <lastname>Consel</lastname>
        </person>
        <person key="phoenix-2005-id18152">
          <firstname>Fabien</firstname>
          <lastname>Latry</lastname>
        </person>
        <person key="phoenix-2005-id18166">
          <firstname>Nicolas</firstname>
          <lastname>Palix</lastname>
        </person>
        <person key="phoenix-2005-id18098">
          <firstname>Laurent</firstname>
          <lastname>Réveillère</lastname>
        </person>
      </participants>
      <p>This project, entitled ``Composition and refinement of Secure Systems'', is a collaboration between groups from the systems and formal methods community.</p>
      <p>The goal is to study methods and tools for the development of secure and safe systems services, with a special emphasis on specification. Our contribution focuses on the development of robust telephony services using DSLs. The collaboration with researchers in formal methods aims to use
      tools (
      <i>e.g.,</i>theorem provers) to formalize and check properties specific to the DSL and the domain of telephony.</p>
    </subsection>
    <subsection level="1" id="uid38">
      <bodyTitle>Ambient Intelligence For The Networked Home Environment (IP6 Amigo)</bodyTitle>
      <participants category="None">
        <person key="phoenix-2005-id18137">
          <firstname>Laurent</firstname>
          <lastname>Burgy</lastname>
        </person>
        <person key="phoenix-2005-id18078">
          <firstname>Charles</firstname>
          <lastname>Consel</lastname>
        </person>
        <person key="phoenix-2005-id18152">
          <firstname>Fabien</firstname>
          <lastname>Latry</lastname>
        </person>
        <person key="phoenix-2005-id18166">
          <firstname>Nicolas</firstname>
          <lastname>Palix</lastname>
        </person>
        <person key="phoenix-2005-id18098">
          <firstname>Laurent</firstname>
          <lastname>Réveillère</lastname>
        </person>
      </participants>
      <p>The Amigo project will focus on the usability of a networked home system by developing open, standardized, interoperable middleware. The developed middleware will guarantee automatic dynamic configuration of the devices and services within this home system by addressing autonomy and
      composability aspects. The second focus of the Amigo project will be on improving the end-user attractiveness of a networked home system by developing interoperable intelligent user services and application prototypes. The Amigo project will further support interoperability between equipment
      and services within the networked home environment by using standard technology when possible and by making the basic middleware (components and infrastructure) and intelligent user services available as open source software together with architectural rules for everyone to use.</p>
      <p>Our work in the Amigo project is based on our DSL paradigm for protocol-based service families, presented in Section. We aim to develop DSLs for service creation. Indeed, the area of networked home systems, targetted by Amigo, relies on protocols for families of services (
      <i>e.g.,</i>SIP, Session Announcement protocol, and Delivery Multimedia Framework). Furthermore, the underlying software architecture in this area relies on a client-server model. This situation should give us an opportunity to further illustrate our approach to making servers
      DSL-programmable.</p>
    </subsection>
    <subsection level="1" id="uid39">
      <bodyTitle>A Platform for the Development of Robust Multimedia Applications in Mobile Terminals – Région Aquitaine</bodyTitle>
      <participants category="None">
        <person key="phoenix-2005-id18137">
          <firstname>Laurent</firstname>
          <lastname>Burgy</lastname>
        </person>
        <person key="phoenix-2005-id18078">
          <firstname>Charles</firstname>
          <lastname>Consel</lastname>
        </person>
        <person key="phoenix-2005-id18152">
          <firstname>Fabien</firstname>
          <lastname>Latry</lastname>
        </person>
        <person key="phoenix-2005-id18166">
          <firstname>Nicolas</firstname>
          <lastname>Palix</lastname>
        </person>
        <person key="phoenix-2005-id18098">
          <firstname>Laurent</firstname>
          <lastname>Réveillère</lastname>
        </person>
      </participants>
      <p>The world of mobile communication terminals (MCT), such as telephones, handheld computers and PCs, has witnessed dazzling advances for the last few years. Most of the effort has been focused on improving the hardware capabilities of the devices rather than the applications offering
      services to the users. However, as wireless technologies (GPRS, UMTS, BlueTooth, WiFI) are increasingly becoming available on these devices, it is critical to offer robust applications that make the best use of the available resources.</p>
      <p>This project aims to develop a platform for the development of robust multimedia services on MCT.</p>
    </subsection>
    <subsection level="1" id="uid40">
      <bodyTitle>Service Oriented Architecture for Embedded Systems – Industrial Fellowship (CIFRE / Thales)</bodyTitle>
      <participants category="None">
        <person key="phoenix-2005-id18078">
          <firstname>Charles</firstname>
          <lastname>Consel</lastname>
        </person>
        <person key="phoenix-2005-id18222">
          <firstname>Julien</firstname>
          <lastname>Lancia</lastname>
        </person>
      </participants>
      <p>The goal of this project is to design and develop a SOA architecture for embedded systems. More especially, it takes into account 3 levels of adaptation: (1) the component level (contracts on resources, performances...), (2) the coupling of components level (dependence, security...), and
      (3) the software architecture level (resource management, robustness...). A contract-based component approach will be considered to describe nonfunctional properties, to define mechanisms for coupling of components, and to define control mechanisms when executing elements of a component. This
      study will be illustrated by a concrete application. The research work should be a step toward solving key problems such as composition of services, security, component adaptation and performance.</p>
    </subsection>
    <subsection level="1" id="uid41">
      <bodyTitle>Capability-based DSLs – Région Aquitaine Fellowship</bodyTitle>
      <participants category="None">
        <person key="phoenix-2005-id18137">
          <firstname>Laurent</firstname>
          <lastname>Burgy</lastname>
        </person>
        <person key="phoenix-2005-id18078">
          <firstname>Charles</firstname>
          <lastname>Consel</lastname>
        </person>
        <person key="phoenix-2005-id18098">
          <firstname>Laurent</firstname>
          <lastname>Réveillère</lastname>
        </person>
      </participants>
      <p>To answer the fundamental need for innovations in terms of services, existing infrastructures have become increasingly open to external developers. Yet, this openness is done at the expense of the robustness. The aim of this project is to integrate approaches dedicated to finely tuning
      access to ressources into programming languages. This study will introduce a unique DSL to program services whose interface to resources is configured with respect to the different roles of programmers and so their capabilities.</p>
    </subsection>
  </contrats>
  <international id="uid42">
    <bodyTitle>Other Grants and Activities</bodyTitle>
    <subsection level="1" id="uid43">
      <bodyTitle>International Collaborations</bodyTitle>
      <p>We have been exchanging visits and publishing articles with the following collaborators.</p>
      <descriptionlist>
        <li id="uid44">
          <p>Julia Lawall, DIKU, University of Copenhagen (Denmark, Copenhagen).</p>
          <p>DSLs, specialization, program analysis.</p>
        </li>
        <li id="uid45">
          <p>Calton Pu, Georgia Institute of Technology (USA, Atlanta).</p>
          <p>DSLs and specialization for operating systems.</p>
        </li>
      </descriptionlist>
    </subsection>
    <subsection level="1" id="uid46">
      <bodyTitle>Visits and Invited Researchers</bodyTitle>
      <p>The Phoenix group has been visited by:</p>
      <simplelist>
        <li id="uid47">
          <p>Julia L. Lawall (DIKU, University of Copenhagen, Denmark), from the 1st of January to the 30th of April;</p>
        </li>
        <li id="uid48">
          <p>Georges Necula (University of Berkeley, USA).</p>
        </li>
      </simplelist>
    </subsection>
  </international>
  <diffusion id="uid49">
    <bodyTitle>Dissemination</bodyTitle>
    <subsection level="1" id="uid50">
      <bodyTitle>Scientific Community Participation</bodyTitle>
      <p>Charles Consel has been involved in the following events as:</p>
      <simplelist>
        <li id="uid51">
          <p>Program committee member of the 
          <i>International Conference on Compiler Construction</i>(CC 2005);</p>
        </li>
        <li id="uid52">
          <p>Program committee member of 
          <i>2ème Journée Francophone sur le Développement de Logiciels Par Aspects</i>(JFDLPA 2005);</p>
        </li>
        <li id="uid53">
          <p>Member of the SPECIF best thesis award;</p>
        </li>
        <li id="uid54">
          <p>Committee member for Francisco Alberti's thesis, May 2005, universite Paris 7;</p>
        </li>
        <li id="uid55">
          <p>Promotion Committee (University of Utah, University of Singapour, Oregon Graduate Institute, GeorgiaTech);</p>
        </li>
        <li id="uid56">
          <p>Member of the IFIP working group on 
          <i>Program Generation</i>.</p>
        </li>
      </simplelist>
      <p>Laurent Réveillère has been involved in the following events as:</p>
      <simplelist>
        <li id="uid57">
          <p>Program committe member of the 
          <i>Fourth French Conference on Operating Systems</i>(CFSE 2005);</p>
        </li>
        <li id="uid58">
          <p>Member of the IFIP working group on 
          <i>Program Generation</i>;</p>
        </li>
        <li id="uid59">
          <p>Secretary of the French chapter of ACM SIGOPS.</p>
        </li>
      </simplelist>
    </subsection>
    <subsection level="1" id="uid60">
      <bodyTitle>Teaching</bodyTitle>
      <p>Charles Consel and Laurent Réveillère have been teaching Master's level courses on:</p>
      <simplelist>
        <li id="uid61">
          <p>Domain-Specific Languages and Program Analysis;</p>
        </li>
        <li id="uid62">
          <p>Telephony over IP (related protocols, the SIP protocol, existing programming interfaces). Students are also offered practical labs on various industrial-strength telephony platforms.</p>
        </li>
      </simplelist>
      <p>Charles Consel and Laurent Réveillère are also teaching other courses on Operating Systems, Web programming and Compilation.</p>
    </subsection>
    <subsection level="1" id="uid63">
      <bodyTitle>Presentations and Invitations</bodyTitle>
      <p>Charles Consel gave a number of invited presentations.</p>
      <simplelist>
        <li id="uid64">
          <p>Invited lecturer at the university of Freiburg, Germany;</p>
        </li>
        <li id="uid65">
          <p>Invited speaker at Georgia Tech (Atlanta, 3 weeks);</p>
        </li>
        <li id="uid66">
          <p>Invited speaker at Fundamental Research in Software Engineering at European Commission.</p>
        </li>
      </simplelist>
      <p>Charles Consel and Laurent Réveillère were lectures at the 
      <i>École des jeunes Chercheurs en Programmation</i>(EJCP 2005).</p>
    </subsection>
    <subsection level="1" id="uid67">
      <bodyTitle>Phoenix in the News</bodyTitle>
      <p>The work of the Phoenix group has been reported in the news.</p>
      <simplelist>
        <li id="uid68">
          <p>L. Burgy, C. Consel, F. Latry, L. Réveillère, and N. Palix. Telephony over IP: Experience and Challenges. 
          <i>ERCIM News</i>, 63:53, October 2005  
          <ref xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xlink:href="#bid27" location="biblio" xyref="2812752148019"/>;</p>
        </li>
        <li id="uid69">
          <p>Publication of a press article in 
          <i>Sud-Ouest</i>"Révolution au bout du fil" by Willy Dallay (Friday, September 23, 2005);</p>
        </li>
        <li id="uid70">
          <p>TV report in 
          <i>France 3 Aquitaine news</i>(Thursday, September 22, 2005);</p>
        </li>
        <li id="uid71">
          <p>Publication of a press article in 
          <i>Le monde Informatique</i>number 1086 - page 28 "Un langage spécifique orienté communication" by J.-L. R. (Friday, October 14, 2005).</p>
        </li>
      </simplelist>
    </subsection>
  </diffusion>
  <biblio id="bibliography" html="bibliography" numero="10" titre="Bibliography">
    <biblStruct rend="refer" n="cite:consel:dagstuhl03-refer" type="inbook" id="bid34">
      <analytic>
        <title level="a">Domain-Specific Program Generation; International Seminar, Dagstuhl Castle</title>
        <author>
          <persName key="phoenix-2005-id18078">
            <foreName>C.</foreName>
            <surname>Consel</surname>
            <initial>C.</initial>
          </persName>
        </author>
      </analytic>
      <monogr>
        <editor role="editor">
          <persName>
            <foreName>C.</foreName>
            <surname>Lengauer</surname>
            <initial>C.</initial>
          </persName>
          <persName>
            <foreName>D.</foreName>
            <surname>Batory</surname>
            <initial>D.</initial>
          </persName>
          <persName key="phoenix-2005-id18078">
            <foreName>C.</foreName>
            <surname>Consel</surname>
            <initial>C.</initial>
          </persName>
          <persName>
            <foreName>M.</foreName>
            <surname>Odersky</surname>
            <initial>M.</initial>
          </persName>
        </editor>
        <title level="s">Lecture Notes in Computer Science, State-of-the-Art Survey</title>
        <imprint>
          <biblScope type="chapter">From A Program Family To A Domain-Specific Language</biblScope>
          <biblScope type="number">3016</biblScope>
          <publisher>
            <orgName>Springer-Verlag</orgName>
          </publisher>
          <dateStruct>
            <year>2004</year>
          </dateStruct>
          <biblScope type="pages">19-29</biblScope>
          <ref xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xlink:href="http://phoenix.labri.fr/publications/papers/dagstuhl-consel.pdf" location="extern" xyref="2468301330008">
          http://phoenix.labri.fr/publications/papers/dagstuhl-consel.pdf</ref>
        </imprint>
      </monogr>
    </biblStruct>
    <biblStruct rend="refer" n="cite:consel-lawall-lemeur:scp04-refer" type="article" id="bid36">
      <analytic>
        <title level="a">A Tour of Tempo: A Program Specializer for the C Language</title>
        <author>
          <persName key="phoenix-2005-id18078">
            <foreName>C.</foreName>
            <surname>Consel</surname>
            <initial>C.</initial>
          </persName>
          <persName key="jacquard-2005-id18435">
            <foreName>J.L.</foreName>
            <surname>Lawall</surname>
            <initial>J.</initial>
          </persName>
          <persName>
            <foreName>A.-F.</foreName>
            <surname>Le Meur</surname>
            <initial>A.-F.</initial>
          </persName>
        </author>
      </analytic>
      <monogr>
        <title level="j">Science of Computer Programming</title>
        <imprint>
          <dateStruct>
            <year>2004</year>
          </dateStruct>
          <ref xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xlink:href="http://phoenix.labri.fr/publications/papers/tour-tempo.ps.gz" location="extern" xyref="3722653064000">
          http://phoenix.labri.fr/publications/papers/tour-tempo.ps.gz</ref>
        </imprint>
      </monogr>
    </biblStruct>
    <biblStruct rend="refer" n="cite:Consel-Marlet:plilp98-refer" type="inproceedings" id="bid28">
      <analytic>
        <title level="a">Architecturing software using a methodology for language development</title>
        <author>
          <persName key="phoenix-2005-id18078">
            <foreName>C.</foreName>
            <surname>Consel</surname>
            <initial>C.</initial>
          </persName>
          <persName>
            <foreName>R.</foreName>
            <surname>Marlet</surname>
            <initial>R.</initial>
          </persName>
        </author>
      </analytic>
      <monogr>
        <editor role="editor">
          <persName>
            <foreName>C.</foreName>
            <surname>Palamidessi</surname>
            <initial>C.</initial>
          </persName>
          <persName>
            <foreName>H.</foreName>
            <surname>Glaser</surname>
            <initial>H.</initial>
          </persName>
          <persName>
            <foreName>K.</foreName>
            <surname>Meinke</surname>
            <initial>K.</initial>
          </persName>
        </editor>
        <title level="m">Proceedings of the 10th International Symposium on Programming Language Implementation and Logic Programming, Pisa, Italy</title>
        <title level="s">Lecture Notes in Computer Science</title>
        <imprint>
          <biblScope type="volume">1490</biblScope>
          <dateStruct>
            <month>September</month>
            <year>1998</year>
          </dateStruct>
          <biblScope type="pages">170–194</biblScope>
          <ref xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xlink:href="http://phoenix.labri.fr/publications/papers/plilp98.ps.gz" location="extern" xyref="608079895029">http://phoenix.labri.fr/publications/papers/plilp98.ps.gz</ref>
        </imprint>
      </monogr>
    </biblStruct>
    <biblStruct rend="refer" n="cite:Consel-Reveillere:ase03-refer" type="inproceedings" id="bid33">
      <analytic>
        <title level="a">A Programmable Client-Server Model: Robust Extensibility via DSLs</title>
        <author>
          <persName key="phoenix-2005-id18078">
            <foreName>C.</foreName>
            <surname>Consel</surname>
            <initial>C.</initial>
          </persName>
          <persName key="phoenix-2005-id18098">
            <foreName>L.</foreName>
            <surname>Réveillère</surname>
            <initial>L.</initial>
          </persName>
        </author>
      </analytic>
      <monogr>
        <title level="m">Proceedings of the 18th IEEE International Conference on Automated Software Engineering (ASE 2003), Montréal, Canada</title>
        <imprint>
          <publisher>
            <orgName>IEEE Computer Society Press</orgName>
          </publisher>
          <dateStruct>
            <month>November</month>
            <year>2003</year>
          </dateStruct>
          <biblScope type="pages">70–79</biblScope>
          <ref xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xlink:href="http://phoenix.labri.fr/publications/papers/Consel-Reveillere_ase03.pdf" location="extern" xyref="3389428788017">
          http://phoenix.labri.fr/publications/papers/Consel-Reveillere_ase03.pdf</ref>
        </imprint>
      </monogr>
    </biblStruct>
    <biblStruct rend="refer" n="cite:consel-reveillere:dagstuhl03-refer" type="inbook" id="bid35">
      <analytic>
        <title level="a">Domain-Specific Program Generation; International Seminar, Dagstuhl Castle</title>
        <author>
          <persName key="phoenix-2005-id18078">
            <foreName>C.</foreName>
            <surname>Consel</surname>
            <initial>C.</initial>
          </persName>
          <persName key="phoenix-2005-id18098">
            <foreName>L.</foreName>
            <surname>Réveillère</surname>
            <initial>L.</initial>
          </persName>
        </author>
      </analytic>
      <monogr>
        <editor role="editor">
          <persName>
            <foreName>C.</foreName>
            <surname>Lengauer</surname>
            <initial>C.</initial>
          </persName>
          <persName>
            <foreName>D.</foreName>
            <surname>Batory</surname>
            <initial>D.</initial>
          </persName>
          <persName key="phoenix-2005-id18078">
            <foreName>C.</foreName>
            <surname>Consel</surname>
            <initial>C.</initial>
          </persName>
          <persName>
            <foreName>M.</foreName>
            <surname>Odersky</surname>
            <initial>M.</initial>
          </persName>
        </editor>
        <title level="s">Lecture Notes in Computer Science, State-of-the-Art Survey</title>
        <imprint>
          <biblScope type="chapter">A DSL Paradigm for Domains of Services: A Study of Communication Services</biblScope>
          <biblScope type="number">3016</biblScope>
          <publisher>
            <orgName>Springer-Verlag</orgName>
          </publisher>
          <dateStruct>
            <year>2004</year>
          </dateStruct>
          <biblScope type="pages">165 – 179</biblScope>
          <ref xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xlink:href="http://phoenix.labri.fr/publications/papers/dagstuhl04_consel_reveillere.pdf" location="extern" xyref="3246227887027">
          http://phoenix.labri.fr/publications/papers/dagstuhl04_consel_reveillere.pdf</ref>
        </imprint>
      </monogr>
    </biblStruct>
    <biblStruct rend="refer" n="cite:lemeur-al:hosc03-refer" type="article" id="bid37">
      <analytic>
        <title level="a">Specialization Scenarios: A Pragmatic Approach to Declaring Program Specialization</title>
        <author>
          <persName>
            <foreName>A.-F.</foreName>
            <surname>Le Meur</surname>
            <initial>A.-F.</initial>
          </persName>
          <persName key="jacquard-2005-id18435">
            <foreName>J.L.</foreName>
            <surname>Lawall</surname>
            <initial>J.</initial>
          </persName>
          <persName key="phoenix-2005-id18078">
            <foreName>C.</foreName>
            <surname>Consel</surname>
            <initial>C.</initial>
          </persName>
        </author>
      </analytic>
      <monogr>
        <title level="j">Higher-Order and Symbolic Computation</title>
        <imprint>
          <biblScope type="volume">17</biblScope>
          <biblScope type="number">1</biblScope>
          <dateStruct>
            <year>2004</year>
          </dateStruct>
          <biblScope type="pages">47–92</biblScope>
          <ref xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xlink:href="http://phoenix.labri.fr/publications/papers/spec-scenarios-hosc2003.ps.gz" location="extern" xyref="3138768100000">
          http://phoenix.labri.fr/publications/papers/spec-scenarios-hosc2003.ps.gz</ref>
        </imprint>
      </monogr>
    </biblStruct>
    <biblStruct rend="refer" n="cite:McNamee-al:tocs2001-refer" type="article" id="bid31">
      <analytic>
        <title level="a">Specialization tools and techniques for systematic optimization of system software</title>
        <author>
          <persName>
            <foreName>D.</foreName>
            <surname>McNamee</surname>
            <initial>D.</initial>
          </persName>
          <persName>
            <foreName>J.</foreName>
            <surname>Walpole</surname>
            <initial>J.</initial>
          </persName>
          <persName>
            <foreName>C.</foreName>
            <surname>Pu</surname>
            <initial>C.</initial>
          </persName>
          <persName>
            <foreName>C.</foreName>
            <surname>Cowan</surname>
            <initial>C.</initial>
          </persName>
          <persName>
            <foreName>C.</foreName>
            <surname>Krasic</surname>
            <initial>C.</initial>
          </persName>
          <persName>
            <foreName>A.</foreName>
            <surname>Goel</surname>
            <initial>A.</initial>
          </persName>
          <persName>
            <foreName>P</foreName>
            <surname>Wagle</surname>
            <initial>P.</initial>
          </persName>
          <persName key="phoenix-2005-id18078">
            <foreName>C.</foreName>
            <surname>Consel</surname>
            <initial>C.</initial>
          </persName>
          <persName>
            <foreName>G.</foreName>
            <surname>Muller</surname>
            <initial>G.</initial>
          </persName>
          <persName>
            <foreName>R.</foreName>
            <surname>Marlet</surname>
            <initial>R.</initial>
          </persName>
        </author>
      </analytic>
      <monogr>
        <title level="j">ACM Transactions on Computer Systems</title>
        <imprint>
          <biblScope type="volume">19</biblScope>
          <biblScope type="number">2</biblScope>
          <dateStruct>
            <month>May</month>
            <year>2001</year>
          </dateStruct>
          <biblScope type="pages">217–251</biblScope>
          <ref xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xlink:href="http://phoenix.labri.fr/publications/papers/tocs01-namee.pdf" location="extern" xyref="2331858856025">
          http://phoenix.labri.fr/publications/papers/tocs01-namee.pdf</ref>
        </imprint>
      </monogr>
    </biblStruct>
    <biblStruct rend="refer" n="cite:Merillon-al:osdi2000-refer" type="inproceedings" id="bid30">
      <analytic>
        <title level="a">Devil: An IDL for Hardware Programming</title>
        <author>
          <persName>
            <foreName>F.</foreName>
            <surname>Mérillon</surname>
            <initial>F.</initial>
          </persName>
          <persName key="phoenix-2005-id18098">
            <foreName>L.</foreName>
            <surname>Réveillère</surname>
            <initial>L.</initial>
          </persName>
          <persName key="phoenix-2005-id18078">
            <foreName>C.</foreName>
            <surname>Consel</surname>
            <initial>C.</initial>
          </persName>
          <persName>
            <foreName>R.</foreName>
            <surname>Marlet</surname>
            <initial>R.</initial>
          </persName>
          <persName>
            <foreName>G.</foreName>
            <surname>Muller</surname>
            <initial>G.</initial>
          </persName>
        </author>
      </analytic>
      <monogr>
        <title level="m">Proceedings of the Fourth Symposium on Operating Systems Design and Implementation, San Diego, California</title>
        <imprint>
          <dateStruct>
            <month>October</month>
            <year>2000</year>
          </dateStruct>
          <biblScope type="pages">17–30</biblScope>
          <ref xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xlink:href="http://phoenix.labri.fr/publications/papers/osdi00-merillon.pdf" location="extern" xyref="4205431146022">
          http://phoenix.labri.fr/publications/papers/osdi00-merillon.pdf</ref>
        </imprint>
      </monogr>
    </biblStruct>
    <biblStruct rend="refer" n="cite:Reveillere-Muller:dsn2001-refer" type="inproceedings" id="bid32">
      <analytic>
        <title level="a">Improving Driver Robustness: an Evaluation of the Devil Approach</title>
        <author>
          <persName key="phoenix-2005-id18098">
            <foreName>L.</foreName>
            <surname>Réveillère</surname>
            <initial>L.</initial>
          </persName>
          <persName>
            <foreName>G.</foreName>
            <surname>Muller</surname>
            <initial>G.</initial>
          </persName>
        </author>
      </analytic>
      <monogr>
        <title level="m">The International Conference on Dependable Systems and Networks, Göteborg, Sweden</title>
        <imprint>
          <publisher>
            <orgName>IEEE Computer Society</orgName>
          </publisher>
          <dateStruct>
            <month>July</month>
            <year>2001</year>
          </dateStruct>
          <biblScope type="pages">131–140</biblScope>
          <ref xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xlink:href="http://phoenix.labri.fr/publications/papers/Reveillere-Muller_dsn2001.pdf" location="extern" xyref="3034815180028">
          http://phoenix.labri.fr/publications/papers/Reveillere-Muller_dsn2001.pdf</ref>
        </imprint>
      </monogr>
    </biblStruct>
    <biblStruct rend="refer" n="cite:Thibault-Consel-Muller:srds98-refer" type="inproceedings" id="bid29">
      <analytic>
        <title level="a">Safe and Efficient Active Network Programming</title>
        <author>
          <persName>
            <foreName>S.</foreName>
            <surname>Thibault</surname>
            <initial>S.</initial>
          </persName>
          <persName key="phoenix-2005-id18078">
            <foreName>C.</foreName>
            <surname>Consel</surname>
            <initial>C.</initial>
          </persName>
          <persName>
            <foreName>G.</foreName>
            <surname>Muller</surname>
            <initial>G.</initial>
          </persName>
        </author>
      </analytic>
      <monogr>
        <title level="m">17th IEEE Symposium on Reliable Distributed Systems, West Lafayette, IN</title>
        <imprint>
          <dateStruct>
            <month>October</month>
            <year>1998</year>
          </dateStruct>
          <biblScope type="pages">135–143</biblScope>
          <ref xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xlink:href="http://phoenix.labri.fr/publications/papers/srds98-thibault.ps.gz" location="extern" xyref="839479478008">
          http://phoenix.labri.fr/publications/papers/srds98-thibault.ps.gz</ref>
        </imprint>
      </monogr>
    </biblStruct>
    <biblStruct titlekey="1696" rend="year" n="cite:consel-al:gpce2005" type="inproceedings" id="bid25">
      <analytic>
        <title level="a">A Generative Programming Approach to Developing DSL Compilers</title>
        <author>
          <persName key="phoenix-2005-id18078">
            <foreName>C.</foreName>
            <surname>Consel</surname>
            <initial>C.</initial>
          </persName>
          <persName key="phoenix-2005-id18152">
            <foreName>F.</foreName>
            <surname>Latry</surname>
            <initial>F.</initial>
          </persName>
          <persName key="phoenix-2005-id18098">
            <foreName>L.</foreName>
            <surname>Réveillère</surname>
            <initial>L.</initial>
          </persName>
          <persName>
            <foreName>P.</foreName>
            <surname>Cointe</surname>
            <initial>P.</initial>
          </persName>
        </author>
      </analytic>
      <monogr>
        <editor role="editor">
          <persName>
            <foreName>R.</foreName>
            <surname>Gluck</surname>
            <initial>R.</initial>
          </persName>
          <persName>
            <foreName>M.</foreName>
            <surname>Lowry</surname>
            <initial>M.</initial>
          </persName>
        </editor>
        <title level="m">Fourth International Conference on Generative Programming and Component Engineering (GPCE), Tallinn, Estonia</title>
        <title level="s">Lecture Notes in Computer Science</title>
        <imprint>
          <biblScope type="volume">3676</biblScope>
          <publisher>
            <orgName>Springer-Verlag</orgName>
          </publisher>
          <dateStruct>
            <month>September</month>
            <year>2005</year>
          </dateStruct>
          <biblScope type="pages">29–46</biblScope>
        </imprint>
      </monogr>
    </biblStruct>
    <biblStruct titlekey="2105" rend="year" n="cite:consel-pu-swint-al:ase2005" type="inproceedings" id="bid26">
      <analytic>
        <title level="a">Clearwater: Extensible, Flexible, Modular Code Generation</title>
        <author>
          <persName>
            <foreName>G.</foreName>
            <surname>Swint</surname>
            <initial>G.</initial>
          </persName>
          <persName>
            <foreName>C.</foreName>
            <surname>Pu</surname>
            <initial>C.</initial>
          </persName>
          <persName>
            <foreName>G.</foreName>
            <surname>Jung</surname>
            <initial>G.</initial>
          </persName>
          <persName>
            <foreName>W.</foreName>
            <surname>Yan</surname>
            <initial>W.</initial>
          </persName>
          <persName>
            <foreName>Y.</foreName>
            <surname>Koh</surname>
            <initial>Y.</initial>
          </persName>
          <persName>
            <foreName>Q.</foreName>
            <surname>Wu</surname>
            <initial>Q.</initial>
          </persName>
          <persName key="phoenix-2005-id18078">
            <foreName>C.</foreName>
            <surname>Consel</surname>
            <initial>C.</initial>
          </persName>
          <persName>
            <foreName>A.</foreName>
            <surname>Sahai</surname>
            <initial>A.</initial>
          </persName>
          <persName>
            <foreName>K.</foreName>
            <surname>Moriyama</surname>
            <initial>K.</initial>
          </persName>
        </author>
      </analytic>
      <monogr>
        <title level="m">Proceedings of the 20th IEEE International Conference on Automated Software Engineering (ASE 2005), Long Beach, CA</title>
        <imprint>
          <publisher>
            <orgName>IEEE Computer Society Press</orgName>
          </publisher>
          <dateStruct>
            <month>October</month>
            <year>2005</year>
          </dateStruct>
        </imprint>
      </monogr>
    </biblStruct>
    <biblStruct titlekey="4015" rend="year" n="cite:burgy-consel-al:ercim05" type="misc" id="bid27">
      <monogr>
        <title level="m">Telephony over IP: Experience and Challenges</title>
        <author>
          <persName key="phoenix-2005-id18137">
            <foreName>L.</foreName>
            <surname>Burgy</surname>
            <initial>L.</initial>
          </persName>
          <persName key="phoenix-2005-id18078">
            <foreName>C.</foreName>
            <surname>Consel</surname>
            <initial>C.</initial>
          </persName>
          <persName key="phoenix-2005-id18152">
            <foreName>F.</foreName>
            <surname>Latry</surname>
            <initial>F.</initial>
          </persName>
          <persName key="phoenix-2005-id18098">
            <foreName>L.</foreName>
            <surname>Réveillère</surname>
            <initial>L.</initial>
          </persName>
          <persName key="phoenix-2005-id18166">
            <foreName>N.</foreName>
            <surname>Palix</surname>
            <initial>N.</initial>
          </persName>
        </author>
        <imprint>
          <biblScope type="volume">63</biblScope>
          <dateStruct>
            <month>October</month>
            <year>2005</year>
          </dateStruct>
          <ref xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xlink:href="http://www.ercim.org/publication/Ercim_News/enw63/" location="extern" xyref="1581036756021">http://www.ercim.org/publication/Ercim_News/enw63/</ref>
        </imprint>
      </monogr>
    </biblStruct>
    <biblStruct rend="foot" n="footcite:Boinot-al:ase2000" type="inproceedings" id="bid2">
      <analytic>
        <title level="a">A Declarative Approach for Designing and Developing Adaptive Components</title>
        <author>
          <persName>
            <foreName>P.</foreName>
            <surname>Boinot</surname>
            <initial>P.</initial>
          </persName>
          <persName>
            <foreName>R.</foreName>
            <surname>Marlet</surname>
            <initial>R.</initial>
          </persName>
          <persName>
            <foreName>J.</foreName>
            <surname>Noyé</surname>
            <initial>J.</initial>
          </persName>
          <persName>
            <foreName>G.</foreName>
            <surname>Muller</surname>
            <initial>G.</initial>
          </persName>
          <persName key="phoenix-2005-id18078">
            <foreName>C.</foreName>
            <surname>Consel</surname>
            <initial>C.</initial>
          </persName>
        </author>
      </analytic>
      <monogr>
        <title level="m">Proceedings of the 15th IEEE International Conference on Automated Software Engineering (ASE 2000), Grenoble, France</title>
        <imprint>
          <publisher>
            <orgName>IEEE Computer Society Press</orgName>
          </publisher>
          <dateStruct>
            <month>September</month>
            <year>2000</year>
          </dateStruct>
          <ref xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xlink:href="http://phoenix.labri.fr/publications/papers/ase00-adaptClass.ps.gz" location="extern" xyref="528721840003">
          http://phoenix.labri.fr/publications/papers/ase00-adaptClass.ps.gz</ref>
        </imprint>
      </monogr>
    </biblStruct>
    <biblStruct rend="foot" n="footcite:cgi-ref" type="misc" id="bid23">
      <monogr>
        <title level="m">CGI: The Common Gateway Interface</title>
        <imprint>
          <ref xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xlink:href="http://cgi-spec.golux.com/ncsa" location="extern" xyref="1219497964024">http://cgi-spec.golux.com/ncsa</ref>
        </imprint>
      </monogr>
    </biblStruct>
    <biblStruct rend="foot" n="footcite:Chirokoff-Consel:hosc99" type="article" id="bid19">
      <analytic>
        <title level="a">Combining Program and Data Specialization</title>
        <author>
          <persName>
            <foreName>S.</foreName>
            <surname>Chirokoff</surname>
            <initial>S.</initial>
          </persName>
          <persName key="phoenix-2005-id18078">
            <foreName>C.</foreName>
            <surname>Consel</surname>
            <initial>C.</initial>
          </persName>
          <persName>
            <foreName>R.</foreName>
            <surname>Marlet</surname>
            <initial>R.</initial>
          </persName>
        </author>
      </analytic>
      <monogr>
        <title level="j">Higher-Order and Symbolic Computation</title>
        <imprint>
          <biblScope type="volume">12</biblScope>
          <biblScope type="number">4</biblScope>
          <dateStruct>
            <month>December</month>
            <year>1999</year>
          </dateStruct>
          <biblScope type="pages">309–335</biblScope>
        </imprint>
      </monogr>
    </biblStruct>
    <biblStruct rend="foot" n="footcite:Consel-al:gpce05" type="inproceedings" id="bid24">
      <analytic>
        <title level="a">A Generative Programming Approach to Developing DSL Compilers</title>
        <author>
          <persName key="phoenix-2005-id18078">
            <foreName>C.</foreName>
            <surname>Consel</surname>
            <initial>C.</initial>
          </persName>
          <persName key="phoenix-2005-id18152">
            <foreName>F.</foreName>
            <surname>Latry</surname>
            <initial>F.</initial>
          </persName>
          <persName key="phoenix-2005-id18098">
            <foreName>L.</foreName>
            <surname>Réveillère</surname>
            <initial>L.</initial>
          </persName>
          <persName>
            <foreName>P.</foreName>
            <surname>Cointe</surname>
            <initial>P.</initial>
          </persName>
        </author>
      </analytic>
      <monogr>
        <editor role="editor">
          <persName>
            <foreName>R.</foreName>
            <surname>Gluck</surname>
            <initial>R.</initial>
          </persName>
          <persName>
            <foreName>M.</foreName>
            <surname>Lowry</surname>
            <initial>M.</initial>
          </persName>
        </editor>
        <title level="m">Fourth International Conference on Generative Programming and Component Engineering (GPCE), Tallinn, Estonia</title>
        <title level="s">Lecture Notes in Computer Science</title>
        <imprint>
          <biblScope type="volume">3676</biblScope>
          <publisher>
            <orgName>Springer-Verlag</orgName>
          </publisher>
          <dateStruct>
            <month>September</month>
            <year>2005</year>
          </dateStruct>
          <biblScope type="pages">29–46</biblScope>
        </imprint>
      </monogr>
    </biblStruct>
    <biblStruct rend="foot" n="footcite:Consel-Lawall-Lemeur:scp04" type="article" id="bid16">
      <analytic>
        <title level="a">A Tour of Tempo: A Program Specializer for the C Language</title>
        <author>
          <persName key="phoenix-2005-id18078">
            <foreName>C.</foreName>
            <surname>Consel</surname>
            <initial>C.</initial>
          </persName>
          <persName key="jacquard-2005-id18435">
            <foreName>J.L.</foreName>
            <surname>Lawall</surname>
            <initial>J.</initial>
          </persName>
          <persName>
            <foreName>A.-F.</foreName>
            <surname>Le Meur</surname>
            <initial>A.-F.</initial>
          </persName>
        </author>
      </analytic>
      <monogr>
        <title level="j">Science of Computer Programming</title>
        <imprint>
          <dateStruct>
            <year>2004</year>
          </dateStruct>
        </imprint>
      </monogr>
    </biblStruct>
    <biblStruct rend="foot" n="footcite:Consel-Marlet:plilp98" type="inproceedings" id="bid1">
      <analytic>
        <title level="a">Architecturing software using a methodology for language development</title>
        <author>
          <persName key="phoenix-2005-id18078">
            <foreName>C.</foreName>
            <surname>Consel</surname>
            <initial>C.</initial>
          </persName>
          <persName>
            <foreName>R.</foreName>
            <surname>Marlet</surname>
            <initial>R.</initial>
          </persName>
        </author>
      </analytic>
      <monogr>
        <editor role="editor">
          <persName>
            <foreName>C.</foreName>
            <surname>Palamidessi</surname>
            <initial>C.</initial>
          </persName>
          <persName>
            <foreName>H.</foreName>
            <surname>Glaser</surname>
            <initial>H.</initial>
          </persName>
          <persName>
            <foreName>K.</foreName>
            <surname>Meinke</surname>
            <initial>K.</initial>
          </persName>
        </editor>
        <title level="m">Proceedings of the 10th International Symposium on Programming Language Implementation and Logic Programming, Pisa, Italy</title>
        <title level="s">Lecture Notes in Computer Science</title>
        <imprint>
          <biblScope type="volume">1490</biblScope>
          <dateStruct>
            <month>September</month>
            <year>1998</year>
          </dateStruct>
          <biblScope type="pages">170–194</biblScope>
        </imprint>
      </monogr>
    </biblStruct>
    <biblStruct rend="foot" n="footcite:sip-rfc" type="misc" id="bid22">
      <monogr>
        <title level="m">Session Initiation Protocol (SIP)</title>
        <note anchored="yes" place="unspecified" type="bnote">Request for Comments 2543</note>
        <imprint>
          <dateStruct>
            <month>March</month>
            <year>2001</year>
          </dateStruct>
        </imprint>
      </monogr>
    </biblStruct>
    <biblStruct rend="foot" n="footcite:Lemeur-al:cd02" type="inproceedings" id="bid5">
      <analytic>
        <title level="a">An Environment for Building Customizable Software Components</title>
        <author>
          <persName>
            <foreName>A.-F.</foreName>
            <surname>Le Meur</surname>
            <initial>A.-F.</initial>
          </persName>
          <persName key="phoenix-2005-id18078">
            <foreName>C.</foreName>
            <surname>Consel</surname>
            <initial>C.</initial>
          </persName>
          <persName>
            <foreName>B.</foreName>
            <surname>Escrig</surname>
            <initial>B.</initial>
          </persName>
        </author>
      </analytic>
      <monogr>
        <title level="m">IFIP/ACM Conference on Component Deployment, Berlin, Germany</title>
        <imprint>
          <dateStruct>
            <month>June</month>
            <year>2002</year>
          </dateStruct>
          <biblScope type="pages">1–14</biblScope>
        </imprint>
      </monogr>
    </biblStruct>
    <biblStruct rend="foot" n="footcite:lemeur-consel:splc-pla2000" type="inproceedings" id="bid3">
      <analytic>
        <title level="a">Generic Software Component Configuration Via Partial Evaluation</title>
        <author>
          <persName>
            <foreName>A.-F.</foreName>
            <surname>Le Meur</surname>
            <initial>A.-F.</initial>
          </persName>
          <persName key="phoenix-2005-id18078">
            <foreName>C.</foreName>
            <surname>Consel</surname>
            <initial>C.</initial>
          </persName>
        </author>
      </analytic>
      <monogr>
        <title level="m">SPLC'2000 Workshop – Product Line Architecture, Denver, Colorado</title>
        <imprint>
          <dateStruct>
            <month>August</month>
            <year>2000</year>
          </dateStruct>
        </imprint>
      </monogr>
    </biblStruct>
    <biblStruct rend="foot" n="footcite:lemeur-al:PEPM02" type="inproceedings" id="bid4">
      <analytic>
        <title level="a">Towards Bridging the Gap Between Programming Languages and Partial Evaluation</title>
        <author>
          <persName>
            <foreName>A.-F.</foreName>
            <surname>Le Meur</surname>
            <initial>A.-F.</initial>
          </persName>
          <persName key="jacquard-2005-id18435">
            <foreName>J.L.</foreName>
            <surname>Lawall</surname>
            <initial>J.</initial>
          </persName>
          <persName key="phoenix-2005-id18078">
            <foreName>C.</foreName>
            <surname>Consel</surname>
            <initial>C.</initial>
          </persName>
        </author>
      </analytic>
      <monogr>
        <title level="m">ACM SIGPLAN Workshop on Partial Evaluation and Semantics-Based Program Manipulation, Portland, OR, USA</title>
        <imprint>
          <publisher>
            <orgName>ACM Press</orgName>
          </publisher>
          <dateStruct>
            <month>January</month>
            <year>2002</year>
          </dateStruct>
          <biblScope type="pages">9–18</biblScope>
          <ref xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xlink:href="http://phoenix.labri.fr/publications/papers/lemeur-pepm02.pdf" location="extern" xyref="1667818222016">
          http://phoenix.labri.fr/publications/papers/lemeur-pepm02.pdf</ref>
        </imprint>
      </monogr>
    </biblStruct>
    <biblStruct rend="foot" n="footcite:lemeur-al:hosc03" type="article" id="bid6">
      <analytic>
        <title level="a">Specialization Scenarios: A Pragmatic Approach to Declaring Program Specialization</title>
        <author>
          <persName>
            <foreName>A.-F.</foreName>
            <surname>Le Meur</surname>
            <initial>A.-F.</initial>
          </persName>
          <persName key="jacquard-2005-id18435">
            <foreName>J.L.</foreName>
            <surname>Lawall</surname>
            <initial>J.</initial>
          </persName>
          <persName key="phoenix-2005-id18078">
            <foreName>C.</foreName>
            <surname>Consel</surname>
            <initial>C.</initial>
          </persName>
        </author>
      </analytic>
      <monogr>
        <title level="j">Higher-Order and Symbolic Computation</title>
        <imprint>
          <biblScope type="volume">17</biblScope>
          <biblScope type="number">1</biblScope>
          <dateStruct>
            <year>2004</year>
          </dateStruct>
          <biblScope type="pages">47–92</biblScope>
        </imprint>
      </monogr>
    </biblStruct>
    <biblStruct rend="foot" n="footcite:Marlet-Consel-Boinot:pldi99" type="inproceedings" id="bid18">
      <analytic>
        <title level="a">Efficient Incremental Run-Time Specialization for Free</title>
        <author>
          <persName>
            <foreName>R.</foreName>
            <surname>Marlet</surname>
            <initial>R.</initial>
          </persName>
          <persName key="phoenix-2005-id18078">
            <foreName>C.</foreName>
            <surname>Consel</surname>
            <initial>C.</initial>
          </persName>
          <persName>
            <foreName>P.</foreName>
            <surname>Boinot</surname>
            <initial>P.</initial>
          </persName>
        </author>
      </analytic>
      <monogr>
        <title level="m">Proceedings of the ACM SIGPLAN'99 Conference on Programming Language Design and Implementation (PLDI'99), Atlanta, GA, USA</title>
        <imprint>
          <dateStruct>
            <month>May</month>
            <year>1999</year>
          </dateStruct>
          <biblScope type="pages">281–292</biblScope>
        </imprint>
      </monogr>
    </biblStruct>
    <biblStruct rend="foot" n="footcite:Marlet-Thibault-Consel:ase97" type="inproceedings" id="bid9">
      <analytic>
        <title level="a">Mapping Software Architectures to Efficient Implementations via Partial Evaluation</title>
        <author>
          <persName>
            <foreName>R.</foreName>
            <surname>Marlet</surname>
            <initial>R.</initial>
          </persName>
          <persName>
            <foreName>S.</foreName>
            <surname>Thibault</surname>
            <initial>S.</initial>
          </persName>
          <persName key="phoenix-2005-id18078">
            <foreName>C.</foreName>
            <surname>Consel</surname>
            <initial>C.</initial>
          </persName>
        </author>
      </analytic>
      <monogr>
        <title level="m">Conference on Automated Software Engineering, Lake Tahoe, NV, USA</title>
        <imprint>
          <publisher>
            <orgName>IEEE Computer Society</orgName>
          </publisher>
          <dateStruct>
            <month>November</month>
            <year>1997</year>
          </dateStruct>
          <biblScope type="pages">183–192</biblScope>
        </imprint>
      </monogr>
    </biblStruct>
    <biblStruct rend="foot" n="footcite:Marlet-Thibault-Consel:jase99" type="article" id="bid0">
      <analytic>
        <title level="a">Efficient Implementations of Software Architectures via Partial Evaluation</title>
        <author>
          <persName>
            <foreName>R.</foreName>
            <surname>Marlet</surname>
            <initial>R.</initial>
          </persName>
          <persName>
            <foreName>S.</foreName>
            <surname>Thibault</surname>
            <initial>S.</initial>
          </persName>
          <persName key="phoenix-2005-id18078">
            <foreName>C.</foreName>
            <surname>Consel</surname>
            <initial>C.</initial>
          </persName>
        </author>
      </analytic>
      <monogr>
        <title level="j">Journal of Automated Software Engineering</title>
        <imprint>
          <biblScope type="volume">6</biblScope>
          <biblScope type="number">4</biblScope>
          <dateStruct>
            <month>October</month>
            <year>1999</year>
          </dateStruct>
          <biblScope type="pages">411–440</biblScope>
        </imprint>
      </monogr>
    </biblStruct>
    <biblStruct rend="foot" n="footcite:McNamee-al:tocs2001" type="article" id="bid17">
      <analytic>
        <title level="a">Specialization tools and techniques for systematic optimization of system software</title>
        <author>
          <persName>
            <foreName>D.</foreName>
            <surname>McNamee</surname>
            <initial>D.</initial>
          </persName>
          <persName>
            <foreName>J.</foreName>
            <surname>Walpole</surname>
            <initial>J.</initial>
          </persName>
          <persName>
            <foreName>C.</foreName>
            <surname>Pu</surname>
            <initial>C.</initial>
          </persName>
          <persName>
            <foreName>C.</foreName>
            <surname>Cowan</surname>
            <initial>C.</initial>
          </persName>
          <persName>
            <foreName>C.</foreName>
            <surname>Krasic</surname>
            <initial>C.</initial>
          </persName>
          <persName>
            <foreName>A.</foreName>
            <surname>Goel</surname>
            <initial>A.</initial>
          </persName>
          <persName>
            <foreName>P</foreName>
            <surname>Wagle</surname>
            <initial>P.</initial>
          </persName>
          <persName key="phoenix-2005-id18078">
            <foreName>C.</foreName>
            <surname>Consel</surname>
            <initial>C.</initial>
          </persName>
          <persName>
            <foreName>G.</foreName>
            <surname>Muller</surname>
            <initial>G.</initial>
          </persName>
          <persName>
            <foreName>R.</foreName>
            <surname>Marlet</surname>
            <initial>R.</initial>
          </persName>
        </author>
      </analytic>
      <monogr>
        <title level="j">ACM Transactions on Computer Systems</title>
        <imprint>
          <biblScope type="volume">19</biblScope>
          <biblScope type="number">2</biblScope>
          <dateStruct>
            <month>May</month>
            <year>2001</year>
          </dateStruct>
          <biblScope type="pages">217–251</biblScope>
        </imprint>
      </monogr>
    </biblStruct>
    <biblStruct rend="foot" n="footcite:Muller-al:sigops2000" type="inproceedings" id="bid10">
      <analytic>
        <title level="a">Towards Robust OSes for Appliances: A New Approach Based on Domain-Specific Languages</title>
        <author>
          <persName>
            <foreName>G.</foreName>
            <surname>Muller</surname>
            <initial>G.</initial>
          </persName>
          <persName key="phoenix-2005-id18078">
            <foreName>C.</foreName>
            <surname>Consel</surname>
            <initial>C.</initial>
          </persName>
          <persName>
            <foreName>R.</foreName>
            <surname>Marlet</surname>
            <initial>R.</initial>
          </persName>
          <persName>
            <foreName>L.P.</foreName>
            <surname>Barreto</surname>
            <initial>L.</initial>
          </persName>
          <persName>
            <foreName>F.</foreName>
            <surname>Mérillon</surname>
            <initial>F.</initial>
          </persName>
          <persName key="phoenix-2005-id18098">
            <foreName>L.</foreName>
            <surname>Réveillère</surname>
            <initial>L.</initial>
          </persName>
        </author>
      </analytic>
      <monogr>
        <title level="m">Proceedings of the ACM SIGOPS European Workshop 2000 (EW2000), Kolding, Denmark</title>
        <imprint>
          <dateStruct>
            <month>September</month>
            <year>2000</year>
          </dateStruct>
        </imprint>
      </monogr>
    </biblStruct>
    <biblStruct rend="foot" n="footcite:Merillon-al:osdi2000" type="inproceedings" id="bid12">
      <analytic>
        <title level="a">Devil: An IDL for Hardware Programming</title>
        <author>
          <persName>
            <foreName>F.</foreName>
            <surname>Mérillon</surname>
            <initial>F.</initial>
          </persName>
          <persName key="phoenix-2005-id18098">
            <foreName>L.</foreName>
            <surname>Réveillère</surname>
            <initial>L.</initial>
          </persName>
          <persName key="phoenix-2005-id18078">
            <foreName>C.</foreName>
            <surname>Consel</surname>
            <initial>C.</initial>
          </persName>
          <persName>
            <foreName>R.</foreName>
            <surname>Marlet</surname>
            <initial>R.</initial>
          </persName>
          <persName>
            <foreName>G.</foreName>
            <surname>Muller</surname>
            <initial>G.</initial>
          </persName>
        </author>
      </analytic>
      <monogr>
        <title level="m">4th Symposium on Operating Systems Design and Implementation (OSDI 2000), San Diego, California</title>
        <imprint>
          <dateStruct>
            <month>October</month>
            <year>2000</year>
          </dateStruct>
          <biblScope type="pages">17–30</biblScope>
        </imprint>
      </monogr>
    </biblStruct>
    <biblStruct rend="foot" n="footcite:Reveillere-al:ase2000" type="inproceedings" id="bid11">
      <analytic>
        <title level="a">A DSL Approach to Improve Productivity and Safety in Device Drivers Development</title>
        <author>
          <persName key="phoenix-2005-id18098">
            <foreName>L.</foreName>
            <surname>Réveillère</surname>
            <initial>L.</initial>
          </persName>
          <persName>
            <foreName>F.</foreName>
            <surname>Mérillon</surname>
            <initial>F.</initial>
          </persName>
          <persName key="phoenix-2005-id18078">
            <foreName>C.</foreName>
            <surname>Consel</surname>
            <initial>C.</initial>
          </persName>
          <persName>
            <foreName>R.</foreName>
            <surname>Marlet</surname>
            <initial>R.</initial>
          </persName>
          <persName>
            <foreName>G.</foreName>
            <surname>Muller</surname>
            <initial>G.</initial>
          </persName>
        </author>
      </analytic>
      <monogr>
        <title level="m">Proceedings of the 15th IEEE International Conference on Automated Software Engineering (ASE 2000), Grenoble, France</title>
        <imprint>
          <publisher>
            <orgName>IEEE Computer Society Press</orgName>
          </publisher>
          <dateStruct>
            <month>September</month>
            <year>2000</year>
          </dateStruct>
          <biblScope type="pages">101–109</biblScope>
        </imprint>
      </monogr>
    </biblStruct>
    <biblStruct rend="foot" n="footcite:Reveillere-Muller:dsn2001" type="inproceedings" id="bid13">
      <analytic>
        <title level="a">Improving Driver Robustness: an Evaluation of the Devil Approach</title>
        <author>
          <persName key="phoenix-2005-id18098">
            <foreName>L.</foreName>
            <surname>Réveillère</surname>
            <initial>L.</initial>
          </persName>
          <persName>
            <foreName>G.</foreName>
            <surname>Muller</surname>
            <initial>G.</initial>
          </persName>
        </author>
      </analytic>
      <monogr>
        <title level="m">The International Conference on Dependable Systems and Networks, Göteborg, Sweden</title>
        <imprint>
          <publisher>
            <orgName>IEEE Computer Society</orgName>
          </publisher>
          <dateStruct>
            <month>July</month>
            <year>2001</year>
          </dateStruct>
          <biblScope type="pages">131–140</biblScope>
        </imprint>
      </monogr>
    </biblStruct>
    <biblStruct rend="foot" n="footcite:Schultz-al:ecoop99" type="inproceedings" id="bid8">
      <analytic>
        <title level="a">Towards Automatic Specialization of Java Programs</title>
        <author>
          <persName>
            <foreName>U.P.</foreName>
            <surname>Schultz</surname>
            <initial>U.</initial>
          </persName>
          <persName key="jacquard-2005-id18435">
            <foreName>J.L.</foreName>
            <surname>Lawall</surname>
            <initial>J.</initial>
          </persName>
          <persName key="phoenix-2005-id18078">
            <foreName>C.</foreName>
            <surname>Consel</surname>
            <initial>C.</initial>
          </persName>
          <persName>
            <foreName>G.</foreName>
            <surname>Muller</surname>
            <initial>G.</initial>
          </persName>
        </author>
      </analytic>
      <monogr>
        <title level="m">Proceedings of the European Conference on Object-oriented Programming (ECOOP'99), Lisbon, Portugal</title>
        <title level="s">Lecture Notes in Computer Science</title>
        <imprint>
          <biblScope type="volume">1628</biblScope>
          <dateStruct>
            <month>June</month>
            <year>1999</year>
          </dateStruct>
          <biblScope type="pages">367–390</biblScope>
        </imprint>
      </monogr>
    </biblStruct>
    <biblStruct rend="foot" n="footcite:Schultz-al:ase2000" type="inproceedings" id="bid7">
      <analytic>
        <title level="a">Specialization Patterns</title>
        <author>
          <persName>
            <foreName>U.P.</foreName>
            <surname>Schultz</surname>
            <initial>U.</initial>
          </persName>
          <persName key="jacquard-2005-id18435">
            <foreName>J.L.</foreName>
            <surname>Lawall</surname>
            <initial>J.</initial>
          </persName>
          <persName key="phoenix-2005-id18078">
            <foreName>C.</foreName>
            <surname>Consel</surname>
            <initial>C.</initial>
          </persName>
        </author>
      </analytic>
      <monogr>
        <title level="m">Proceedings of the 15th IEEE International Conference on Automated Software Engineering (ASE 2000), Grenoble, France</title>
        <imprint>
          <publisher>
            <orgName>IEEE Computer Society Press</orgName>
          </publisher>
          <dateStruct>
            <month>September</month>
            <year>2000</year>
          </dateStruct>
          <biblScope type="pages">197–208</biblScope>
        </imprint>
      </monogr>
    </biblStruct>
    <biblStruct rend="foot" n="footcite:Schultz-al:toplas03" type="article" id="bid21">
      <analytic>
        <title level="a">Automatic Program Specialization for Java</title>
        <author>
          <persName>
            <foreName>U.P.</foreName>
            <surname>Schultz</surname>
            <initial>U.</initial>
          </persName>
          <persName key="jacquard-2005-id18435">
            <foreName>J.L.</foreName>
            <surname>Lawall</surname>
            <initial>J.</initial>
          </persName>
          <persName key="phoenix-2005-id18078">
            <foreName>C.</foreName>
            <surname>Consel</surname>
            <initial>C.</initial>
          </persName>
        </author>
      </analytic>
      <monogr>
        <title level="j">ACM Transactions on Programming Languages and Systems</title>
        <imprint>
          <biblScope type="volume">25</biblScope>
          <biblScope type="number">4</biblScope>
          <dateStruct>
            <year>2003</year>
          </dateStruct>
          <biblScope type="pages">452–499</biblScope>
        </imprint>
      </monogr>
    </biblStruct>
    <biblStruct rend="foot" n="footcite:Thibault-al:hosc2000" type="article" id="bid20">
      <analytic>
        <title level="a">Static and Dynamic Program Compilation by Interpreter Specialization</title>
        <author>
          <persName>
            <foreName>S.</foreName>
            <surname>Thibault</surname>
            <initial>S.</initial>
          </persName>
          <persName key="phoenix-2005-id18078">
            <foreName>C.</foreName>
            <surname>Consel</surname>
            <initial>C.</initial>
          </persName>
          <persName key="jacquard-2005-id18435">
            <foreName>J.</foreName>
            <surname>Lawall</surname>
            <initial>J.</initial>
          </persName>
          <persName>
            <foreName>R.</foreName>
            <surname>Marlet</surname>
            <initial>R.</initial>
          </persName>
          <persName>
            <foreName>G.</foreName>
            <surname>Muller</surname>
            <initial>G.</initial>
          </persName>
        </author>
      </analytic>
      <monogr>
        <title level="j">Higher-Order and Symbolic Computation</title>
        <imprint>
          <biblScope type="volume">13</biblScope>
          <biblScope type="number">3</biblScope>
          <dateStruct>
            <month>September</month>
            <year>2000</year>
          </dateStruct>
          <biblScope type="pages">161–178</biblScope>
        </imprint>
      </monogr>
    </biblStruct>
    <biblStruct rend="foot" n="footcite:Thibault-Consel-Muller:srds98" type="inproceedings" id="bid15">
      <analytic>
        <title level="a">Safe and Efficient Active Network Programming</title>
        <author>
          <persName>
            <foreName>S.</foreName>
            <surname>Thibault</surname>
            <initial>S.</initial>
          </persName>
          <persName key="phoenix-2005-id18078">
            <foreName>C.</foreName>
            <surname>Consel</surname>
            <initial>C.</initial>
          </persName>
          <persName>
            <foreName>G.</foreName>
            <surname>Muller</surname>
            <initial>G.</initial>
          </persName>
        </author>
      </analytic>
      <monogr>
        <title level="m">17th IEEE Symposium on Reliable Distributed Systems, West Lafayette, IN</title>
        <imprint>
          <dateStruct>
            <month>October</month>
            <year>1998</year>
          </dateStruct>
          <biblScope type="pages">135–143</biblScope>
        </imprint>
      </monogr>
    </biblStruct>
    <biblStruct rend="foot" n="footcite:Thibault-Marlet-Consel:tse99" type="article" id="bid14">
      <analytic>
        <title level="a">Domain-Specific Languages: from Design to Implementation – Application to Video Device Drivers Generation</title>
        <author>
          <persName>
            <foreName>S.</foreName>
            <surname>Thibault</surname>
            <initial>S.</initial>
          </persName>
          <persName>
            <foreName>R.</foreName>
            <surname>Marlet</surname>
            <initial>R.</initial>
          </persName>
          <persName key="phoenix-2005-id18078">
            <foreName>C.</foreName>
            <surname>Consel</surname>
            <initial>C.</initial>
          </persName>
        </author>
      </analytic>
      <monogr>
        <title level="j">IEEE Transactions on Software Engineering</title>
        <imprint>
          <biblScope type="volume">25</biblScope>
          <biblScope type="number">3</biblScope>
          <dateStruct>
            <month>May</month>
            <year>1999</year>
          </dateStruct>
          <biblScope type="pages">363–377</biblScope>
        </imprint>
      </monogr>
    </biblStruct>
  </biblio>
</raweb>
