Minimum requirements for interactive systems to be usable and reliable
include computer systems performing as intended, and users not making
errors in issuing commands or in interpreting information from the de
vice display, Traditionally, most approaches to software engineering h
ave focused on the first of these concerns; correctness of system perf
ormance. However, it is equally important to deal with the user concer
ns. An Instruction Language is presented for describing the knowledge
a user needs to perform tasks with the device. The constraints provide
d by a semi-formal description language help the designer to identify
possible mismatches between the system model and the user's model of t
hat system. This type of mismatch is illustrated with an example taken
from the design of the Macintosh desktop. If a further step is taken,
formalising that description and adding principles about users' cogni
tive processes, inferences may also be made about possible user errors
. This is illustrated with an example taken from the design of a mail
tool. The Instruction Language and associated principles provide a mea
ns of evaluating system design in relation to user knowledge prior to
implementation.