Many different methods have been used to specify user interfaces: algebraic specification, grammars, task description languages, transition diagrams with and without extensions, rule-based systems, and by demonstration. However, none of these methods has been widely adopted. Current user interfaces are still built by writing a program, perhaps with the aid of a UIMS. There are two principal reasons for this. First, specification languages are difficult to use. Reading a specification and understanding its exact meaning is very difficult. Writing a correct specification is even more difficult. Second, most specification languages are not executable. This means that after the user interface programmer makes the effort to write a specification, the user interface must still be coded. As a consequence, most programmers have little incentive to do a specification. A pilot study into the comprehensibility of specifications is described. The results of this study suggest that user interface specifications are difficult to interpret manually. A possible solution to this problem, specification animation, is also described.Over the years a number of methods have been used to specify user interfaces. These include algebraic specifications, grammar-based languages, transition diagrams (including extensions like Petri-nets and statecharts), rule-based systems, and specification by demonstration.Algebraic specification of window systems was introduced by Guttag and Horning [8]. They proposed the design of a windowing system based on axiomatic specification of abstract data types. This method permits formally proving properties of the user interface. However, algebraic specifications have serious drawbacks. They are very difficult to read and require considerable time and training to understand. They are even more difficult to write. Specifically, the declarative nature of an algebraic specification provides little support for the sequential nature of user interface dialogs. This makes it difficult to construct or follow sequences of user actions, and therefore, makes algebraic specification unsuited for communicating interface behavior.