User Interface Management System
UIMSs (User Interface Management Systems) focus on the runtime problems of interface execution. A UIMS is a high-level interactive software application that facilitates the efficient development of high-quality user interfaces. A User Interface Management System should not be thought of as a system but rather a software architecture. A large number of software architectures are based on the assumption that the functionality and the user interface of a software application are two separate concerns that can be dealt with in isolation.
A UIMS mediates the interaction between the end-user of an application and the application code itself. This results in a separation of the responsibility between the UIMS and the application, with the application being responsible for carrying out the "work" while the UIMS handles all details of communication with the end-user.
A number of different conceptual architectures for UIMSs have been proposed. A User Interface Design Environment (UIDE) is an integrated environment that offers facilities for designing the interface, not necessarily for managing the interaction at runtime. This environment allows application programmers and interface designers to create interfaces without programming and without having to learn the details of underlying toolkits. A typical UIMS requires the designer to focus on the syntactic and lexical levels of design, such as command names, screen and icon design, menu organization, sequencing rules, and interaction techniques. Through UIDEs, the designer creates an interface for an application by describing the application at the semantic level, in terms of its functionality, using objects and operations. In practice, a UIDE often offers UIMS facilities, and systems that claim to be UIMSs offer more facilities than simply runtime management.
Such user interface architectures have been proven useful but also introduce problems. In systems with a high degree of interaction and semantic feedback (e.g. in direct manipulation interfaces), the boundary between application and user interface is difficult or impossible to maintain. In direct manipulation interfaces, the user interface displays the 'intestines' or the very semantics of the application, with which the user interacts in a direct and immediate way. It thus becomes very problematic to decide if these intestines should be handled by the User Interface or in the application itself.