ACS Application Framework

The common software has to provide also an Application Framework allowing an easy implementation of a standard application (a skeleton application) with all essential features[RD01 - 5.1.1 Framework]. Inheritance and other mechanisms are used to enhance and extend the basic application according to specific application needs.

The application framework enforces common coding solutions and adherence to predefined standards.

The application framework shall be implemented as a set of classes that provide:

At the very basic level, the Component and Characteristic Component classes and design patterns, together with the services provided by ACS, constitute the core of the Framework.

Each physical sub-system is controlled by a Master Component that implements a standard State Machine and standard commands.

The Master Component is available in Java because it is assumed that it is an high level coordinating Component. It is used by higher level administration applications to assess and control the global state of a subsystem.

The Master Component implements a hierarchical state machine and sub-classes can implement sub-states according to the application needs, keeping a standard top level state machine.

A generic State Machine Component is used for the implementation of the Master Component and can be made available for applications that need to design their own Hierarchical State Machines (Partially implemented, but not generally available).

Plenty of examples and coding guidelines define how applications are build and assembled from the basic elements and describe basic protocols for command handling, to ensure for example command concurrence and response time.

ALMA subsystems (following these guidelines and what defined in the high level ALMA architecture) have provided an implementation of typical designed patterns and code reviews have allowed cleaning up the implementation. For example Control has implemented base Component classes used for the implementation of all control device Components.

In order to provide with ACS a complete application framework usable to write completely new applications, the implementation of ALMA subsystems should be distilled to extract higher level framework building blocks. This work is not foreseen for ALMA, since the core architecture of all subsystems is already in place by now.