Концептуальное моделирование визуальных языков

Идея проекта

Центральным информационным объектом при разработке нового визуального языка является его метамодель, которая бывает двух видов:

  • абстрактная или концептуальная – см., например, метамодель языка UML;
  • реализационная, задающая схему репозитория CASE-пакета, «вход» для автоматической генерации графического редактора в технологиях типа Microsoft DSL TOOLS и т.д.
  • Необходимость двух видов метамоделей была замечена нами на практике, при разработке большого количества визуальных языков – как в рамках индустриальных проектов, так и на студенческих семинарах. Оказывается, что обсуждать общие идеи языка и его основные конструкции очень удобно, имея упрощенную метамодель, не загроможденную большим количеством реализационных деталей. Такая модель оказывается понятной широкому кругу специалистов, вовлеченных в разработку и использование данного языка. Удобна она и при сопровождении языка.

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

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

    Наконец, оказывается полезной документация по создаваемому языку. Мы опытным путем вывели некоторый формат для reference manual по языку, который оказывается информативным, полезным и одновременно достаточно унифицированным. Однако и здесь требуется поддержки итеративности процесса разработки – в язык добавляются новые конструкции, уточняются атрибуты и связи старых и т.д., и вносить соответствующие точечные изменения в документацию оказывается утомительной работой.

    Решение

    В рамках нашего проекта мы реализовали решение по поддержке концептуального моделирования для Microsoft DSL TOOLS на базе продукта Microsoft Visio. Реализован специальный редактор для создания концептуальных моделей на базе Microsoft Visio, а также генератор реализованной модели (DSL TOOLS). Реализована и обратная генерация на случай, если разработка DSM-решения начинается с Microsoft DSL TOOLS. Реализована также генерация каркаса документации визуального языка из Microsoft Visio в Microsoft Word. Для поддержки итеративной разработки обоих моделей и документации мы реализовали механизм циклической разработки (далее – RT-механизм), с помощью которого можно распространять изменения по моделям без полной перегенерации, тем самым сохраняя сделанные в них ранее «ручные» изменения. Наш RT-механизм отличается от подобного в технологии Eclipse GMF, где также подержано концептуальное моделирование, так как в последней все происходит, фактически, в рамках одного продукта, а мы интегрируем три разных продукта.

    Установка приложения

    Для удобства работы с решением был создан инсталляционный пакет (Скачать). Для работы приложения требуется, чтобы на Вашем компьютере были установлены следующие компоненты:

  • Microsoft Visual Studio 2005 (+Service Pack 1) или Microsoft Visio 2007.
  • Microsoft Word 2007 (не обязательно).
  • .Net Framework 3.0.
  • Microsoft Visual Studio 2005 с Microsoft DSL Tools (не обязательно).
  • Примечания.Если не планируется разрабатывать реализационную модель в Microsoft DSL Tools, то Microsoft Visual Studio 2005 вместе с Microsoft DSL Tools не нужны. Аналогично, если не планируется генерация документации в Word, то его можно не устанавливать.

    В процессе работы наш инсталлятор создает каталог «Мои документы\Visio Template (VWDAddin)» для хранения шаблона нашего Visio-редактора. Часть необходимых файлов устанавливается в системную папку шаблонов (обычно это папка «C:\Documents and Settings\user\Шаблоны»). Остальные файлы приложения устанавливаются туда, куда указал пользователь. После окончания инсталляции необходимо указать к нему путь в настройках пакета Microsoft Visio: Tools->Options->Advanced->File Paths, в поле Templates указать путь к каталогу c шаблонами, например «C:\Documents and Settings\user\Мои документы\Visio Template (VWDAddin)».

    Исходный код проекта

    Исходный код проекта доступен по адресу: http://code.google.com/p/vwdaddin

    Публикации по проекту

    Д.В.Кознов, А.Н.Иванов, А.И.Мишкис, Я.И.Залевский. Поддержка концептуального моделирования при разработке визуальных языков с использованием Microsoft DSL TOOLS// Сб. Системное программирование./ Вып. 4, под ред. А.Н.Терехова и Д.Ю.Булычева. СПб.: Изд. СПбГУ, 2009.