<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>GUI Machine &#187; История GUI Machine</title>
	<atom:link href="https://guimachine.ru/?cat=12&#038;feed=rss2" rel="self" type="application/rss+xml" />
	<link>https://guimachine.ru</link>
	<description>Прототипирование десктопных и веб-приложений</description>
	<lastBuildDate>Fri, 10 Sep 2021 16:28:54 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.6.1</generator>
		<item>
		<title>Интерактивное прототипирование с GUI Machine. Часть III</title>
		<link>https://guimachine.ru/?p=932</link>
		<comments>https://guimachine.ru/?p=932#comments</comments>
		<pubDate>Wed, 02 Oct 2013 10:56:43 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[История GUI Machine]]></category>
		<category><![CDATA[Статьи]]></category>
		<category><![CDATA[gui]]></category>
		<category><![CDATA[gui machine]]></category>
		<category><![CDATA[инструмент]]></category>
		<category><![CDATA[инструменты]]></category>
		<category><![CDATA[Интерфейс]]></category>
		<category><![CDATA[пользовательского интерфейса]]></category>
		<category><![CDATA[проект]]></category>
		<category><![CDATA[прототип]]></category>
		<category><![CDATA[прототипирование]]></category>
		<category><![CDATA[разработки интерфейса]]></category>

		<guid isPermaLink="false">http://savvinov/?p=932</guid>
		<description><![CDATA[&#160; В предыдущих сериях&#8230; В предыдущих статьях цикла мы в деталях описали процесс поиска подходящего нам инструмента прототипирования и историю создания собственного инструмента – GUI... <a href="https://guimachine.ru/?p=932">Подробнее</a>]]></description>
				<content:encoded><![CDATA[<p align="right"><a href="http://habrahabr.ru/company/alee/blog/123745/" target="_blank" rel="nofollow"><img alt="" src="http://guimachine.ru/wp-content/uploads/2013/10/habrlink.png" width="141" height="36" /></a></p>
<p>&nbsp;</p>
<h1><strong>В предыдущих сериях&#8230;</strong></h1>
<p><img class="alignright size-full wp-image-210" alt="guilogo" src="http://guimachine.ru/wp-content/uploads/2013/09/guilogo.png" width="283" height="257" /><br />
В предыдущих статьях цикла мы в деталях описали <a title="Как мы выбирали инструмент прототипирования. Часть I" href="http://guimachine.ru/?p=927">процесс поиска подходящего нам инструмента прототипирования</a> и <a title="История создания инструмента прототипирования. Часть II" href="http://guimachine.ru/?p=930">историю создания собственного инструмента – GUI Machine.</a> Теперь пришло время рассказать более подробно о том, что у нас получилось. Дабы не тратить драгоценное время читателя, приступлю к описанию инструмента прототипирования GUI Machine, его функциональности и возможностей без замедления и лирических отступлений. Статья будет интересна не только тем, кто уже знаком с инструментом и хочет узнать о нём больше, но и тем, кто находится в активном поиске инструмента прототипирования и проводит их сравнительный анализ.<br />
<span id="more-932"></span></p>
<h1>Резюме</h1>
<p><strong><em>Имя:</em></strong> GUI Machine</p>
<p><strong><em>Год рождения:</em></strong> 2009</p>
<p><strong><em>Дата выхода в свет:</em></strong> 24 января 2011 года</p>
<p><strong><em>Место рождения:</em></strong> Санкт-Петербург, Россия</p>
<p><strong><em>Организация:</em></strong> <a href="http://habrahabr.ru/company/alee/" target="_blank">Alee Software</a></p>
<p><strong><em>Проф. призвание:</em></strong> инструмент динамического прототипирования.</p>
<p><strong><em>Проф. навыки:</em></strong> создание интерактивных прототипов сложных десктоп и веб-приложений без написания программного кода</p>
<p><strong><em>Среда обитания:</em></strong> Windows, Mac OS, Linux</p>
<p><strong><em>Зарубежные аналоги:</em></strong> Axure RP, GUI Design Studio, MS Expression Blend</p>
<p><strong><em>Отечественные аналоги:</em></strong> отсутствуют</p>
<p><strong><em>Личные качества:</em></strong> простота, функциональная наполненность, интуитивность, высокая скорость и удобство создания прототипов.</p>
<p><strong><em>Знание языков:</em></strong> русский и английский</p>
<p><strong><em>О себе:</em></strong> рождён в успешной ИТ-компании, постоянно пополняюсь новой функциональностью, улучшаюсь и избавляюсь от ошибок. Амбициозный, имею грандиозные планы. Будущий революционер мира разработки программного обеспечения.</p>
<p><strong><em>Контакты:</em></strong> <a href="http://www.guimachine.ru">http://www.guimachine.ru</a></p>
<h1>Первое знакомство</h1>
<p>Для начала считаю нужным в двух словах описать предназначение приложения, решаемые задачи, специализацию и представить интерфейс приложения.</p>
<p>Итак, GUI Machine – это инструмент для создания интерактивных прототипов десктоп (настольных) и веб-приложений— определение, говорящее само за себя. Такие прототипы позволяют описывать как внешний вид, графический интерфейс, так и поведение, интерфейсную логику разрабатываемой системы. Прототипы, созданные в GUI Machine, характеризуются высокой достоверностью, детализацией, визуальной точностью и по степени близости к конечной системе относятся к классу High-fidelity прототипов. В качестве примеров предлагаю посмотреть видео-презентации прототипов, созданных в GUI Machine:</p>
<p align="center"><strong><em>Прототип веб-интерфейса CRM-системы:</em></strong><br />
<iframe src="//www.youtube.com/embed/PhVNBUEN7bc" height="360" width="480" allowfullscreen="" frameborder="0"></iframe></p>
<p align="center"><strong><em>Прототип внутрикорпоративного портала Alee Software:</em></strong><br />
<iframe src="//www.youtube.com/embed/Ly0YEIUiEts" height="360" width="480" allowfullscreen="" frameborder="0"></iframe></p>
<p>Для прототипирования в GUI Machine не требуются какие-либо специальные знания и навыки, не требуется написание программного кода. Таким образом, инструмент предназначен не только, и даже не столько разработчикам, сколько аналитикам, менеджерам проектов, проектировщикам, техническим писателям, юзабилити-специалистам, которые непосредственно общаются с заказчиком/будущим пользователем и наиболее полно и точно представляют их требования и пожелания, которые впоследствии будут воплощены в прототипе с минимальными потерями значимой информации.</p>
<p>Как следствие, разработчик помимо ТЗ получит рабочий прототип разрабатываемой системы, который позволит уточнить, конкретизировать неясные или двусмысленные требования и значительно уменьшит вероятность неверной интерпретации требований. Соответственно, значительно повысится вероятность того, что система, полностью соответствующая требованиям заказчика и полностью его удовлетворяющая, будет реализована с первого раза либо с минимальным количеством переделок. Меньше итераций разработки — меньше затраченного времени и денег. Кроме того, не стоит забывать про довольного заказчика, возросшая лояльность которого — далеко не самый маловажный фактор. Это лишь один из вариантов использования прототипов, но далеко не единственный.</p>
<p>Впрочем, о пользе прототипирования писали, говорили, спорили не раз и не два, поэтому не буду утруждать читателя дальнейшими рассуждениями на тему, а перейду к описанию интерфейса GUI Machine.</p>
<h1>Интерфейс GUI Machine</h1>
<p>Рабочая область GUI Machine организована таким образом, чтобы помочь сосредоточиться на создании и редактировании программных интерфейсов.<br />
<a href="http://guimachine.ru/wp-content/uploads/2013/10/gui_machine.png" rel="three"><img class="aligncenter size-full wp-image-1119" alt="gui_machine" src="http://guimachine.ru/wp-content/uploads/2013/10/gui_machine.png" width="1284" height="802" /></a><br />
В верхней части окна приложения представлено меню, выполненное в Ribbon стиле, предоставляющее быстрый доступ к наиболее востребованным операциям и настройкам. Ниже по центру располагается область редактирования прототипа, на которой из различных компонентов создаются, собираются экраны интерфейса. Под областью редактирования показаны корешки страниц проекта. Слева и справа располагаются основные рабочие панели: <strong><em>Компоненты, Слои, Свойства объекта, Шаблоны и История</em></strong>. Все панели могут быть свёрнуты, спрятаны по краям области редактирования, изменены в размерах (как по высоте, так и по ширине), перемещены и закрыты. Меню также можно сворачивать, оставляя лишь только одну верхнюю строчку. Таким образом, можно настроить вид приложения «под себя» и освободить максимальное количество места под область редактирования прототипа для более удобной и приятной работы. Быстро скрыть все панели можно при помощи сочетания клавиш <strong>Ctrl+H.</strong><br />
<a href="http://guimachine.ru/wp-content/uploads/2013/10/gui_machine_interface_empty.png" rel="three"><img class="aligncenter size-full wp-image-1120" alt="gui_machine_interface_empty" src="http://guimachine.ru/wp-content/uploads/2013/10/gui_machine_interface_empty.png" width="1284" height="802" /></a><br />
Также управление панелями доступно со вкладки <strong><em>Утилиты и фреймы</em></strong> верхнего горизонтального меню приложения:<br />
<a href="http://guimachine.ru/wp-content/uploads/2013/10/gui_machine_frames_menu.png" rel="three"><img class="aligncenter size-full wp-image-1121" alt="gui_machine_frames_menu" src="http://guimachine.ru/wp-content/uploads/2013/10/gui_machine_frames_menu.png" width="757" height="109" /></a><br />
Здесь можно скрыть либо отобразить панели (по одной либо все вместе), закрепить их положение, выключить отображение их заголовков.</p>
<h2>Компоненты</h2>
<p>Панель <strong><em>Компоненты</em></strong> — основной рабочий инструмент при построении интерфейсов, содержащий множество различных компонентов. Инструмент предназначен для добавления на область редактирования объектов. Панель содержит 4 набора компонентов: <strong><em>Стандартные, Расширенные, Фигуры, Vaadin.</em></strong> Помимо своего стандартного вида (дерево компонентов с названиями) панель имеет альтернативное компактное представление:<br />
<a href="http://guimachine.ru/wp-content/uploads/2013/10/gui_machine_components_compact.png" rel="three"><img class="aligncenter size-full wp-image-1122" alt="gui_machine_components_compact" src="http://guimachine.ru/wp-content/uploads/2013/10/gui_machine_components_compact.png" width="245" height="317" /></a> Изменить способ отображения компонентов можно кликом правой кнопки мыши внутри панели.</p>
<h2>Стандартные компоненты</h2>
<p><a href="http://guimachine.ru/wp-content/uploads/2013/10/gui_machine_components_standart.png" rel="three"><img class="alignleft size-full wp-image-1123" alt="gui_machine_components_standart" src="http://guimachine.ru/wp-content/uploads/2013/10/gui_machine_components_standart.png" width="245" height="758" /></a>Набор стандартных компонентов, используемых при построении любого интерфейса: кнопки (западающая и обычная), панели (обычная, таб-панель, сплит-панель), текстовые ярлыки, поля и области, чекбокс, радиокнопка, списки (выпадающий и обычный), дерево, таблица, окно, меню, всплывающее меню и другие.Практически все компоненты набора являются нативными компонентами операционной системы. Это значит, что внешний вид и поведение компонентов наследуется, заимствуется от операционной системы, на которой запущен прототип в режиме просмотра.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>Все стандартные компоненты можно обнаружить также на вкладке <strong><em>Стандартные</em></strong> верхнего горизонтального меню приложения:<br />
<a href="http://guimachine.ru/wp-content/uploads/2013/10/gui_machine_components_standart_menu2.png" rel="three"><img class="aligncenter size-full wp-image-1127" alt="gui_machine_components_standart_menu2" src="http://guimachine.ru/wp-content/uploads/2013/10/gui_machine_components_standart_menu2.png" width="757" height="109" /></a></p>
<p>На рисунке ниже показано запущенное в Windows 7 в режиме просмотра окно, содержащее стандартные компоненты:<br />
<a href="http://guimachine.ru/wp-content/uploads/2013/10/GUI_Machine_standart_components_run.png" rel="three"><img class="aligncenter size-full wp-image-1128" alt="GUI_Machine_standart_components_run" src="http://guimachine.ru/wp-content/uploads/2013/10/GUI_Machine_standart_components_run.png" width="684" height="639" /></a><br />
А теперь то же самое окно, но запущенное на Mac OS:<br />
<a href="http://guimachine.ru/wp-content/uploads/2013/10/GUI_Machine_standart_components_mac.png" rel="three"><img class="aligncenter size-full wp-image-1129" alt="GUI_Machine_standart_components_mac" src="http://guimachine.ru/wp-content/uploads/2013/10/GUI_Machine_standart_components_mac.png" width="750" height="702" /></a><br />
и на Linux:<br />
<a href="http://guimachine.ru/wp-content/uploads/2013/10/GUI_Machine_standart_components_linux.png" rel="three"><img class="aligncenter size-full wp-image-1130" alt="GUI_Machine_standart_components_linux" src="http://guimachine.ru/wp-content/uploads/2013/10/GUI_Machine_standart_components_linux.png" width="684" height="636" /></a><br />
В набор, помимо привычных элементов интерфейса, также входят лэйауты — динамический и статический — объекты, на которых основывается любой интерфейс, созданный в GUI Machine. Именно они обуславливают специфику работы в GUI Machine.</p>
<h2>Статический лэйаут</h2>
<p>Статический лэйаут — наиболее привычный для подавляющего числа пользователей. По сути, это контейнер, который может содержать в себе несколько произвольно расположенных объектов. Статичность его заключается в том, что размер и положение всех содержимых объектов жёстко зафиксированы и не могут быть изменены в режиме просмотра. Прототипы на основе статических лэйаутов можно создавать очень быстро. Основное предназначение таких прототипов — создание скриншотов (накидал — запустил — снял — закрыл), т.к. степень их динамичности невысокая.<br />
<a href="http://guimachine.ru/wp-content/uploads/2013/10/gui_machine_static_layout.png" rel="three"><img class="aligncenter size-full wp-image-1131" alt="gui_machine_static_layout" src="http://guimachine.ru/wp-content/uploads/2013/10/gui_machine_static_layout.png" width="785" height="363" /></a><br />
В левой части рисунка показан статический лэйаут на области редактирования, содержащий несколько объектов. В павой части — тот же лэйаут, но запущенный в просмотр. Окно просмотра намеренно вытянуто по вертикали с целью показать «статичность» этого лэйаута: при изменении размеров окна положение и размер содержимых объектов осталось неизменным.</p>
<p>При работе со статическим лэйаутом рекомендую использовать направляющие линии либо инструменты выравнивания, расположенные на вкладке <strong><em>Утилиты и фреймы</em></strong> верхнего горизонтального меню приложения. В противном случае расположить объекты ровно и красиво внутри статического лэйаута достаточно сложно.<br />
<a href="http://guimachine.ru/wp-content/uploads/2013/10/gui_machine_align.png" rel="three"><img class="aligncenter size-full wp-image-1132" alt="gui_machine_align" src="http://guimachine.ru/wp-content/uploads/2013/10/gui_machine_align.png" width="757" height="109" /></a><br />
Инструменты выравнивания в GUI Machine</p>
<p>Представленный на рисунке набор инструментов позволяет горизонтально и вертикально выровнять положение нескольких выделенных на области редактирования объектов, сравнять их ширину и высоту, расположить их последовательно в нужном порядке через заданные промежутки.</p>
<h2>Динамический лэйаут</h2>
<p>Если же требуется полностью интерактивный и динамичный прототип, то он должен быть создан на основе динамических лэйаутов. Этот объект представляет собой контейнер, который может быть разбит на несколько ячеек, образуя таким образом своего рода каркас интерфейса. Вставляемые в динамический лэйаут объекты располгаются строго по ячейкам (размер вставляемого объекта будет изменён до размера ячейки/ячеек). При изменении размера запущенного в режиме просмотра окна, положение и размер вставленных в лэйаут объектов также будут изменены. Работа с динамическими лэйаутами несколько более сложна, необходимо потратить некоторое время на изучение его поведения (минут 10 с документацией), однако при определённой сноровке работа с ним не доставляет каких-либо сложностей или неудобств.<br />
<a href="http://guimachine.ru/wp-content/uploads/2013/10/gui_machine_dynamic_layout.png" rel="three"><img class="aligncenter size-full wp-image-1133" alt="gui_machine_dynamic_layout" src="http://guimachine.ru/wp-content/uploads/2013/10/gui_machine_dynamic_layout.png" width="837" height="384" /></a><br />
Также, как и на предыдущем рисунке, здесь окно просмотра лэйаута намеренно вытянуто. При изменении размера окна положение и размер некоторых объектов также изменились. Зависит это от типа ячейки лэйаута, в которой расположен тот или иной объект (их существует 3 типа).</p>
<h2>Плейсхолдер</h2>
<p>Помимо лэйаутов, выбивается из линейки стандартных элементов интерфейса компонент Плейсхолдер. Как говорит его название — это объект, который занимает определённое место на прототипе и хранит ссылку на другой объект. При запуске прототипа в режиме просмотра, плэйсхолдер будет автоматически заменён объектом, на который он ссылается.<br />
<a href="http://guimachine.ru/wp-content/uploads/2013/10/gui_machine_placeholder.png" rel="three"><img class="aligncenter size-full wp-image-1134" alt="gui_machine_placeholder" src="http://guimachine.ru/wp-content/uploads/2013/10/gui_machine_placeholder.png" width="967" height="326" /></a></p>
<h2>Расширенные компоненты</h2>
<p><a href="http://guimachine.ru/wp-content/uploads/2013/10/gui_machine_components_extended.png" rel="three"><img class="alignleft size-full wp-image-1135" alt="gui_machine_components_extended" src="http://guimachine.ru/wp-content/uploads/2013/10/gui_machine_components_extended.png" width="245" height="380" /></a>Набор расширенных компонентов содержит нестандартные компоненты интерфейса (такие, как &#8220;Карта Google&#8221;, &#8220;Сворачиваемая панель&#8221;, &#8220;Список чек-боксов&#8221;) и компоненты, предназначенные исключительно для создания сложных, нетривиальных действий (например, &#8220;Таймер&#8221;, &#8220;Аудио проигрыватель&#8221;, &#8220;Объект связи&#8221;). Последние не являются элементами интерфейса и не могут быть вставлены ни в какой из лэйаутов.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>Подобно стандартным, расширенные компоненты можно обнаружить также на вкладке <strong><em>Расширенные</em></strong> верхнего горизонтального меню приложения:<br />
<a href="http://guimachine.ru/wp-content/uploads/2013/10/gui_machine_components_extended_menu.png" rel="three"><img class="aligncenter size-full wp-image-1136" alt="gui_machine_components_extended_menu" src="http://guimachine.ru/wp-content/uploads/2013/10/gui_machine_components_extended_menu.png" width="757" height="109" /></a>На рисунке ниже показано запущенное в режиме просмотра окно, содержащее компоненты из расширенного набора (естественно, только те из них, которые являются элементами интерфейса).</p>
<p><a href="http://guimachine.ru/wp-content/uploads/2013/10/ex_comp.png" rel="three"><img class="aligncenter size-full wp-image-1139" alt="ex_comp" src="http://guimachine.ru/wp-content/uploads/2013/10/ex_comp.png" width="665" height="270" /></a><strong></strong></p>
<h2><strong>Веб-компоненты Vaadin</strong></h2>
<p><a href="http://guimachine.ru/wp-content/uploads/2013/10/vaadin_web_comp.png" rel="three"><img class="alignleft size-full wp-image-1140" alt="vaadin_web_comp" src="http://guimachine.ru/wp-content/uploads/2013/10/vaadin_web_comp.png" width="245" height="521" /></a>Набор веб-компонентов Vaadin, в отличие от стандартного набора, является ненативным, платформо-независимым — выглядит и работает одинаково на любой операционной системе. Он включается в себя наиболее популярные и часто используемые компоненты, дублирующие компоненты из стандартного набора, и 2 более сложных, нестандартных компонента: <strong><em>Поле выбора даты и Календарь.</em></strong></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>Как вы догадались, компоненты Vaadin также продублированы на вкладке <strong><em>Vaadin</em></strong> верхнего горизонтального меню приложения:</p>
<p><a href="http://guimachine.ru/wp-content/uploads/2013/10/vvadin.png" rel="three"><img class="aligncenter size-full wp-image-1142" alt="vvadin" src="http://guimachine.ru/wp-content/uploads/2013/10/vvadin.png" width="757" height="109" /></a></p>
<p>На рисунке ниже показано запущенное в режиме просмотра окно, содержащее веб-компоненты Vaadin:</p>
<p><a href="http://guimachine.ru/wp-content/uploads/2013/10/vaadin1.png" rel="three"><img class="aligncenter size-full wp-image-1143" alt="vaadin1" src="http://guimachine.ru/wp-content/uploads/2013/10/vaadin1.png" width="670" height="612" /></a><strong></strong></p>
<h2><strong>Фигуры</strong></h2>
<p><a href="http://guimachine.ru/wp-content/uploads/2013/10/figures.png" rel="three"><img class="alignleft size-full wp-image-1144" alt="figures" src="http://guimachine.ru/wp-content/uploads/2013/10/figures.png" width="245" height="260" /></a>Набор простых (квадрат, круг, прямоугольник, овал, ромб) и сложных (многоугольник) геометрических фигур для создания собственных нестандартных элементов управления или окон нестандартной формы. Естественно, платформо-независимые.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>Фигуры также можно найти на вкладке <strong><em>Фигуры</em></strong> верхнего горизонтального меню приложения:</p>
<p><a href="http://guimachine.ru/wp-content/uploads/2013/10/figuresmenu.png" rel="three"><img class="aligncenter size-full wp-image-1145" alt="figuresmenu" src="http://guimachine.ru/wp-content/uploads/2013/10/figuresmenu.png" width="757" height="109" /></a>На рисунке ниже показано запущенное в режиме просмотра окно, содержащее все фигуры.</p>
<p><a href="http://guimachine.ru/wp-content/uploads/2013/10/figuresris.png" rel="three"><img class="aligncenter size-full wp-image-1146" alt="figuresris" src="http://guimachine.ru/wp-content/uploads/2013/10/figuresris.png" width="690" height="356" /></a><strong></strong></p>
<h2><strong>Свойства объектов</strong></h2>
<p><a href="http://guimachine.ru/wp-content/uploads/2013/10/objproperties.png"><img class="aligncenter size-full wp-image-1147" alt="objproperties" src="http://guimachine.ru/wp-content/uploads/2013/10/objproperties.png" width="506" height="733" /></a>Для каждого компонента в GUI Machine мы постарались «вынести наружу» и сделать изменяемыми максимальное количество его свойств. Это позволяет детально настраивать, видоизменять, кастомизировать любой объект.</p>
<p>Все свойства объектов разделяются на 3 группы: <strong><em>свойства типа, стандартные свойства, свойства для редактора.</em></strong></p>
<p>Первая группа включает в себя свойства, характерные только для объектов данного конкретного типа (на рисунке — свойства окна, объекта типа JWindow). Набор свойств для объекта другого типа (например, для кнопки — объекта типа JButton) будет иным.</p>
<p>Набор стандартных свойств одинаков для объектов любого типа и включает в себя свойства общего характера, применимые для многих объектов: текст подсказки (тултип при наведении), курсор при наведении, настройки отображения и прозрачности, настройки полос прокрутки (скроллов). Однако часть свойств этой группы заблокирована для некоторых объектов (как на рисунке).</p>
<p>Группа свойств для редактора содержит свойства, которые влияют на вид и поведение объекта исключительно на области редактирования. При запуске прототипа в просмотр состояние этих свойств не имеет значения. Первые два свойства этой группы — тип объекта и ID объекта – заблокированы для всех объектов и носят лишь информативный характер.</p>
<p>GUI Machine позволяет изменять свойства сразу нескольких объектов одного типа, выделенных на области редактирования.</p>
<p>Часть наиболее востребованных и часто встречающихся свойств объектов, отвечающих за форматирование и расположение текстового содержимого, представлена также на вкладке <strong><em>Редактирование</em></strong> верхнего горизонтального меню приложения:</p>
<p><a href="http://guimachine.ru/wp-content/uploads/2013/10/redaktor.png"><img class="aligncenter size-full wp-image-1148" alt="redaktor" src="http://guimachine.ru/wp-content/uploads/2013/10/redaktor.png" width="757" height="109" /></a>Для того, чтобы была возможность создания своего собственного ни на кого не похожего элемента управления (кастомного контрола), некоторые объекты имеют свойство С оформлением. При отключении этого свойства стандартная визуализация объекта полностью отключается, однако его поведение сохраняется. Остаётся лишь применить к этому объекту заранее подготовленное изображение или форму. Так можно получить, например, нестандартную кнопку или окно нестандартной формы.</p>
<h2><strong>HTML-редактор</strong></h2>
<p>Практически все свойства объектов с текстовым содержимым могут быть отредактированы во встроенном HTML-редакторе. Для его запуска нужно нажать на маленькую кнопку справа от текстового свойства:</p>
<p><a href="http://guimachine.ru/wp-content/uploads/2013/10/htmlredaktor.png" rel="three"><img class="aligncenter size-full wp-image-1149" alt="htmlredaktor" src="http://guimachine.ru/wp-content/uploads/2013/10/htmlredaktor.png" width="240" height="21" /></a>HTML-редактор позволяет как редактировать текст в визуальном редакторе, так и непосредственно писать HTML-код.</p>
<p><a href="http://guimachine.ru/wp-content/uploads/2013/10/htmlred.png" rel="three"><img class="aligncenter size-full wp-image-1150" alt="htmlred" src="http://guimachine.ru/wp-content/uploads/2013/10/htmlred.png" width="932" height="610" /></a>HTML-редактор, как вы понимаете, значительно расширяет возможности кастомизации объектов. Как ни странно, в большинстве инструментов прототипирования подобная функциональность отсутствует.</p>
<h2><strong>Редакторы сложных объектов</strong></h2>
<p>Большинству сложных объектов — таблице, дереву, таб-панели, обычному и выпадающему спискам, обычному и всплывающему меню, списку чекбоксов — свойств на соответствующей панели недостаточно для изменения и детальной настройки их вида и содержимого. Поэтому в GUI Machine встроены отдельные редакторы для каждого из перечисленных объектов. Для их запуска требуется нажать на значение первого свойства объектов:</p>
<p><a href="http://guimachine.ru/wp-content/uploads/2013/10/redadv.png" rel="three"><img class="aligncenter size-full wp-image-1152" alt="redadv" src="http://guimachine.ru/wp-content/uploads/2013/10/redadv.png" width="351" height="41" /></a></p>
<p>В качестве примера ниже приведёно описание редактора таблицы:</p>
<p><a href="http://guimachine.ru/wp-content/uploads/2013/10/redadv2.png" rel="three"><img class="aligncenter size-full wp-image-1153" alt="redadv2" src="http://guimachine.ru/wp-content/uploads/2013/10/redadv2.png" width="637" height="357" /></a>Как видно по рисунку выше имеется возможность редактирования как шапки таблицы, так и её содержимого. В обоих случаях текст можно редактировать в HTML-редакторе. Для ячеек таблицы предлагается выбрать тип, обуславливающий их содержимое. Разумеется, имеется возможность добавлять, удалять и перемещать строки и колонки таблицы.</p>
<p>Для других сложных объектов имеются аналогичные редакторы со своим набором операций.</p>
<p>Свойства объектов по умолчанию</p>
<p>Обычно объекты одного типа (например, кнопки) в интерфейсе или прототипе оформлены в одном стиле. Для того, чтобы не нужно было вновь и вновь стилизовать каждый добавляемый в интерфейс объект, имеется возможность задать свойства объекта по умолчанию один раз. После этого при добавлении объекта на область он будет оформлен так, как указано в этих свойствах по умолчанию. Свойства объектов по умолчанию можно задать на последней вкладке настроек приложения:</p>
<p><a href="http://guimachine.ru/wp-content/uploads/2013/10/redadv3.png" rel="three"><img class="aligncenter size-full wp-image-1155" alt="Свойства объектов по умолчанию в GUI Machine" src="http://guimachine.ru/wp-content/uploads/2013/10/redadv3.png" width="797" height="573" /></a></p>
<h2>Слои</h2>
<p><a href="http://guimachine.ru/wp-content/uploads/2013/10/redadv4.png" rel="three"><img class="alignleft size-full wp-image-1154" alt="Дерево слоёв в GUI Machine" src="http://guimachine.ru/wp-content/uploads/2013/10/redadv4.png" width="327" height="289" /></a>На панели Слои отображаются все объекты текущей страницы проекта. Вид по умолчанию — дерево. Объект является дочерним к другому объекту, если первый вставлен во второй, расположен внутри него. Объект является родительским к другому объекту, если первый содержит внутри себя второй.</p>
<p>По этому принципу многослойности строятся все интерфейсы в GUI Machine. Благодаря нему, объекты жёстко привязаны друг к другу. Это позволяет, например, перемещать родительский объект вместе со всеми дочерними, что очень и очень удобно.</p>
<p>&nbsp;</p>
<p><a href="http://guimachine.ru/wp-content/uploads/2013/10/redadv5.png" rel="three"><img class="alignleft size-full wp-image-1156" alt="Список слоёв в GUI Machine" src="http://guimachine.ru/wp-content/uploads/2013/10/redadv5.png" width="313" height="289" /></a>Контекстное меню панели позволяет отобразить её альтернативный вид — список слоёв. В этом варианте иерархия объектов не отображается, а показывается список слоёв от самого верхнего к самому нижнему. Каждому слою соответствует один объект. Здесь понятие слоёв используется в классическом понимании: объект самого верхнего слоя (с наибольшим номером) отображается поверх других, самого нижнего слоя (с номером 0) — позади других объектов.</p>
<p>Инструмент позволяет менять слои объектов и, тем самым, обеспечивает корректное их расположение в интерфейсе.</p>
<p>Инструменты для работы со слоями доступны также на вкладке Редактирование верхнего горизонтального меню приложения:</p>
<p><a href="http://guimachine.ru/wp-content/uploads/2013/10/redadv6.png" rel="three"><img class="aligncenter size-full wp-image-1157" alt="Управление слоями в меню GUI Machine" src="http://guimachine.ru/wp-content/uploads/2013/10/redadv6.png" width="757" height="109" /></a></p>
<h2>Шаблоны</h2>
<p><a href="http://guimachine.ru/wp-content/uploads/2013/10/redadv7.png" rel="three"><img class="alignleft size-full wp-image-1158" alt="Шаблон" src="http://guimachine.ru/wp-content/uploads/2013/10/redadv7.png" width="258" height="181" /></a>Шаблон — заранее подготовленный макет часто используемых объектов. Использование шаблонов значительно ускоряет и облегчает проектирование прототипа, особенно в случае, когда разные интерфейсы прототипа содержат похожие объекты или интерфейсные части.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>Возможно создание шаблонов 3-х типов:</p>
<ul>
<li>простого — шаблона отдельного объекта;</li>
<li>составного — шаблона объекта со всеми дочерними объектами, содержимыми в нём (например, целого интерфейса);</li>
<li>интерактивного — шаблона интерфейса с предзаданными действиями.</li>
</ul>
<p>При помощи инструмента можно создать свою собственную библиотеку кастомизированных объектов, заготовок, каркасов, целых интерфейсов. Более того, можно передавать наборы шаблонов другому пользователю GUI Machine либо, напротив, устанавливать себе чужие шаблоны.</p>
<p>Созданные шаблоны хранятся в папке <strong><em>/templates/data</em></strong> каталога установки GUI Machine. Для передачи созданных шаблонов другому пользователю достаточно скопировать содержимое папки templates в директорию установки GUI Machine на его компьютере.</p>
<h2>История</h2>
<p><a href="http://guimachine.ru/wp-content/uploads/2013/10/redadv8.png" rel="three"><img class="aligncenter size-full wp-image-1159" alt="История в GUI Machine" src="http://guimachine.ru/wp-content/uploads/2013/10/redadv8.png" width="436" height="293" /></a>Для полноты картины осталось представить последнюю панель — <strong><em>История</em></strong>.</p>
<p>Этот инструмент, думаю, в подробном описании не нуждается. С помощью него можно вернуться к любому предыдущему состоянию проектного файла.</p>
<p>Каждый раз при выполнении любой операции в проекте в список истории добавляется новая запись. Количество хранимых записей списка — настраиваемая величина. При превышении заданного количества наиболее ранние записи будут удалены. Списки истории хранятся отдельно для каждой страницы проекта. Имеется возможность отображения в списке даты и времени выполнения операции, а также выделение отдельных записей цветом.</p>
<h2>Область редактирования</h2>
<p>Описание основных рабочих панелей завершено — дело осталось за малым — представить функциональность области редактирования.</p>
<p>Предназначение её понятно без объяснения: на ней непосредственно строятся интерфейсы из отдельных объектов. Для более удобной и продуктивной работы область редактирования имеет ряд настроек: цвет фона и размер области, тип сетки (крупная, мелкая или обе) и её размерность (пиксели, сантиметры, миллиметры или дюймы). Часть из них можно найти в настройках приложения:</p>
<p><a href="http://guimachine.ru/wp-content/uploads/2013/10/redadv9.png" rel="three"><img class="aligncenter size-full wp-image-1160" alt="Настройки области редактирования в GUI Machine" src="http://guimachine.ru/wp-content/uploads/2013/10/redadv9.png" width="797" height="521" /></a>Другие настройки располагаются на вкладке<strong><em> Утилиты и фреймы</em></strong> верхнего горизонтального меню приложения:</p>
<p><a href="http://guimachine.ru/wp-content/uploads/2013/10/redadv10.png" rel="three"><img class="aligncenter size-full wp-image-1161" alt="Настройки области редактиривания в меню GUI Machine" src="http://guimachine.ru/wp-content/uploads/2013/10/redadv10.png" width="757" height="108" /></a>Инструменты данного набора, помимо настройки самой области, позволяют изменить параметры отображения объектов, расположенных на ней (показывать или не показывать область и размер объектов, глубину их вложенности в лэйаутах, действия между ними), и направляющих линий. Также можно отобразить либо скрыть боковые навигационные полосы, на которых отображены иконки объектов в соответствии с их расположением на области.</p>
<p>Область редактирования с указанными выше настройками будет выглядеть так:</p>
<p><a href="http://guimachine.ru/wp-content/uploads/2013/10/redadv11.png" rel="three"><img class="aligncenter size-full wp-image-1162" alt="Кастомизированная область редактирования в GUI Machine" src="http://guimachine.ru/wp-content/uploads/2013/10/redadv11.png" width="860" height="657" /></a></p>
<h1>Оживляем интерфейсы</h1>
<p>После знакомства с интерфейсом GUI Machine и особенностями построения интерфейсов в нём у читателя, вероятно, возникнет вопрос: как сделать интерфейсы «живыми», кликабельными, интерактивными? Отвечаю: проще простого, и сейчас вы в этом сами убедитесь.</p>
<p>В тексте выше уже пару раз промелькнуло понятие «действие» — это и есть основа, эликсир для оживления интерфейсов. Говоря более формальным языком, действие — это механизм задания реакции одного объекта (объекта действия) на событие, произошедшее с другим объектом (объектом события). Создание любого действия в GUI Machine сводится к нескольким простым шагам:</p>
<p>• Сначала нужно определиться с объектом события и объектом действия. Для верного выбора нужно помнить порядок работы механизма: при выполнении заданной операции над объектом события будет выполнена заданная операция над объектом действия.</p>
<p>• Затем нужно выделить на области редактирования объект события, вызвать его контекстное меню (клик правой кнопкой мыши), выбрать пункт<strong><em> Добавить действие.</em> </strong>После этого нужно кликнуть по объекту действия. На рисунке ниже объектом события является чекбокс (флажок), а объектом действия — окно:</p>
<p><a href="http://guimachine.ru/wp-content/uploads/2013/10/redadv12.png" rel="three"><img class="aligncenter size-full wp-image-1164" alt="" src="http://guimachine.ru/wp-content/uploads/2013/10/redadv12.png" width="707" height="245" /></a></p>
<p>• Будет открыто окно создания действия:</p>
<p style="text-align: center;"><a href="http://guimachine.ru/wp-content/uploads/2013/10/redadv13.png"><img class="aligncenter size-full wp-image-1163" title="Создание действия в GUI Machine" alt="" src="http://guimachine.ru/wp-content/uploads/2013/10/redadv13.png" width="503" height="397" /></a></p>
<p>• Здесь нужно выбрать, во-первых, событие (в примере — изменение состояния выбора флажка) и его параметры (состояние — выбран), во-вторых, действие (открытие/закрытие окна) и его параметры (открыть окно по центру экрана, не позволять открывать окно за краями экрана).</p>
<p>• Всё сделано. Нажимаем кнопку Создать действие.</p>
<p>Таким образом было создано следующее действие: при выборе флажка будет открыто окно по центру экрана. Для проверки можно запустить в просмотр окно (то, что слева) и выбрать содержимый в нём флажок. Будет открыто второе окно. Как я и обещал — всё просто.</p>
<p>Точно таким же способом создаются любые действия в GUI Machine. Список возможных событий и действий для различных компонентов разный и весьма внушительный. Среди них есть как простые, так и достаточно сложные. Все вместе они позволяют создавать полностью интерактивные прототипы, имитировать работу реальной программы или сайта, описывать нетривиальную функциональность проектируемой системы.</p>
<h2>События</h2>
<p>Примерами простых событий являются: клик кнопки, получение/потеря фокуса объектом, изменение состояния выбора объекта, выбор элемента списка, выбор ячейки таблицы, выбор пункта всплывающего меню, выбор таба, выделение элементов дерева. Суть их, я полагаю, понятна из их названий и в дополнительном объяснении не нуждается.</p>
<p>Больший интерес представляют сложные события. Например — событие мыши на части объекта. Допустим в интерфейсе имеется элемент управления в виде изображения — клевера:</p>
<p><a href="http://guimachine.ru/wp-content/uploads/2013/10/redadv14.jpg" rel="three"><img class="aligncenter size-full wp-image-1166" alt="Клевер" src="http://guimachine.ru/wp-content/uploads/2013/10/redadv14.jpg" width="407" height="394" /></a>Пусть требуется, чтобы при клике по верхнему лепестку клевера выполнялось какое-либо действие.</p>
<p>Выбираем объектом события наше изображение, объектом действия — какой-либо другой объект. В открывшемся диалоге выбираем<strong><em> Событие мыши</em></strong>. В параметрах события выбираем <strong><em>Клик кнопки</em></strong>. Устанавливаем флажок <strong><em>Определенная область события</em></strong> и выделяем нужный фрагмент рисунка:</p>
<p><a href="http://guimachine.ru/wp-content/uploads/2013/10/redadv15.png" rel="three"><img class="aligncenter size-full wp-image-1165" alt="Действие на части объекта в GUI Machine" src="http://guimachine.ru/wp-content/uploads/2013/10/redadv15.png" width="710" height="743" /></a>Жмём <strong><em>Сохранить изменения</em></strong> и проверяем: запускаем изображение в просмотр и кликаем по верхнему лепестку — будет выполнено заданное действие (открытие окна).</p>
<p>Помимо описанного, существует ещё несколько сложных интересных событий: событие таймера, получение сообщения с порта и другие.</p>
<h2>Действия</h2>
<p>К простым действиям можно отнести следующие: изменение текста объекта, блокировка/разблокировка объекта, изменение его видимости, открытие/закрытие окна и многие другие. Также, как при рассмотрении событий, без объяснений перейду к описанию сложных действий.</p>
<p>Наиболее интересным, полезным и часто используемым сложным действием является <strong><em>Вставка объекта в лэйаут</em></strong>. Как говорит его название, это действие динамического лэйаута. Оно позволяет по какому-либо событию вставить в одну или несколько ячеек лэйаута выбранный объект или часть интерфейса.</p>
<p>Пусть имеется динамический лэйаут (в левой части рисунка) с кнопкой, по нажатии на которую в две центральные ячейки лэйаута должна быть вставлена таб-панель (в правой части рисунка) вместе со всем содержимым.</p>
<p><a href="http://guimachine.ru/wp-content/uploads/2013/10/redadv16.png" rel="three"><img class="aligncenter size-full wp-image-1167" alt="Действие вставки объекта в лэйаут в GUI Machine" src="http://guimachine.ru/wp-content/uploads/2013/10/redadv16.png" width="721" height="276" /></a>Выбираем объектом события кнопку, а объектом действия — динамический лэйаут.</p>
<p><a href="http://guimachine.ru/wp-content/uploads/2013/10/redadv17.png" rel="three"><img class="aligncenter size-full wp-image-1168" alt="Создание действия вставки в лэйаут в GUI Machine" src="http://guimachine.ru/wp-content/uploads/2013/10/redadv17.png" width="601" height="560" /></a>В правой части открывшегося диалога выбираем действие <strong><em>Вставка объекта или очистка</em> </strong>ячеек, выделяем две центральные ячейки лэйаута, выбираем объект для вставки (таб-панель).</p>
<p>Жмём <em><strong>Сохранить действие</strong></em> и проверяем: запускаем лэйаут в просмотр и нажимаем кнопку — таб-панель вместе с содержимым будет вставлена в динамический лэйаут.</p>
<p>Помимо описанного действия, существует масса не менее интересных сложных действий.</p>
<h1>Просмотр прототипа</h1>
<p>Инструмент просмотра прототипов можно без стеснения назвать уникальным.</p>
<p>В отличие от других инструментов прототипирования, в GUI Machine прототип запускается в просмотр в виде отдельного независимого окна. Его можно сворачивать и разворачивать, перемещать и изменять в размерах — поведение точно такое же, как и у любого другого независимого окна. Это позволяет достичь максимальный эффект реальности, сымитировать работу программы.</p>
<p>Ещё одна особенность инструмента: возможен просмотр как целого интерфейса, так и его части или даже отдельного объекта. Можно одновременно просматривать несколько интерфейсов — они будут запущены в разных окнах.</p>
<p>Для запуска объекта в просмотр нужно выделить его и воспользоваться одним из трёх способов запуска: клавишей f5, при помощи пункта Просмотр контекстного меню либо кнопкой на панели запуска в правом верхнем углу приложения:</p>
<p><a href="http://guimachine.ru/wp-content/uploads/2013/10/redadv18.png" rel="three"><img class="aligncenter size-full wp-image-1170" alt="Инструменты для просмотра прототипа в GUI Machine" src="http://guimachine.ru/wp-content/uploads/2013/10/redadv18.png" width="270" height="24" /></a>Представленный инструмент позволяет также добавлять объекты в закладки для быстрого запуска. Если в выпадающем списке выбрана одна из закладок, то по нажатии кнопки справа будет запущена именно закладка, а не выделенный на области редактирования объект.</p>
<p>Кроме того, при помощи инструмента можно настроить положение объекта при запуске его в просмотр:</p>
<h1><a href="http://guimachine.ru/wp-content/uploads/2013/10/redadv19.png" rel="three"><img class="aligncenter size-full wp-image-1169" alt="Настройки запуска прототипа в GUI Machine" src="http://guimachine.ru/wp-content/uploads/2013/10/redadv19.png" width="408" height="473" /></a>Экспорт прототипа</h1>
<p>Последнее, что я представлю вам, но далеко не последнее, что есть в GUI Machine — это механизм экспорта прототипа. Он позволяет экспортировать (виноват, тавтология) прототип в независимое приложение, для запуска которого не требуется ни GUI Machine, ни какое-либо другое ПО. Таким образом, имеется возможность представить разработанный прототип, например, на компьютере заказчика (если мы исполнители), у которого не будет установленного GUI Machine или GUI Machine Viewer. Более того, экспортированный прототип может работать как на Windows, так и на Linux (в перспективе — и на Mac OS). На рисунке ниже представлено окно экспорта прототипа:</p>
<p><a href="http://guimachine.ru/wp-content/uploads/2013/10/redadv20.png" rel="three"><img class="aligncenter size-full wp-image-1171" alt="Экспорт прототипа в GUI Machine" src="http://guimachine.ru/wp-content/uploads/2013/10/redadv20.png" width="470" height="440" /></a>Экспортированный прототип представляет собой папку с несколькими подпапками и исполняемым файлом designerviewer.exe (или .sh, если прототип создан для Linux), запуск которого приводит к запуску прототипа. Для передачи прототипа на другую машину нужно отправить всю папку целиком.</p>
<h1>P.S.</h1>
<p>Статья вышла немаленькая, хоть описал я далеко не всё, что умеет GUI Machine. Например, я совсем не затронул встроенные в приложение полезные утилиты (коих немало), не представил некоторые интерфейсы (настройки проекта, контекстное меню в различных ситуациях), и, естественно, описал лишь малую часть доступных действий, объектов и их настроек. Впрочем есть несколько вариантов поближе познакомиться с GUI Machine: <a title="Загрузить" href="http://guimachine.ru/?page_id=87">скачать демо-версию</a> с нашего сайта, посмотреть более подробную информацию в <a title="Руководство пользователя GUI Machine 1.5.8" href="/wp-content/uploads/2013/downloads/Руководство пользователя GUI Machine 1.5.8.pdf">руководстве пользователя</a> или <a title="Описание" href="http://guimachine.ru/?page_id=79">на сайте</a> либо задать интересующие вас вопросы здесь — с удовольствием отвечу.</p>
<p align="right"><a href="http://habrahabr.ru/company/alee/blog/123745/" target="_blank" rel="nofollow"><img alt="" src="http://guimachine.ru/wp-content/uploads/2013/10/habrlink.png" width="141" height="36" /></a></p>
]]></content:encoded>
			<wfw:commentRss>https://guimachine.ru/?feed=rss2&#038;p=932</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>История создания инструмента прототипирования. Часть II</title>
		<link>https://guimachine.ru/?p=930</link>
		<comments>https://guimachine.ru/?p=930#comments</comments>
		<pubDate>Wed, 02 Oct 2013 10:55:55 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[История GUI Machine]]></category>
		<category><![CDATA[Статьи]]></category>
		<category><![CDATA[gui]]></category>
		<category><![CDATA[инструменты]]></category>
		<category><![CDATA[пользовательского интерфейса]]></category>
		<category><![CDATA[проект]]></category>
		<category><![CDATA[прототипирование]]></category>
		<category><![CDATA[разработки интерфейса]]></category>

		<guid isPermaLink="false">http://savvinov/?p=930</guid>
		<description><![CDATA[Поиск подходящего инструмента прототипирования (об этом мы достаточно подробно написали в предыдущем посте) занял у нас довольно много времени и&#8230; окончился ничем. Нам так и... <a href="https://guimachine.ru/?p=930">Подробнее</a>]]></description>
				<content:encoded><![CDATA[<p align="right">
<a href="http://habrahabr.ru/company/alee/blog/117400/" target="_blank" rel="nofollow"><img src="http://guimachine.ru/wp-content/uploads/2013/10/habrlink.png" alt="" width="141" height="36" class="alignright size-full wp-image-975" /></a></p>
<p><img src="http://guimachine.ru/wp-content/uploads/2013/10/part2.png" alt="part2" width="288" height="300" class="alignright size-full wp-image-1110" /><br />
Поиск подходящего инструмента прототипирования (об этом мы достаточно подробно написали в <a href="http://guimachine.ru/?p=927" title="Как мы выбирали инструмент прототипирования. Часть I">предыдущем посте</a>) занял у нас довольно много времени и&#8230; окончился ничем. Нам так и не удалось найти инструмент, который в полной мере покрывал бы все наши потребности. Похоже, что программы для прототипирования, полностью отвечающей всем нашим представлениям и пожеланиям, в природе просто не существовало&#8230; Единичные кандидаты были близки к победе, но в любом из них был какой-нибудь неприятный и неприемлемый для нас «нюанс», который не позволял честно и без кривляния душой сказать: «Это именно то, что мы искали». Конечно, можно было закрыть глаза и пойти на компромисы, но это не наш путь. Недосказанность — это то, чего мы очень не любим.<br />
<span id="more-930"></span><br />
На этой почве мы приняли не самое лёгкое решение попробовать собственноручно воплотить все наши идеи в жизнь и создать свой инструмент прототипирования. Подспорьем для разработки нашего собственного продукта стали также результаты анализа перспектив рынка инструментов прототипирования: существовало решений немного и покрывали они не все требования IT-компаний (по крайней мере — нашей компании, ну а мы, стоит ли сомневаться, далеко не единственные в своём роде). Ещё одним ощутимым толчком являлась перспектива выпустить первый российский полноценный инструмент прототипирования. Вобщем, плюсов мы насчитали больше, чем минусов.</p>
<p>Создание собственного инструмента прототипирования началось не с чистого листа, а на основе&#8230; впрочем, историю создания нашего инструмента опишу ниже.</p>
<h1>История</h1>
<p><strong>2005 год</strong></p>
<p>Основной продукт компании АЛЕЕ Софтвер представляет собой корпоративную систему класса ERM (система управления электронными записями) . Система состоит из двух тонких клиентов, через которые работают пользователи: десктопное приложение и веб. Веб-представление системы нередко требует кастомизации ее графического интерфейса под стандарты заказчика, а также под другие используемые им корпоративные информационные системы. Для выполнения этой задачи у нас родилась идея создать специальный инструмент — конструктор, с помощью которого можно было бы легко перестраивать графический интерфейс веб-составляющей системы. Предполагалось сделать его простым в использовании настолько, чтобы Заказчик своими силами смог кастомизировать интерфейс системы без написания программного кода и без привлечения сторонних специалистов. Так, ведомые этой идеей, мы начали экспериментальную работу по созданию подобного инструмента. Мы планировали сделать конструктор составной частью системы. Естественно, в таком случае его следовало бы и написать на языке основной системы, т.е. на Java. Впоследствии, однако, стало ясно, что существовавшие на тот момент технологии и возможности Java поставленную задачу решить не позволяют. Почему? Во-первых, на проектах большого размера скорость интерпретации Java-классов в нативный код Java-машиной была слишком низкой; значительно замедлялась и скорость работы приложения. Во-вторых, в стандартной сборке JDK отсутствовали нативные компоненты различных операционных систем. Эту проблему можно решить путем привлечения дополнительных библиотек, но это было бы связано и с дополнительными сложностями. К тому же качество и цены нас не устраивали. В-третьих, в самом языке Java не было многих необходимых для создания нового инструмента средств, на тот момент уже реализованных во многих других языках программирования. Список проблем и ограничений можно продолжать, вдаваясь в глубокие подробности и мелкие детали, но речь не о том. В конце концов мы решили отложить планируемую разработку, что называется, до лучших времен. В результате проведённых работ были созданы экспериментальные наработки, применение которым на тот момент мы не нашли. А проблема кастомизации интерфейсов системы была решена другим способом. В процессе разработки нами было создано запускаемое приложение, включавшее: область редактирования графического интерфейса, минимальный набор компонентов для тестирования графического редактора, отдельный фрейм для управления слоями и отдельный фрейм для настройки компонентов.</p>
<p><strong>2006-2008</strong></p>
<p>Около трёх лет наши экспериментальные наработки, как говорится, «лежали на полке» и терпеливо ждали своего часа.</p>
<p><strong>2009</strong></p>
<p>В определённый момент перед нашей компанией остро встал вопрос выбора инструмента прототипирования. Мы активно занялись поиском такового, о чём в подробностях повествует <a href="http://guimachine.ru/?p=927" title="Как мы выбирали инструмент прототипирования. Часть I">первая часть цикла</a>. Именно в это время у нас родилась идея создания своего собственного инструмента прототипирования. И тут мы вспомнили про наши экспериментальные наработки: они подходили в качестве основы будущего инструмента наилучшим образом. Началась активная разработка инструмента прототипирования, который впоследствии получил название GUI Machine.</p>
<p><strong>Постановка требований</strong></p>
<p>Осмыслив специфику стоявших перед нами задач и проанализировав имеющиеся на рынке продукты, мы четко сформулировали требования относительно качеств, которыми должен обладать наш инструмент прототипирования:</p>
<ul>
<li>возможность прототипирования как десктоп-, так и веб-приложений; не обязательно, но желательно — возможность прототипирования приложений для мобильных устройств;</li>
<li>более высокая (по сравнению с существующими аналогами) степень интерактивности создаваемых прототипов, большой набор обрабатываемых событий и выполняемых действий;</li>
<li>наличие большого набора готовых графических элементов, как платформно-зависимых (т.е. «подстраивающихся» под вид операционной системы и ее оформление), так и платформно-независимых. В этот набор должны входить элементы для десктоп-, веб- и мобильных приложений. Они должны быть максимально кастомизируемыми;</li>
<li>высокая реалистичность создаваемых прототипов;</li>
<li>возможность просмотра прототипов собственными средствами, без привлечения сторонних программных продуктов;</li>
<li>простота освоения: инструмент должен быть таким, чтобы с его помощью смог создавать прототипы человек, вообще не обладающий навыками программирования;</li>
<li>высокая скорость создания прототипов;</li>
<li>кросс-платформенность (инструмент должен работать по крайней мере в основных операционных системах — Windows, Mac OS, Linux).</li>
</ul>
<p><strong>Способ разработки</strong></p>
<p>Для разработки инструмента прототипирования мы использовали методику экстремального программирования (ХР). Этот выбор был обусловлен целым рядом причин. Во-первых, необходимо было создать инструмент как можно быстрее. ХР является подходящей методикой для решения задач оперативной разработки. Во-вторых, у нас не было фиксированных требований к создаваемому инструменту, все изменялось и дополнялось в процессе разработки. В-третьих, применение методов ХР обеспечивает минимальный риск получения на выходе не соответствующего требованиям инструмента. Мы попытались адаптировать требования ХР под специфику нашей работы: так, в нашей команде был всего один программист, поэтому мы не пользовались приемами парного программирования и взаимной проверки кода. Разработка осуществлялась в тесном взаимодействии программиста, менеджера проекта и будущих пользователей системы. Работа над программой велась в быстром темпе: изменения в исходный вариант вносились ежедневно (а иногда — даже несколько раз в день). На начальных этапах работы мы намеренно не уделяли повышенного внимания вопросам дизайна, что позволило максимально сосредоточится на реализации функционала, а также избежать задержек.</p>
<p><strong>2010</strong></p>
<p>Работу по созданию собственного инструмента прототипирования мы начали 22 ноября 2009 года. Уже в мае 2010, задолго до выпуска релизной версии, надежность и функциональность продукта достигли такого уровня, что он был успешно опробован на реальном проекте компании. Этот факт, кстати, стал еще одним свидетельством того, что мы сделали правильный выбор, обратившись к экстремальному программированию.</p>
<p><strong>Эксплуатация продукта</strong></p>
<p>Замечу, что изначально мы не ставили перед собой цель выпустить собственный инструмент прототипирования на рынок, а планировали использовать его исключительно для проектов компании. Так, 2010 год ознаменовался рядом проектов, при реализации которых использовался наш инструмент. Ниже приведу пару примеров</p>
<p><em>Разработка веб-интерфейса CRM системы</em></p>
<p>Впервые инструмент был использован для разработки прототипа веб-интерфейса CRM системы (Customer Relationship Management System — система управления взаимодействием с клиентами) — сложной системы корпоративного уровня. Основой для него была существовавшая десктопная CRM система (внутренняя разработка компании). Для того, чтобы заказчик мог увидеть интерфейс будущей системы и высказать свои пожелания еще до фактического начала разработки, был создан его высокоточный и интерактивный прототип. Он адекватно и реалистично представлял как дизайн, так и функциональность системы:<br />
<iframe width="480" height="360" src="//www.youtube.com/embed/PhVNBUEN7bc" frameborder="0" allowfullscreen></iframe><br />
<em>Разработка внутрикорпоративного портала</em></p>
<p>Инструмент был использован для создания прототипа внутрикорпоративного портала нашей компании. В этом проекте не было строгих ограничений по срокам, дизайну и функциональности. Таким образом, специалист, разрабатывавший этот прототип, имел большую свободу действий. Созданный прототип был полностью интерактивным и обладал красивым дизайном:<br />
<iframe width="480" height="360" src="//www.youtube.com/embed/Ly0YEIUiEts" frameborder="0" allowfullscreen></iframe><br />
Промышленная эксплуатация инструмента показала состоятельность инструмента, способность его успешно решать возложенные на него задачи. Получив такие результаты, было решено доработать и выпустить инструмент на рынок программного обеспечения. 1 декабря 2010 года была выпущена релизная версия продукта.</p>
<p><strong>2011</strong></p>
<p>24 января 2011 года мы провели семинар <a href="http://guimachine.ru/?page_id=816" title="Итоги семинара “Проблемы и решения проектирования и прототипирования интерфейсов программных продуктов”">«Проблемы и решения проектирования и прототипирования графических пользовательских интерфейсов»</a>, на котором впервые был представлен разработанный нами инструмент под названием GUI Machine.</p>
<p align="left" class="colorGold"><strong>Что получилось?</strong></p>
<p>Результатом нашей работы стал продукт, получивший название GUI Machine. К числу несомненных плюсов продукта мы относим:</p>
<ul>
<li>возможность прототипирования как веб, так и десктоп-приложений;</li>
<li>высокую интерактивность создаваемых прототипов;</li>
<li>высокую визуальную точность и эстетическую привлекательность создаваемых прототипов;</li>
<li>простоту освоения и работы в инструменте: GUI Machine могут использовать в своей работе не только и не столько программисты, но и менеджеры, аналитики, осуществляющие взаимодействие с клиентом, и даже сами клиенты;</li>
<li>высокую скорость создания прототипирования;</li>
<li>кросс-платформенность: работает на Windows, MacOS и Linux;</li>
<li>полную русскую локализацию продукта (интерфейс продукта, руководство пользователя на русском языке) и русскоязычную поддержку (обучение, консультации).
</li>
</ul>
<p>Было бы нечестно указывать лишь на плюсы. Конечно же, у нашего продукта тоже есть свои минусы и недостатки:</p>
<ul>
<li>пока нет возможности полноценной совместной работы над прототипом;</li>
<li>пока нет возможности генерации спецификации на основе прототипа;</li>
<li>пока отсутствуют компоненты для прототипирования приложений для мобильных ОС;</li>
<li>пока нет инструментов рисования UML-диаграмм;</li>
<li>инструмент достаточно требовательный.</li>
<p>Почему во многих пунктах фигурирует слово «пока»? Дело в том, что сейчас мы динамично развиваемся, расширяем функциональность инструмента и, конечно, планируем избавиться от перечисленных недостатков.</p>
<p align="left" class="colorGold"><Strong>P.S.</strong></p>
<p>Мы не питаем иллюзий и не считаем GUI Machine панацеей, позволяющей решать любые задачи лучше всех. Однако для тех, кто в поисках подходящего инструмента прототипирования столкнулся с проблемами, подобными описанным нами, наш инструмент, вероятно, окажется весьма и весьма полезным.</p>
<p>В следующей статье цикла будет представлен подробный обзор инструмента прототипирования GUI Machine</p>
]]></content:encoded>
			<wfw:commentRss>https://guimachine.ru/?feed=rss2&#038;p=930</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Как мы выбирали инструмент прототипирования. Часть I</title>
		<link>https://guimachine.ru/?p=927</link>
		<comments>https://guimachine.ru/?p=927#comments</comments>
		<pubDate>Wed, 02 Oct 2013 10:53:47 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[История GUI Machine]]></category>
		<category><![CDATA[Статьи]]></category>
		<category><![CDATA[gui]]></category>
		<category><![CDATA[инструменты]]></category>
		<category><![CDATA[Интерфейс]]></category>
		<category><![CDATA[прототипирование]]></category>

		<guid isPermaLink="false">http://savvinov/?p=927</guid>
		<description><![CDATA[Между разработчиками ПО и пользователями ситуации непонимания имеют место достаточно часто. Пользователь хочет получить эффективный инструмент для решения тех или иных задач, к тому же... <a href="https://guimachine.ru/?p=927">Подробнее</a>]]></description>
				<content:encoded><![CDATA[<p align="right">
<a href="http://habrahabr.ru/company/alee/blog/116440/" target="_blank" rel="nofollow"><img src="http://guimachine.ru/wp-content/uploads/2013/10/habrlink.png" alt="" width="141" height="36"/></a><a href="http://guimachine.livejournal.com/2407.html" target="_blank" rel="nofollow"><img src="http://guimachine.ru/wp-content/uploads/2013/10/lj_link.png" alt="" width="141" height="36"/></a>
</p>
<p><img src="http://guimachine.ru/wp-content/uploads/2013/10/part1.png" alt="part1" width="300" height="300" class="alignright size-full wp-image-1104" />Между разработчиками ПО и пользователями ситуации непонимания имеют место достаточно часто. Пользователь хочет получить эффективный инструмент для решения тех или иных задач, к тому же простой в освоении и удобный в использовании, но имеет весьма приблизительное представление о специфике работы программиста. Программист же зачастую имеет весьма и весьма приблизительное представление о круге задач, с которыми имеет дело пользователь. То, что разработчику кажется блестяще реализованным, конечному пользователю может показаться неудобным. На вещи, которые представляются вполне очевидными пользователю, программист может вообще не обратить внимания. (Подробный анализ этих проблем см., например, в книге Дэвида Платта с провокационным, но выразительным названием «Софт — отстой! И что с этим делать?»). Как избежать ситуаций непонимания и помочь программисту и пользователю найти общий язык? (Данная тема уже не раз становилась предметом исследования представителей самых разных областей знаний — программистов, психологов, специалистов в области эргономики. Подробный и интересный обзор литературы по теме &#8211; <a href="http://usability.ru/sources.htm" target="_blank" rel="nofollow">здесь</a>)<br />
<span id="more-927"></span><br />
Создание приложений и веб-сайтов представляет собой сложный процесс, в который вовлечены люди разных профессий и разного склада мышления: программисты, дизайнеры, менеджеры. Перед каждым из этих людей стоит строго определенная задача: программист пишет код, дизайнер заботится о визуальной привлекательности, менеджер осуществляет контакт с клиентом. Как привести их работу, что называется, к общему знаменателю? Как обеспечить взаимопонимание всех участников процесса разработки?</p>
<p>Одним из способов решения перечисленных выше проблем является использование технологий прототипирования. Под прототипированием понимается создание интерактивного визуального образца для демонстрации особенностей поведения интерфейса программы будущим пользователям. Важным плюсом использования прототипирования является возможность обратной связи: разработчик знакомится с замечаниями, предложениями и пожеланиями пользователей на ранних этапах работы над продуктом, когда изменения могут быть внесены без существенных потерь. Благодаря прототипированию диалог всех участников процесса разработки программы становится более конкретным, что позволяет скоординировать их работу. Технологии прототипирования изменяют и статус пользователя: он становится соучастником процесса разработки, а не пассивным потребителем.</p>
<p>В деятельности нашей компании есть такие аспекты, при работе над которыми без прототипирования обойтись невозможно. Мы занимаемся разработкой систем электронного документооборота, систем управления взаимодействием с клиентами и систем управления веб-контентом. Все это — системы промышленного масштаба, построенные на клиент-серверных технологиях; они включают как десктопные, так и веб-интерфейсы. При внедрении таких систем в конкретной организации неизбежно встает проблема кастомизации интерфейсов. Мы считаем, что работе по кастомизации следует уделять особое внимание: зачастую конечными пользователями программных продуктов являются люди, совершенно далекие от компьютерных технологий.</p>
<p>Интерфейс программного продукта должен быть максимально дружелюбен к пользователю, адаптирован под конкретные задачи конкретной организации и видоизменен в соответствии с уже существующими корпоративными информационными системами. В противном случае пользователь будет тратить значительно больше времени на обучение работе с новой программой, на выполнение простейших типовых операций и не будет использовать его функциональность в полной мере. Для того, чтобы создать простой и действительно удобный для пользователя интерфейс, следует обращаться к прототипированию. Перед нами остро встала проблема выбора инструмента для создания визуально точных и интерактивных прототипов, описывающего сложные операции и переходы.</p>
<p>На рынке программного обеспечения инструментов для создания прототипов представлено достаточно много. Они предназначены для решения самых разнообразных задач: от создания «карандашных» набросков до построения интерактивных прототипов высокой визуальной точности (см. достаточно подробный <a href="http://editorial.co.in/wireframes/wireframes.php" target="_blank" rel="nofollow">обзор</a>; см. также материалы по теме <a href="http://habrahabr.ru/blogs/ui/70001/" target="_blank" rel="nofollow">здесь</a> и <a href="http://www.gui.ru/?p=488" target="_blank" rel="nofollow">здесь</a> ) Казалось бы, при таком широком выборе можно без особого труда подобрать подходящий инструмент прототипирования. Но более детальное знакомство с имеющимися программами показало, что на самом деле все обстоит гораздо сложнее. При работе с софтом для прототипирования приходится иметь дело с целым рядом проблем, которые будут описаны ниже.</p>
<p align="left" class="colorGold"><strong>Проблема 1. Веб и десктоп</strong></p>
<p>Даже поверхностное рассмотрение показывает, что львиная доля существующего софта «заточена» специально под веб-приложения и сайты. Осуществлять прототипирование приложений для десктопа при помощи таких программ сложно, а иногда и вообще невозможно. Поэтому от идеи воспользоваться многими представленными на рынке программами уже после первичного ознакомления пришлось отказаться: для нашей компании, занимающейся разработкой как десктоп-, так и веб-приложений, необходим инструмент универсального характера.</p>
<p align="left" class="colorGold"><strong>Проблема 2. Визуализация</strong></p>
<p>Важным фактором при выборе инструмента прототипирования является визуальная точность создаваемых прототипов. Существует довольно много программ, создающих простые «карандашные» наброски. В некоторых случаях они действительно полезны, но специфика нашей работы такова, что создаваемые прототипы должны быть характеризоваться не только визуальной точностью, но еще и чисто эстетической привлекательностью.</p>
<p>Познакомившись поближе с существующими инструментами прототипирования, мы увидели, что далеко не все из них обладают набором так называемых нативных (т.е. выполненных в стиле той операционной системы, под которой работает приложение) компонентов. Количество программ, с помощью которых можно создавать действительно красивые, приятные глазу (в первую очередь, конечно же, глазу заказчика) очень и очень мало.<br />
<P align="left" class="colorGold"><strong>Проблема 3. Движение</strong></p>
<p>Думается, что главными характеристиками прототипа являются интерактивность и динамизм. Представить внешний вид будущего приложения можно и на бумаге. Прототип же демонстрирует не только и не столько внешние характеристики, сколько функциональность создаваемой системы.</p>
<p>Создание действительно «живых», интерактивных прототипов зачастую оказывается сопряжено с целым рядом проблем: некоторые инструменты вообще не могут связывать интерфейсы, что, конечно же, существенно сужает круг решаемых задач.</p>
<p>Есть инструменты, создающие интерактивные прототипы, но единственно возможным форматом сохранения этих прототипов является .pdf. Это — очевидный минус: данный формат не обеспечивает высокой степени интерактивности. Прототип в формате .pdf пригоден для демонстрации внешнего вида, но не возможностей системы. «Живой» (запускаемый и кликабельный) прототип показывает будущее приложение в работе и позволяет разглядеть многие нюансы, на которые в статичном pdf-прототипе просто невозможно обратить внимание.</p>
<p>При выборе инструмента прототипирования важную роль играет еще и степень интерактивности создаваемых прототипов: хотелось бы, чтобы используемая программа была способна на нечто большее, чем простая смена интерфейса при нажатии кнопки. Программ, способных создавать большой и разнообразный набор событий, как показывает практика, не так много.</p>
<p align="left" class="colorGold"><strong>Проблема 4. Простота и доступность</strong></p>
<p>Приобретение программного продукта нередко бывает сопряжено с затратами, намного превышающими стоимость покупки. Затраты на обучение сотрудников и техническую поддержку могут существенно превышать первоначальный взнос. В случае приобретения зарубежных программных продуктов для обучения персонала приходится привлекать иностранных специалистов, искать переводчиков и т.п., что значительно увеличивает временные и финансовые затраты. Далеко не все сотрудники российских компаний владеют иностранными языками на столько, чтобы самостоятельно разобраться в специфике работы той или иной программы. Требуется локализация приложений, написание русскоязычной документации, создание русскоязычных профессиональных Интернет-сообществ&#8230; Отдельно укажем на необходимость обеспечения постоянной технической поддержки на русском языке.</p>
<p>К сожалению, среди представленных на рынке инструментов прототипирования продуктов российские разработки отсутствуют, и это является существенным минусом для пользователей из России и стран бывшего СССР.</p>
<p>Мы считаем, что хороший инструмент прототипирования должен быть общедоступным. Под общедоступностью понимается, во-первых, кросс-платформенность, что создает привлекательность продукта для самого широкого круга пользователей и позволяет полностью исключить ситуации, когда, например, приходится внедрять новую операционную систему ради какого-то одного необходимого приложения.</p>
<p>Во-вторых, программа должна быть выполнена так, чтобы создавать протототипы с ее помощью могли люди, не имеющие знаний и навыков программирования. Общедоступность и универсальность подразумевают, чтобы создание и изменение прототипов могло быть доступно не только программистам, но и, скажем, менеджерам, осуществляющим непосредственный контакт с клиентом.</p>
<p align="left" class="colorGold"><strong>И что в итоге?</strong></p>
<p>Мы опробовали много инструментов прототипирования на практике, однако такого, который полностью бы отвечал всем нашим пожеланиям, нам найти не удалось. В конце концов, однако, нам удалось найти собственное решение всех описанных выше проблем. О нем мы расскажем в последующих материалах, а сейчас хотели бы обратиться к сообществу наших читателей со следующими вопросами:</p>
<ul>
<li>Какое решение в нашей ситуации предложили бы вы?</li>
<li>Какие характеристики инструментов прототипирования представляются вам наиболее важными?</li>
<li>Какие инструменты вы используете в своей работе?</li>
</ul>
<p><a href="http://guimachine.ru/?p=930" title="История создания инструмента прототипирования. Часть II" target="_blank">Часть II. История создания инструмента прототипирования</a></p>
<p align="left">
<a href="http://habrahabr.ru/company/alee/blog/116440/" target="_blank" rel="nofollow"><img src="http://guimachine.ru/wp-content/uploads/2013/10/habrlink.png" alt="" width="141" height="36"/></a><a href="http://guimachine.livejournal.com/2407.html" target="_blank" rel="nofollow"><img src="http://guimachine.ru/wp-content/uploads/2013/10/lj_link.png" alt="" width="141" height="36"/></a></p>
]]></content:encoded>
			<wfw:commentRss>https://guimachine.ru/?feed=rss2&#038;p=927</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
