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.