Юзабилити: как сделать сайт удобным
Независимость интерфейса от других компонентов приложения
Если создание серьезного программного продукта требует многих усилий и ресурсов, то логично было бы предположить, что все части такой сложной системы очень тесно связаны между собой. Зависит ли интерфейс пользователя от способа построения и организации других компонентов Web-приложений? На самом деле, практически нет. Это важно потому, что именно эта особенность помогает разработчикам и специалистам по интерфейсам применять свои знания и анализировать интерфейс программ независимо от того, на каком языке они написаны и в каком окружении работают. Чтобы убедиться в этом, необходимо немного теории.
Большая часть профессионально создаваемых программных продуктов, предназначенных для работы непосредственно с пользователями, построена на базе модели MVC. Модель МУС (model - view-controller) — способ построения приложения с помощью трех основных компонентов: 1) модель (model) — уровень хранения данных (она же объектная модель, база данных); 2) представление (view) — уровень внешнего вида данных, отображаемых пользователю; 3) контроллер (controller) — уровень компонентов, реализующих логику приложения.
Система, например интернет-магазин, в соответствии с моделью МУС должна быть построена так:
1. В базе данных хранится вся информация о пользователях магазина, заказах, товарах, статусах и т. п. Эта информация пассивна, если ее отделить от остальных частей системы, то в принципе с ней можно делать любые возможные операции. На этом уровне известно, какими данными обладает система.
2. На уровне представления, т. е. на фронтальном уровне, система выдает пользователю результат работы контроллера и собирает данные для следующих действий. Она показывает результаты поиска, пользователь вводит свои данные, выбирает виды доставки, оплаты, кладет товар в Корзину, чтобы потом
. вернуться к нему. На этом уровне известно, как выглядят для пользователя результаты работы системы. Именно к представлению и относится интерфейс.
3. На уровне контроллера, т. е. на логическом уровне, описаны законы, по которым работает этот интернет-магазин. Здесь определяется, кто может делать заказ, какова последовательность заказа, как реализуются права Доступа' конкретного пользователя, как искать товар в базе данных, на основании каких статусов товара выдавать информацию о нем пользователю и т. п. На этом уровне известно, как система обрабатывает существующие и получаемые извне данные.
Данные уровни, как правило, разделены по своему расположению. Существует компьютер пользователя и сервер, который обрабатывает всю информацию. Сервер на основании набора данных и инструкций возвращает HTML-страницу (в большинстве случаев эта страница уже не зависит от языка программирования, на котором написаны серверные компоненты Web-сайта). Пользователь совершает какое-нибудь действие на странице, и та снова обращается к серверу. Что бы система ни вытворяла на сервере, пользователю возвращается очередная сгенерированная HTML-страница и так далее. Таким образом, результат для пользователя будет одинаковым и при использовании скриптового языка ASP в сочетании с СУБД MS SQL Server, и при использовании языка РНР с MySql.
Однако далеко не все системы, построенные для работы в Web, организованы по модели МУС. В некоторых случаях разделение на уровни может быть условным. Например, существует Некоторая база данных, хранящая объекты и определяющая объектную модель, набор программ-скриптов, часть которых отвечает за представление, т. е. генерирует HTML-код, а другая — за бизнес-логику, т. е. определяет правила работы системы с пользователем.
Частным случаем являются статические HTML-страницы, не изменяющиеся во время работы пользователей. На таком принципе построено огромное количество персональных сайтов на бесплатных хостинг-серверах. На статической HTML-странице находятся и объекты, и бизнес-логика, и представление.
Таким образом, независимо от способа организации сайта в конечном итоге пользователи работают с одним и тем же: визуальные компоненты HTML-страниц, браузер, операционная система. Это весьма важное и положительное обстоятельство. Благодаря ему «развязаны руки» и у разработчика интерфейса, и у программиста, они достаточно независимы друг от друга.