Inria Sophia logo

ALFred Documentation Overview

  1. Short overview of ALFred
  2. User's documentation
  3. Programmer's documentation

Overview of ALFred

The ALFred compiler proposes a framework for developping distributed applications within increasingly heterogeneous networking environments (Internet), providing them automatically with efficient communication support. The ALFred compiler is written in Java and uses both Java and the Esterel synchronous langage for the input specification. This means that ALFred will run on any platform that supports Java and Esterel.

The formal approach using Esterel allows to apply various verification and optimization techniques to the automata of the application and its communication sub-system ( Xeve ). Besides it simplifies the software development life cycle (in the sense that what we specify should correspond exactly to what we finally execute) and provides readable and flexible programming reducing the code maintenance task.

The automatic approach consists in integrating the communication sub-system from a high level specification. According to the type of transmission desired (reliable, in-sequence, real-time, etc), appropriate protocols are integrated. Basicly these protocols are made of a set of modules that describe protocol mechanisms. These protocol mechanisms can be selected in an ever growing library and contribute to the following functionalities: error detection and correction, flow control, congestion control and in-sequence delivery.

In this documentation we will refer to the user when speaking of an end user who develops a distributed application without necessarly being an expert in communication protocols, and we will refer to the programmer when speaking of a protocol developper who wants to add new protocol mechanisms to the ALFred library in order to meat new application requirements.

The ALFred compiler has been developped during the HIPPARCH project (High Perfomance Protocol Architecture), which aims at investigating novel architectures for high performance communication protocols based on the Application Level Framing (ALF) concept. The ALF concept was introduced in a seminal paper by Clark and Tennenhouse in 1990. The ALF principle states that information should be packetized by the application into Application Data Units (ADUs), each of which should be at the same time a unit of transmission, a unit of control, and a unit of processing. The application is then able to receive the data out of sequence, sparing time. For example, an image server which transmit well identified blocs of an image, can display each bloc out of order and independantly from one another instead of remaining in idle state when some bloc is out of sequence.

ALFred is flexible enough to contribute to a platform to study new protocol implementation techniques. This protocol compiler generates the appropriate communication module of a given distributed application, taking into account the application and network requirements. The control part of the application is specified using Esterel while the data processing part is written in Java. The specific QoS of the application can be entered within an Emacs and/or Java-AWT menu. These application requirements are then used by the compiler to select the appropriate protocol mechanisms available in an Esterel library. Finally, all these Esterel specifications are compiled into an integrated Java specification which is the target langage. To achieve a more efficient execution scheme we could add some JIT stuff to the process ...

This version of the ALFred compiler is based on previous work synthetised in a JSAC'98 article. It naturally provides a refined mapping between QoS requirements and protocol mechanisms.

User's Documentation

You will find here the basics on how to install and use the ALFred compiler. As an illustration we give the description of the JukeBox application which is a client/server application that has been specified in ALFred.
  1. Installation of ALFred.
  2. Architecture of ALFred.
  3. Principal Steps to develop a distributed application in ALFred.
  4. Tutorial.
    1. The implementation steps.
    2. The JukeBox application.

Programmer's Documentation

  1. ALFred internal design .
  2. API .
  3. Future Work .