We present the concept and design of the interaction between users and the LUCIFER Control Software Package.
The necessary functionality that must be provided to a user depends on and differs greatly for the different user
types (i.e., engineers and observers). While engineers want total control over every service provided by the
software system, observers are typically only interested in a fault tolerant and efficient user interface that helps
them to carry out their observations in the best possible way during the night. To provide the functionality
engineers need, direct access to a service is necessary. This may harbor a possible threat to the instrument in
the case of a faulty operation by the engineer, but is the only way to test every unit during integration and
commissioning of the instrument, and for service time later on. The observer on the other hand should only have
indirect access to the instrument, controlled by an instrument manager service that ensures the necessary safety
checks so that no harm can be done to the instrument.
Our design of the user interaction provides such an approach on a level that is transparent to any interaction
component regardless of interface type (i.e., textual or graphical). Using the interface and inheritance concepts
of the Java Programming Language and its tools to create graphical user interfaces, it is possible to provide the
necessary level of flexibility for the different user types on one side, while ensuring maximum reusability of code
on the other side.