The purpose of this paper is to illustrate an approach to the design of graphically interactive systems and to point to some outstanding difficulties. The two key components of this approach are the use of declarative languages to specify the non-procedural parts of systems formally, and the use of such languages to implement mappings from one representation of information to another. Syntax and data structure definitions are two common applications for declarative languages and menu to command translation is a common application of information mapping controlled by a declarative language.
It is important that the design of systems is organised round the user's view of the system. The most critical aspect of this will be the internal model of the user's data. This model may represent anything from 20 images to complex mathematical systems. The problem for the designer is to construct representations that are adequately powerful and flexible, but that can still be understood and manipulated by end users, and then to provide the end user with the means to perform these manipulations.
Each stage of the design must be accurately specified to allow subsequent stages to proceed smoothly. Formalisms are available for each of the five aspects of the design, but difficulties arise in this interfaces between the formalisms. A general and unified approach is still lacking.
Formal methods of describing data structures are well established and widely used. The greatest difficulty here is that different parts of the model often require different formalisms. For example, design rules are often best understood as procedural structures, while component catalogues are better understood as Codasyl or relational type data bases.
These are initially described in a natural language, then more formally with a mathematical notation and finally they are translated into an algorithmic language such as FORTRAN.
There are many ways of defining syntax. Transition networks are one of the most convenient as they are easily understood by end users and, though powerful, they are easy to implement.
Even the best command language can be difficult to use if the system does not help the user with clear responses. The responses must tell the user the result of performing the operations invoked by each command. Their design mirrors the design of the operations.
The final stags of designing the input side of the system is to specify how the various hardware keys and devices are to be mapped on to the command language. Generally this is fairly simple; however some command language can be difficult to map on to particular combinations of devices.
As for commands, the final stage of designing the output side of a system is to specify how each response is to be represented. This will vary from device to device and from context to context. The line styles, symbology, text fonts, sizes, etc, can all be defined in tables interpreted by the graphical output system. This allows the calls to the graphical system to be at a very high functional level and quite independent of detailed graphical representation which is generally device dependent.