Человеческий фактор в программировании.
Непротиворечивая противоречивость.
Как нам говорят, непротиворечивость является критерием хорошего пользовательского интерфейса (см. главу 34). Пользователи предпочитают интерфейсы, которые выглядят и работают подобно уже известным им интерфейсам. Такие интерфейсы для них более комфортны. Каждое предполагаемое новшество, каждое новое устройство или средство наталкивается на высокий барьер в виде некоторого естественного сопротивления. Даже более совершенные интерфейсы могут категорически отвергаться пользователями, которые не хотят или не могут научиться новым способам взаимодействия со своими компьютерами. Пользователи Аррlе Масintоsh хорошо известны тем, что всегда настаивают на непротиворечивости и отвергают программное обеспечение с «немакинтошевским» поведением или функциями. Но многие ли сейчас помнят, что среди первых тестеров ОС Масintоsh нашлись такие, которые посчитали ее крайне неудобной, ставя в вину отсутствие стандартных команд и какого-либо из принятых приглашений вида «С:›».
У новаторов есть целая масса хороших концепций, на основе которых они могут разрабатывать пользовательские интерфейсы — одновременно и оригинальные, и вполне знакомые. Многие методы создания внутренней структуры объектно-ориентированных программ также находят применение при разработке пользовательского интерфейса. Обобщение и конкретизация, компоновка и перекомпоновка, расширение и перегрузка — все эти методы могут помочь в разработке новых эффективных интерфейсных средств и способов взаимодействия с ними. Зачастую самые удачные новшества в пользовательских интерфейсах — это не впечатляющие рывки в будущее, а вариации на заданную тему, когда знакомые элементы комбинируются в новых сочетаниях. Художник-новатор Билл Бакстон (Вill Вuхtоn) назвал это «радикальной эволюцией».
Наихудшей формой противоречивости и непоследовательности является неестественное поведение знакомого объекта. Если на дверную ручку, которую хочется повернуть, на самом деле нужно нажимать, такая ручка собьет с толку любого, кто будет открывать дверь, пытаясь высвободить щеколду. Некий элемент ГПИ, который выглядит как выпадающий список, но при щелчке мышью вызывает диалоговое окно, будет запутывать пользователей и вызывать у них раздражение. Видя перед собой табло, которое кажется пассивным отображением данных, обычный пользова-тель может никогда не догадаться, что по нему, словно по программной иконке, нужно дважды щелкнуть для обновления данных.
Инновации и непоследовательность могут проявляться в различных аспектах пользовательского интерфейса: во внешней форме объектов, в их поведении или в идиомах, посредством которых мы взаимодействуем с ними. Алан Купер (Аlаn Соореr), который прямо критикует многие современные методы разработки пользовательских интерфейсов, ввел термин идиомы взаимодействия, обозначающий идиоматические жесты и последовательности, с помощью которых пользователи взаимодействуют с графическими пользовательскими интерфейсами. Из общепринятых идиом для общения с программным обеспечением на основе ГПИ можно назвать следующие: один щелчок мышью для выделения или активизации, двойной щелчок для открытия или запуска, обведение для выделения группы объектов, перетаскивание (drаg-аnd-drор) для перемещения объектов.
Самые удачные инновации привносят новые идиомы представления, поведения или взаимодействия, не требуя дополнительного обучения для их эффективного использования. При рассмотрении «интуитивного» интерфейса пользователи могут легко догадаться о назначении и способах применения его элементов, даже если прежде их никогда не видели. Правильность догадок пользователей зависит от многих факторов. Важна узнаваемость и ясность, а также выразительность интерфейса — его способность при помощи слов, фигур, символов и позиций донести до пользователя информацию разработчика о применении и поведении системы.
«Разведываемые» интерфейсы позволяют пользователям исследовать возможности системы и применять ее средства, не вызывая своими действиями серьезных последствий. Устойчивые внутренние объекты, разработанные для обеспечения обратимости процессов, могут способствовать улучшению юзабилити, поскольку возможность отменять любые действия или «откатываться назад» является первым помощником в исследованиях. Простая навигация по многоуровневым меню или диалоговым окнам является еще одним известным способом поддержки исследований.
В основе объектно-ориентированной парадигмы лежит взаимодействие посредством сообщений. Хорошее взаимодействие с пользователями также является ключом к созданию новых интерфейсов, способных обучить пользователей работе с ними. Психолог и гуру в юзабилити Дональд Норман (Dоnаld Nоrmаn) ввел два понятия, которые могут помочь разработчикам придумывать новые компоненты и идиомы — новые, но понятные и удобные. Ограничители — это элементы пользовательского интерфейса, которые сообщают об ограничениях той или иной операции. Они помогают пользователям избежать бесполезных или бессмысленных действий.
Например, диалоговые окна и рабочие зоны имеют границы. Модальные диалоговые окна приостанавливают взаимодействие до тех пор, пока пользователь не выполнит какую-нибудь операцию в данном диалоге. Бегунки двигаются только в одном измерении. При попытке перетащить элемент в окно, которое не может его принять, курсор изменяет свою форму на кружок с диагональной линией, который принято использовать для сообщения «дороги нет». Судя по этим примерам, разумное применение ограничителей позволяет мягко управлять действиями пользователей для успешного выполнения работы.
Подсказки представляют другую сторону обучающих интерфейсов. Подсказки — это элементы пользовательских интерфейсов, которые стимулируют, поощряют и подкрепляют определенные формы взаимодействия. Прямоугольный элемент, тень от которого подсказывает, что он «выступает» над поверхностью, побуждает пользователя щелкнуть по нему мышью, то есть воспользоваться им как кнопкой. Если в результате этого действия элемент «утопает», данная подсказка подтверждается. Треугольники или стрелки, указывающие вверх, подразумевают, что компонент можно передвинуть вверх или увеличить его размер, если воспользоваться этим элементом управления. Соответственно, направление стрелок вниз подразумевает обратное действие.