Интерфейс: новые направления в проектировании компьютерных систем
ModernLib.Net / Программирование / Раскин Джефф / Интерфейс: новые направления в проектировании компьютерных систем - Чтение
(Ознакомительный отрывок)
(стр. 4)
Создание или изменение содержания – это та задача, которую вы предполагаете выполнить с помощью упомянутого устройства. Если вы писатель, содержание – это те ваши произведения, которые хранятся в системе. Если вы художник, ваши рисунки представляют собой содержание системы. Сама система – компьютер, а также меню, пиктограммы и другие его принадлежности – не является содержанием, если только вы не программист и не разработчик интерфейсов. Теперь мы можем перефразировать первый закон робототехники Азимова (см. главу 1) в терминах содержания: «Никакая система не может причинить вред содержанию или своим бездействием допустить, чтобы содержанию был причинен вред».
Графическое устройство ввода(ГУВ) – это механизм для передачи системе информации об определенном местоположении или выборе объекта на экране монитора. В качестве примера типичного ГУВ можно привести мышь, трэкбол, световое перо, планшетный карандаш (tablet pen), джойстик или тачпад. Под
кнопкой ГУВбудет подразумеваться основная кнопка любого ГУВ, например левая кнопка двухкнопочной мыши. Как правило, графическое устройство ввода используется для управления местоположением курсора, который представлен на экране монитора в виде стрелки или другого значка, являющегося системной интерпретацией указываемого вами места. Поскольку в конкретный момент мы можем направить свое внимание только на один курсор, система не должна отображать более одного курсора для каждого имеющегося графического устройства ввода. В приложении А приведено обоснование тому, почему у мыши должна быть только одна кнопка. Одно нажатие и отпускание клавиши или переключателя без каких-либо промежуточных действий мы будем называть
нажатием(tap). Этот термин относится только к клавишам на клавиатуре или другим контактным переключателям без фиксации, которые при отпускании автоматически возвращаются в исходное положение и электрическое состояние.
Щелкнуть(click) означает расположить курсор в определенном месте, а затем нажать и отпустить кнопку ГУВ. Таким образом, выражение «щелкните на слове
аллигатор» означает, что вам требуется навести курсор на слово
аллигатори затем, не меняя позицию курсора, нажать кнопку ГУВ и отпустить ее.
Перетащить(drag) означает нажать кнопку ГУВ в одном местоположении курсора, переместить его в другое место и уже затем отпустить кнопку. Это действие еще иногда называется
щелкнуть и перетащить(click and drag).
Дважды щелкнуть(double click) означает расположить курсор в определенном месте, а затем два раза быстро нажать кнопку ГУВ без промежуточного движения или какого-либо другого действия. (На практике небольшое движение допустимо – обычно ГУВ слегка смещается в момент нажатия кнопки.) В некоторых интерфейсах применялись тройные щелчки, а также щелчки с еще большим количеством нажатий. Существуют различные варианты обозначений для комбинаций клавиш, используемых при управлении большей частью программного обеспечения. Например, нажатие клавиши «Ctrl» и, при ее удерживании, нажатие и удерживание клавиши «Shift» и затем, при нажатом положении обеих этих клавиш, нажатие клавиши с буквой t часто обозначается в руководствах как «Ctrl»-«Shift»-«t» или «Ctrl»+«Shift»+«t». Однако эти обозначения операций с клавишами нельзя отличить от условных обозначений последовательностей действий Control, дефис, Shift, дефис, t или Control, плюс, Shift, плюс, t соответственно. Такая двусмысленность может приводить к ошибкам. Например, когда я работал над рукописью этой книги, мне понадобилось посмотреть, какая комбинация клавиш применяется для выполнения необходимой мне команды. В руководстве было указано (в конце предложения)
Control+.
Поэтому я нажал «Ctrl» и затем, удерживая эту клавишу, ввел знак «плюс». Из-за двусмысленного обозначения в руководстве я сделал ошибку. На самом деле требовалось при нажатой клавише «Ctrl» нажать клавишу со знаком точки. Кроме того, эти обозначения не дают возможности отразить такие действия, как, например, одновременное нажатие и удерживание клавиш «Ctrl» и «Shift» с последующим вводом нескольких алфавитных символов, причем клавиша «Shift» отпускается после ввода первых двух символов, а «Ctrl» остается нажатой. Альтернативный вариант, который я только что использовал, – выражение операций обычным языком, что хотя и понятно, но довольно громоздко. Чтобы обозначать операции с клавишами точно и кратко, я использую символ стрелки, указывающей вниз, сразу после названия клавиши, на которую требуется нажать и удерживать в нажатом состоянии, – например, Shift“ означает, что необходимо нажать и удерживать клавишу «Shift». Символ стрелки, указывающей вверх, после названия клавиши показывает, что эту клавишу следует отпустить, – например Shift‘. Нажатие одной клавиши, скажем, клавиши «t», может быть точно обозначено с помощью записи t“t‘. Запись нажатия одной клавиши можно сократить до t“‘ или просто до t, если это не вызывает двусмысленности и не может привести к путанице. Между отдельными действиями, которые следуют друг за другом, ставится пробел. Нажатие клавиши пробела обозначается словом Пробел Это обозначение невозможно перепутать с набором слова пробел (space), потому что последовательность символов этого слова, вводимая с клавиатуры, будет записываться буквами, разделенными пробелами, а именно: п р о б е л Когда есть риск неверного истолкования или необходимо сделать акцент на каждом отдельном действии, я применяю полную запись: п“ п‘ р“ р‘ о“ о‘ б“ б‘ е“ е‘ л“ л‘ Любые комбинации клавиш могут быть линейно представлены в этой системе записи. Например, нажатие и удерживание клавиши «Shift», затем нажатие клавиши «n», после этого нажатие и удерживание клавиши «Ctrl» при все еще нажатой клавише «Shift», затем нажатие клавиши «k», отпускание клавиши «Shift» при все еще нажатой клавише «Ctrl», затем нажатие клавиши «w» и после этого отпускание клавиши «Ctrl» записывается следующим образом: Shift“ n Control“ k Shift‘ w Control‘ При условии, что порядок отпускания клавиш не имеет значения для работы интерфейса, отпускание любой из нажатых клавиш обозначается стрелкой вверх для каждой отдельной клавиши. Таким образом, набор слова пробел будет записываться так: п“‘ р“‘ о“‘ б“‘ е“‘ л“‘ Приведем еще один полезный пример. Чтобы восстановить исходное состояние ОЗУ на компьютере Macintosh, должна быть выполнена следующая последовательность команд: Command“ Control“ Power“ ‘‘‘ Command“ Option“ p“ r“ Все клавиши требуется удерживать до тех пор, пока не зазвучит сигнал, после чего: ‘‘‘‘ (Выражаясь обычным языком: нажмите и удерживайте клавишу «Command» – отсутствие стрелки вверх означает, что клавишу не следует отпускать сразу же. Затем нажмите и удерживайте клавишу «Ctrl». Здесь также нет стрелки вверх, поэтому следует, удерживая обе эти клавиши одновременно, нажать клавишу «Power». Ни одной стрелки вверх еще не было, так что сейчас вы удерживаете сразу три клавиши. Последующие три стрелки вверх означают, что требуется отпустить все три клавиши в любом порядке или одновременно. Затем, как следует из записи, вам необходимо нажать, не отпуская, клавишу «Command», затем нажать, не отпуская, клавишу «Option», затем нажать, не отпуская, клавишу «p», после чего нажать и удерживать клавишу «r», так что, в конце концов, вы будете удерживать в нажатом положении четыре клавиши одновременно. Это следует делать до звукового сигнала, после чего все четыре клавиши следует отпустить.) Если при наборе последовательности имеет значение время, то об этом должно быть сказано в примечании. Например, для набора одной буквы t запись будет следующей: t“ t‘ Однако при использовании большинства клавиатур, если между t“ и t‘ происходит задержка длительностью более 500 мс, на экране приблизительно каждые 100 мс станут появляться еще символы t. Эта функция обычно называется автоповтором. Задержки, в том числе и те, которые запускают автоповтор, часто создают проблемы в работе интерфейсов. Использование задержек в интерфейсах, а также улучшение механизма автоповтора будут обсуждаться далее в разделе 6.4.5.
3.2. Режимы
Поскольку люди более уступчивы, чем компьютеры, бывает легче заставить человека приспособиться к ограничениям компьютера, чем создать компьютер, приспособленный к потребностям человека. И когда это происходит, человек попадает в подчинение к компьютеру, а вовсе не освобождается им.
Карла Дженнингз
Режимы (modes) являются важным источником ошибок, путаницы, ненужных ограничений и сложности в интерфейсе. Многие проблемы, создаваемые режимами, хорошо известны. Тем не менее, практика создания систем без режимов почему-то не находит широкого применения в разработке интерфейсов. Прежде чем приступить к обсуждению методов устранения режимов, следует рассмотреть их подробно, тем более что даже среди специалистов по интерфейсам нет общего мнения относительно того, что представляет собой режим (Johnson and Engle-beck, 1989). Чтобы понимать режимы, нам следует сначала определить понятие жеста. Жест (gesture) – это последовательность действий человека, которая выполняется автоматически (после старта). Например, для опытного пользователя набор такого простого слова, как
это, представляет всего один жест, в то время как для начинающего пользователя, который еще не вполне овладел клавиатурой, набор этого слова по буквам будет состоять из отдельных жестов. Объединение последовательности действий в жест, связанный с определенным психологическим процессом, определяется как
формирование модуля(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).
Наиболее часто предлагаемое средство против ошибок, порождаемых режимами, состоит в том, чтобы ясным образом показывать пользователю текущее состояние системы. Доктор Дональд Норман охарактеризовал ошибки, связанные с режимами, как результаты недостаточной обратной связи, осуществляемой индикатором состояния системы (Norman, 1983). Однако, на мой взгляд, истинной причиной является не недостаточная обратная связь, а то, что этот индикатор не находится в локусе внимания пользователя. Особенно показательный пример неудачного применения индикатора, отражающего текущее состояние системы, можно встретить в интерфейсе системы автоматизированного проектирования (САПР) (computer-aided design, CAD) Vellum (Ashlar, 1995), во всех остальных отношениях превосходном. Всем, кто занимается разработкой графических пакетов, я настоятельно рекомендую изучить программу Drafting Assistant, разработанную Ashlar. Эта программа оснащена чрезвычайно удобным интерфейсом, намного более эффективным и приятным в использовании, чем тот, который применяется в более известном пакете AutoCAD.
Одной из функций, предусмотренных для экономии времени в пакете Vellum, является указатель, который может следовать по внутренней или наружной стороне геометрической фигуры, выделяя (трассируя) описываемую границу. Чтобы перейти в режим трассировки, необходимо щелкнуть по соответствующей кнопке палитры инструментов, при этом стандартный курсор преобразуется в курсор особой, «указательной» формы. По завершении выделения легко забыть переключиться назад, к стандартному курсору. Выделение с помощью мыши является настолько частым действием, что для меня оно уже давно стало автоматичным, и поэтому когда в этой программе я щелкаю, чтобы выделить какой-то объект после операции трассировки, то вместо успешного выделения я с удивлением обнаруживаю, что обведенный указателем контур исчезает. Я совершаю эту ошибку уже не первый год, так же как и другие пользователи, с которыми мне приходилось говорить об этом. Хотя иногда я и ловлю себя на мысли, что делаю неправильно, но все же я никогда
не смогунаучиться всегда замечать, что нахожусь в режиме трассировки, так как выделение с помощью мыши, для меня во всяком случае, является автоматичным действием. В локусе моего внимания находится объект выделения, но не форма курсора. Изменяющийся курсор, используемый в Vellum, – это один из множества примеров, подтверждающих, что средства обратной связи и индикаторы текущего положения недостаточны, чтобы обеспечить устранение ошибок, вызываемых режимами, даже в том случае, когда индикатор расположен в непосредственной близости от локуса вашего внимания. Он может попадать в область высокой зрительной способности, например, когда индикатором служит курсор, и тем не менее, вы не сможете заметить сообщение, передаваемое этим индикатором, поскольку он не находится в локусе вашего внимания. Необходимой темой для будущих исследований должно стать определение частоты ошибок, связанных с режимами, и выяснение условий, влияющих на частоту их возникновения. Опыт не избавляет от ошибок, порождаемых режимами, поскольку у опытного пользователя уже имеются устойчивые привычки. Отсутствие опыта также не защищает от этих ошибок. В примере с курсорами в программе Vellum начинающий пользователь еще не сформировал привычку переключения в режим обычного курсора после использования указателя трассировки. По мере приобретения опыта в использовании этой функции начинающий пользователь научится делать такое переключение не задумываясь, а значит, теперь возникает проблема привычек. Если текущее состояние интерфейса не находится в локусе внимания пользователя и если интерфейс может работать в разных режимах, то пользователь будет иногда совершать ошибки, поскольку текущий режим не находится в локусе его внимания. Приведем другой пример. В некоторых популярных моделях компьютеров для создания нового документа применяется следующее сочетание клавиш: Command“ n“‘ ‘ Здесь n обозначает новый (new). Но если взять пакет электронной почты America Online, то в нем для получения нового бланка сообщения требуется использовать другую комбинацию клавиш: Command“ m“‘ ‘ Я предполагаю, что m здесь обозначает почта (mail). Ошибка, которую совершают пользователи при создании нового сообщения, заключается в нажатии неверной комбинации клавиш: Command“ n“‘ ‘ Здесь состояние интерфейса, в котором возникает режим, зависит от активного приложения. Проблема возникает в тот момент, когда пользователь применяет по привычке команду Command“ n“‘ ‘. Начинающий сделает ту же самую ошибку, но, вероятно, по другим причинам. Он может подумать, что команда Command“ n“‘ ‘ работает одинаковым образом во всех приложениях, и поэтому совершит ту же ошибку по незнанию. Конец бесплатного ознакомительного фрагмента.
Страницы: 1, 2, 3, 4
|
|