Продолжение бакалаврской работы Анны Сергеевны Колантаевской.
1.2. Язык ДРАКОНПопытки создавать удобные графические средства разработки уже предпринимались.
Рассматриваемый далее язык ДРАКОН (Дружелюбный Русский Алгоритмический язык, Который Обеспечивает Наглядность) является одним из примеров удобных в использовании языков моделирования ([3]).
ДРАКОН — визуальный алгоритмический язык, разработанный в конце 80х – начале 90х годов XX века под руководством Владимира Паронджанова при участии Российской Академии Наук в рамках космической программы Буран.
Целью, стоявшей перед разработчиками, было создание единого универсального языка, который должен был объединить в себе свойства языков для систем реального времени, проблемно-ориентированных языков и языков моделирования.
Среди прочих задач, стоявших перед разработчиками, были:
● предоставление человеку языковых средств, упрощающие восприятие сложных процедурных проблем для уменьшения вероятности ошибок и роста производительности труда;
● улучшение качества программного обеспечения по критерию "понимаемость алгоритмов и программ".
Отказ от текстовых управляющих структур, используемых в языках высокого уровня, и замена их на управляющую графику, с точки зрения человеческого фактора, сам по себе делает интерфейс взаимодействия программиста и программы более понятным и удобным для человека.
Управляющие структуры языка ДРАКОН по замыслу разработчика специальным образом приспособлены к восприятию, делая, таким образом, представление программы еще более понятным, а программирование — еще более удобным.
На рис. 1 приведен пример ДРАКОН-схемы, созданной для определения кислотности раствора.
Рис. 1. Пример ДРАКОН-схемы.
Как и все прочие языки, ДРАКОН опирается на математику и логику. Однако сверх того, он самым тщательным образом учитывает когнитивные вопросы ([3], [4]).
В основе языка ДРАКОН лежит идея когнитивной формализации знаний, позволяющая сочетать строгость логико-математической формализации с точным учетом когнитивных (познавательных) характеристик человека.
По мнению создателей языка, именно благодаря систематическому использованию когнитивно-эргономических методов ДРАКОН приобрел свои уникальные эргономические характеристики.
1.2.1. Процесс моделирования на языке ДРАКОНДиаграмму на языке ДРАКОН или ДРАКОН-схему можно вывести путём исчисления над алфавитом вершин-операторов (икон) и словарём подграфов-операторов (шаблонов или атомов) из некоторых начальных шаблонов (заготовок) и последовательного применения правил языка с учетом существующих ограничений, запрещающих или разрешающих на
каждом этапе разработки добавление отдельных элементов в диаграмму и жестко регламентирующих расположение этих элементов.
Создание любой ДРАКОН-схемы начинается с создания заготовки.
Заготовки бывают двух видов: одна используется для построения ДРАКОН-схемы “примитив”, из другой получается “силуэт” (рис. 2).
Рис. 2. Заготовки для построения ДРАКОН-схемы.
Первая заготовка — самая простая — может использоваться для создания “примитивов” — коротких, одноэтапных программ.
Программы, разделенные на несколько этапов, носят название “силуэтов”. Каждый этап представляется отдельной веткой. Первым оператором ветки объявляется название этапа.
Создание таких программ начинается с использования заготовки для силуэта либо с заготовки для примитива, но с последующим добавлением в схему дополнительных этапов работы программы.
После выбора заготовки начинается собственно конструирование схемы. В основе метода конструирования лежит возможность добавления новых элементов в уже существующий начальный прототип схемы посредством операции ввод атома.
Атомом называется элемент языка, который за одну транзакцию мы можем добавить в схему.
Атомы являются основными синтаксическими единицами языка ДРАКОН — словами или операторами, составляющими любую схему.
Атомы языка делятся на простые и составные, функциональные и нефункциональные.
Простые содержат одну икону, составные атомы (или шаблоны) не менее двух.
Функциональными являются все атомы, кроме оператора комментария. Полный список атомов см. рис. 3.
Операция ввода атома выполняется в два этапа: сначала пользователь выбирает нужный атом, затем обращается к дракон-схеме и указывает точку, в которую нужно его ввести.
Ввод атома производится так: происходит разрыв соединительной линии в выбранной пользователем некоторой точке, после чего в место разрыва вставляется атом, как показано на рис. 4.
Рис. 3. Атомы языка ДРАКОН.
Атомы вставляются только в разрешенные места, которые называются валентными точками дракон-схемы.
Перечень точек включает:
● валентные точки заготовок;
● валентные точки на составных иконах;
● входы и выходы атомов.
Валентные точки схемы делятся на нейтральные и критические.
Точка является нейтральной, если применение операции “ввод атома” к данной точке является возможным, но не обязательным.
В отличие от нее критическая точка требует обязательного ввода атома.
Таким образом, если на схеме на некотором этапе процесса моделирования появляется критическая валентная точка, то следующим шагом разработчика должен стать ввод атома в этот участок ДРАКОН-схемы.
При этом точки входа и выхода этого нового атома становятся нейтральными.
Рис. 4. Примеры операций ввода атома.
Если на схеме в какой-то момент появляется несколько критических точек, то одна из них на следующем этапе конструирования должна быть заполнена, оставшаяся точка становится нейтральной.
Ниже приведен пример конструирования ДРАКОН-схем на базе заготовки “примитив” (рис. 5).
Рис. 5. Конструирование ДРАКОН-схемы на базе заготовки “примитив”.
1.2.2. Визуальные особенности моделирования на языке ДРАКОНКасаясь процесса создания программы, нельзя не сказать отдельно о связанных с ним непосредственно способах укладки элементов программы на рабочую область. От расположения элементов диаграмм на листе напрямую зависит их читабельность (для сравнения см. рис. 6 — разные варианты “раскладок” для одной и той же диаграммы).
Рис. 6. Пример разных “раскладок” диаграммы.
Исчисление, разработанное для ДРАКОНа, называется шампур-методом. Оно даёт возможность строить «слепыш» алгоритма, последовательно применяя правила построения к базовым заготовкам-шаблонам, получая на каждом шаге построения ДРАКОН-схему,
удобную для восприятия.
В основе метода визуальной стороны моделирования лежит небольшое число базовых принципов.
1) Принцип шампура — атомы-операторы, следующие в алгоритме безусловно друг за другом, т.е. представляющие собой прямую и непосредственную последовательность действий, упорядочиваются по вертикали, так что исполняемая первой икона всегда лежит сверху,
последняя — снизу, и все они лежат на одной оси.
Пример шампур-блока смотри на рис. 7.
Рис. 7. Пример шампур-блока.
2) Принцип главной/побочных вертикалей — выходы развилок, образующиеся при появлении условных операторов или ветвлений, упорядочены друг относительно друга так, что не лежащий на главной вертикали выход (называемый побочным) всегда располагается правее
главного.
То есть среди множества выходов “развилок”, выделяют основной, главный путь потока управления и располагают его на главной вертикали, прочие же ветви-шампуры справа от него (рис.
.
Рис. 8. Иллюстрация принципа главной/побочных вертикалей.
1.3. QRealАпробацию данной работы было решено осуществлять применимо к системе QReal2 — платформе предметно-ориентированного моделирования (DSM-платформе), позволяющей быстро и удобно разрабатывать новые визуальные редакторы, ориентированные на
специализированные визуальные языки, посредством описания их модели на метаязыке [1].
В проекте QReal уже существует ряд средств, ускоряющих и упрощающих работу проектировщика (редактор форм, распознавание жестов мыши, визуальный отладчик и т.д.).
Дальнейшее расширение визуального языка метаредактора QReal некоторыми эвристиками, упрощающими разработку, позволило бы сделать процесс моделирования более удобным для всего ряда редакторов, описанных посредством такого расширенного языка в QReal.
1.3.1. Об архитектуре QReal QReal — сложная система с многоуровневой архитектурой.
Каждый визуальный редактор, создаваемый QReal, является отдельным подключаемым модулем, а архитектура QReal как CASEсистемы включает в себя абстрактное ядро, поставляющее базовый функционал для всех редакторов (например, отрисовка элемента), и модули, реализующие специфики языков и одинаково разбираемые абстрактным
ядром (см. рис.9).