GUSIP: Graphical User Interface Genreator for Application Programs

Human computer interaction is in the early stages of development as a science. Although the field contains principles that are sometimes contradictory, a concensus is emerging about the separation of the functionality of a computer system Ci.e applications) from the user interface. This separation frees the application programmer from low level details, so as to be able to concentrate on higher application specific aspects of the user interface. GUSIP CGraphical User Interface Generator for Application Programs) is an application support system which deals with the generation of graphical user interfaces .and allows the separation of an application from its graphical user interface. The graphical user interface can thus be designed independently of the main application. GUSIP also facilitates the tailoring of the graphical user interface of any application to its user needs by providing a graphics editor which allows the interface designer to design Cdraw) the screens using graphical editing facilities (drawing of geometric shapes, free form moving, copying, rotating, deleting, scaling · · .etcJ, The drawn graphical user interface is linked to

GUSIP also facilitates the tailoring of the graphical user interface of any application to its user needs by providing a graphics editor which allows the interface designer to design Cdraw) the screens using graphical editing facilities (drawing of geometric shapes, free form moving, copying, rotating, deleting, scaling · · .etcJ, The drawn graphical user interface is linked to -iii-the application by means of a run time module which handles the output of the editor and allows passing graphical data oetween the application and the display system. The comoination of these two modules allows the desiqn of several graphical user interfaces for an application, and the mooification of an existing graphical user interface.
The significance of GUSIP is that the above operations can be done without involving the application program, and hence the application programmers do not have to deal with tasks that are irrelevant to the functionalities of their application.
-iv- INTRODUCTION Computer hardware is becoming cheaper, and a great deal of emphasis is being placed on making software systems interact directly with human users. A major stumbling block, however, is the high cost of producing a quality user interface. This is because current understanding of human-computer interaction is extremely limited. After designing a user interface, one cannot know how it will perform. Therefore, one must accept, at the outset , the inevitable intertwining of specification, design and implementation. The design of the user interface then becomes an iterative process, with each iteration consisting of the three phases of design, implementation and evaluation. The introduction of graphics has complicated matters even more, graphic displays have become part of every computer system, which made the graphical user interface an essential part of any system intended to interact directly with users.
Traditionally, interactive graphical applications have been written using conventional programming languages, low level tools and often ad hoc techniques. It has been the goal of many research projects to produce tools which will automate the production of graphical user interfaces and thus make the production of quality graphical interfaces more economical. The result of those were systems that aim at making available to the interface designer tools which allow the design of a graphical user interface, that is, independent, at least to some extent, from the application program. Using SYNGRAPH in interactive graphics programs involves a lexical specification, a grammar specification, and an underlying data abstraction which is the semantics of the interaction. The lexical specification defines the kinds of inputs that the user interface will use. The grammatical specification -3 -

~)Universal
Commands (Commands that can be used throughout the system and perform the same way regardless of the type of object selected).
S)Consistency which asserts that mechanisms should be used in the same way whenever they occur, e.g the button which selects a character will also be used to select a -9 -graphic line.
6)Simplicity C"simple things are simple, complex things are possible").

7)
Modeless interaction: the interpretation of the keys does not depend on the mode or state the system is in.
B)User t~ilorability: STAR allows designers to tailor the appearance of the system according to user needs by providing many facilities for that.
The above implemented features make STAR one of the best user interfaces implemented, which probably explains the amount of time spent on its development, as STAR took about thirty man-years to be developed.
Reducing the amount of time required to develop a graphical user interface is one of the main goals of GUSIP, and GUSIP does that together with allowing for the separation of the user interface from the application programs, and the ability to develop user interfaces without involving application programmers.

THE USER INTERFACE
A user interface can be defined as all the user and machine behavior that is observable by an external observer, and can be thought of as consisting of an input language for the user, not necessary a textual language, an output language for the machine, and a protocol for interaction.
GUSIP, by itself, is actually a component of a more general project that is intended to allow the generation of general user interfaces for computerized applications.
The whole project consists of the following components: -A graphioal user interface generator.
-A menu based user interface generator.
-A Command language generator/interpreter.
-A help facility generator.
-A data validation and checking component. were needed for making the user interface for GUSIP, were faked in such a way as to maintain the integrity and ease of use of the system Cthe main reason was the fact that the other components were not ready when GUSIP was implemented).
The few menus that GUSIP uses are programmed and not generated by the menu constructor component. They were included just to facilitate the use of GUSIP itself.
Giving commands to GUSIP is done through using several keystrokes or mouse movements, as a command language was not generated for GUSIP using the command language generator, however, the way commands allows easy integration with a command are implemented language. Data validation was very limited in the design of GUSIP'S user interface, and in the graphical user interfaces which it generates. Also GUSIP itself, and hence the interfaces it generates did not have any help facilities as these are to be done by the Help Facility generator.

Terminology
Before describing the facilities that are provided by GUSIP and how they can be utilized. It is essential to clarify some of the main terms that are used in GUSIP . itself or in explaining GUSIP'S capabilities and operation. The following explains some of the key terms according to the context in which they will be used: Underlying both modules is the graphics package, which helps in the design of the data structure and in providing many of the graphics capabilities of GUSIP.
-20 - Every command is part of some segment.
commands outside of all segments.
There are no .
As it will be seen later; the data structures that GUSIP imposes on its graphical user interfaces, attribute greatly to many of the desirable properties exhibited by those interfaces. Interfacing to components of the whole user interface:  -s~ - The above three are the same for any letter. Where »operation» is the operation that the application intends to be performed on the records passed to GUSIP. This is coded as follows: 1: Input values for the record. The interface designer mainly uses the graphics editor of GUSIP, the basic operations used are: The following the basic facilities and a description of how they can be used . point on the screen and press Ml, then locate second point on the screen and press Ml.
2. Draw a line parallel to X-axis: press X then proceed as in 1 above.
-70 -3. Draw a line parallel to Y-axis: press y and proceed as in 1 above.

~.
Draw a rectangle: press f2 then locate the positions of two diagonally opposite corners by pressing Ml after locating each point.
S. Draw a circle: if the center and a point on the circumference are known then press f3 and locate these two points by pressing Ml as above, otherwise if it is desired to fit the circle between two points; press f~ then proceed .in the same way to ·1ocate the two points. Ml to start drawing, move the locator around the screen as desired, when finished press Ml again. 10. Press F7 then locate where to enter tne text by pressing Ml, enter the text then press Ml again when the text to be entered is exhausted.
In addition to the above, to start constructing a figure which might consists of many shapes, press 'f' and at the end of drawing that figure press 'sFl'.

Editing Figures:
To edit a figure press 'e' when the cursor is at -72 -that figure.
The figure will be outlined for a short time, after that all drawing or editing operations will be considered to affect shapes only in that figure shape to be moved, the shape is outlined for a short time, move the locator until the shape is at the desired position on screen then press Ml.
2. Copy: Press 'c' with the cursor at the shape to be copied, it will be outlined for a short time, move the locator until the shape is at the desired location and press Ml.
3. Scale: Pres 's' with the cursor at the shape to be scaled, it will be outlined for a short time, move the locator to the right to grow the shape and to the left to shrink until it reaches the required size, then press Ml.
-73 -~. Rotate: press 'r' with the cursor at the shape to be rotated, it will be outlined for a short period, then move the locator to rotate it until the desired orientation is achieved, then press Ml.
S. Delete: press 'd' with the cursor at the shape to be deleted, it will be outlined for a short period, press Ml and the shape will be deleted. When the screen is crowded with figures; it is advisable to move the shape or figure to be deleted, so as to isolate it from other and avoid any mix up.
Input Location: To determine input locations and associated variables; position the cursor at the location where data is intended to be entered and press I • I 1 I then enter the subscript of the variable in which the value entered at this input location will be stored.