Назад

Электронная библиотека


Типичные проблемы интерфейса ПО и методы их предотвращения

Авторы: Александр Белышкин,
Владислав Головач

Ссылка: Журнал "Компьютерра"

Регулярно занимаясь редизайном интерфейса программного обеспечения, мы обнаружили, что в большинстве случаев мы сталкиваемся с однотипными проблемами, вызванными столь же однотипными промахами разработчиков при проектировании этого ПО. Эти проблемы таковы:
  1. интерфейс не адекватен особенностям пользователей
  2. интерфейс не адекватен среде использования системы
  3. интерфейс не адекватен содержательной деятельности пользователей
  4. интерфейс неадекватно отображает объекты системы и связи между ними.

Разумеется, эта типология не претендует на исчерпывающее описание интерфейсных проблем отечественного программного обеспечения. Здесь перечислены только типичные проблемы, с которыми приходится сталкиваться. Кроме того, следует отметить, что эти проблемы, как правило, не существуют по отдельности. На практике каждая система обладает тем или иным набором этих проблем.

Ниже мы попытаемся кратко описать каждую из этих проблем, причины их возникновения и т.п. Кроме того, мы попытаемся сформулировать правила, следуя которым можно снизить вероятность их возникновения.

Интерфейс не адекватен особенностям пользователей

Любой разработчик, начиная проектировать систему, всегда определяет аппаратные требования к системе. Напротив, требования, относящиеся к ограничениям и особенностям системы, не определяются почти никогда. В результате получается система, не ориентированная ни на кого. Её интерфейс в лучшем случае противоречив (один модуль рассчитан на опытных пользователей, а другой на новичков, хотя оба модуля предназначены для одних и тех же пользователей), в худшем случае – подходит только таким пользователям, которые заведомо не будут пользоваться системой.

В качестве примера этой проблемы можно привести следующий случай. В некоторой системе, рассчитанной на самую широкую аудиторию, в качестве основных элементов управления широко применялись сложные деревья (treeview), не предназначенные как таковые ни для малоопытных пользователей, ни на постоянную работу пользователей с ними (они требуют от пользователей точной моторики и при длительной работе с ними велик процент человеческой ошибки). Поскольку изначально весь интерфейс системы была спроектирован в расчете на эти деревья, его переделка оказалась невозможной по экономическим причинам.

Единственным решением этой проблемы является формализация пользовательских требований к системе до начала проектирования самой системы (переделывать готовую систему гораздо дороже). При этом должен получиться список свойств пользователей, включающий:

Получившийся список необходимо использовать для оценки всех решений, принятых при разработке системы. Без этого интерфейс обязательно не будет соответствовать требованиям пользователей.

Интерфейс не адекватен среде использования системы

Помимо адекватности особенностям пользователей, интерфейс должен быть адекватным среде, в которой используется система. Основные составляющие среды использования таковы:


Если интерфейс программы не был разработан в расчете на возможное включение режима Large Fonts, все элементы управления "поплывут". Хорошо ещё, если ни один элемент не исчезнет, перекрытый другим.

Как и в случае неадекватности интерфейса особенностям пользователей, эти проблемы легко решаются формализацией соответствующих требований к системе на стадии её проектирования.

Интерфейс не адекватен содержательной деятельности пользователей

Эту проблему без преувеличения можно назвать наиболее типичной для российского программного обеспечения. Суть проблемы заключается в том, что структура пользовательского интерфейса приведена в соответствие с информационными потоками (структурой объектов) внутри самой системы, а не в соответствие со структурой реальной деятельности пользователей.

Как следствие, интерфейс "зашумлен" информацией, релевантной объекту, с которым работает пользователь, но либо не нужной ему сейчас, либо не нужной ему вообще (поскольку разным сотрудникам нужна разная информация). Оборотной стороной этой проблемы является противоположная ситуация – интерфейсные элементы (выводимая информация или блоки ввода информации) являются атрибутами разных объектов, соответственно разработчики размещают их на разных экранах, игнорируя то обстоятельство, что для выполнения типовых операций с этими интерфейсными элементами пользователю необходимо взаимодействовать одновременно.


Подобного рода диалоговые окна типичны почти во всех системах автоматизации. Наш опыт показывает, что в большей части случаев такие окна могут быть упрощены в несколько раз.

Приведем типичный пример. При оптимизации интерфейса большой ERP системы был проведен анализ одного из диалогов запроса данных. В общей сложности, в этом окне было 15 полей ввода и 6 чекбоксов. Как показал анализ интервью пользователей, в работе постоянно нужны только два поля ввода и два чекбокса, ещё одно поле ввода нужно изредка. Таким образом, экран содержал пятнадцать ненужных элементов управления, при этом основные элементы даже не были расположены в первых рядах, на них не позиционировался курсор, они никак не были выделены. Более того, большинство пользователей не могло ответить на вопрос, что означают некоторые из имеющихся полей.

Обратной стороной этой проблемы можно считать универсальность – дешевле разработать единое окно, с которым будет работать несколько разных служащих (бухгалтер, директор, менеджер по продажам и т.п.), чем три окна для каждого из них. Но эта универсальность оборачивается значительной неэффективностью интерфейса (и, как следствие, системы в целом).

Таким образом, пользовательский интерфейс должен в первую очередь определяться структурой деятельности пользователей, а не структурой объектов, с которыми пользователь взаимодействует в процессе работы.

Интерфейс неадекватно отображает объекты системы и связи между ними

Помимо содержательной деятельности пользователей, интерфейс должен быть адекватен собственно объектам системы, что получается не всегда. Без этого интерфейс системы не будет однозначен, а неоднозначность приводит к появлению человеческих ошибок у пользователей. Большинство однозначности в интерфейсе происходит от воздействия следующих факторов:

Системный подход к проектированию интерфейса, а также использование стандартизованных интерфейсных библиотек (к ним относятся не только библиотеки интерфейсных элементов, но также и библиотеки терминов) вполне успешно способны решить проблемы такого плана, тем более, что эти нехитрые меры не требуют от разработчиков специальных навыков. К чести отечественных разработчиков следует отметить, что в последнее время наметилась тенденция по искоренению подобных проблем.

Выводы

Приведенная выше типология проблем, частично совпадая с другими подобными типологиями (например, из стандартов ISO), значительно от них отличается: мы не ставили перед собой задачи максимально полно охватить весь возможный круг проблем, но лишь обозначили типовые проблемы, характерные для программных продуктов, разрабатываемых в России. Таким образом, предложенная типология носит сугубо практический характер: используя её, разработчики могут получить возможность заранее диагностировать и исправлять возможные (и вероятные) проблемы при разработке пользовательского интерфейса своих систем.