User Assistants: Self-Sufficient Systems
Michael Harris & K. C. Burgess Yakemovic
NCR Human Interface Technology Center
Systems of all kinds are growing
ever more complex, both vertically and horizontally, while the ability and
willingness of users to put up with complexity is steadily decreasing. This dilemma hurts all products in all markets. An elegant solution is to empower products
with built-in advisors that address user problems at the interface: User Assistants, a.k.a. Associates, or Intelligent
Agents
A User Assistant observes the user's activities, evaluates those activities against models
of "correct" action, communicates
the differences in powerful and effective ways, and adapts to the dynamic environment.
The first three of these behaviors are typical of a well-designed "just-in-time"
help system or Performance Support System; adaptive
behavior is a key differentiator.
Adaptation can occur in a
task, or in its interface. Many text editors
are adaptive tasks: by means of keyboard macros, they can be made
to mimic other editors or express different linguistic behaviors. The User Assistant is an adaptive interface technology: the more a user interacts with and through
it, the more it can discover and conform to that user's habits, abilities,
preferences, and goals, ever more accurately anticipating the user's intentions.
Such effective interaction
requires multimedia technologies -- users have neither time nor inclination
to key in help requests or read verbose text screens -- thus, every Assisted
system must be a multimedia-capable system.
The software is composed of generic and task-specific data bases and
code libraries, managed by a generic kernel or engine.
The opportunity exists to
provide efficient cost-effective every-unit-item platform support for these
interfaces (through multimedia support, ample processing power, and distributed
data bases), to perfect a software architecture having the greatest possible
amount of reusable components, and to provide well-crafted simple-to-use tools
for constructing and tailoring those generic interface building blocks to
specific applications.