Preventing state mismatch

State independence

State mismatch can occur when the system response to a user action depends on the system state. Therefore, a straightforward way to prevent state mismatch is by defining user commands that are independent of the system state. For example, suppose that a button is defined to actuate a function A when the system is in a certain state, and to actuate a function B otherwise. Such buttons are error-prone, because the operator might forget to examine the system state before pressing the button. To prevent activation of the wrong function we need to redefine the user commands so that they will be state independent.

 

Control duplication

A simple way to avoid activation of the wrong function is by control duplication. In the example, we can replace the button by two dedicated buttons; one that actuates function A and the other that actuates function B. With the dedicated buttons, users apply direct mapping from the function to the control, enabling seamless operation. In the example of cable TV, we can replace the state-dependent On-Off clicker button by two dedicated buttons, one for controlling the TV set and the other for controlling the cable converter. With this design change it is implausible that the user will turn off the converter when trying to turn on the TV set.

 

Virtual controls

Virtual controls make use of auxiliary controls, by applying them simultaneously. For example, when depressed, the Shift key changes the function of the keyboard letters from small to capital. Virtual controls facilitate state independent functions. For example, consider the numeric and scroll keys of a cable-TV clicker, used to scroll the channels of either the TV set or the cable converter, depending on a clicker mode. This arrangement is error-prone, because users often disregard the mode. To avoid these errors we add a “shift” key that monitors the selection of the controlled unit: when depressed, it is used to set the TV, and when not depressed it is used to scroll the converter.

Eliminating UI states

Suppose that we have changed the design so that all the controls are state independent. In the example of cable TV remote control, this may be the case once we duplicated the On-Off button, and added a “shift” key that duplicates the numeric and scroll keys. In this case, since the state was originally defined only for the purpose of functional multiplexing, the states become redundant, and can thereof be eliminated.

Automatic dependency termination

Another means to avoid state mismatch is by terminating the exceptional state automatically. One method, most effective for naïve users, is by time out. This method is well known to users of electronic devices such as mobile phones. Another method is by the normal actions. For example clicking the mouse on the text editing area sets the cursor there, but also unselects the text.