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:
- Skeleton for standard application, with standard commands
and states
- Implementation of typical communication Design Patterns
- Implementation of standard startup/shutdown/configuration
procedures
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).
- State Machines are designed in UML
- The Open ArchitectureWare [RD39]
generator framework is used to generate Java code implementing the state machine
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.