Abstract :
There is a consensus among designers on the need for a rigorous separation of the functionality of a computer system from its user interface. The principle remains sterile unless some way is provided to put it into practice. It is argued that designers of the interface between users and computer systems need a toolkit of abstractions that embody human factors knowledge while automatically executing the low-level details of the interaction. We believe that the notion of a user interface toolkit constitutes a reasonable way to enforce this separation. Given this approach, the next goal is the definition of a toolkit that is useful. The author points at some general benefits resulting from the toolkit abstractions. In particular, the user can avoid "communication deadlocks" by running several applications simultaneously; or he can obtain distinct views of an object through the external view mechanism; or, as a last example, he can interact by means of the dialog socket with the various applications on the workstation in a consistent way through a unique (refinable) dialog-handler (or a dialog-handler of his choice). Therefore, the proposed abstractions improve the quality of user interfaces when viewed in the large. Conversely, when viewed in the small, these abstractions cannot be guaranteed 100% "user-friendly": each class of users and each class of tasks have specific requirements that are to be satisfied on a case-by-case basis.