Введение
Шаблоны проектирования взаимодействия — это шаблоны проектирования, применяемые в контексте взаимодействия человека с компьютером, описывающие распространенные решения для графических пользовательских интерфейсов. Шаблон проектирования — это формальный способ документирования решения типичной задачи проектирования. Идея была предложена архитектором Кристофером Александром для использования в городском планировании и архитектуре зданий и была адаптирована для различных других областей, включая обучение и педагогику, организацию и процессы разработки, а также архитектуру и проектирование программного обеспечения. Таким образом, шаблоны проектирования взаимодействия — это способ описания решений распространенных проблем удобства использования или доступности в конкретном контексте. Они документируют модели взаимодействия, которые облегчают пользователям понимание интерфейса и выполнение задач.
История
Шаблоны возникли как архитектурная концепция Кристофера Александра. Шаблоны – это способы описания передовых практик, объяснения удачных решений и обобщения опыта, чтобы другие могли повторно использовать эти решения. В информатике шаблоны проектирования используются инженерами-программистами непосредственно в процессе проектирования и для обмена идеями с коллегами. Шаблоны проектирования получили распространение в компьютерной науке после публикации книги «Шаблоны проектирования: элементы повторно используемого объектно-ориентированного программного обеспечения». С тех пор сформировалось сообщество, занимающееся разработкой шаблонов для различных предметных областей, включая архитектурные стили и объектно-ориентированные фреймворки. Материалы конференции «Pattern Languages of Programming» (ежегодная, с 1994 года) содержат множество примеров шаблонов, специфичных для конкретных областей. Применение подхода, основанного на языке шаблонов, к проектированию взаимодействия впервые было предложено в книге Нормана и Дрейпера «Пользователь-ориентированное проектирование систем» (1986). Руководство по проектированию пользовательского интерфейса Macintosh от компании Apple также рекомендует к прочтению работы Кристофера Александра.
Библиотеки
Александр представлял язык образов как структурированную систему, в которой семантические связи между образами создают целое, превосходящее сумму составляющих его частей, подобно тому, как грамматические связи между словами придают языку смысл. В то время как некоторые подборки образов стремятся установить структурные отношения, необходимые для формирования языка, многие другие представляют собой лишь собрание образов (и, следовательно, более корректно их называть библиотеками образов).
Элементы
Чтобы шаблоны были полезны дизайнерам и разработчикам, которые будут их применять, они должны быть легко находимыми и понятными.
Факультативные элементы
Библиотеки шаблонов могут также включать дополнительные элементы, в зависимости от потребностей команды, которая их использует. Эти элементы могут включать:
Спецификации реализации: Руководство по стилю с подробной информацией о размерах шрифтов, размерах в пикселях, цветах и формулировках сообщений и меток может быть полезно для разработчиков. Исследования юзабилити: Любые результаты исследований юзабилити или другие отзывы пользователей должны быть задокументированы. Это могут быть также отзывы от разработчиков, службы поддержки или отдела продаж. Связанные шаблоны: Библиотека шаблонов может содержать схожие шаблоны или быть организована в иерархию родительских и дочерних шаблонов. Альтернативные подходы: Поскольку для решения этой задачи может существовать множество вариантов, командам может потребоваться место для хранения подобных альтернатив. Исходный код: Если код достаточно модулен для повторного использования, его также можно включить в библиотеку.
Implementation Specifications: A style guide with detailed information about font sizes, pixel dimensions, colors, and wording for messages and labels can be helpful for developers. Usability Research: Any supporting research from usability tests or other user feedback should be captured. This can also include feedback from developers, customer service, or the sales team. Related Patterns: The pattern library may include similar patterns, or it may be organized into a hierarchy of parent and child patterns. Similar Approaches: Since there are likely to be many possible solutions to this problem, teams may want a place to capture similar alternatives. Source Code: If the code is modular enough to be reused, then it can be included in the library as well.
Преимущества по сравнению с проектными рекомендациями
Руководства обычно более полезны для описания требований, в то время как шаблоны – полезные инструменты для тех, кому необходимо преобразовать требования в конкретные программные решения. Некоторые рассматривают руководства по дизайну как частный случай шаблона проектирования взаимодействия, поскольку они также являются распространенным способом фиксации опыта в проектировании взаимодействия. Однако шаблоны проектирования взаимодействия обычно обладают следующими преимуществами перед руководствами по дизайну:
Абстрактные руководства, такие как «Восемь золотых правил проектирования интерфейсов» Шнайдермана, не предлагают способов решения проблем, как это делают многие шаблоны проектирования взаимодействия, и не подходят для междисциплинарного общения. Более того, руководства не объясняют, почему конкретное решение работает. Конкретные руководства, например, Руководство по стилю Human Interface для Macintosh, слишком привязаны к конкретному интерфейсу и, следовательно, менее эффективны при применении к другим интерфейсам (особенно не-Macintosh). Другая проблема с руководствами заключается в их чрезмерном количестве, что затрудняет дизайнерам выбор подходящего. Кроме того, руководства претендуют на абсолютную истинность, хотя обычно применимы только в определенном контексте. Следствием этого является то, что руководства часто противоречат друг другу, просто потому что не указывают контекст применения. Руководства и шаблоны не обязательно противоречат друг другу, и оба могут использоваться совместно для выявления проблемы и последующего создания корректного решения.