Диссертация (1148239), страница 16
Текст из файла (страница 16)
Данные ошибки естественным образом проявятсялибо на фазе кодогенерации, либо уже во время работы целевого приложения, и чемраньше проектировщик узнает о некорректности создаваемой им модели, тем прощебудет исправить имеющиеся ошибки.В QReal был реализован механизм выполнения правил ограничений во времяработы с моделями. Проверка правил происходит при выполнении какого-либо изследующих событий:●изменение любого свойства элемента (логической или графической модели);●при помещении элемента в контейнер или извлечении элемента из контейнера;●при создании или удалении элементов;●при присоединении и отсоединении связей.У каждого правила задан уровень ошибки:●предупреждение — элемент, для которого не выполняется заданное правило,будет подсвечен на диаграмме красным цветом;●критичная ошибка — аналогично предупреждению, но при этом еще выдаетсятекстовое сообщение с текстом ошибки;●настраиваемый режим, при котором уровень критичности будет задаватьсяпользователем в настройках QReal.
Например, это может быть полезно врежиме отладки, когда на время хочется отключить текстовые сообщения обошибках.На рис. 19 и 20 показано несколько примеров выполнения правил ограничения95для языка программирования роботов (см. главу 6). Так, на рис. 19 не выполняетсяправило о том, что сразу после блока “Включить моторы” не должен идти блок“Выключить моторы” (на диаграмме эти блоки идут последовательно).
Элемент“Выключить моторы” подсвечен красным цветом.Рисунок 19. Нарушение правила ограниченияНа рис. 20 нарушено правило о том, что на диаграмме не может быть болееодного блока “Начало”. В данном случае элементом, для которого не выполненоограничение, является сама диаграмма, поэтому никаких блоков не подсвечивается.При нажатии на текст ошибки происходит выделение элемента, которому онасоответствует(диаграмма,накоторойрасполагаетсяэтотнеобходимости будет открыта).Рисунок 20. Нарушение правила ограниченияэлемент,при965.5.
ЗаключениеВ данной главе рассмотрена архитектура разработанной автором предметноориентированной платформы: описаны её принципы, основные типы подключаемыхмодулей (плагины редакторов, плагины инструментов) и их взаимодействие,способы расширения платформы. Описано назначение и правила использованияосновныхкомпонентплатформы,которыемогутбытьиспользованыдляформирования конечных предметно-ориентированных решений.
Как видно изданной главы, разработанное решение удовлетворяет требованиям к современнойDSM-платформе, сформулированным в разделе 2.5.97Глава 6. Апробация6.1. ВведениеОписанная в данной работе DSM-платформа была использована для созданияряда как отдельных визуальных языков и редакторов для них, так и полноценныхDSM-решений, включающих в себя интерпретаторы моделей, генераторы исходногокода и прочие инструменты.
В данной главе рассматриваются некоторые примерытаких решений.6.2. Среда разработки QReal:RobotsСреда QReal:Robots [49, 50] предназначена для программирования роботовLego Mindstorms NXT 2.0. В настоящее время робототехнические конструкторыактивно используются в школах, в частности в рамках уроков информатики икружков для обучения детей программированию и основам кибернетики. Одним изсамых популярных таких конструкторов в российских школах является LegoMindstormsNXT2.0.Программированиеэтихроботовстаршеклассникамипроисходит на языке Си, в младшей и средней школе используются более наглядныевизуальные средства программирования — NXT-G [16] для совсем простых задач иRobolab [20] для более сложных.
При этом у учителей, использующих эти средствана практике, накопился ряд замечаний к ним: отсутствие наглядных механизмовотладки создаваемых программ, неполная русификация, высокая стоимость, и др., атакже больше число замечаний к графическому интерфейсу сред и представлениюиспользуемых в них блоков. В результате было принято решение разработатьотечественную среду программирования робототехнических конструкторов LegoMindstorms NXT 2.0 на базе платформы QReal.Внешний вид QReal:Robots представлен на рис. 21 и характерен для98большинства создаваемых на базе QReal сред (как описано в разделе 5.4).Визуальный язык составляют 22 блока, разбитые на четыре логические группы:●алгоритмические блоки (например, блоки “Условие” или “Цикл”);●блоки инициализации программы (например, блоки “Начало” или “Сброситьпоказания количества оборотов моторов”);●блоки действий (например, блоки “Моторы вперед” или “Гудок”);●блоки ожиданий (например, блоки “Ждать срабатывания сенсора касания” или“Таймер”).Рисунок 91.
Внешний вид среды QReal:RobotsОтметим, что при возникновении требования разделения блоков в палитре налогические группы используемый для описания редакторов метаязык был расширен,и была добавлена поддержка этой функциональности на уровне DSM-платформы.Таким образом, появилась возможность задавать группы элементов в палитре нетолько в редакторе QReal:Robots, но и в других, созданных на базе платформы.99QReal:Robots расширяет стандартный графический интерфейс платформыQReal некоторыми дополнительными виджетами, характерными для предметнойобласти роботов: например, панелью настройки сенсоров, используемой дляконфигурирования сенсоров, подключаемых к роботу. При этом ряд виджетов, кмоменту создания QReal:Robots уже существовавших в рамках других сред,созданных на базе QReal, был обобщен и перенесен на уровень DSM-платформы, чтопозволило использовать их в других средах, в частности, в QReal:Robots. Например,таким виджетом оказалась панель отображения переменных, показывающаясостояние всех используемых в программе переменных и констант, как служебных(например, значения показателей количества оборотов моторов), так и созданныхпользователем.Существует несколько вариантов выполнения создаваемых в QReal:Robotsпрограмм.●Автоматическая генерация по диаграмме кода на языке Си, компиляция его вбинарный код и запись его в память робота (робот должен быть подключен поUSB или Bluetooth к компьютеру, на котором работает QReal:Robots).
В этомслучае программа будет выполняться на роботе автономно.●Пошаговаяинтерпретациядиаграммыспосылкойроботукоманд,соответствующих выполняемому блоку диаграммы. В этом случае робот такжедолжен быть подключен к компьютеру по USB или Bluetooth, однако, вотличие от предыдущего случая, робот должен оставаться подключенным навсе время выполнения программы.●Пошаговая интерпретация диаграммы с использованием двухмерной моделиробота в качестве исполнителя (см.
рис. 22). С помощью специального окнавозможноконфигурированиекаксамоймоделиробота(например,определение набора и расположения сенсоров), так и окружающего мира(создание препятствий, линий на полу и т.п.).100Функциональность, связанная с двухмерной моделью робота, была созданапрограммированием вручную в виде подключаемого к QReal:Robots модуля,поскольку является слишком специфичной для данной предметной области, чтобыбыть частью DSM-платформы.Рисунок 10. Окно двухмерной модели робота в QReal:RobotsПри старте проекта QReal:Robots в платформе QReal еще не было средствавтоматизированногосозданиявизуальныхинтерпретаторовигенераторовисходного кода по диаграммам, поэтому описанные выше интерпретаторы диаграмми генератор кода программы на Си были созданы кодированием вручную на C++/Qt.После появления средств задания операционной семантики языков генератор былописан и с помощью этого инструмента.1016.3.
Среда разработки, основанная на языке блок-схемБлок-схемы являются примером широко известного визуального языка общегоназначения с небольшим количеством элементов и конкретной семантикой этихэлементов. Это позволило использовать редактор блок-схем в качестве средстваапробации новых инструментальных средств, разработанных для платформы QReal.Например, изначально работа над созданием средств задания исполнимой семантикиповеденческих языков велась применимо именно к редактору блок-схем —изначально визуальный интерпретатор был создан для этого редактора вручную,затем велась работа по обобщению подобной функциональности на другие языки,основанные на задании потока управления.Внешний вид среды представлен на рис. 23. Используемый визуальный языкявляется подмножеством языка, определяемого ГОСТ 19.701-90, и состоит из пятитипов элементов (блоки “Начало”, “Конец”, “Действие”, “Условие” и “Диаграмма”)и двух связей (одна из которых используется для задания вариантов условныхпереходов, а другая — для связи остальных блоков).
В качестве текста,записываемого внутри блоков, используются конструкции языка Си.Помиморедакторадиаграммвсоставсредывходятследующиеинструментальные средства.●Визуальный интерпретатор диаграмм, позволяющий выполнять программупошагово блок за блоком, подсвечивая текущий. При этом происходит анализкода, содержащегося в блоках — объявленные переменные добавляются всписок текущих переменных (и отображаются в специальном окне QReal), привыполнении определённых действий над переменными их значения нужнымобразом изменяются. При интерпретации условных блоков происходитвычисление выражения, содержащегося в тексте блока, и осуществляетсяпереход по одной из веток алгоритма.