Центральным информационным объектом при разработке нового визуального языка является его метамодель, которая бывает двух видов:
Необходимость двух видов метамоделей была замечена нами на практике, при разработке большого количества визуальных языков – как в рамках индустриальных проектов, так и на студенческих семинарах. Оказывается, что обсуждать общие идеи языка и его основные конструкции очень удобно, имея упрощенную метамодель, не загроможденную большим количеством реализационных деталей. Такая модель оказывается понятной широкому кругу специалистов, вовлеченных в разработку и использование данного языка. Удобна она и при сопровождении языка.
С другой стороны реализационная метамодель содержит большое количество деталей, необходимых для эффективной генерации по описанию языка графического редактора и других инструментов. Этих деталей оказывается довольно много, и попытка их «спрятать», минимизировать, тем самым сделав метамодель более читаемой, в конечном счете приводит к дополнительным усложнениям и потере эффективности процесса разработки программных средств поддержки визуальных языков, а также лишает этот процесс гибкости. Кроме того, в спецификации самого языка имеется довольно большое количество вспомогательных деталей – промежуточных сущностей, дополнительных связей и пр. Эта информация также существенно усложняет восприятие визуального языка и не является абсолютно необходимой для всех, кто знакомится с его спецификацией.
Понятно, что реализационная модель может и должна генерироваться по концептуальной. Но встает вопрос о поддержке итеративной разработке, то есть «протаскиванию» точечных изменений из одной модели в другую без полной перегенерации. Ведь в обоих моделях содержится информация, которая при перегенерации будет утеряна.
Наконец, оказывается полезной документация по создаваемому языку. Мы опытным путем вывели некоторый формат для reference manual по языку, который оказывается информативным, полезным и одновременно достаточно унифицированным. Однако и здесь требуется поддержки итеративности процесса разработки – в язык добавляются новые конструкции, уточняются атрибуты и связи старых и т.д., и вносить соответствующие точечные изменения в документацию оказывается утомительной работой.
В рамках нашего проекта мы реализовали решение по поддержке концептуального моделирования для Microsoft DSL TOOLS на базе продукта Microsoft Visio. Реализован специальный редактор для создания концептуальных моделей на базе Microsoft Visio, а также генератор реализованной модели (DSL TOOLS). Реализована и обратная генерация на случай, если разработка DSM-решения начинается с Microsoft DSL TOOLS. Реализована также генерация каркаса документации визуального языка из Microsoft Visio в Microsoft Word. Для поддержки итеративной разработки обоих моделей и документации мы реализовали механизм циклической разработки (далее – RT-механизм), с помощью которого можно распространять изменения по моделям без полной перегенерации, тем самым сохраняя сделанные в них ранее «ручные» изменения. Наш RT-механизм отличается от подобного в технологии Eclipse GMF, где также подержано концептуальное моделирование, так как в последней все происходит, фактически, в рамках одного продукта, а мы интегрируем три разных продукта.
Для удобства работы с решением был создан инсталляционный пакет (Скачать). Для работы приложения требуется, чтобы на Вашем компьютере были установлены следующие компоненты:
Примечания.Если не планируется разрабатывать реализационную модель в 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)».
Д.В.Кознов, А.Н.Иванов, А.И.Мишкис, Я.И.Залевский. Поддержка концептуального моделирования при разработке визуальных языков с использованием Microsoft DSL TOOLS// Сб. Системное программирование./ Вып. 4, под ред. А.Н.Терехова и Д.Ю.Булычева. СПб.: Изд. СПбГУ, 2009.