Чего не хватает Microsoft BlendИсточник: msdn Алексей Копылов
В этой статье рассказано о новой модели взаимодействия проектировщиков взаимодействия пользовательского интерфейсов, дизайнеров и разработчиков, предложенной Microsoft . Эта модель реализуется благодаря совместной работе специалистов по дизайну и пользовательским интерфейсам в пакете Microsoft Expression Studio и разработчиков в Visual Studio 2008. Введение Технология XAML/Blend обещает дать нам, проектировщикам взаимодействия более высокий контроль над результатом их работы. Это здорово, потому что позволяет нам добиваться того, чтобы конечный продукт имел интерфейс, максимально приближенный к задуманному. Однако данная технология меняет привычный для проектировщиков способ работы, и требует от них новых навыков. У любого опытного проектировщика неизбежно возникнут вопросы: что действительно дает новый подход; стоят ли нововведения смены привычек; легко ли изменять пользовательский интерфейс; можно ли нескольким специалистам вести совместную работу над одним проектом; позволяет ли Microsoft Blend разрабатывать действительно сложные интерфейсы? Рассмотрим эти вопросы подробнее. Классический подходДля того чтобы рельефнее высветить новый подход, предлагаю сначала вспомнить, как выглядит устоявшийся способ проектирования пользовательского интерфейса.
Обмен информацией обеспечивается с помощью результатов труда каждого специалиста и происходит следующим образом:
У каждого участника разработки имеется собственная зона ответственности Естественно, реальная схема взаимодействия сложнее, но основные потоки взаимодействия именно таковы (см. рисунок 1).
Рисунок 1. Разделение зон ответственности Данный подход отлично работает для обычных веб-приложений, в силу ограниченности выразительных средств. Это работает неплохо и для классических настольных (GUI) приложений, где давно устоялись свои модели взаимодействия, построенные на основе фиксированного набора элементов управления (полей ввода, раскрывающихся списков, радиокнопок и так далее). Однако данный подход плохо работает для современных Ajax приложений и особенно для RIA ("richinternetapplications", дословно "интерактивно богатые интернет приложения"). Для того чтобы передать сложное поведение таких приложений проектировщику необходимо написать массу документации, воспринимать которую готов далеко не всякий разработчик. Кроме того, объемные тексты сложно и дорого сопровождать. Если проектировщик упустит некий нюанс поведения программы, то разработчик вероятнее всего реализует оптимальным с точки зрения реализации образом, но не обязательно оптимальным с точки зрения пользователя. В данном случае верна простая истина - лучше один раз увидеть, чем 10 раз услышать. Проблему можно решить с помощью, так называемого, авторского надзора - проектировщик контролирует процесс реализации интерфейса продукта. Надзор подразумевает высокую интенсивность общения между ним и разработчиками. В условиях сжатых сроков, что встречается гораздо чаще, нежели хотелось бы, лишнее общение отнимает большое количество бесценного времени. Вот бы сделать так, чтобы проектировщики сами реализовывали взаимодействие? - эта мысль приходила и приходит многим специалистам в области ИТ. Как бы с программистов снять часть ответственности за создание пользовательского интерфейса? Новая парадигмаВ настоящий момент происходит стремительное слияние настольных (GUI) и веб-приложений. Пользователи успели привыкнуть к уникальным с точки зрения оформления и поведения интерфейсам, которые приняты в мире веб-сайтов и веб-приложений. "Сделайте приложение с уникальным оформлением" стало привычным требованием со стороны маркетологов. В связи с появлением идеологии Ajax появилась возможность делать гибкие и, самое главное, быстрые веб-приложения. Приложения построенные на базе платформ MS .NET или AdobeFlex с точки зрения пользователя ничем не отличаются от "родных". Совершенно естественным образомвозникло решениепозволяющее отделить внешний вид пользовательского интерфейса, сколь бы сложным оно не было, от бизнес-логики программы. Решение основано на специальных языках описания интерфейса - XAML от Microsoft , MXML от Adobe, ZUL от Mozilla и так далее. В этих текстовых языках описывается внешний вид элементов (в векторном формате) так, что интерфейс можно создавать в любом редакторе. В языке XAML можно задавать не только расположение элементов на экранной форме (в векторном виде), но и все трансформации, которые с ними происходят. Например, проектировщик может задать внешний вид кнопки. Причем можно задать не только вид отжатой и нажатой кнопки, но и то, каким образом происходит сама трансформация (промежуточные фазы). То есть теперь можно в полной мере контролировать поведение отдельных элементов. Другой хороший пример - в MacOSX имеется форма входа в операционную систему. Если пользователь ввел неправильный пароль, то форма ввода трясется характерным образом. В данном случае "трясучка" является отличным выразительным средством - пользователь обязательно заметит реакцию системы даже когда смотрит на клавиатуру, а не на экран. С помощью XAML проектировщик может легко воссоздать подобное поведение без помощи разработчика. Для редактирования XAML лучше всего применять специальный пакет, Microsoft Expression Blend или просто Blend. Редактирование внутри него происходит в наглядной, визуальной форме, то есть проектировщик может создавать элементы, перемещать их по экрану и описывать поведение. Вроде бы все отлично! Проектировщики проектируют интерфейс, дизайнеры его доводят до товарного вида, а разработчики реализуют. Но давайте более пристально взглянем на Blend. Взаимодействие между членами команды теперь происходит следующим образом:
На рисунке 2 изображена новая схема взаимодействия. Рисунок 2. Пространство XAML Все достаточно красиво с первого взгляда, но со второго начинаются вопросы: Должен ли сценарии трансформаций (фактически анимацию) создавать именно проектировщик, а не дизайнер? Для того, чтобы перемещения объектов были естественными для человеческого восприятия необходимо следовать определенным принципам, например, двенадцати принципам Уолта Диснея ( http://www.multikov.net/master.php?article=3 ). Однако, если дать анимацию на откуп дизайнерам, то имеется шанс, что не все трансформации будут реализованы должным образом - только проектировщик знает в деталях поведение будущего продукта. Пространство имен объектов, которое удобно для проектировщика, может оказаться неудобным для разработчика, и наоборот. То есть проектировщик может получить обратно от разработчика такой XAML, в котором ему заново придется разбираться. Как отслеживать изменения, которые происходят с XAML? Не все изменения наглядны, следовательно, у всех участников будет уходить много времени на документирование этих изменений во внешней коммуникационной среде (например, по e-mail). Каким образом осуществлять глубинные изменения экранных объектов (или рефакторинг, если говорить по-программистки)? При итеративной разработке постоянно возникает необходимость в изменении внешнего вида и поведения экранных объектов. Все объекты внутри XAML выстраиваются в жесткую иерархию (вследствие XML синтаксиса), и любой перенос объекта приводит к необходимости контролировать вручную результат переноса. Проще говоря, Blend не содержит удобных средств для оперативных изменений объектов. Подобных вопросов возникает большое количество. Новые требования к проектировщикамЧасть проблем возникает от того, что изменились зоны ответственности специалистов (см. рисунок выше), и так как теперь специалисты действуют в единой XAML-среде, то средства редактирования обязаны поддерживать это разделение. Но сначала разберемся с новыми требованиями к проектировщикам взаимодействия. Итак, проектировщику необходимо:
Теперь специалисты действуют в единой XAML -среде. Как видим, переобучения проектировщиков не избежать. Нереализованные требования в BlendТакже сам Blend должен поддерживать новый подход в должной мере, а именно:
ВыводыBlend - это не средство прототипирования в классическом виде. Нет смысла проектировать интерфейс внутри Blend для иных платформ, нежели для MicrosoftSilverlight (с) и .NET (с).Однако для данных платформ проектировщики взаимодействия получили возможность максимально контролировать конечный результат. К сожалению, существующая версия Blend не поддерживает в должной мере изменившуюся парадигму создания пользовательского интерфейса. Этот недостаток мало сказывается на небольших проектах с числом участников до 3-4, но на средних и больших проектах разработка интерфейса может потребовать слишком больших усилий. Blend не поддерживает в должной мере изменившуюся парадигму создания пользовательского интерфейса. Думаю, что специалистам Microsoft необходимо приложить все усилия для преодоления данных ограничений среды разработки. |