The present invention relates to the field of human-computer interaction, and in particular to user interface modeling.
The construction and maintenance of user interfaces is becoming a central problem for large, complex systems. User interfaces are the bridge between applications and users, and, as a result, have to cope with the complexities of both. With the advent of new technologies and user-centered concerns, the user interface portion of interactive systems is becoming increasingly large and costly.
Faster and more capable machines and networks are providing users with more functionalities and more information, but at the same time are overwhelming them with more commands and options. User interfaces need to become more intelligent to assist users in performing their tasks, to be easier and more intuitive to learn, and to allow user customization so they can be tailored to the specific user needs and preferences.
Applications that scale across a wide range of devices need to provide users with the same or a scaled down version of the workstation functionality. New modalities such as speech, natural language, and hand-writing recognition are maturing, and may need to be incorporated into the user interface. Modern interaction techniques, such as direct manipulation or dynamic queries, require a high degree of parallelism in the user interface.
All these factors, and more, make user interfaces hard to design and implement. Accordingly, many surveys show that the user interface portion of a software system accounts for a significant portion of the overall system development effort. For example, one survey conducted over a wide range of projects, platforms, and development tools reports that the percentage of code size and design, implementation, and maintenance times that are devoted to the user interface is about 30-50% in a typical software project.
Dealing with the ever-increasing difficulties of user interface development requires a new approach—one that is not based on programming. Different methods have been proposed in the past for specifying user interfaces without programming, including: algebraic specification, grammar-based languages, transition diagrams, rule-based systems, and specification by demonstration.
However, none of these methods has been widely adopted. Development organizations resist formal specifications because they are difficult to understand, are not expressive enough, are usually not executable, and therefore, are viewed as unnecessary additional work. As a result, the common practice for user interface development is still predominantly based on programming.