Научная статья на тему 'Средства быстрой разработки предметно-ориентированных решений в metacasе-средстве QReal'

Средства быстрой разработки предметно-ориентированных решений в metacasе-средстве QReal Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
151
36
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ПРЕДМЕТНО-ОРИЕНТИРОВАННОЕ МОДЕЛИРОВАНИЕ / МОДЕЛЬНО-ОРИЕНТИРОВАННАЯ РАЗРАБОТКА / МЕТАМОДЕЛИРОВАНИЕ / CASE-СИСТЕМЫ

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Кузенкова Анастасия Сергеевна, Дерипаска Анна Олеговна, Таран Кирилл Сергеевич, Подкопаев Антон Викторович, Литвинов Юрий Викторович

Изучено средство разработки визуальных предметно-ориентированных языков и инструментария поддержки для них. Приведено описание использования данного подхода на примере редактора программ для роботов

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Кузенкова Анастасия Сергеевна, Дерипаска Анна Олеговна, Таран Кирилл Сергеевич, Подкопаев Антон Викторович, Литвинов Юрий Викторович

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

LegoAn environment for development of visual domain-specific languages and supporting tools for them is described. New approach to rapid development of visual languages is proposed, tools for language evolution support and rapid source code generators development are described. An example of applying this approach for creation of tools for Lego robots programming is given

Текст научной работы на тему «Средства быстрой разработки предметно-ориентированных решений в metacasе-средстве QReal»

4

Научно-технические ведомости СПбГПУ 4' 2011 Информатика. Телекоммуникации. Управление

УДК 004.4'236

А.С. Кузенкова, А.О. Дерипаска, К.С. Таран, А.В. Подкопаев,

Ю.В. Литвинов, Т.А. Брыксин

СРЕДСТВА БыСТРОй РАЗРАБОТКИ ПРЕДМЕТНО-ОРИЕНТИРОВАННЬ1Х решений В METACASE-СРЕДСГВЕ QREAL

Парадигма предметно-ориентированного моделирования основывается на том факте, что создание нового специального языка и решение с его помощью поставленной практической задачи можно во многих случаях осуществить быстрее, чем решать ту же задачу с помощью языков общего назначения (подробнее про преимущества и ограничения, появляющиеся при использовании DSM-подхода см. [1]). Имея соответствующую инструментальную поддержку, данный подход позволяет значительно повысить уровень абстракции, на котором работают проектировщики, и увеличить производительность их труда в несколько раз [2].

Создание инструментальных средств поддержки для нового языка вручную по трудоемкости превосходит сложность решения типичных задач. В этом случае применение предметно-ориентированного моделирования было бы экономически нецелесообразно. Однако существуют технологии, позволяющие создавать визуальные языки автоматизированно, быстро и эффективно. Наиболее распространенными примерами таких средств являются Miscrosoft DSL Tools, Eclipse GMF, MetaEdit+.

Инструментарий Microsoft DSL Tools предназначен для создания редакторов визуальных предметно-ориентированных языков, встроенных в среду Visual Studio. Процесс реализации нового визуального языка состоит в задании его метамо-дели на специальном визуальном языке, генерации кода редактора на C# и внесении в сгенерированный код необходимых изменений вручную. В целом, DSL Tools хорошо подходит для создания несложных визуальных языков, которые будут использованы внутри Visual Studio, но отдельный редактор с помощью DSL Tools не создать. Также достаточно сложные редакторы требуют больших объемов ручного кодирования на C#.

Технология Eclipse GMF (Graphical Modelling Framework) создается на базе среды разработки с открытым исходным кодом Eclipse. Техноло-

гия основана на использовании двух библиотек: Eclipse Modeling Framework (EMF) и Graphical Editing Framework (GEF). Для того чтобы разработать новый редактор визуального языка в GMF, надо выполнить следующие шаги: разработать доменную модель (или абстрактный синтаксис разрабатываемого языка), графическую модель (конкретный синтаксис), модель инструментов (описание панели инструментов редактора), установить соответствие между этими тремя моделями, а затем сгенерировать целевой язык. Технология достаточно мощная, но сложная как в освоении, так и в использовании, поэтому мало подходит для небольших проектов.

Средство MetaEdit+ является активно используемым [1] в промышленных разработках средством предметно-ориентированного моделирования, разрабатываемым компанией MetaCASE уже на протяжении двадцати лет. Поддержка нового языка в этом инструменте тоже начинается с определения метамодели языка, после этого можно воспользоваться встроенным графическим редактором и определить внешний вид элементов. Имеется возможность задать ограничения на модели, создаваемые на новом языке, которые не выражаются синтаксисом, и определить правила генерации исходного кода по диаграмме на специальном текстовом языке. Средство закрытое и довольно дорогостоящее, что затрудняет его использование в небольших проектах.

Рассмотрение существующих решений показывает, что имеется потребность в открытых средствах метамоделирования, несложных в освоении и использовании, подходящих для небольших и средних компаний.

Инструментальные средства

метамоделирования в QReal

Разработкой технологии QReal [3] занимается научно-исследовательская группа изучения технологий визуального моделирования кафедры системного программирования Санкт-Петербургского

государственного университета под руководством профессора А.Н. Терехова. QReal задумывалась как развитие технологии REAL [4], основывающаяся на использовании более современной версии языка UML - 2.0. При этом на разрабатываемые средства изначально накладывались требования многоплатформенности (возможность работы на операционных системах MS Windows и Linux), поддержки многопользовательской разработки, возможности удаленного доступа к репозиторию системы и наличие другой актуальной для современных сред визуальной разработки ПО функциональности.

Однако скоро стало очевидным, что создание вручную большого числа редакторов диаграмм -довольно утомительное занятие, к тому же получаемая система оказывается плохо масштабируемой. Для упрощения труда программистов была разработана следующая схема: каждая диаграмма языка описывается на специальном метаязыке в XML-файлах, по которым генерируется код на C++, компилирующийся в динамическую библиотеку и подключаемый к основной части системы как плагин. Инфраструктура QReal включает в себя абстрактное ядро, реализующее общую для всех редакторов и элементов диаграмм функциональность, а подключаемые модули при этом отвечают за специфику конкретных редакторов. Так, каждый такой модуль инкапсулирует в себе информацию о наборе объектов, допустимых на диаграммах данного типа, позволяет правильно интерпретировать хранящиеся в репозитории значения атрибутов элементов, предоставляет информацию о логических правилах размещения элементов на соответствующих типах диаграмм и т. д. Такая схема оказалась удобной и позволила не только задавать редакторы диаграмм UML, но и описывать другие существующие визуальные языки с графовой структурой, например, BPEL (Business Process Execution Language). Также появилась возможность генерировать инструментальную поддержку и для новых визуальных языков.

Такой способ создания новых редакторов показал себя удобным в работе и более эффективным по сравнению с ручным кодированием, но несмотря на это имел ряд принципиальных недостатков, связанных с необходимостью работы с большим объемом текстовых данных. Заметим, что XML-описания редакторов можно генерировать по визуальным моделям, тем самым применив технологию предметно-ориентированной

разработки по отношению к себе. В связи с этим в QReal также добавлены и визуальные инструменты поддержки метамоделирования. Для текстового метаязыка создано графическое представление (визуальный метаязык) и реализующий его графический редактор (или метаредактор). Рассмотрим метаязык и метаредактор подробнее.

Подключаемый модуль может содержать несколько визуальных языков. Каждый язык определяется набором своих элементов и связей между ними. Основные абстракции делятся на графические и неграфические (соответственно, имеющие и не имеющие графическое представление в редакторе). В метаредакторе графическими являются такие сущности, как «Элемент» и «Связь», обозначающие, соответственно, элемент визуального языка и связь между элементами. Примером неграфической сущности является «Перечислимый тип данных» (епит), обозначающий перечень значений, которые могут использоваться для указания свойств элементов. Также с помощью метаредактора можно задавать отношения наследования между элементами на диаграмме и отношения допустимой вложенности одних элементов в другие. Эти отношения на диаграмме указываются направленными ассоциациями. Помимо этого имеется возможность задавать некоторые дополнительные свойства, поддержка которых осуществлена в QReal (способность «вытягивать» из элементов определенные связи, сортировать вложенные элементы и уметь их скрывать для элементов-контейнеров и другое).

В QReal для разработанного метаязыка была создана инструментальная поддержка и соответствующая инфраструктура, обеспечивающие сквозной процесс создания графических редакторов: разработчик может спроектировать новый визуальный язык, скомпилировать подключаемый модуль соответствующего графического редактора и подключить его к QReal, не выходя из системы. Кроме этого реализован разбор существующих XML-файлов и их визуализация с помощью метаредактора, тем самым помимо создания новых визуальных языков пользователь может редактировать уже имеющиеся. Таким образом, парсер XML-файлов совместно с генератором в XML-формат обеспечивают совместимость двух используемых в QReal способов задания ме-тамоделей - в текстовом и графическом виде.

Помимо абстрактного синтаксиса важно уметь задавать, как будут внешне выглядеть элементы

4

Научно-технические ведомости СПбГПУ 4' 2011 Информатика. Телекоммуникации. Управление

разрабатываемого языка. Для этого в QReal реализован редактор формы фигур, который представляет собой по сути векторный графический редактор, но обладает рядом особенностей, отражающих специфику его использования. Например, существует возможность связи текста, отображаемого на фигуре, со свойствами элемента в метамодели, что делает возможным отображение и редактирование логических свойств прямо на диаграмме. Важно иметь возможность импортирования готовых изображений, это увеличивает наглядность визуального языка.

Поддержка эволюции предметно-ориентированных языков

В течение жизненного цикла предметно-ориентированного решения используемые визуальные языки могут меняться. К примеру, это может произойти вследствие изменения самой предметной области или в связи с рефакторингом самого языка вследствие накопленной статистики его применения (например, удаление неиспользуемых элементов, добавление элементов для типичных шаблонов проектирования и т. д.). В итоге получается ситуация, когда уже созданные с помощью некоего языка модели оказываются несовместимыми с текущей метамоделью языка. Появляется задача адаптации созданных моделей под новые версии языка и поддержка эволюции языков в общем.

На данный момент в QReal эта проблема частично решена отслеживанием произошедших в метамодели изменений. В процессе редактирования метамодели какого-либо языка фиксируются все вносимые в него изменения. Когда происходит загрузка моделей, созданных с помощью этого языка, система проверяет, не изменился ли язык, и как только сталкивается с какой-либо ошибкой, связанной с загрузкой диаграммы (к примеру, в языке более не существует требуемого элемента), запускается механизм автоматического восстановления модели. Этот механизм воспроизводит в хронологическом порядке все запротоколированные изменения языка (например, если тип элемента А был переименован в В, то QReal находит в сохраненных моделях все существующие в модели элементы с типом А и заменяет их тип на В). Некоторые более сложные изменения, связанные с ассоциациями между элементами и ссылочными свойствами, требуют дополнительного обхода элементов.

Этот способ покрывает большую часть возникающих конфликтов между существующей версией языка и версией, требуемой имеющимися моделями. Однако он не гарантирует полного решения задачи. В дополнение к нему существует возможность прямого указания системе, как обрабатывать коллизии с помощью специального вида патчей и/или загрузки нужной метамодели языка. В будущем планируется реализация механизмов разрешения конфликтов, не использующих протоколирование, а анализирующих свойства модели и языка.

Средства быстрого создания генераторов

Любое CASE-средство, используемое при разработке программного обеспечения, нацелено в первую очередь на генерацию некоторых артефактов - исходного кода, документации, конфигурационных файлов, скриптов сборки и установки ПО и т. д. В свою очередь metaCASE-средства, предоставляющие возможности для быстрого создания инструментальных средств поддержки визуальных языков, должны иметь и механизмы быстрой разработки подобных генераторов. В QReal данная задача решается путем создания предметно-ориентированного языка описания генераторов, позволяющего задавать правила обхода моделей и шаблоны кода, соответствующие тем или иным элементам.

Стоит заметить, что процесс написания генераторов при заданном API репозитория и прочих компонент CASE-системы содержит в себе большое число рутинных действий: получение свойств элементов, итерация по связям, ассоциированным с выбранным элементом, обход элементов в контейнере и т. п. Вполне логично, что выделение подобных действий в отдельные конструкции языка сокращает время разработки генератора, делает его код более читаемым. К тому же, уровень абстракции подобного кода повышается, т. к. разработчик начинает думать о том, что должен делать его генератор, а не как это выразить в терминах C++ и/или API QReal.

На данный момент в QReal создан текстовый язык, инкапсулирующий в себе большинство конструкций для удобной навигации по моделям и позволяющий задавать правила генерации кода при их обходе. В дальнейшем эти правила интерпретируются для конкретных пользовательских диаграмм, порождая соответствующий им код на выбранном целевом языке.

Пример модели на языке Lego Mindstorms NXT

Апробация

Представленный в статье метаредактор опробован на нескольких примерах. Один из них -язык для программирования роботов Lego Mindstorms NXT. Такие роботы и визуальные средства для их программирования сейчас активно внедряются в школы для обучения информатике с 5-6 классов, где робот используется как некая осязаемая замена исполнителю учебных языков типа «черепашки» LOGO. Язык программирования роботов - хороший пример визуального предметно-ориентированного языка. Программа на этом языке состоит из блоков, каждый из которых представляет элементарную команду роботу, блоки связаны потоком управления. Блоки исполняются последовательно, при получении управления блок посылает на робота команду по Bluetooth, либо выполняет какие-то вычисления. Описание самого синтаксиса языка в метаредак-торе заняло порядка двух часов, язык состоит примерно из 20 различных блоков и одного вида связи. При ручном кодировании создание такого редактора могло бы занять порядка человеко-

месяца. Пример модели на этом языке приведен на рисунке.

Дальнейшие исследования направлены на автоматизацию создания не только редакторов, но и всех прочих необходимых инструментов для работы с визуальными языками. Кроме того, необходимо сделать разработку визуальных языков полноценной деятельностью по разработке ПО, т. е. максимально упростить сопровождение ме-тамоделей, поддержать переиспользование фрагментов метамоделей, создать удобные инструменты для просмотра и анализа метамоделей и т. д.

На основе полученного опыта полагаем, что при наличии мощной инструментальной поддержки использование предметно-ориентированных визуальных языков реализует принципиально новый подход к созданию сложных систем с довольно низким порогом вхождения для новичков и многократным увеличением производительности профессионалов. Цель проекта QReal - исследование, реализация и апробация таких инструментов и технологий, основанных на них.

СПИСОК ЛИТЕРАТУРЫ

1. Kelly, S. Domain-Specific Modeling: Enabling Full Code Generation [Текст] / S. Kelly, J. Tolvanen. -Wiley-IEEE Computer Society Press, 2008. -448 с.

2. Kieburtz, R. A software engineering experiment in software component generation [Текст] / R. Kieburtz, [et al.] // Proc. of 18th International Conf. on Software Engineering. -Berlin: IEEE Computer Society Press, 1996.

3. Терехов, А.Н. Архитектура среды визуально-

го моделирования QReal. [Текст] / А.Н. Терехов Т.А. Брыксин, Ю.В. Литвинов [и др.] // Системное программирование. -СПб.: Изд-во СПбГУ, 2009. -№ 4. -С. 171-196.

4. Терехов, А.Н. REAL: методология и CASE-средство для разработки систем реального времени и информационных етстем [Текст] / А.Н. Терехов, К.Ю. Романовский, Д.В. Кознов [и др.] // Программирование. -1999. -Т. 5. -С. 44-52.

i Надоели баннеры? Вы всегда можете отключить рекламу.