ИНТЕРФЕЙСЫ

Проблема создания простого и удобного пользовательского интерфейса для программного обеспечения возникла еще в середине 80-х годов прошлого века, когда началось повсеместное внедрение компьютеров в нашу деятельность. С тех пор компаниям-разработчикам наряду с расширением функциональности и гибкости ПО приходится заботиться об эргономичности, простоте использования и эстетической привлекательности его интерфейса. При этом задача учесть такие “нефункциональные” требования к разрабатываемому продукту сама по себе является далеко не тривиальной. Решить ее помогает концепция языка шаблонов, получившая распространение среди специалистов в области взаимодействия человек - компьютер (HCI) и эргономики в середине 90-х годов.

Идея языка шаблонов (pattern language) принадлежит человеку, далекому от HCI, одному из самых известных архитекторов XX столетия Кристоферу Александеру. Он предложил язык шаблонов в качестве средства описания архитектурных решений, однако оказалось, что данную концепцию можно с успехом использовать в дизайне интерфейсов. Более того, на сегодняшний день последователей Александера гораздо больше среди специалистов в области взаимодействия человек - компьютер, чем среди архитекторов. Я сам отношу себя к сторонникам этого подхода в HCI и в данной статье попробую объяснить вам, почему.

“Язык шаблонов” Кристофера Александера

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

Сам Кристофер Александер понятие шаблона определял так: “Шаблон - это общее решение для часто возникающей архитектурной (дизайнерской) проблемы в определенном контексте”.

Несмотря на то что шаблоны можно использовать в различных ситуациях, они не являются просто набором абстрактных принципов. Каждый шаблон служит вполне конкретным руководством к действию. Чтобы понять это, приведу следующий пример. В дизайне офисов, общественных учреждений, станций, поликлиник и так далее Александер рекомендует применять шаблон под названием “Место для ожидания” *1:

“В местах, где людям приходится чего-то ждать (автобуса, встречи, самолета), создайте ситуацию, которая сделает ожидание позитивным. Объедините ожидание с другим занятием - поставьте полку с газетами, кофе, бильярдный стол+ С другой стороны, создайте место, которое просто ожидающего превратит в человека “ожидающего в задумчивости”, то есть спокойное, тихое место”.

_____

*1. Есть такая реальная история. В одном из нью-йоркских небоскребов люди возмущались тем, что слишком долго приходится ждать лифта. Изменить скорость движения подъемной машины не представлялось возможным. Тогда руководство пригласило дизайнера, который придумал простое и дешевое решение проблемы. Стены возле лифтов были сделаны зеркальными, и люди прекрасно проводили время, разглядывая отражения, свои и чужие.

Из 253 таких шаблонов и состоит книга “Язык шаблонов” (“Pattern language”) Кристофера Александера.

Дизайн взаимодействия

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

В применении к дизайну интерфейсов идея шаблонов заключается в описании отнюдь не отдельных элементов управления, а способа, которым пользователь взаимодействует с системой или с элементом системы. Например, “кнопка” в интерфейсе Windows - это не шаблон, а вот неактивная (серая) кнопка является одним из способов реализации шаблона под названием “Отключенные ненужные элементы” (автор этого шаблона - Дженифер Тидвелл). При этом один и тот же шаблон может быть использован и в высокоуровневых, и в низкоуровневых структурах. Главная сила шаблонов в их универсальности: определенный шаблон применим в традиционном компьютерном ПО, веб-сайте, в промышленных панелях управления, видеоиграх, интерфейсе телефона и т. д.

Если говорить о причинах, побудивших к использованию шаблонов в дизайне взаимодействия, то таковых можно назвать несколько.

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

- Язык шаблонов представляет собой отличное средство коммуникации между различными специалистами, работающими над одним дизайнерским проектом: дизайнерами, программистами и др.

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

Язык шаблонов может служить удобным и универсальным способом документирования интерактивных систем - как высоко-, так и низкоуровневых.

На сегодня, к сожалению, единого универсального языка шаблонов для дизайна взаимодействия не существует. Тем не менее многие компании, занимающиеся дизайном интерфейсов, создают свои языки для внутреннего использования.

Структура языка шаблонов

При создании языка шаблонов прежде всего необходимо определить стандартную структуру описания его элементов. Существует несколько отличных друг от друга структур, разработанных разными авторами; мы же рассмотрим способ описания, который в своем языке шаблонов использовал Дженифер Тидвелл (“Pattern Language for Human-Computer Interface Design”). Как пример данная структура хороша именно своей полнотой.

Итак, у Тидвелла описание каждого шаблона состоит из следующих пунктов.

Примеры - краткие примеры из различных областей применения дизайна взаимодействия: программного обеспечения, Интернета, панелей управления, бытовой техники и т. д.

Контекст - обстоятельства, требующие использования данного шаблона. Например, для шаблона “Контрольная панель” контекст будет следующим: “Артефакт должен обеспечить пользователю возможность либо изменить состояние артефакта, либо отдать команду что-то сделать”.

Проблема - вопрос, который при помощи данного шаблона необходимо решить. Для того же шаблона “Контрольная панель” проблемой является: “Артефакт должен наилучшим образом показать, какие действия пользователь может совершить”.

Условия - дополнительные условия, принимаемые во внимание при поиске решения. Обычно в этом пункте перечисляется три-четыре важных условия.

Решение - описание решения проблемы с учетом условий и контекста. Обычно дается краткое описание решения, а затем идет объяснение.

Результативный контекст - обычно ссылки на другие шаблоны, которые рекомендуется использовать вместе с данным. Вообще описания шаблонов полны перекрестных ссылок друг на друга.

Где узнать о шаблонах подробнее?

Увлечение языками шаблонов (если не сказать - мода) пришло в мир HCI в середине 90-х годов, и ныне число сторонников этой идеи только возрастает. Поклонники концепции шаблонов создали целое направление в дизайне интерфейсов (его часто называют Pattern Movement). Существует множество публикаций по этому поводу. Некоторые из них мне удалось собрать в специальном постоянно пополняющемся каталоге. Ссылки на лучшие публикации (с краткими описаниями на русском языке) можно найти по адресу: www.patterns.usethics.ru. Надеюсь, этот каталог будет развиваться и дальше.

К. Вятчин - ведущий специалист компании Usethics.

Версия для печати