An Object-Oriented Event-Driven Architecture
for the VLT Telescope Control Software

G.Chiozzi
European Southern Observatory (ESO)


The control software for Very Large Telescope follows the "Standard Architecture" and is distributed over several workstations, that provide high-level and coordination services, and VME based systems, for real-time control purposes. The communication between all the processes running on these machines is based on a message system and a distributed hierarchical database.

This architecture implies that all the applications, but in particular the coordination processes running at workstation level, must be ready at any moment to accept and handle a lot of different kinds of messages, such as new commands, alarms, notifications from the controlled sub-components.

As a consequence the design and the implementation of the coordination applications has an high degree of complexity, with an obvious impact on development and debugging time.

The adoption of object-oriented design techniques and the support of an application framework for the implementation of Event-Driven systems reduces considerably this complexity. The framework, based over a set of C++ classes, provides a general application skeleton and services to automatically receive and analyze events. These are then dispatched to a specialized object, designed to handle a specific set of events without having to take into account other parallel but independent conditions.

Given these services, the design and implementation of an application consists of the design of a set of smaller and independent objects specialized in the handling of specific events, such as a command, a change in some database values, the tic of a periodic timer...

Since all the run-time and configuration data of the whole VLT is stored in a distributed real-time database, there is a strict coupling between the structure of the database and the applications. As a consequence the real-time database, although based on the hierarchical model, has been structured to provide support for object-oriented design and implementation.

This architectural approach has a number of advantages both in the design/development and maintenance phases; in particular it enforces spontaneously the respect of standards and provides a means of sharing and reusing code in the VLT software team.