Frédéric Loiret

Lionel Seinturier

Laurence Duchien

David Servat
email: david.servat@cea.fr

A Three-Tier Approach for Composition of Real-Time Embedded Software Stacks

Keywords:

Many component models and frameworks have been proposed to abstract and capture concerns from Real-Time and Embedded application domains, based on high-level component-based approaches. However, these approaches tend to propose their own fixed-set abstractions and ad-hoc runtime platforms, whereas the current trend emphasizes more flexible solutions, as embedded systems must constantly integrate new functionalities, while preserving performance. In this paper, we present a two-fold contribution addressing this statement. First, we propose to express these concerns in a decoupled way from the commonly accepted structural abstractions inherent to CBSE, and provide a framework to implement them in open and extensible runtime containers. Second, we propose a three-tier approach to composition where application, containers and the underlying operating system are designed using components. Supporting a homogeneous design space allows applying optimization techniques at these three abstraction layers showing that our approach does not impact on performance. In this paper, we focus our evaluation on concerns specific to the field of real-time audio and music applications.

Introduction

Component-Based Software Engineering is nowadays applied for a wide range of application domains, from IT systems using mainstream component technologies such as EJB or CCM to real-time and embedded (RTE) systems. Beyond the well-established advantages in terms of packaging and composability of independently-implemented software modules, CBSE promotes flexible design approaches, relying on separation of concerns embodied by the software's architecture. Moreover, the capability to specialize the architecture with relevant abstractions and non-functional concerns of an application domain, conduct the definition of Domain-Specific Component Frameworks (DSCF). Thereby, DSCF offers a domain-specific component model and a tool-support allowing these non-functional concerns to be deployed in the runtime platform composed of a set of custom made containers. It is especially the case for RTE Component Frameworks relieving the developer from dealing with redundant and error-prone tasks such as creating threads, managing synchronization or activation of the components with temporal constraints, or performing inter-task communications (ITC).

Problem statement. Many RTE Component Frameworks have been proposed to address these non-functional concerns [START_REF] Feiler | An overview of the SAE Architecture & Design Language (AADL) Standart : A Basis for Model-Based Architecture-Driven Embedded Systems Engineering[END_REF][START_REF] Hansson | SaveCCM -A Component Model for Safety-Critical Real-Time Systems[END_REF][START_REF] Van Ommering | The Koala Component Model for Consumer Electronics Software[END_REF]. However, these propositions tend to provide their own abstractions, fixed set of execution and communication models, and their own ad-hoc runtime platforms. We believe that proposing more flexible solutions is a key issue to consider in order to improve reuse and integration of legacy solutions. Indeed, i) components can be independently deployed in heterogeneous execution contexts depending on embedded or temporal requirements. ii) Runtime platforms must be adapted according to new non-functional concerns as embedded systems must constantly integrate new functionalities. However, RTE constraints are tightly dependent on the runtime platform and on the underlying operating system since these layers must not induce a significant overhead concerning critical metrics of the domain, such as memory footprint, real-time responsiveness and execution time. The respect of these constraints is thus a prerequisite for introducing flexibility in embedded software stacks.

Contributions. To address these challenges, the contribution of this paper relies on two parts which are integrated into a full-fledged framework. First, we propose the use of a generic component-based framework extensible towards various domain-specific concerns [START_REF] Loiret | Constructing Domain-Specific Component Frameworks through Architecture Refinement[END_REF]. These concerns are specified by the developer in a flexible way via the use of annotations specializing the architectural artefacts (components, interfaces, bindings), according to the execution contexts required by the application. Our framework relies on an approach for generation and composition of component-based containers implementing the runtime platform which fits the application's requirements. Second, we exploit a component-based implementation of a real-time operating system presented in [START_REF] Loiret | Component-Based Real-Time Operating System for Embedded Applications[END_REF] providing the low-level services required by the containers. As a result, we present in this paper a three-tier approach where an embedded software stack made of componentbased application, containers and operating system is composed using a homogeneous component model. A homogeneous support of the component paradigm is the key point of our contribution to support flexibility into the software stack at these three abstraction levels. Moreover, i) by composition, only the services strictly required by the whole system are deployed in the final executable to fulfill the embedded constraints. ii) Our approach relies on optimization techniques which are applied uniformly at these three abstraction layers reducing at a negligible level its impact on the performances. In this paper, we apply this approach to the design of real-time audio applications.

Outline. The paper is structured as follows: The two building blocks on which our contribution relies are presented in Section 2, and a general overview of our approach is outlined in Section 3. Section 4 presents our contribution to designing component-based applications dedicated to real-time audio concerns. The composition process involved to implement these concerns are detailed in Section 5 and evaluated in Section 6. Finally, we discuss related work in Section 7 before concluding and drawing future directions of our research in Section 8.

Background

In this section, we present two building blocks on which the contributions of this paper rely.

Hulotte Component-Based Framework

Hulotte [START_REF] Loiret | Constructing Domain-Specific Component Frameworks through Architecture Refinement[END_REF] defines a component metamodel introduced in Figure 1. This metamodel is based on general CBSE principles [START_REF] Szyperski | Component Software: Beyond Object-Oriented Programming[END_REF], and is inspired by the reflective Fractal component model [START_REF] Bruneton | The Fractal Component Model and its Support in Java: Experiences with Auto-adaptive and Reconfigurable Systems[END_REF]. In particular, Hulotte identifies as core We distinguish two roles involved in the Hulotte development process: the application developer and the platform developer. The application developer is responsible for the development of applicative components and the specification of their domain-specific requirements. She/he uses the Hulotte metamodel concepts, depicted in Figure 1, to design the component-based application, which is afterwards annotated by Domain-Specific Annotations. These annotations mark the Hulotte Architectural Artefacts like Java 5 annotations mark the Abstract Syntax Tree (AST) of a Java program. Hulotte annotations isolate and specify the concerns relevant to a targeted application domain, so-called domain-specific concerns. Within our approach, it should be noticed that components are used as pure business units, and a component-based architecture then implements the whole business logic of the application. Therefore, annotations are used to specify the domain-specific semantics over the architecture. For instance, in order to address the multitask applications domain, an annotation can be used on a component to qualify under which execution model its business interfaces should be invoked, e.g. periodically or sporadically. As a second example, on a composite component, an annotation can qualify the boundary of a memory scope in which its subcomponents will be allocated. Finally, an annotation can also be used on a binding to specialize the communication models and protocols (e.g., asynchronous, shared memory, CORBA, SOAP) between the components it binds.

The role of the platform developer is to design the runtime platform implementing the domain-specific requirements specified by the application developer. Hulotte relies on a reflective architecture where each applicative component is hosted by a container, which is itself implemented as a component-based architecture. Throughout this paper, we will refer to "platform components" encapsulated within the containers. Therefore, a container is also implemented using the architectural concepts presented in Figure 1.

Real-Time Operating System Componentization

In [START_REF] Loiret | Component-Based Real-Time Operating System for Embedded Applications[END_REF], we have conducted a component-based reengineering of µC/OS-II [START_REF]MicroC/OS-II: The Real-Time Kernel[END_REF], a preemptive, real-time multitasking kernel for microprocessors and microcontrollers. It is implemented in ANSI C and certified by the FAA3 software intended to be deployed in avionics equipment. It has been massively used in many embedded and safety critical systems products worldwide. µC/OS provides the basic services of a Real-Time Operating System (RTOS): Task and Time management, Inter-Process Communications (mailbox, queues, semaphore, mutex), and Interrupts management. The execution time for most of these services is both constant and deterministic. µC/OS is implemented as a monolithic kernel, i.e. it is built from a number of functions that share common global variables and data types (such as task control block, event control block, etc). The reengineering presented in [START_REF] Loiret | Component-Based Real-Time Operating System for Embedded Applications[END_REF] consists of a library of ready-to-use RTOS configurations, implemented by a set of composite components, providing their services to the application. We showed that overheads involved by our component-based design in term of performance were negligible compared to the original monolithic implementation of the kernel.

General Overview of the Approach & Case Study

This section presents a general overview of our three-tier approach for composition of a real-time embedded software stack, presents the application domain and the case study on which it is applied in this paper.

General Overview

The software stack is sketched in Figure 2. At the higher abstraction level, the application developer specifies the architecture of the application as a set of components annotated by domain-specific annotations. In the context of this paper, annotations are used for designing real-time audio applications and will be presented in Section 4. As a first stage of composition (Fig. 2(1)), these components are composed within component-based containers implementing the semantics of the domain-specific annotations in a transparent manner for the application developer. The implementation of containers by the platform developer and the composition rules between applicative and platform components are integral parts of the Hulotte framework and will be detailed in Section 5. Containers implement non-functional services required by the applicative components, control them, mediate their interactions with other applicative components and with the operating system. Therefore, as a second stage of composition (Fig. 2(2)), the operating system services required by the containers are bound to the component-based operating system presented in Section 5. A detailed description of the roles involved within the design process presented in this paper is sketched out in Figure 3, where steps (1) and (2) refer to the same two composition steps from Figure 2.

Specificities of RTE Audio Applications

In this paper, we present our approach in order to provide to the application developer a design space for component-based audio and music applications. These applications are inherently designed as multitask and concurrent softwares since they generally implement audio flows processing algorithms controlled by the end-user via HMIs (Human-Machine Interfaces). Moreover, they must be executed in a real-time context since audio data must be processed in time to avoid buffer underflows. Therefore, the developer must properly manage the resources of the system (tasks, audio buffers, mutex, etc), implement the audio data copies throughout, for example, a pipe of audio filters -potentially at different sample rates -or the way tasks are synchronized and shared data are protected within critical sections. These aspects are typical domain-specific concerns since from one application to another, their implementations are redundant, timeconsuming and error-prone. Therefore, the aim of Hulotte is to provide a design space where these concerns are handled automatically by our framework.

Case Study: a Vinyl Multimedia Controller

To illustrate the main features of our approach, we introduce our case study (DeckX) on which we will rely throughout the paper: An application for DJ's that uses a special vinyl record as a mean of controlling various multimedia sources (such as MP3 audio or video files) from a classical turntable. It operates as follows: the vinyl is pressed with a dedicated sinusoidal stereo signal which encodes a "time-code". A software analysis of the signal gives three pieces of information: the absolute position of the turntable arm in the vinyl, its velocity and its rotation direction. Concretely, it is thus possible to "scratch" in realtime MP3 files stored in a computer from the turntable. Moreover, we consider the ability for the DJ to control audio parameters (output volume and filtering parameters) from the keyboard. Our case study thus represents a real-life application, and is composed of various functional parts which have to meet various concurrent constraints. Moreover, the application is intended to be deployed in a microcontroller and must therefore fulfill constraints encompassed by ressource limited devices.

Application Level: Designing RTE Audio Applications

This section presents the domain-specific annotations provided to the application developer for designing real-time and audio applications. We outline then how DeckX is implemented with Hulotte.

Domain-Specific Annotations

The audio-domain-specific concerns presented in Section 3.2 are modeled by Hulotte annotations. These annotations are used by the application developer to specialize its application specified as a set of interconnected applicative components. The list of annotations provided to the developer is given in Table 1 and their basic semantics are detailed below. @ClientServerItf and @AudioItf annotations specify the signatures and properties of the interfaces exported by the components. A Client-server interface signature defines a set of method signatures (like Java interfaces) with a list of parameters and a return type. The parameters of the annotation specify if the interface is client or server, single or multicast. The multicast property specifies a one-to-N connection scheme between one client and N server interfaces. Client-server interfaces model services required or provided by the components. The audio interfaces (i.e., the interfaces annotated with @AudioItf) model streams of audio data produced or consumed by the components. Their signatures define a set of parameters qualifying audio streams: the number of audio frames transmitted, their data types (an audio frame is stored as an integer, a float or a double), the number of audio channels (e.g. mono or stereo), the sample rate of the audio flow, and the way multiple channel frames are intertwined. The need to qualify these audio interface signatures is justified for composing independently implemented components. Indeed, interconnected components may have been implemented according to audio streams encoded differently. An example of a client-server and of an audio interface signatures using the Hulotte's IDL (Interface Description Language) is given in Figure 4. The bindings between applicative components are specified between a client and a server interface or between a producer and a consumer audio interface. @Buffered annotations can be applied to interfaces. Such an interface specifies that service invocations or audio streams passing through it are buffered. The size of the buffer is specified by the bufferSize parameter of the annotation. Buffered interfaces are for instance used when components produce and consume audio streams at different frequencies.

The @MonoActive annotation specifies that an applicative component is attached to its own thread of execution defined with a priority. The execution model attached to such a component performs the incoming activation requests sequentially -i.e., in a run-to-completion mode -with a FIFO ordering policy. In our case, activation requests can be operation invocations from a server interface or audio streams consumed from an audio interface. The @MultiActive annotation has the same semantics but for a pool of threads performing activation requests in parallel.

The @Asynchronous annotation can be applied to bindings. In this case, the thread of control originating from the source interface of the binding returns without being blocked until the completion of the execution at destination interface side.

If the implementation code of an applicative component is stateful and not reentrant (i.e., it can not be safely executed concurrently), the developer uses the @Protected annotation. In this case, the Hulotte execution framework guarantees mutual exclusion: a single execution flow is allowed to execute the code encapsulated by such a protected component (just as the synchronized keyword in Java).

@CpuItHandler and @OSItf are used to specify a link between the application layer and the operating system layer. Indeed, two cases are identified: First, an applicative component's execution may be triggered by the reception of a hardware interrupt (@CpuItHandler) managed by the operating system. Second, an applicative component may directly require services implemented by the operating system or device drivers not directly handled by the application (@OSItf). In these two cases, the annotated interfaces will be automatically bound afterwards by the Hulotte process as described in Section 5.

Annotated Architecture of DeckX

The Hulotte architecture of our case study is given in Figure 5. In the following, we outline its functional and non-functional behavior, the latter being specified by annotations: The AudioDriver component will be attached at runtime by a thread of execution activated by an interrupt managed by the operating system. This driver reads the audio buffers from the audio device (corresponding to the timecoded signal read from the turntable) and produces asynchronously audio frames on its outgoing audio interface. The Analyser1 component is also attached to its own thread of execution and is activated each time new audio frames are buffered in its incoming audio interface. At each analysis step, timecode information decoded from incoming audio frames are multicasted to the GUI and the AudioPlayerDeck1 components. According to this information, the Player component processes audio frames read from an MP3 file managed by the Track component, sends them to the AudioFilters and finally to the incoming audio interface of the AudioDriver. The KeyboardDriver component is activated each time a key is pressed by the end-user and dispatch the process of the corresponding event to change a parameter of the AudioFilters or to load a new MP3 track via the Track component (the latter thus requires an OSItf to access to the file system managed by the operating system layer). The latter is protected since concurrent execution flows initiated from the Analyser1 or the KeyboardDriver components access to its provided services. The priorities of the @MonoActive and @MultiActive annotations attached to applicative components are specified as follows: Prio(AudioDriver) > Prio(Analyser1) > Prio(KeyboardDriver) > Prio(GUI), since audio samples must be handled in priority by the AudioDriver and the analysis process, compared to the interactions with the end-user with the keyboard and the GUI. Annotations are implemented by the Hulotte platform as it is presented in the next section.

Hulotte Platform & Operating System Compositions

As sketched out in Figure 3(b), the platform developer is responsible for implementing the runtime platform supporting the domain-specific requirements specified as Hulotte annotations. The Hulotte platform is engineered with component-based containers, which brings three significant advantages: i) the platform developer benefits from a component-based design to implement the semantics of arbitrary complex domain-specific annotations, in a decoupled way from the application logic, ii) our approach relies on a reflective architecture, in a symmetric and isomorphic way, and iii) the low-level services required by the platform and provided by the operating system are explicitly specified. The concept of container on which the platform is built is generalized, defining composition rules and architectural invariants as architectural patterns to specify the link between applicative components and platform components as it is presented in the following section. The component-based implementation of the operating system is detailed in Section 5.2, as the composition between the container and the OS layers.

Component-Based Containers Design and Composition

The composition of the containers corresponds to the first composition step of the process depicted in Figure 3(c), and relies on a generative and aspect weaving technique. Each Hulotte annotation is implemented by the platform developer as architectural fragments made of interceptor and platform components. The platform developer implements a Hulotte plugin which provides the way these fragments will be woven into composite containers, according to the annotations specified at the application level. The output of this composition step is an architecture description where all applicative components are encapsulated within their dedicated containers. Therefore, for a given applicative component, its container:

-implements non-functional services it requires via annotations, -mediates the domain-specific interactions with its environment, -manages the resource instances it requires, such as tasks, semaphores, buffers or message queues, reified as components [START_REF] Loiret | Component-Based Real-Time Operating System for Embedded Applications[END_REF], -allows inversion of control based on interception of execution flows transiting via applicative component's interfaces.

The platform components are generic components provided by the Hulotte component library, or generated components. The architectural specification and implementations of the latter are respectively generated programmatically and by source code templates according i) to interface signatures of the applicative components they will control, and ii) the annotations parameters set by the application developer. Interceptors are also generated since their specifications rely on applicative components' interfaces always known only at weaving time. According to the annotations presented in Table 1, the contents of the containers depend on the following information which are specified by the application developer:

-Buffered interfaces are intercepted, and data transiting through them (e.g., parameters of method or audio flows) are stored in a buffer implemented as a platform component. all together bound to a The counter of the semaphore is then incremented when an execution flow from the environment of the protected component execute a service it provides and is decremented when it returns. -In the case of applicative components bound via audio interfaces with different signatures, a dedicated interceptor is generated implementing the conversion algorithm between the source and the destination of the audio flow.

As an example, Figure 6 shows the container of the Analyser1 applicative component, according to the annotations specified by the application developer presented in Figure 5. Note that Hulotte annotations are also defined to characterize the specificities of the container level concepts.

RTOS Design & Composition

As it has been presented, Hulotte containers implement non-functional concerns required by the applicative components. These concerns may require operating system services, such as task scheduling, time or Inter-Process Communications management. In this sense, containers act also as an intermediate abstraction layer between the operating system and the application layers.

As it is presented in details in [START_REF] Loiret | Component-Based Real-Time Operating System for Embedded Applications[END_REF], our component-based RTOS consists of a set of primitive components encapsulated within a composite. The latter exports the public services invokable from container and applicative components. Within the Hulotte process depicted in Figure 3, the second composition step consists in a two-direction composition between these layers, via client-server bindings:

-From container (or applicative) components to the RTOS. In this case, client interfaces annotated by @OSItf annotation are bound to the corresponding interface of the RTOS. -From the RTOS to the container components when the latter encapsulates applicative components annotated by @CpuItHandler. In this case, applicative components export handlers to serve hardware's interrupts.

This composition step is automatically handled by Hulotte and is based on the signatures exported by the interfaces. The content of the RTOS is therefore automatically built according to the services strictly required by the applicative and container components.

Evaluation

In this section, we provide a detailed evaluation of our approach, from a qualitative and a quantitative point of view.

Qualitative evaluation

Application's Design Space. Hulotte provides a component-based design space which enforces a strong separation of concerns. Indeed, the developer is exclusively focused on the implementation of its applicative architecture, afterwards annotated with domain-specific/non-functional concerns. In consequence, this separation occurs also at code level, the latter becoming more readable and maintainable -reflecting the functional needs of the application without any constraints imposed by the low-level real-time audio properties, as it has been experimented with DeckX. Moreover, the decoupling between the architecture and the annotations improves reuse since components can be independently deployed in various execution contexts without any applicative code refactoring.

However, since we propose a generic mechanism where each architectural artifact can be annotated by arbitrary annotations, their use imposes several constraints for the application developer. Indeed, annotations may be applied incorrectly to an artifact, a set of annotations can be self-contradictory and cannot be composed together, or annotations can depend on each other. To tackle with issue, we chose a defensive approach based on constraints (using the OCL constraint language [START_REF] Omg | UML 2.0 Object Constraint Language (OCL) Specification[END_REF]) which must be explicitly specified by the platform developer, and which are checked automatically from an annotated application. These checks operate just before the container generation step and ensure the consistency of the application's specifications. These points are reported in details in [START_REF] Noguera | Checking Architectural and Implementation Constraints for Domain-Specific Component Frameworks using Models[END_REF].

Platform's Design Space. The Hulotte platform consists of a set of containers implementing real-time-audio annotations. The containers composition process relies on the incoming and outgoing interaction points externalized by the applicative components, through explicitly defined and stable interfaces, and therefore independently of their implementations. Moreover, a strong separation of concerns is applied between applicative and platform components which are linked together by composition without any dependency on the internal elements of the applicative code. These characteristics of our approach allow us to improve sorely the extensibility of the platform, towards the support of new nonfunctional concerns. For instance, our component-based platform model has been validated in studies spanning various domains, from distributed reflective and reconfigurable applications [START_REF] Loiret | Constructing Domain-Specific Component Frameworks through Architecture Refinement[END_REF], to Real-Time Java Specifications (RTSJ) [START_REF] Plšek | A Component Framework for Java-based Real-time Embedded Systems[END_REF].

Taking Benefits of a Full Component-Based Approach. We can witness several benefits in using a homogeneous component model for constructing RTE software stack, made of applicative, platform, and RTOS components. First, we rely on homogeneous composition techniques based on the component requirements exposed at architectural level to obtain the final stack. As it has been presented in Section 5.2, this feature allows us to built automatically an operating system fitting exactly the services required by the whole system. Second, since the Hulotte process outputs a flattened architecture of the complete software stack, we can apply uniformly tools based on the abstractions of our component model.

Two features provided by Hulotte are presented and evaluated thereafter: the capability to support introspection and reconfiguration of the system at runtime and the support of optimization techniques of the final executable. The latter is a mandatory requirement raised from the embedded domain, since relying on high-level abstractions at design time must not impact drastically on performance at runtime.

Quantitative Evaluation

As illustrated in Figure 3, the Hulotte framework consists of a frontend implementing the composition steps described in Section 5 and a backend. In this paper, the backend relies on the Think component framework [START_REF] Fassino | THINK: A Software Framework for Component-based Operating System Kernels[END_REF]. From the flattened architecture outputed from the frontend, the backend generates a set of C source files compiled afterwards by a classical C compiler. In the following section, we measure how our approach impacts the resulting executable in terms of memory footprint and execution time, based on the DeckX case study.

The comparisons are established between a reference implementation against a component-based design, the latter being based on Hulotte. The reference implementation corresponds to a version of DeckX where applicative functionalities and these implemented by the Hulotte containers are implemented manually in a full code-centric approach, and linked to a monolithic implementation of the operating system. In both cases, the same set of functionalities are embedded in the final binary.

For the component-based design, we consider three scenarios: i) Flexible, where all components outputed from the Hulotte process are generated as introspectable and reconfigurable entities at runtime. This feature is supported by Think, which generates meta-data and provides these capabilities at runtime. ii) Not flexible, which generates a static binary of the whole architecture, not introspectable and reconfigurable anymore. This scenario relies on Think optimizations described in [START_REF] Lobry | Controlling the Performance Overhead of Component-Based Systems[END_REF][START_REF] Loiret | Component-Based Real-Time Operating System for Embedded Applications[END_REF] to control performance overheads induced by the backend framework. Finally, iii) the Flattened scenario, consisting of a binary generated as static and without hierarchical encapsulation. These scenarios are taken automatically into account within the last stage of the Hulotte frontend process depicted on Figure 3, according to the developer preferences. Memory Footprint. Figure 7 presents the memory footprints of the reference implementation and the component-based designed for the three aforementioned scenarios 4 . We measure the overhead in code (i.e., .text section) and data, including initialized (i.e., .data section) and uninitialized (i.e., .bss section) data. We make this distinction as code is usually placed in ROM, whereas data are generally placed in RAM. The overheads are not negligible for the Flexible scenario (Fig. 7(b)), reflecting the cost to provide a full reconfiguration support at runtime. However, since this feature may not be required for the whole embedded stack, Hulotte relies on the mechanisms provided by Think to specify whether a single component or a subset of the architecture should be generated as reconfigurable [START_REF] Loiret | Component-Based Real-Time Operating System for Embedded Applications[END_REF]. When considering a complete static system (Fig. 7(c)), just a code overhead is observed, becoming negligible in the last scenario (Fig. 7(d)). The latter overhead comes for the resource instances reified as components within our approach. The Figure 8 presents the memory footprints for the Flattened scenario compared between the RTOS, the platform and the application layers 5 . These results show in particular the important part of DeckX related to audio and realtime concerns, which are automatically handled by our approach (Fig. 8(c)) in an oblivious manner for the application developer.

Execution Time. Finally, Figure 9 presents the execution time overheads involved by our approach based on the longest execution path of DeckX, traversing more than forty components from the application level as well as the container and RTOS levels. The testing environment consists of a Pentium 4 monoprocessor at 2.0 GHz, running 100,000 times the execution path 6 . These results show that the involved overheads are completly negligible for the Flattened scenario (Fig. 9(d)) and acceptable in the other cases (Fig. 9(b) & (c)).

Related Work

Specializing Component Models with Annotations. In programming languages, the use of annotations is widely applied to specialize their basic constructs. However, to the best of our knowledge, only the Think ADL [START_REF] Lobry | Optimizing Component-Based Embedded Software[END_REF], which we drew our inspiration from, and UML2 [START_REF] Omg | Object Management Group: Unified Modeling Language -Superstructure Version 2[END_REF] exploit this feature to specialize architectural constructs. However, with Think, their uses are limited to optimization properties, configuring the last stages of the Think's code generation process, and not to refine the applicative architecture with other non-functional concerns.

In turn, UML2 defines the composite structure diagram for specifying software architectures, and introduces the notion of profiles [START_REF] Fuentes | An Introduction to UML Profiles[END_REF]. The latter is the builtin lightweight mechanism that serves to customize UML artifacts for a specific domain or purpose via stereotypes. Thus, the latter could be used to extend the semantics of the composite structure diagram artifacts. Our approach shares with UML the notion of annotation, close to the one of a stereotype.

Extensible Container-Based Approaches. Even if component containers -originating for the EJB -are a key part of component frameworks, they generally support a predefined set of non-functional concerns. On the contrary, the PIN component model [START_REF] Moreno | Creating Custom Containers with Generative Techniques[END_REF] is based on generative techniques to generate custom containers encompassing component interactions and implementing non-functional concerns. A strong separation of concerns is preserved between the latter and the code implemented by applicative components. Despite these similarities with our contribution, PIN relies on a code-centric approach (based on AspectC++) for generating containers, whereas Hulotte capitalizes on the component paradigm at this level. In this respect, Asbaco [START_REF] Mencl | Microcomponent-Based Component Controllers: A Foundation for Component Aspects[END_REF] and AoKell [START_REF] Seinturier | A Component Model Engineered with Components and Aspects[END_REF] are similar to our approach, both targeting the Java language for IT systems. However, they rely on costly mechanisms such as load-time mixin technique based on bytecode generation not suitable for embedded systems, and do not consider applications constrained by time and requiring low-level services from the operating system.

Handling Flexibility in Embedded Software Stacks Based on CBSE. Considering the approaches targeting real-time embedded systems, CBSE has been adopted either at operating system level [START_REF] Ford | The Flux OSKit A Substrate for Kernel and Language Research[END_REF][START_REF] Levis | TinyOS: An Operating System for Sensor Networks[END_REF][START_REF] Massa | Embedded Software Development with eCos[END_REF][START_REF] Reid | Knit: Component Composition for Systems Software[END_REF] or to propose Architecture Description Languages capturing the domain's relevant abstractions [START_REF]Automotive Open System Architecture (AUTOSAR)[END_REF][START_REF] Feiler | An overview of the SAE Architecture & Design Language (AADL) Standart : A Basis for Model-Based Architecture-Driven Embedded Systems Engineering[END_REF][START_REF] Hansson | SaveCCM -A Component Model for Safety-Critical Real-Time Systems[END_REF][START_REF] Van Ommering | The Koala Component Model for Consumer Electronics Software[END_REF]. In the first case, CBSE is exploited to provide a set of components used as building blocks to configure an operating system. However, within these approaches, the applicative components directly use the services provided by the OS, without any intermediate and flexible layer implementing non-functional concerns in an oblivious manner for the application developer. On the contrary, software stacks provided by the mentioned ADLs propose domain-specific abstractions implemented by a dedicated runtime, but do not provide an engineering of this layer to support new features not initially supported by their languages.

Conclusion

As embedded systems must be constantly adapted to support new features with a growing complexity, it is becoming necessary to use current software engineering principles and methodologies to increase software productivity. CBSE is widely-known to foster separations of concerns, reuse, and flexibility to shorten development time. This paper presents a three-tier approach for composition of flexible realtime embedded software stacks. It relies on a design process where flexibility is achieved by two features: i) an annotation-based mechanism for specializing the application's architectural artefacts with non-functional concerns, and ii) a container model for the generation and composition of the runtime platform implementing them. The extensible nature of the containers makes them suitable for implementing complex features supported by the platform, relieving the application developer from dealing with redundant and error-prone tasks. Containers offer a straightforward design space for adapting the platform towards various application requirements. Moreover, our software stack model relies on a component-based RTOS which provides, by composition, the low-level services strictly required by the upper layers. In this paper, we apply our approach for designing and implementing real-time audio applications. We demonstrate through a real-life case study that the impact on performances of our design process is negligible.

As a future work, we plan to provide a richer library of annotations encompassing various communication models and execution models (e.g., Constant Bandwidth or Contract-Based Scheduling Servers) commonly used in RTE systems. Moreover, we envision to extend the generic component model on which the software stack relies with a behavioral model based on automata. The composition of these automata gives the global behavior of the whole stack outputed by our process, including low-level OS primitives, analyzable by model-checking tools (such as deadlock-free analysis).

Fig. 1 .

 1 Fig. 1. The Hulotte Metamodel. architectural artefacts the concepts of Component (either Primitive or Composite), Attribute, Interface, and Binding. The behavior of a primitive component is implemented by the underlying programming language supported by our framework (the C language in the context of this paper) and is reified by the Content artefact. An architecture is then specified as a set of interconnected components (at an arbitrary level of encapsulation by using the composite design pattern) via oriented relationships between Interfaces.We distinguish two roles involved in the Hulotte development process: the application developer and the platform developer. The application developer is responsible for the development of applicative components and the specification of their domain-specific requirements. She/he uses the Hulotte metamodel concepts, depicted in Figure1, to design the component-based application, which is afterwards annotated by Domain-Specific Annotations. These annotations mark the Hulotte Architectural Artefacts like Java 5 annotations mark the Abstract Syntax Tree (AST) of a Java program. Hulotte annotations isolate and specify the concerns relevant to a targeted application domain, so-called domain-specific concerns. Within our approach, it should be noticed that components are used as pure business units, and a component-based architecture then implements the whole business logic of the application. Therefore, annotations are used to specify the domain-specific semantics over the architecture. For instance, in order to address the multitask applications domain, an annotation can be used on a component to qualify under which execution model its business interfaces should be invoked, e.g. periodically or sporadically. As a second example, on a composite component, an annotation can qualify the boundary of a memory scope in which its subcomponents will be allocated. Finally, an annotation can also be used on a binding to specialize the communication models and protocols (e.g., asynchronous, shared memory, CORBA, SOAP) between the components it binds.

Fig. 2 .

 2 Fig. 2. A Three-Tier Approach for Composition of a RTE Software Stack.

( c )Fig. 3 .

 c3 Fig. 3. Description of the Hulotte's Design Process.

Fig. 4 .

 4 Fig. 4. IDL's Examples of a Client-Server and Audio Interface Signatures.

3 @

 3 Buffered( bufferSize = " 512 " ) 4 @MonoActive( priority = " 20 " ) 5 @AudioItf( sign = " audio . api . An aly ser Audi oTy pe " , role = " consumer " , 6 cardinality = " single " ) 7 destination interface inputAudio 9 @ClientServerItf( sign = " deckX . api . TimeCodeType , role = " client " , 10 cardinality = " multicast " ) 11 source interface outputTimecode

Fig. 5 .

 5 Fig. 5. Graphical and Textual Representations (excerpt) of a DeckX's Annotated Architecture.

  -The semantics of MonoActive and MultiActive components are implemented by OS task instances handled by generated platform components. The latter control their thread(s) of execution as it was mentioned in Section 4.1. -The logics behind Asynchronous bindings and multicast interfaces are implemented by interceptors. -The semantics of Protected component is implemented by interceptors,

Fig. 6 .

 6 Fig. 6. The Generated Container of the Analyser1 Applicative Component.

Fig. 7 .

 7 Fig. 7. Memory Footprint Sizes of DeckX (in Bytes) and Overheads.

Table 1 .

 1 Hulotte Annotations Dedicated to Real-Time Audio Applications.

	Annotation	Applied to	Parameters
	@ClientServerItf	interface	signature: string
			role:{client | server}
			cardinality:{single | multicast}
	@AudioItf	interface	signature: string
			role:{producer | consumer}
			cardinality:{single | multicast}
	@Buffered	interface	bufferSize: integer
	@MonoActive	interface|component priority: integer
	@MultiActive	interface|component priority: integer
			poolSize: integer
	@Asynchronous	binding
	@Protected	component	initialValue: integer
	@CpuItHandler	interface	irqNumber: integer
	@OSItf	interface

Federal Aviation Administration.

These experiments have been conducted using GCC with the -Os option that optimizes the binary image size.

The total does not equal to 100% due to some code and data generated in the binary by the linking process of the C compiler.

The scenario was "simulated" under a Linux 2.6 kernel (using a Linux port of µC) patched by Rt-Preempt. The latter converts the kernel into a fully preemptible one with high resolution clock support, allowing precise performance measures.

Acknowledgment

This work was supported by the french Minalogic Mind project.


N Navon
email: navon@ens.fr.

S Nascimbène

F Chevy

C Salomon

The Equation of State of a Low-Temperature Fermi Gas with Tunable Interactions

Interacting fermions are ubiquitous in nature and understanding their thermodynamics is an important problem. We measure the equation of state of a two-component ultracold Fermi gas for a wide range of interaction strengths at low temperature. A detailed comparison with theories including Monte-Carlo calculations and the Lee-Huang-Yang corrections for low-density bosonic and fermionic superfluids is presented. The low-temperature phase diagram of the spin imbalanced gas reveals Fermi liquid behavior of the partially polarized normal phase for all but the weakest interactions. Our results provide a benchmark for many-body theories and are relevant to other fermionic systems such as the crust of neutron stars.

Recently, ultracold atomic Fermi gases have become a tool of choice to study strongly correlated quantum systems because of their high controllability, purity and tunability of interactions [START_REF] Inguscio | Ultra-cold Fermi gases[END_REF]. In the zero-range limit, interactions in a degenerate Fermi system with two spincomponents are completely characterized by a single parameter 1/k F a, where a is the s-wave scattering length and k F = (6π 2 n) 1/3 is the Fermi momentum (n is the density per spin state).

In cold atom gases the value of |a| can be tuned over several orders of magnitude using a Feshbach resonance, this offers an opportunity to entirely explore the so-called BCS-BEC crossover, i.e. the smooth transition from Bardeen-Cooper-Schrieffer (BCS) superfluidity at small negative values of a to molecular Bose-Einstein Condensation (BEC) at small positive values of a (1, 2).

Between these two well-understood limiting situations a diverges, leading to strong quantum correlations. The description of this system is a challenge for many-body theories, as testified by the large amount of work in recent years [START_REF] Inguscio | Ultra-cold Fermi gases[END_REF]. The physics of the BEC-BCS crossover is relevant for very different systems, ranging from neutron stars to heavy nuclei and superconductors.

In the grand-canonical ensemble and at zero temperature, dimensional analysis shows that the Equation of State (EoS) of a two-component Fermi gas, relating the pressure P to the chemical potentials µ 1 and µ 2 of the spin components can be written as

P (µ 1 , µ 2 , a) = P 0 (µ 1 )h δ 1 ≡ h √ 2mµ 1 a , η ≡ µ 2 µ 1 , (1)
where P 0 (µ 1 ) = 1/15π 2 (2m/h 2 ) 3/2 µ 5/2 1

is the pressure of a single-component ideal Fermi gas, m is the atom mass and h is the Planck constant divided by 2π. The indices 1 and 2 refer to the majority and minority spin components, respectively. From the dimensionless function h(δ 1 , η), it is possible to deduce all the thermodynamic properties of the gas, such as the compressibility, magnetization or the existence of phase transitions; the aim of this paper is to measure h(δ 1 , η)

for a range of interactions (δ 1 ) and spin imbalances (η) and discuss its physical content. δ 1 is the grand-canonical analog of the dimensionless interaction parameter 1/k F a.

In-situ absorption images of harmonically trapped gases are particularly suited to investigate their EoS as first demonstrated at MIT (3) and ENS (4). In the particular case of the grandcanonical ensemble, a simple formula relates the local pressure P at a distance z from the center of the trap along the z axis to the doubly-integrated density profiles n 1 and n 2 (5):

P (µ 1 (z), µ 2 (z), a) = mω 2 r 2π (n 1 (z) + n 2 (z)) . (2)
Here we define the local chemical potentials

µ i (z) = µ 0 i -1 2 mω 2 z z 2
, where µ 0 i is the chemical potential of the component i at the bottom of the trap, assuming local density approximation.

ω r and ω z are the transverse and axial angular frequencies of a cylindrically symmetric trap respectively, and n i (z) = n i (x, y, z)dxdy, is the atomic density n i of the component i, doubly integrated over the transverse x and y directions. In a single experimental run at a given magnetic field, two images are recorded, providing n 1 (z) and n 2 (z) (see Fig. S4 in ( 6)); the z-dependence of the chemical potentials then enables the measurement of P along a curve in the (δ 1 , η) plane [START_REF]Materials and Methods are available as supporting material on Science Online[END_REF]. This method was validated in (4) for the particular case of the unitary limit a = ∞. Deducing the function h from the doubly integrated profiles further requires a precise calibration of ω z and the knowledge of the central chemical potentials µ 0 i (6).

Our experimental setup is presented in [START_REF] Nascimbene | Collective Oscillations of an Imbalanced Fermi Gas: Axial Compression Modes and Polaron Effective Mass[END_REF]. We prepared an imbalanced mixture of 6 Li in the two lowest internal spin states, at the magnetic field of 834 G (where a = ∞), and trapped it in a hybrid magnetic-optical dipole trap. We then performed evaporative cooling by lowering the optical trap power, while the magnetic field was ramped to the final desired value for a.

The cloud typically contained N = 2 to 10 × 10 4 atoms in each spin state at a temperature of 0.03(3) T F , justifying our T = 0 assumption [START_REF]Materials and Methods are available as supporting material on Science Online[END_REF]. The final trap frequencies are ω z /2π ∼ 30 Hz, ω r /2π ∼ 1 kHz. Below a critical spin population imbalance, our atomic sample consists of a fully-paired superfluid occupying the center of the trap, surrounded by a normal mixed phase and an outer rim of an ideal gas of majority component atoms [START_REF] Nascimbene | Exploring the Thermodynamics of a Universal Fermi Gas[END_REF][START_REF] Nascimbene | Collective Oscillations of an Imbalanced Fermi Gas: Axial Compression Modes and Polaron Effective Mass[END_REF][START_REF] Shin | Observation of Phase Separation in a Strongly-Interacting Imbalanced Fermi Gas[END_REF].

For a given magnetic field, 10 to 20 images are taken, leading after averaging to a lownoise EoS along one line in the (δ 1 , η) plane. Measurements at different magnetic fields chosen between 766 G and 981 G give a sampling of the surface h(δ 1 , η) in the range -1 < δ 1 < 0.6 and -2 < η < 0.7 (Fig. 1). Let A(δ 1 ) be the limiting value of the ratio of chemical potentials µ 1 (z)/µ 2 (z) below which the minority density vanishes. At fixed δ 1 and η < A(δ 1 ), h(δ 1 , η)

represents the EoS of an ideal Fermi gas of majority atoms and is equal to 1. For η > A(δ 1 ), it slowly rises and corresponds to the normal mixed phase, where both spin components are present. At a critical value η = η c (δ 1 ), the slope of h abruptly changes [START_REF]Materials and Methods are available as supporting material on Science Online[END_REF], the signature of a first-order phase transition from the normal phase (for A < η < η c ) to a superfluid phase with a lower chemical potential imbalance (η > η c ). We notice that the discontinuity is present for all values of δ 1 we investigated, and this feature is more pronounced on the BEC side.

Let us first consider the EoS of the superfluid phase, η > η c . Each of our in-situ images has, along the z-axis, values of the chemical potential ratio η(z) = µ 2 (z)/µ 1 (z) both lower and greater than η c . In the region where η(z) > η c the doubly-integrated density difference n1 (z) -n2 (z) is constant within our signal-to-noise ratio (see Fig. S4). This is the signature of equal densities of the two species in the superfluid core, i.e. the superfluid is fully paired. Using Gibbs-Duhem relation n i = ∂P ∂µ i , equal densities n 1 = n 2 imply that P (µ 1 , µ 2 , a) is a function of µ and a only, where µ ≡ (µ 1 + µ 2 )/2. For the balanced superfluid, we then write the EoS symmetrically:

P (µ 1 , µ 2 , a) = 2P 0 ( µ)h S δ ≡ h √ 2m µa . (3)
In order to avoid using negative chemical potentials, we define here µ = µ -E b /2, where E b is the molecular binding energy E b = -h 2 /ma 2 for a > 0 (and 0 for a ≤ 0). h S ( δ) is then a single-variable function. It fully describes the ground state macroscopic properties of the balanced superfluid in the BEC-BCS crossover and is displayed in Fig. 2 as black dots.

In order to extract relevant physical quantities, such as beyond mean-field corrections, it is convenient to parametrize our data with analytic functions. In this pursuit, we use Padé-type approximants [START_REF]Materials and Methods are available as supporting material on Science Online[END_REF], interpolating between the EoS measured around unitarity and the well-known mean-field expansions on the BEC and BCS limits. The two analytic functions, h BCS First, on the BCS side δ < 0, h BCS S yields the following perturbative expansion of the energy in series of k F a:

E = 3 5 NE F 1 + 10 9π k F a + 0.18(2)(k F a) 2 + 0.03(2)(k F a) 3 + . . . ,
where N is the total number of atoms, E F is the Fermi energy and where by construction of h BCS

S

, the mean-field term (proportional to k F a) is fixed to its exact value 10/9π. We obtain beyond mean-field corrections up to 3 rd order. The term proportional to (k F a) 2 agrees with the Lee-Yang (9, 10) theoretical calculation 4(11 -2 log 2)/21π 2 ≃ 0.186. The third order coefficient also agrees with the value 0.030 computed in [START_REF] Baker | Singularity Structure of the Perturbation Series for the Ground-State Energy of a Many-Fermion System[END_REF].

Second, around unitarity the EoS expands as

E = 3 5 NE F ξ s -ζ 1 k F a + . . . . (4)
We find the universal parameter of the unitary T = 0 superfluid, ξ s = 0.41(1) with 2 % accuracy. This value is in agreement with recent calculations and measurements (1). Our thermodynamic measurement ζ = 0.93( 5) can be compared with a recent experimental value ζ = 0.91(4) (12) as well as the theoretical value ζ = 0.95 (13), both of them obtained through the study of the pair correlation function. This experimental agreement confirms the remarkable link between the macroscopic thermodynamic properties and the microscopic short-range pair correlations, as shown theoretically in [START_REF] Tan | Large momentum part of a strongly correlated Fermi gas[END_REF].

Third, in the BEC limit the EoS of the superfluid is that of a weakly interacting Bose-Einstein condensate of molecules [START_REF] Lee | Many-Body Problem in Quantum Mechanics and Quantum Statistical Mechanics[END_REF][START_REF] Leyronas | Superfluid Equation of State of Dilute Composite Bosons[END_REF]:

E = N 2 E b + N πh 2 a dd 2m n 1 + 128 15 √ π na 3 dd + ... , (5)
where a dd = 0.6a is the dimer-dimer scattering length [START_REF] Inguscio | Ultra-cold Fermi gases[END_REF] and n is the dimer density. The term in na 3 dd is the well-known Lee-Huang-Yang (LHY) correction to the mean-field interaction between molecules [START_REF] Lee | Many-Body Problem in Quantum Mechanics and Quantum Statistical Mechanics[END_REF][START_REF] Leyronas | Superfluid Equation of State of Dilute Composite Bosons[END_REF]. Signatures of beyond mean-field effects were previously observed through a pioneering study of collective modes [START_REF] Altmeyer | Precision Measurements of Collective Oscillations in the BEC-BCS Crossover[END_REF] and density profile analysis [START_REF] Shin | Realization of a Strongly Interacting Bose-Fermi Mixture from a Two-Component Fermi Gas[END_REF] but no quantitative comparison with (5) was made. Fitting our data in the deep BEC regime with Eq.( 5), we measure the bosonic LHY coefficient 4.4(5), in agreement with the exact value 128/15 √ π ≃ 4.81 calculated for elementary bosons in [START_REF] Lee | Many-Body Problem in Quantum Mechanics and Quantum Statistical Mechanics[END_REF] and recently for composite bosons in [START_REF] Leyronas | Superfluid Equation of State of Dilute Composite Bosons[END_REF].

Having checked this important beyond mean-field contribution, we can go one step further in the expansion. The analogy with point-like bosons suggests to write the next term as [START_REF]Materials and Methods are available as supporting material on Science Online[END_REF][START_REF] Wu | Ground State of a Bose System of Hard Spheres[END_REF][START_REF] Braaten | Dilute Bose-Einstein Condensate with Large Scattering Length[END_REF]. Using h BEC S ( δ) (Fig. 2, and ( 6)), we deduce the effective three-body parameter for composite bosons B = 7(1). Interestingly, this value is close to the bosonic hard-sphere calculation B = 8.5 [START_REF] Tan | Three-boson problem at low energy and implications for dilute Bose-Einstein condensates[END_REF] and to the value B ≈ 7.2 for point-like bosons with large scattering length [START_REF] Braaten | Dilute Bose-Einstein Condensate with Large Scattering Length[END_REF].

8 3 (4π -3 √ 3)na 3 dd (log(na 3 dd ) + B)
Our measurements also allow direct comparison with advanced many-body theories developed for homogeneous gases in the strongly correlated regime. As displayed in Fig. 3A, our data are in agreement with a Nozières-Schmitt-Rink approximation ( 21) but shows significant differences from a quantum Monte-Carlo calculation [START_REF] Bulgac | Quantum Monte Carlo simulations of the BCS-BEC crossover at finite temperature[END_REF] and a diagrammatic approach [START_REF] Haussmann | Thermodynamics of the BCS-BEC crossover[END_REF].

The measured EoS strongly disfavors the prediction of BCS mean-field theory.

Comparison with Fixed-Node Monte-Carlo theories requires the calculation of the EoS ξ(1/k F a) in the canonical ensemble: [START_REF]Materials and Methods are available as supporting material on Science Online[END_REF]. As shown in Fig. 3B, the agreement with theories (24-26) is very good.

ξ 1 k F a ≡ E -N 2 E b 3 5 NE F , that is deduced from h BCS S ( δ) and h BEC S ( δ)
We now discuss the EoS of the partially polarized normal phase (black points in Fig. 1). At low concentrations, we expect the minority atoms to behave as non-interacting quasi-particles, the fermionic polarons [START_REF] Lobo | Normal State of a Polarized Fermi Gas at Unitarity[END_REF]. The polarons are dressed by the majority Fermi sea through a renormalized chemical potential µ 2 -A(δ 1 )µ 1 [START_REF] Schirotzek | Observation of Fermi Polarons in a Tunable Fermi Liquid of Ultracold Atoms[END_REF] and an effective mass m * (δ 1 ) [START_REF] Pilati | Phase Separation in a Polarized Fermi Gas at Zero Temperature[END_REF][START_REF] Combescot | Normal State of Highly Polarized Fermi Gases: Simple Many-Body Approaches[END_REF][START_REF] Prokof'ev | Fermi-polaron problem: Diagrammatic Monte Carlo method for divergent sign-alternating series[END_REF].

Following a Fermi liquid picture, we propose to express the gas pressure as the sum of the Fermi pressure of the bare majority atoms and of the polarons (4):

h(δ 1 , η) = 1 + m * (δ 1 ) m 3/2 (η -A(δ 1 )) 5/2 . ( 6
)
Our measured EoS agrees with this model at unitarity and on the BEC side of the resonance (Fig. 1), where we use for m * (δ 1 ) the most advanced calculations [START_REF] Prokof'ev | Fermi-polaron problem: Diagrammatic Monte Carlo method for divergent sign-alternating series[END_REF][START_REF] Combescot | Analytical theory of the dressed bound state in highly polarized Fermi gases[END_REF]. On the BCS side of the resonance however, we observe at large minority concentrations an intriguing deviation to [START_REF]Materials and Methods are available as supporting material on Science Online[END_REF]. In the BCS regime, the superfluid is less robust to spin imbalance. Consequently, the ratio of the two densities n 1 /n 2 in the normal phase becomes close to unity near the superfluid/normal boundary η c . The polaron ideal gas picture then fails.

Alternatively, we can let the effective mass m * be a free parameter in model [START_REF]Materials and Methods are available as supporting material on Science Online[END_REF] in the fit of our data around η = A. We obtain the value of the polaron effective mass in the BEC-BCS crossover (Fig. 4).

An important consistency check of our study is provided by the comparison between our direct measurements of η c (δ 1 ) (from Fig. 1, black dots in the inset of Fig. 4) and a calculated η c (δ 1 ) from Eq.( 6) and the EoS of the superfluid h S . Assuming negligible surface tension, the normal/superfluid boundary is given by equating the pressure and chemical potential in the two phases. This procedure leads to the solid red line in the inset of Fig. 4, in excellent agreement with the direct measurements. In addition, by integrating our measured EoS of the homogeneous gas over the trap, one retrieves the critical polarization for superfluidity of a trapped gas, in agreement with most previous measurements [START_REF]Materials and Methods are available as supporting material on Science Online[END_REF].

We have measured the equation of state of a two-component Fermi gas at zero temperature in the BEC-BCS crossover. As a first extension, we could explore the thermodynamics of the far BEC region of the phase diagram where a new phase associated with a polarized superfluid appears [START_REF] Shin | Realization of a Strongly Interacting Bose-Fermi Mixture from a Two-Component Fermi Gas[END_REF][START_REF] Pilati | Phase Separation in a Polarized Fermi Gas at Zero Temperature[END_REF]. Another interesting direction would be the mapping of the EoS as a function of temperature and investigate the influence of finite effective range that is playing a key role in higher density parts of neutron stars. 33. In the BEC limit, the grand-canonical EoS expands as h S ( δ) ≃ 15πa/4a dd δ -16 √ 2, the first term being the mean-field interaction and the second one being the LHY correction asymptotic behavior.

34. We thank K. Jiang for participation to the early phase of the experimental work. We are grateful to X. Leyronas . The black dots are data recorded for each magnetic field value (as in Fig. 1a). The black lines correspond to the parametric curves (δ 1 (η), η) scanned by the density inhomogeneity in the harmonic trap [START_REF]Materials and Methods are available as supporting material on Science Online[END_REF]. The red line is A(δ 1 ), the frontier between the fully polarized (FP) ideal gas h = 1 and the normal partially polarized (PP) phase. The green line is η c (δ 1 ) marking the phase transition between the normal and superfluid (S) phases.

The surface is the parametrization of h(δ 1 , η) given in the text. 29), red open squares [START_REF] Prokof'ev | Fermi-polaron problem: Diagrammatic Monte Carlo method for divergent sign-alternating series[END_REF], green dot-dashed line [START_REF] Pilati | Phase Separation in a Polarized Fermi Gas at Zero Temperature[END_REF], and blue solid line [START_REF] Combescot | Analytical theory of the dressed bound state in highly polarized Fermi gases[END_REF]. Measurements at unitarity through density profile analysis (blue triangle ( 3)) and collective modes study (brown empty circle [START_REF] Nascimbene | Collective Oscillations of an Imbalanced Fermi Gas: Axial Compression Modes and Polaron Effective Mass[END_REF]) are also displayed. Inset: Phase diagram of a zero-temperature imbalanced Fermi gas in the BEC-BCS crossover. The blue line is the theoretical value of A [START_REF] Pilati | Phase Separation in a Polarized Fermi Gas at Zero Temperature[END_REF][START_REF] Combescot | Normal State of Highly Polarized Fermi Gases: Simple Many-Body Approaches[END_REF][START_REF] Prokof'ev | Fermi-polaron problem: Diagrammatic Monte Carlo method for divergent sign-alternating series[END_REF] that sets the separation between the partially polarized (PP) and the fully polarized (FP) phases. Black dots are the measured values of η c (as in Fig. 1A) which set the separation between the superfluid (S) phase and the partially polarized phase. The red line is the calculation of η c using our EoS of the superfluid and the model ( 6) for the normal phase. The green squares are lower bounds of η c given by the values of the gap measured in [START_REF] Schirotzek | Determination of the Superfluid Gap in Atomic Fermi Gases by Quasiparticle Spectroscopy[END_REF], see [START_REF]Materials and Methods are available as supporting material on Science Online[END_REF].

Within the local density approximation (LDA), the local chemical potentials along the zaxis vary as µ iz = µ 0 i -1 2 mω 2 z z 2 (for species i). The local interaction parameter, defined as δ 1z = h/ √ 2mµ 1z a (where 1 is the majority component), also varies along the cloud, as well as the local chemical potential imbalance η z = µ 2z /µ 1z . Substituting z in δ 1 in favor of η, we find:

δ 1 (η) = δ 0 1 1 -η 1 -η 0 , (7)
where

δ 0 1 = h/ 2mµ 0 1 a (resp. η 0 = µ 0 2 /µ 0 1
) is the interaction strength (resp. local imbalance) at the center of the cloud and we dropped the z subscript for clarity. Each trapped density profile thus gives the EoS along the parametric curve (δ 1 (η), η).

The images used to reconstruct the EoS at a given magnetic field do not perfectly belong to the same curve (δ 1 (η), η). Here we quantify the systematic error produced by overlapping (and then averaging) the various images. To do so, we have simulated density profiles using our measured EoS with the distribution of initial parameters {(δ 0 1j , η 0 j )} (where j is the image index) of the images used and have reproduced the reconstruction process. We then compare this result to the expected EoS corresponding to the mean values of {(δ 0 1j , η 0 j )}. The difference is less than 3 %. Moreover, the determination of µ 0 2 using A(δ 1 ) as a reference (as explained in the text), leads to an additional systematic error. We estimate it to be 4 % on the h S axis of Fig. 2. The uncertainty on the imaging system magnification leads to a 5 % systematic error on the δ axis of Fig. 2, while trap anharmonicity effects are expected to be 2%.

The critical chemical potential η c is extracted from each equation of state h(δ 1 , η) obtained at a given magnetic field. We fit the data in a region η ∈ [η -0.2, η + 0.2] with a continuous function made of two straight segments, and observe that the location of the breaking point is insensitive to the η value defining the set of points chosen for the fit. This shows that our data supports an abrupt change of slope, and η c is identified as the breaking point.

Parametrization of the Superfluid Equation of State

In order to extract physical parameters in the BEC-BCS crossover from our equation of state and to calculate the canonical EoS, we use a simple parametrization of our data that possesses the correct asymptotic behaviors (at δ → ±∞ and δ → 0).

First, on the BCS side δ < 0, we use a Padé-type approximant:

h BCS S ( δ) = δ 2 + α 1 δ + α 2 δ 2 + α 3 δ + α 4 . (8)
Using the mean-field asymptotic behavior h S ( δ) ≃ 1 -5/(3π δ) in the BCS regime as a constraint on the α i , a fit of our data for δ < 0.2 with (8) leads to the α i coefficients gathered in Table S3.

Second, on the BEC side δ > 0, we capture the behavior in the BEC limit (Eq.( 5) in the paper with the additional log term) using the following formula:

h BEC S ( δ) = β 1 + β 2 δ + β 3 δ log(1 + δ) + β 4 δ 2 + β 5 δ 3 1 + β 6 δ 2 . (9)
The β i being contrained by the values of ξ s and ζ previously determined from the BCS side and by the exactly known coefficients in (5), we fit our data for δ > -0.2 with a single free parameter in [START_REF] Lee | Many-Body Problem in Quantum Mechanics and Quantum Statistical Mechanics[END_REF] and obtain the values of β i in Table S3.

The three-body B parameter

For a weakly interacting Bose-Einstein condensate, the ground state energy can be written as [START_REF] Wu | Ground State of a Bose System of Hard Spheres[END_REF][START_REF] Braaten | Dilute Bose-Einstein Condensate with Large Scattering Length[END_REF]:

E = N 2πh 2 a m n 1 + 128 15 √ π √ na 3 + 8 3 (4π -3 √ 3)na 3 (log(na 3 ) + B) + ... , (10)
The first term is the mean-field contribution, the second is the Lee-Huang-Yang correction. The third term involves the three-body problem and was first calculated in [START_REF] Wu | Ground State of a Bose System of Hard Spheres[END_REF]. It was shown in [START_REF] Leyronas | Superfluid Equation of State of Dilute Composite Bosons[END_REF] that this equation of state is rigorously valid for composite bosons up to the LHY term by substracting to the energy the binding energy of the molecules, replacing a by the dimer-dimer scattering length a dd , m by the dimer mass and considering n as the dimer density. The analogy with point-like bosons suggests to write the next term for a Bose-Einstein condensate of dimers as 8 3 (4π -3 √ 3)na 3 dd (log(na 3 dd ) + B) . The coefficient before the log term is given by the low-momenta physics [START_REF] Wu | Ground State of a Bose System of Hard Spheres[END_REF] where the composite nature of the dimers should not play a role.

The coefficient B also involves the three-boson problem at high momenta, unveiling the inner structure of the dimers. For elementary bosons, B depends on the microscopic details of the interaction potential between bosons and involves Efimov physics [START_REF] Braaten | Dilute Bose-Einstein Condensate with Large Scattering Length[END_REF]. On the other hand, the internal structure of the dimers is completely characterized by the scattering length a. Hence, we could expect the three-dimer problem to be solely described by a as well. B would take a universal value, i.e. independent on the fermionic species. Using h BEC S ( δ), we deduce the effective three-body parameter for composite bosons B = 7(1). Interestingly, this value is close to the bosonic hard-sphere calculation B = 8.5 [START_REF] Tan | Three-boson problem at low energy and implications for dilute Bose-Einstein condensates[END_REF] and to the value B ≈ 7.2 for point-like bosons with large scattering length [START_REF] Braaten | Dilute Bose-Einstein Condensate with Large Scattering Length[END_REF].

Derivation of the pressure formula (2)

We consider a mixture of species i, of mass m i , trapped in a harmonic trap of transverse frequencies ω ri . Using Gibbs-Duhem relation at a constant temperature T , dP = i n i dµ i , then

i m i ω 2 ri 2π n i = i m i ω 2 ri 2π dxdy ∂P ∂µ i = i dµ i ∂P ∂µ i ,
where we have used local density approximation (µ i (r) = µ 0 i -V (r)) to convert the integral over space to an integral on the chemical potentials. The integral is straightforward and yields

P (µ iz , T ) = 1 2π i m i ω 2 ri n i (z). (11)
superfluid phase clearly indicating that T < T c . In the normal phase, finite temperature corrections are expected to be of the order of (T /T F ) 2 . As T < T c ≪ T F in the BCS regime, they are expected to be negligible. In addition, we observe an abrupt change of slope at the normal/superfluid boundary indicating the presence of a first-order phase transition. Consequently, this gives an upper bound T < T tri where T tri is the temperature of the tri-critical point at which the phase transition becomes of second order. Finite-temperature corrections are expected to be dominated by thermal excitations of Bogoliubov-Anderson phonons. From the superfluid equation of state determined from our data we compute the speed of sound c = n/m ∂µ/∂n as a function of interaction strength, and the finite-temperature correction to the pressure for T = T tri predicted by a mean-field theory (S4, S5, S6). We thus infer that the systematic error on h S due to a finite temperature is less than 2 % for our data on the BCS side of the resonance.

Link between the critical imbalance η c and the pairing gap ∆

An intriguing link exists between the measurements of η c (δ 1 ) and the superfluid pairing gap ∆. Indeed, for δ 1 < 0.6 we have observed that the superfluid is unpolarized. An unpolarized superfluid becomes unstable as soon as flipping the spin of a minority atom decreases the grandpotential Ω = Eµ 1 N 1µ 2 N 2 . After the spin-flip, a pair is broken and releases an energy equals to ∆E = 2∆. Thus the total grand-potential difference is ∆Ω = µ 2µ 1 + 2∆. The superfluid is stable against infinitesimal polarization as long as ∆Ω > 0, hence the minority chemical potential µ 2 must be lower than µ -∆, where µ = (µ 1 + µ 2 )/2. This argument yields lower bounds on the values of η c : η c > (1 -∆/µ)/(1 + ∆/µ) (empty green squares in the inset of Fig. 4). We observe that our η c data is very close to these bounds, calculated from previous experimental determinations of the gap from [START_REF] Schirotzek | Determination of the Superfluid Gap in Atomic Fermi Gases by Quasiparticle Spectroscopy[END_REF]. As initially pointed out in (S7) for the unitary gas, this suggests that in the investigated range the superfluid to normal transition is driven by single-particle excitations of the superfluid.

S

  and h BEC S are respectively represented in blue and red solid lines in Fig.2and represent our best estimate of the EoS in the whole BEC-BCS crossover.

Figure 1 :

 1 Figure 1: h(δ 1 , η) of a zero-temperature two-component Fermi gas in the BEC-BCS crossover. (A): Samples of the data for different magnetic fields. The black (red) data points correspond to the normal (superfluid) phase, and are separated at η c (δ 1 ) by a clear kink in the local slope of h.Solid black lines are the predictions of the polaron ideal gas model, Eq[START_REF]Materials and Methods are available as supporting material on Science Online[END_REF]. The scattering length corresponding to each curve is (from left to right) : (1.7, 3.4, ∞, -1.3) in units of 10 4 a 0 , where a 0 is the Bohr radius. (B): h(δ 1 , η). The black dots are data recorded for each magnetic field value (as in Fig.1a). The black lines correspond to the parametric curves (δ 1 (η), η) scanned by the density inhomogeneity in the harmonic trap[START_REF]Materials and Methods are available as supporting material on Science Online[END_REF]. The red line is A(δ 1 ), the frontier between the fully polarized (FP) ideal gas h = 1 and the normal partially polarized (PP) phase. The green line is η c (δ 1 ) marking the phase transition between the normal and superfluid (S) phases. The surface is the parametrization of h(δ 1 , η) given in the text.

Figure 2 :Figure 3 : 1 ΗFigure 4 :

 2314 Figure 2: h S ( δ) of the T = 0 balanced superfluid in the BEC-BCS crossover (black dots). The blue solid line is the fit h BCS S ( δ) on the BCS side of the resonance, the red solid line is the fit h BEC S ( δ) on the BEC side (see text). The dotted (dashed) red line is the mean-field (Lee-Huang-Yang) theory (33). Inset: Zoom on the BCS side. The dotted (resp. dashed) blue line is the EoS including the mean-field (resp. Lee-Yang) term. The systematic uncertainties on the x and y-axis are about 5 %. The errors bars represent the standard deviation of the statistical uncertainty.

  α

FFig. S3 .

 S3 Fig. S3. Canonical-Grand Canonical Correspondence in the BEC-BCS crossover. (a) Canonical natural variable 1/k F a as a function of the grand-canonical natural variable δ. (b) Chemical potential in the canonical ensemble (black solid line). For comparison, mean-field BCS theory is the dashed blue line, the binding energy, the dashed red line.

  , C. Mora, Y. Castin, F. Werner, R. Combescot, J. Dalibard, F. Gerbier, G. Shlyapnikov for stimulating discussions and critical comments on the manuscript.

	We would like to thank S. Giorgini, P. Drummond, J. Drut, R. Haussmann and W. Zwerger
	for kindly providing us with their data. We acknowledge support from ERC, ESF (Euro-
	quam), SCALA, ANR FABIOLA, Région Ile de France (IFRAF), and Institut Universitaire
	de France.
	Supporting Online Material
	www.sciencemag.org
	Materials and Methods
	Figures S1, S2, S3, S4
	References

Table S2 .

 S2 Padé-type approximants coefficients α i and β i fitted from our data.

		1	α 2	α 3	α 4
		-1.137 0.533 -0.606 0.141
	β 1	β 2	β 3	β 4	β 5	β 6
	3.78 8.22	8.22 -4.21 3.65 0.186

Supporting Online Material for

The Equation of State of a Low-Temperature Fermi Gas with Tunable Interactions N. Navon, S. Nascimbène, F. Chevy, C. Salomon

Materials and Methods

Extracting the EoS of the uniform gas from the density profiles of trapped clouds

In this section, we provide additional insight on the reconstruction of the EoS of the uniform gas. Several steps are required to deduce the EoS from the doubly-integrated profiles. First, the determination of (δ 1 , η) along the z axis requires a precise calibration of ω z and the knowledge of the central chemical potentials µ 0 i . The axial confinement is produced by a magnetic field curvature, which ensures very good reproducibility. ω z is calibrated (to < 1%) by measuring the frequency of the axial center of mass dipole mode. µ 0 1 is determined using the fully polarized outer rim of the cloud. In this region the density profile is fitted by a Thomas-Fermi formula

h is then directly obtained by taking the ratio (n 1 (z) + n 2 (z))/α(1z 2 /R 2 1 ) 5/2 , thus avoiding the measurement of the radial frequency ω r and cancelling many systematic effects such as imperfect atom counting [START_REF] Shin | Determination of the equation of state of a polarized Fermi gas at unitarity[END_REF][START_REF] Nascimbene | Exploring the Thermodynamics of a Universal Fermi Gas[END_REF].

The determination of µ 0 2 requires some information on the EoS. We use the outer radius of the minority component as a reference. Indeed, in the limit of vanishing minority spin density, the minority chemical potential is equal to the one of a single minority atom immersed in a

Fermi sea of majority atoms, the so-called polaron problem. All advanced calculations [START_REF] Pilati | Phase Separation in a Polarized Fermi Gas at Zero Temperature[END_REF][START_REF] Combescot | Normal State of Highly Polarized Fermi Gases: Simple Many-Body Approaches[END_REF][START_REF] Prokof'ev | Fermi-polaron problem: Diagrammatic Monte Carlo method for divergent sign-alternating series[END_REF] and the measurement in (28) agree on the value of the chemical potential ratio A(δ 1 ) = µ 2 /µ 1 when n 2 → 0, which is plotted in the inset of Fig. 4. µ 0 2 is then fitted on each image so that η = µ 2z /µ 1z is equal to A(δ 1 (µ 1z )) at the point z where the minority density vanishes.

Eq (2) of the main text is a special case of Eq [START_REF] Baker | Singularity Structure of the Perturbation Series for the Ground-State Energy of a Many-Fermion System[END_REF] for two spin components of equal masses confined by the same trapping potential.

Critical Polarization for a Trapped Gas

Here we compare our measurements of the chemical potential imbalance for the normal/superfluid transition to previous works (S1, S2, [START_REF] Nascimbene | Collective Oscillations of an Imbalanced Fermi Gas: Axial Compression Modes and Polaron Effective Mass[END_REF][START_REF] Shin | Observation of Phase Separation in a Strongly-Interacting Imbalanced Fermi Gas[END_REF], where this phase transition was characterized by measuring the maximum polarization P c above which the superfluid is no longer present. We define

, where N i is the total atom number for the species i. Modeling the normal phase using

we calculate the atom number N i by integrating the densities n i = ∂P/∂µ i over the trap:

The critical polarization is obtained when the transition normal to superfluid occurs at the bottom of the trap, i.e. for µ 0 2 /µ 0 1 = η c (δ 0 1 ), where δ 0 1 = h/ 2mµ 0 1 a. η c (δ 1 ) is provided by the solid red line in Fig. 3 (see text). In Fig. S1, we plot P c as a function of 1/k F a, where

, providing a direct comparison with previous experimental data (S1, S2, 7, 8). Our results are in excellent agreement with (S1, 7, 8) but not with (S2), where the partially polarized phase is absent. As the atom numbers and trap anisotropy in our experiment are close to those in (S2), this discrepancy remains to be understood.

Grand Canonical-Canonical Correspondence

In this section, we explicit the conversion formulas between the grand-canonical and canonical ensembles. We recall that the energy density E = E/V is linked to the pressure by the usual

Legendre transform E = -P + µn where µ = µ 1 +µ 2 2 is the chemical potential in the fully paired superfluid and n is the total atomic density. Combining this relationship with the Gibbs-Duhem relation dP = ndµ and using the proper normalization for the dimensionless function h(δ), one finds the two formulas:

Eq [START_REF] Lobo | Pair correlations of an expanding superfluid Fermi gas[END_REF] relates the natural variables of both ensembles, while Eq [START_REF] Tan | Large momentum part of a strongly correlated Fermi gas[END_REF] provides the canonical EoS. The canonical EoS (displayed in Fig. 3b) is then simply obtained through a parametric plot of (x(δ), ξ(δ)) using the Padé-type fitting functions for h(δ). Another familiar quantity that can be calculated from our fits is the chemical potential in the BEC-BCS crossover:

where θ(δ) is the Heaviside step function.

Thermometry

We perform thermometry of our imbalanced gases on the fully polarized outer shell of the cloud, which is non-interacting. We thus fit the wings of the density profiles with finite-temperature Thomas-Fermi distributions (S3). Using this technique, we find a temperature of T /T F = 0.03(3) at the unitary limit and on the BEC side of the resonance, a temperature much smaller than the critical temperature for superfluidity T c in this interaction range, justifying the T = 0 assumption.

On the BCS side, the small size of the fully polarized region renders this method inaccurate and gives an experimental upper bound T /T F < 0.13. However, the observation of a wide superfluid plateau on the doubly-integrated density difference is a signature of an unpolarized 7)), and Rice (empty black square (S2)). In the gray region P > P c , the superfluid phase is absent. 0


Damien Poirier
email: damien.poirier@orange-ftgroup.com

Isabelle Tellier
email: isabelle.tellier@univ-orleans.fr

Françoise Fessant
email: francoise.fessant@orange-ftgroup.com

Julien Schluth
email: julien.schluth@gmail.com

Towards Text-Based Recommendations

Keywords: Opinion classification, Recommender systems, User Generated Content, Collaborative filtering

come

INTRODUCTION

The aim of recommender systems is to help users find items that they would appreciate from large Web-based catalogues. Items can be of any type such as movies, music, books, webpages, etc.. To do so, recommender systems use information about past user preferences in order to select items that could be interesting for them. The main challenge to build an efficient recommender system is to collect enough data to "initialize" the recommendation process. As a matter of fact, the Web is now a huge reservoir of information that is continuously growing, especially thanks to User Generated Content, appeared with the explosion of the Web 2.0. The great majority of this content is composed of unstructured textual data. The idea developped in this work is that it is possible to collect data from texts found on the Web. To fill the gap between opinion texts and recommendation, Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. RIAO'10, 2010, Paris, France. Copyright CID we need to refer to the growing field of opinion mining [START_REF] Pang | Opinion mining and sentiment analysis[END_REF]. In this article, we will try to provide ratings inferred from opinion texts to feed a recommender system. To evaluate our approach, we choose the well-studied domain of recommendation about movies.

PROCESSING CHAIN

The first step of this work concerns the analyzis of textual data. It consists in obtaining a user-item-rating matrix. The choice of texts is then important. Each text has to contain an opinion about an identified item and the author of the text has to be known too. Once a large number of user-itemreview triplets are stocked, the opinion classification task can be applied in order to infer a rating for each review. The second task consists in generating recommendations. After building the user-item-rating matrix, collaborative filtering can be applied and recommendations can be achieved. For this step, the recommender system builds a similarity matrix of users or items thanks to the user-item-rating matrix. We decided to test the process chain on movies recommendation. It is a very common application domain in the recommender systems field and some benchmarks are available. In order to test the process chain, we took three corpora for our experiments. The first and second one are textual corpora while the third one is a corpus of ratings.

The corpus of ratings, called Corpus 3, is used to evaluate the quality of recommendation, which is the last test of the experiments. This Corpus 3 is a well-known corpus in the field of Recommender Systems. It is the set of logs made available by Netflix 1 for the Netflix Prize, a challenge created in order to improve the collaborative filtering algorithms for an online DVD-rental service. It contains ratings put on Netflix by 400,000 users, that is approximately 100,000,000 user-item-rating triples. Corpus 2 comes from the community website Flixster 2 . Flixter is a community space where a lot of movie fans meet and share their tastes and preferences about cinema. They can create a personnal page where they put, among other things, ratings and reviews about films. This corpus, which is dedicated to the test of the opinion classification task, is composed of approximately 3,330,000 user-item-rate-review quadruples where reviews were written by almost 100,000 users and speak on about 10,500 movies. All of these 10,500 movies are also present in Corpus 3. Corpus 1 also comes from Flixster but it has no intersection with Corpus 2. It contains approximately 175,000 user-item-rate-review quadruples. It is used during the learning step of the opinion classification.

Preprocessings applied to textual corpora (Corpus 1 and Corpus 2 ) are few and light. The only treatments done consists in putting every letter in lowercase and deleting words with fewer than three occurences in Corpus 1. Ponctuation, word stretching, repetitions, misspellings, etc. are kept as they are. For the experiments, each text is represented as a vector of words frequencies.

FIRST STEP: OPINION CLASSIFICATION (FROM TEXTS TO RATINGS)

The aim of this first step is to infer ratings from user reviews in order to obtain user-item-rating triples instead of user-item-review triples. This task corresponds to opinion classification. Two main approaches can be used [START_REF] Pang | Opinion mining and sentiment analysis[END_REF]: semantic methods which broadly consist in selecting opinion vocabulary and using it to determine texts' polarities, and statistic methods which consist in using machine learning tools. After different tries, we adopt a machine learning approach, not only for its better results, but also for the fact that it is fully automatic. We chose to use a Selective Naive Bayes (SNB) method [START_REF] Boullé | Compression-based averaging of selective naive Bayes classifiers[END_REF]. Classification was done on two classes : positive reviews and negative reviews. Fscore calculated on the obtained confusion matrix (table 1) is 0,71 which is not really high. This score seems to be due to the nature of the texts studied : short size, misspellings, etc. These results allow to build user-item-rating matrix required for collaboratif filtering.

SECOND STEP: COLLABORATIVE FIL-TERING (FROM RATINGS TO RECOM-MENDATIONS)

This step consists in doing recommendations thanks to the results obtained with the first step. As a matter of fact, these results constitute a user-item-rating matrix which is exploitable by a recommender system based on a collaborative filtering technique [START_REF] Candillier | Designing specific weighted similarity measures to improve collaborative filtering systems[END_REF]. The learning step of this technique consists in building similarity tables of users or items.

The tool used for this experiment defines similarity between items. To do that, two measures are combined in order to obtain good results. The first measure is the Pearson correlation. It corresponds to the Cosine of deviations from the mean. For this similarity measure only the set of attributes in common between two vectors is considered. The second measure is Jaccard similarity. It measures the overlap that two vectors share with their attributes. In order to compare the different results, we compute the Root Mean Squared Error (RMSE), which is the most often used measure in the field of recommender systems. The RMSE measures the error rates between real and predicted ratings. It is expected to be as small as possible. Good recommender systems have a RMSE of about 0.9. The Netflix challenge was to reach a RMSE of 0.85 with their data, and this purpose required huge computations and efforts to be achieved. The recommender system described here, trained with Netflix data, obtains a RMSE of 0.91. This value will be our reference. We will compare it with the RMSE obtained for predicted ratings inferred from data of other origins. The

CONCLUSION

We propose a method to do recommendations from unstructured textual data in order to overcome the cold start problem. The cold start happens when the number of users registered in the service is small. Even if the idea of combining a classification step and a recommendation one is not new, this work is the first one, to our knowlege, to achieve the whole process at a large scale. It opens new perspectives for both domains. For the classification field, it validates the common intuition that opinion mining could serve as a pre-treatment for many other tasks. Recommendation is a very hot topic, and every possible way to fill a matrix of ratings without asking users to explicitely provide them is valuable. The remaining problem is that, to learn a reliable classifier, some ratings at least are necessary. But the number of examples required by a machine learning system to build a good classifier is smaller than the number of examples required by a recommender system to provide reliable recommendations. So, when ratings are harder to obtain than texts, the whole process worth being applied. For the recommendation field, our experiments first show that it is possible to feed a recommendation system with ratings coming from a completely different website. The results are not as good as with local ratings but still far better than random ones. And, if "foreign ratings" are not even available, it now remains the possibility to infer them from texts. Ratings are difficult to collect, as they are not spontaneoulsly given by users. On the contrary, blogs, forums, social networks... are quasi-infinite sources of freely available spontaneously written texts. Most of these texts very often carry opinions on subjects easy to identify. So, a large avenue of possible work seems to open.

Table 1 :

 1 Results of two classes classification

	%	NEG	POS
	$NEG 79,08 36,78
	$POS	20,92 63,22

table 2

 2

	pro-

Table 2 :

 2 Experiments' results

www.netflix.com

www.flixster.com