Distributed Systems Research Group of Las Palmas

 J. Miranda, F. Guerra
jmiranda@cma.ulpgc.es   fguerra@cma.ulpgc.es


Drago is an experimental language developed to support the implementation of cooperative and fault-tolerant static distributed applications. Drago's programming model is based on the groups paradigm, and supports two group abstractions: replicated group abstraction, which gives support for the implementation of fault-tolerant applications by means of modular redundancy, and cooperative group abstraction, which supports the implementation of  a set of distributed members that cooperate in order to achieve a common goal. Drago provides these abstractions by means of group specifications. A group specification contains declarations of constants, types, exceptions and remote entry points. Every member of a group has available all the declarations of the corresponding group specification, and must provide all the remote services specified in it (by means of remote entries).

Group Remote Rendezvous is the only way remote communication and synchronization is provided by Drago. It is an extension to Ada~83 rendezvous which must be accepted by all the living members of the specified group. Drago allows the members of cooperative groups to communicate internally (by means of intragroup communication) and provides them a failure notification facility.

The agent is the unit of distribution of Drago. An agent is a special kind of abstract object: it has internal state (not directly accesible from outside the agent) and special remote operations (specified by means of remote entries) that can be remotely called. The agent may have local operations (procedures, functions and local entries) and initialization code. Each agent resides at a single node of the network, although several agents may reside at the same node. A Drago distributed program is composed of a number of agents residing at a number of nodes. Drago provides two kind of agents: replicated agents and cooperative agents. The main difference between them is that replicated agents can not have internal tasks, while cooperative agents can. Replicated agents can only be members of replicated groups, and cooperative agents can only be members of cooperative groups.


We are working on the integration of Drago and GNAT. GNAT is an Ada~95 compiler distributed under the GNU Public License. We are modifying the GNAT sources in order to integrate the Drago language into GNAT. We are near to finish the full integration of Drago into the GNAT 3.10p distribution.

We have written two documents where we explain the internal structure of GNAT. In the first document we describe the GNAT frontend, and how to modify it in order to experiment with Ada extensions. We also describe how we have modified the GNAT frontend to integrate Drago into the GNAT frontend. The Spanish version of this document  is available in this server. In the second document (available in English) we describe the GNAT Run-Time and we describe how we have modified it to integrate Drago into the GNAT Run-Time. It is also available a Linux binary distribution.

Available Resources:


Miranda, J., Alvarez, A., Guerra, F. and Arevalo, S.
Drago: A Language for Programming Fault-Tolerant and Cooperative Distributed Applications.
Reference Manual.  This document is available in spanish or english. In both versions the frontpage and the full document are separated in two different files.
    - English Version: The frontpage and the full document.
    - Spanish Version: The frontpage and the full document.

Miranda, J., Alvarez, A., Arevalo, S. and  Guerra, F.
Drago: An Ada Extension to Program Fault-Tolerant Distributed Applications.
Reliable Software Technologies. Ada-Europe'96. 1996. pp.235-246.

Guerra, F. and Miranda, J. and Alvarez, A. and Arevalo, S.
An Ada Library to Program Fault-Tolerant Distributed Applications.
Reliable Software Technologies. Ada-Europe'97. 1997. pp.230-243.

Miranda, J., Guerra, F., Martin, J. and Gonzalez, A.
How to Modify the GNAT Frontend to Experiment with Ada Extensions.
Reliable Software Technologies. Ada-Europe'99. 1999.

Martin, J., Miranda, J., Guerra, F., Gonzalez, A.
Estudio del frontal de GNAT: Incorporacion de Drago (in Spanish).

Miranda, J., Guerra, F., Gonzalez, A., Martin, J.
How to modify the GNAT Run Time to experiment with Ada extensions. (ISBN: 84-87526-68-3)

Last update: September 24, 2001.