формирование модуля(chunking), т. е. соединение отдельных элементов когнитивного процесса в единый ментальный модуль, что позволяет воспринимать множество элементов как целое (Buxton,1986, с. 475–480; Miller, 1956).
   В большинстве интерфейсов допускается несколько интерпретаций конкретного жеста. Например, в одном случае с помощью клавиши «Return» можно вставить в текст символ возврата каретки, тогда как в другом случае нажатие этой клавиши приводит к исполнению предшествующей строки в качестве команды.
   Режимы проявляются в том, как реагирует интерфейс на тот или иной жест. Состояние интерфейса, при котором интерпретация данного конкретного жеста остается неизменной, называется режимом.Если жест получает другую интерпретацию, это значит, что интерфейс находится в другом режиме. Такое определение дает ценное первоначальное представление о том, что составляет режим. Позже мы уточним это определение.
   Фонарик, управляемый с помощью кнопочного выключателя, может быть либо включен, либо выключен при условии, что он находится в хорошем рабочем состоянии. При нажатии кнопки свет зажигается, если фонарик находился перед этим в выключенном состоянии, и наоборот, если текущее состояние «включено», то после нажатия кнопки фонарик выключается. Два состояния фонарика соответствуют двум режимам интерфейса. В одном режиме нажатие кнопки включает свет. В другом режиме нажатие кнопки выключает свет. Если вы не знаете текущее состояние фонарика, вы не можете предсказать, к чему приведет нажатие кнопки. Если ваш фонарик лежит глубоко в сумке, и вы его не видите, то не можете узнать, включен свет или нет, при условии, что это нельзя почувствовать по температуре. Чтобы убедиться, что фонарик выключен, вам требуется вынуть его из сумки. Невозможность определить текущее состояние фонарика – это пример классической проблемы, возникающей в интерфейсе, в котором есть режимы. По состоянию управляющего механизма невозможно сказать, какое действие следует выполнить, чтобы достичь поставленной цели. Оперируя с управляющим механизмом без одновременной проверки состояния системы, вы не сможете предсказать, какой результат будет иметь данная операция.
   К переключателям трудно подобрать надписи. Например, однажды мне показали интерфейс, в котором кнопка на экране была подписана Lock (Блокировать). Когда пользователи в первый раз видели эту кнопку, они считали, что должны нажать на нее для блокировки данных в этом окне. Когда они делали так, подпись кнопки изменялась на Unlock (Разблокировать), показывая, что при нажатии на эту кнопку данные разблокировались бы. После этого многие пользователи удивлялись, что данные оказывались разблокированными, поскольку кнопка показывала Unlock, что они считали индикатором текущего состояния, как это часто бывает при использовании переключателей на кнопках и в меню. Естественно, это приводило к путанице: на самом деле кнопка показывала Lock, когда данные были разблокированы, и Unlock – когда они были заблокированы. Очевидно, что проблему нельзя решить, просто поменяв надписи таким образом, чтобы разблокированные данные обозначались как Unlock, а заблокированные как Lock.
   В данном случае следует, во-первых, использовать флажок, а не кнопку, а во-вторых, применить более точные формулировки – Locked (Заблокировано) вместо Lock (Блокировка), что будет восприниматься более правильно: если флажок установлен, значит, данные заблокированы, если же флажок сброшен – данные не заблокированы. Изменения подписей в этом случае не требуется. Можно использовать более развернутую формулировку, например: «Щелкните по этой кнопке, чтобы разблокировать данные» или даже: «Данные в настоящее время заблокированы. Щелкните по этой кнопке, чтобы разблокировать их». Однако на кнопке или около флажка, или в меню трудно разместить полное объяснение, если интерфейс не снабжен функцией увеличения изображения (см. раздел 6.2).
   Флажки, тем не менее, оставляют неясным, какие еще есть альтернативы. Например, если флажок отмечен «Сохранить в архиве при закрытии», то при закрытии активного окна данные будут сохранены в архиве. Однако из подписи не понятно, что произойдет, если этот флажок сброшен. Данные будут сохранены где-то в другом месте? Или не сохранены вообще? Или при закрытии окна появится еще какая-то опция? Самым лучшим решением в этой ситуации зачастую оказывается использование набора переключателей (рис. 3.1). Такие переключатели не являются модальными, и пользователь может сразу определить не только текущее состояние, но и альтернативы. Независимо от того, применяются ли флажки или переключатели, важно, чтобы в названиях употреблялись прилагательные, описывающие состояние объекта, а не глаголы, описывающие действие с этим объектом, потому что иначе пользователю не ясно, действие уже произошло или только должно произойти.
    Рис. 3.1. Пара переключателей, обозначенных прилагательными. Выбранная опция отмечена точкой в кружке. Изображение слева отражает заблокированное состояние данных, а справа – разблокированное состояние. Путаница маловероятна, поскольку пользователь видит все возможные варианты
 
   Переключатели стали стандартным средством для выбора одной из нескольких возможностей, и вряд ли следует их заменять какими-то другими механизмами. Используйте переключатели вместо выключателей. На выключатели стоит полагаться только в том случае, когда можно видеть значение контролируемого состояния и оно находится в локусе внимания пользователя или в кратковременной памяти.
   За исключением случаев, когда текущее состояние находится в локусе внимания, – а обычно это не так, – выключатели могут приводить к ошибкам. Такие ошибки обычно имеют кратковременный характер и легко исправляются. Тем не менее, их нельзя не учитывать при разработке интерфейсов. Заниматься разработкой интерфейсов и при этом не обращать внимания на такие детали – все равно, что пытаться исполнить скрипичный концерт, иногда забывая диезы и бемоли, обозначенные в нотной записи. Такие ошибки раздражают слушателя тем, что отвлекают его внимание от музыки. Точно так же мелкие ошибки в интерфейсе затрудняют ход работы пользователя.
   Другую связанную с режимами трудность, которая особенно изматывает пользователей компьютеров, можно проиллюстрировать на примере того, как работает клавиша «Caps Lock», присутствующая на большинстве типов клавиатур. Часто первым признаком случайного нажатия этой клавиши оказывается то, что вы замечаете, что набранное вами предложение напечатано заглавными буквами, и только после этого вы замечаете также, что включен индикатор «Caps Lock» (если он есть на клавиатуре). «Не случайно ругательства обозначаются в виде цепочки символов, наподобие #&%!#$&. Именно такая картина возникает, когда кто-то набирает цифры при ошибочно нажатой клавише «Caps Lock», – утверждает мой коллега доктор Джеймс Уинтер (личное сообщение, 1998).
   Несколько десятилетий назад Ларри Кларк заметил, что режимы создают проблемы по той причине, что привычные действия приводят к неожиданным результатам (dark, 1979). [10]Наиболее часто предлагаемое средство против ошибок, порождаемых режимами, состоит в том, чтобы ясным образом показывать пользователю текущее состояние системы. Доктор Дональд Норман охарактеризовал ошибки, связанные с режимами, как результаты недостаточной обратной связи, осуществляемой индикатором состояния системы (Norman, 1983). Однако, на мой взгляд, истинной причиной является не недостаточная обратная связь, а то, что этот индикатор не находится в локусе внимания пользователя.
   Особенно показательный пример неудачного применения индикатора, отражающего текущее состояние системы, можно встретить в интерфейсе системы автоматизированного проектирования (САПР) (computer-aided design, CAD) Vellum (Ashlar, 1995), во всех остальных отношениях превосходном. Всем, кто занимается разработкой графических пакетов, я настоятельно рекомендую изучить программу Drafting Assistant, разработанную Ashlar. Эта программа оснащена чрезвычайно удобным интерфейсом, намного более эффективным и приятным в использовании, чем тот, который применяется в более известном пакете AutoCAD. [11]Одной из функций, предусмотренных для экономии времени в пакете Vellum, является указатель, который может следовать по внутренней или наружной стороне геометрической фигуры, выделяя (трассируя) описываемую границу. Чтобы перейти в режим трассировки, необходимо щелкнуть по соответствующей кнопке палитры инструментов, при этом стандартный курсор
   преобразуется в курсор особой, «указательной» формы.
   По завершении выделения легко забыть переключиться назад, к стандартному курсору. Выделение с помощью мыши является настолько частым действием, что для меня оно уже давно стало автоматичным, и поэтому когда в этой программе я щелкаю, чтобы выделить какой-то объект после операции трассировки, то вместо успешного выделения я с удивлением обнаруживаю, что обведенный указателем контур исчезает. Я совершаю эту ошибку уже не первый год, так же как и другие пользователи, с которыми мне приходилось говорить об этом. Хотя иногда я и ловлю себя на мысли, что делаю неправильно, но все же я никогда не смогунаучиться всегда замечать, что нахожусь в режиме трассировки, так как выделение с помощью мыши, для меня во всяком случае, является автоматичным действием. В локусе моего внимания находится объект выделения, но не форма курсора. Изменяющийся курсор, используемый в Vellum, – это один из множества примеров, подтверждающих, что средства обратной связи и индикаторы текущего положения недостаточны, чтобы обеспечить устранение ошибок, вызываемых режимами, даже в том случае, когда индикатор расположен в непосредственной близости от локуса вашего внимания. Он может попадать в область высокой зрительной способности, например, когда индикатором служит курсор, и тем не менее, вы не сможете заметить сообщение, передаваемое этим индикатором, поскольку он не находится в локусе вашего внимания. Необходимой темой для будущих исследований должно стать определение частоты ошибок, связанных с режимами, и выяснение условий, влияющих на частоту их возникновения.
   Опыт не избавляет от ошибок, порождаемых режимами, поскольку у опытного пользователя уже имеются устойчивые привычки. Отсутствие опыта также не защищает от этих ошибок. В примере с курсорами в программе Vellum начинающий пользователь еще не сформировал привычку переключения в режим обычного курсора после использования указателя трассировки. По мере приобретения опыта в использовании этой функции начинающий пользователь научится делать такое переключение не задумываясь, а значит, теперь возникает проблема привычек. Если текущее состояние интерфейса не находится в локусе внимания пользователя и если интерфейс может работать в разных режимах, то пользователь будет иногда совершать ошибки, поскольку текущий режим не находится в локусе его внимания.
   Приведем другой пример. В некоторых популярных моделях компьютеров для создания нового документа применяется следующее сочетание клавиш:
   Command“ n“‘ ‘
   Здесь n обозначает новый (new). Но если взять пакет электронной почты America Online, то в нем для получения нового бланка сообщения требуется использовать другую комбинацию клавиш:
   Command“ m“‘ ‘
   Я предполагаю, что m здесь обозначает почта (mail). Ошибка, которую совершают пользователи при создании нового сообщения, заключается в нажатии неверной комбинации клавиш:
   Command“ n“‘ ‘
   Здесь состояние интерфейса, в котором возникает режим, зависит от активного приложения. Проблема возникает в тот момент, когда пользователь применяет по привычке команду Command“ n“‘ ‘. Начинающий сделает ту же самую ошибку, но, вероятно, по другим причинам. Он может подумать, что команда Command“ n“‘ ‘ работает одинаковым образом во всех приложениях, и поэтому совершит ту же ошибку по незнанию.
   Норман (1983) указывает три метода предотвращения модальных (т. е. связанных с режимами) ошибок:
   1. Не использовать режимы.
   2. Обеспечить четкое различие между режимами.
   3. Не использовать одинаковые команды в разных режимах, чтобы команда, примененная не в том режиме, не могла привести к неприятностям.
   Из приведенных трех методов только первый позволяет полностью избежать модальных ошибок. Что касается второго метода, то, как мы могли уже убедиться, он не всегда работает. Третий метод не сокращает количество ошибок, но позволяет уменьшить их негативные последствия.
   В самом крайнем случае можно привлекать внимание пользователя к индикатору текущего режима, но это так же нежелательно, как и сама модальная ошибка, для предотвращения которой индикатор предназначен, поскольку локус внимания пользователя будет переключаться с задачи на текущее состояние системы. Норман определяет модальные ошибки как ошибки, возникающие в результате того, что пользователь неверно классифицирует или анализирует ситуацию (Norman, 1981). Термины неверно классифицироватьи анализироватьв данном случае указывают на активное, сознательное участие со стороны пользователя и, таким образом, могут применяться до тех пор, пока он еще не в полной мере знаком с той или иной командой, но не тогда, когда применение этой команды стало для него автоматичным.

3.2.1. Определение режимов

   Если бы определение режима основывалось исключительно на конструкции интерфейса (как мы это до сих пор допускали в нашем изложении), тогда все пользователи делали бы одинаковые ошибки, хотя и с разной частотой. Однако это не так. Данный элемент интерфейса может для одного пользователя быть модальным, а для другого – нет. Более полное определение режима должно включать в себя то, как пользователь рассматривает интерфейс: интерфейс «человек-машина» является модальным по отношению к данному жесту, если, во-первых, текущее состояние интерфейса не находится в локусе внимания пользователя и, во-вторых, если в ответ на некоторый жест интерфейс может выполнить одно из нескольких возможных действий в зависимости от текущего состояния системы.
   Интерфейс может быть модальным по отношению к одному жесту и не быть таковым по отношению к другому. Чтобы можно было классифицировать тот или иной интерфейс как истинно немодальный, он не должен быть модальным для любого жеста.
   Степень модальности Q того или иного интерфейса может быть определена через классификацию каждого жеста, допустимого в интерфейсе, как модального или немодального. Затем, с учетом вероятности применения данного немодального жеста N_l выраженной как р(N_i) и вычисленной для данного пользователя или в среднем для группы пользователей, получаем Q=\sum_i p(N_i). Диапазон значений Q варьируется от 0 (полностью модальный) до 1 (полностью немодальный).
   Обе части определения модального жеста необходимы для решения о том, является ли, например, жест нажатия клавиши «Backspace» модальным или нет. В большинстве компьютерных интерфейсов, если вы набираете какой-то текст, с помощью команды Backspace вы можете удалить символ, который был введен в самую последнюю очередь. Если это был символ е, то нажатие клавиши удалит символ е. Если же это был символ х, то нажатие клавиши удалит символ х. Другими словами, в одном случае клавиша «Backspace» служит для удаления символов е, а в другом случае – для удаления символов х. Если рассматривать только вторую часть определения, использование клавиши «Backspace» является модальным, так как то, какой именно символ она удаляет, зависит от того, какой символ был введен последним, т. е. содержание характеризует состояние системы. Однако в том случае, когда вы осознаете, что удаляемый вами объект находится в локусе вашего внимания, в соответствии с первой частью определения данная операция не является модальной, и поэтому вы не делаете модальных ошибок, используя клавишу «Backspace» для удаления из текста каких-либо символов или любых других объектов, которые можно выделить и удалить. [12]С другой стороны, команда, которая устанавливает для клавиши «Backspace» направление удаления (вперед или назад), делает интерфейс модальным. Ранее установленное направление удаления обычно уже не находится в локусе вашего внимания, когда впоследствии вы используете клавишу «Backspace», поэтому иногда удаление будет происходить в неожиданном направлении.
Предотвращение авиакатастроф через устранение режимов
   Время от времени из-за простых ошибок в интерфейсах происходят крушения как дистанционно управляемых летательных аппаратов (RPV, remote-piloted vehilces), используемых для военных нужд, так и гражданских радиоуправляемых моделей самолетов. Чтобы понять ошибку и определить метод ее исправления, следует, прежде всего, знать кое-что о том, как эти устройства работают.
   При дистанционном управлении летательным аппаратом оператор, находящийся на земле, манипулирует небольшим джойстиком, встроенным в пульт управления (рис. 3.2). Как правило, для того чтобы временно поднять нос аппарата, требуется потянуть джойстик на себя, а для того чтобы опустить нос, требуется толкнуть джойстик от себя. Для наклона вправо и влево джойстик, соответственно, перемещается вправо или влево. Перемещение джойстика вызывает пропорциональное движение устройства, называемого сервомотором. Сервомотор механически соединен с управляющей плоскостью, например с рулем высоты в хвостовом оперении самолета, позволяющим управлять его продольным наклоном.
    Рис. 3.2. Пульт дистанционного управления гражданского летательного аппарата. Обратите внимание на множество элементов управления, расположенных по всей лицевой панели пульта и в его верхней части
   Сервомотор не имеет стандартного направления движения относительно движения джойстика управления, поэтому принято на пульте устанавливать переключатель, который позволяет выбрать, какое направление движения джойстика будет соответствовать тому или иному направлению движения сервомотора. Это явно модальное действие вступает в противоречие с привычными реакциями пользователя, как это обычно и происходит при наличии режимов. Следует сказать, что для управления несколькими разными летательными аппаратами зачастую используется один пульт. В каждом аппарате может быть установлено свое направление движения сервомоторов, от которого зависит поведение самолета в воздухе. При переключении управления между аппаратами оператор должен проверять положение переключателей, регулирующих направление движения сервомоторов, чтобы на перемещение джойстика летательный аппарат отвечал соответствующими действиями.
   Почти невозможно научить пилота управлять прибором, когда направление движения сервомоторов заранее не известно. Например, представьте себе, что пилот, который готовится выполнить взлет дистанционно управляемого летательного аппарата, не знает о том, что переключатель направления наклона установлен в неверную позицию. Взлет является очень сложным маневром, требующим большого внимания. Обычно при взлете самолет спонтанно слегка заваливается влево или вправо в момент отрыва от земли, и опытный пилот автоматически подает небольшой сигнал на компенсацию этого заваливания. У хорошего пилота эта реакция настолько быстрая, что, наблюдая со стороны, можно вообще ничего не заметить. Если переключатель направления работы сервомоторов установлен в обратное положение, то заваливание, естественно, станет еще больше. В этом случае хорошо тренированный пилот сделает еще большее компенсирующее отклонение джойстика, тем самым только усугубляя заваливание. В конце концов, полет обычно заканчивается разрушением самолета, как только его крыло касается земли или когда самолет полностью переворачивается на спину. (Все эти события могут произойти за доли секунды.) Я еще не видел ни одного пилота, который смог бы быстро догадаться о возникшей проблеме и вовремя изменить свои реакции на обратные, чтобы безопасно закончить взлет. Такого рода крушения происходили при мне два раза, несмотря на обязательную проверку правильности положения переключателя, регулирующего движение управляющих плоскостей. Проверка положения переключателя, когда она выполняется десятки раз, тоже становится привычкой вплоть до того, что вы можете не заметить, действительно ли управляющие плоскости движутся в правильном направлении. (Если они не будут двигаться вообще, то, естественно, это сразу привлечет ваше внимание к наличию проблемы.) Тем не менее, во время таких проверок я сам довольно часто обнаруживал, что аппарат, который я собирался поднять в воздух, имел обратное направление движения сервомоторов. Однако, испытывая недостаток времени или отвлекаясь на другие дела, я, как и сотни других пилотов, не замечал эту неправильность.
   Интересно отметить, что такая ошибка, как правило, не происходит при первом полете на новом аппарате, когда вы особенно внимательны к возможным проблемам. Только после того, как полеты на каком-то аппарате становятся «второй натурой» или просто привычным делом, она обычно и случается.
   Этот пример демонстрирует случай, когда режим невозможно устранить. Режимы изначально присущи сервомоторам и джойстикам управления. Тем не менее, из данной ситуации есть выход. В качестве решения можно предложить следующее: поместить переключатель направления работы сервомоторов внутрь самого летательного аппарата, возможно, сделать его частью самих сервомоторов, и убрать этот переключатель с пульта управления. Обычно внутренняя часть корпуса самолета недоступна, поэтому переключатели могут устанавливаться в нужное положение при сборке аппарата. Правильность настройки будет проверяться сборщиками самолета, затем инспекторами и затем еще раз (как обычно) пилотом перед первым полетом. Хотя этот метод не устраняет полностью возможности крушения, но если первый полет выполнен успешно, то в дальнейшем проблема переключения сервомоторов уже не должна возникать на этом аппарате независимо от того, используется ли данный пульт для управления и другими летательными аппаратами. С точки зрения оператора, режим устранен.
   Почти все пульты дистанционного управления моделями летательных аппаратов снабжены переключателями направления работы сервомоторов. Аварии из-за того, что пульт управления находится в неверном режиме, случаются нередко. Еще большие проблемы создает возможность устанавливать на пультах управления и другие режимы с помощью переключателей с длинными ручками, которые можно переставить в неверное положение случайно. В пульте управления, разработанном мною, все эти тумблеры сделаны таким образом, что перед тем как переставить их в другое положение, их ручки требуется сначала вытянуть из пульта (рис. 3.3). Поэтому у меня ни разу не было аварий из-за того, что какой-то тумблер был случайно сдвинут в неверное положение. Таким образом, иногда проблемы с режимами могут быть решены механическим путем.
    Рис. 3.3. Такие тумблеры нельзя переключить в другое положение случайно. Перед тем как изменить положение тумблера, его ручку сначала требуется немного вытянуть из пульта
____________
   Режимы также ограничивают диапазон действий пользователя. Если жест gвызывает действие aв режиме A, а в режиме Bон вызывает действие b, то для того чтобы выполнить действие a, необходимо сначала выйти из режима B(если вы в нем находились) и переустановить интерфейс в режим A. И только после этого вы сможете использовать жест gдля выполнения действия a. Разделение интерфейса на ограниченные области является неизбежным следствием наличия режимов. Набор состояний, в которых жест gимеет конкретную интерпретацию, можно назвать диапазоном(range) жеста g. Программное обеспечение, которое продается в виде прикладных программ, например электронные таблицы, обычно включает один или несколько пересекающихся диапазонов. Некоторые диапазоны относительно велики. Например, следующая последовательность выполняет действие вырезания почти во всех приложениях как на платформе Macintosh, так и в Windows:
   Command“ x‘
   Бывают и небольшие диапазоны. Например, нижеприведенная последовательность позволяет в некоторых компьютерных играх открывать сундук с сокровищами, если только он находится в пределах видимости:
   Command“ h‘
   Группирование команд по разным диапазонам, или, как мы это еще называем, по приложениям, позволяет понять и научиться использовать сложные интерфейсы. Тем не менее, существует возможность организовывать интерфейсы, которые могли бы создавать меньше ограничений, чем режимы. Полностью человекоориентированный интерфейс должен состоять только из одного диапазона.
   В случаях когда интерфейс управляется с помощью другого компьютера, можно было бы подумать, что проблема наличия режимов снимается, поскольку машина может легко запомнить необходимое состояние интерфейса, просто-напросто внутренне синхронизируя его с собственным состоянием. Тем не менее, если интерфейс является модальным, и программа, управляющая этим интерфейсом, изначально не получает сведений о текущем состоянии интерфейса, – а это может произойти, если программа подключается после того, как система была запущена, – то для управления в каком-то из режимов системы программа должна быть оснащена средствами тестирования ее текущего состояния. В этом отношении особые трудности создают такие интерфейсные переключатели, для возвращения которых в исходную позицию требуется сделать подряд несколько переключений, изменив состояние системы (затем цикл повторяется сначала).