Здравствуйте, не могу найти ссылку на скачивание курса «Визуальное моделирование: теория и практика»
Номер платежа 6400454020565 |
Знакомство с DSM-платформой Microsoft DSL TOOLS
Данная лекция предполагает, что вы готовы попробовать поработать с пакетом Microsoft DSL Tools самостоятельно. Для этого у вас должен быть некоторый опыт работы со средой разработки Microsoft Visual Studio, а также вы должны быть знакомы с языком C#. Впрочем, эта лекция может использоваться и для получения общего представления о том, что такое DSL Tools, но тогда вам придется смириться с тем, что часть материала будет непонятна.
Общие слова о том, как работать с пакетом
Пакет DSL Tools является одной из DSM-платформ и позволяет создавать собственные языки визуального моделирования, а также быстро, затрачивая небольшие усилия, реализовывать для них программный инструментарий - графический редактор с рядом дополнительных возможностей. Причем, набив руку, простые редакторы можно создавать прямо за несколько часов.
Этот пакет входит в состав Visual Studio 2005 SDK и может быть бесплатно взят с сайта компании Microsoft (http://www.microsoft.com/downloads). Он устанавливается в виде надстройки к Visual Studio и используется исключительно как составная часть этой среды разработки. После его инсталляции в Visual Studio появляется возможность создать специальный solution под названием Other Project Types\Domain-Specific Language Designer, и после его создания пакет DSL Tools становится доступным (в рамках данного solution).
В этом solution автоматически создаются два проекта - Dsl и DslPackage. Первый предназначен, главным образом, для хранения различных артефактов метамодели создаваемого DSL, второй хранит настройки пользовательского интерфейса целевого графического редактора. Оба могут содержать вставки на языке C#, с помощью которых базовая функциональность нового редактора может быть расширена.
Спецификация редактора подается на вход генератору DSL Tools, и по ней он создает уже обычный solution в Visual Studio. После его компиляции получается готовый редактор, который тут же, из Studio, можно запустить. Далее этот редактор появляется в списке инструментов, как отдельный Item, и его можно "прицепить" к вновь создаваемому в Visual Studio solution, в разработке которого желательно использовать этот новый редактор. Вне Visual Studio этот редактор использовать нельзя.
Метамодель, модель, сгенерированный код, откомпилированный код…
На практике, создавая графический редактор с использованием DSL Tools, особенно в начале, постоянно путаешься, где модель, а где метамодель, что генерируется, а что компилируется, где какие "исходники" и т. д. Чтобы прояснить общую картину и сделать ее более "операбельной", рассмотрим рис. 13.1, рис. 13.2, рис. 13.3, рис. 13.4, рис. 13.5.
На рис. 13.1 показано, что действия, связанные с разработкой и использованием нового редактора, делятся на три главных шага.
- Создание метамодели нового DSL. Этот шаг подробно расписан на рис. 13.2.
- Реализация по этой метамодели нового редактора. Этот шаг подробно расписан на рис. 13.3 и рис. 13.4.
- Использование созданного редактора. Этот шаг подробно расписан на рис. 13.5.
Итак, создание метамодели нового языка происходит в два этапа. Первый - разработка концептуальной метамодели с помощью диаграмм классов UML. При этом определяются основные концепции языка, они обсуждаются с разными людьми, а также корректируются. Этот начально-публичный этап проекта по разработке нового редактора очень важен: нужно удачно "поймать" предметную область в сети нового формализма и не забыть важные детали. От этого во многом будет зависеть успех всего проекта. Возможность обсудить найденные абстракции с различными экспертами при этом крайне важна.
Диаграммы классов UML для этих целей хорошо подходят, так как многим знакомы и не содержат деталей реализации, подобно диаграммам DSL Tools. Здесь можно использовать Microsoft Visio/UML Addon или любой другой UML-инструмент. Графический редактор DSL Tools не позволяет создавать компактные и удобные для обсуждения диаграммы: нет возможности задавать имена классов по-русски, все связи обозначаются специальными классами, что сильно увеличивает объем спецификации и т. д. На рис. 13.6, рис. 13.7, рис. 13.8 представлены спецификации языка SCL, выполненные в DSL Tools. Очевидно, что они более громоздки, чем метамодель с рис. 12.3.
Далее, как следует из рис. 13.2, концептуальная метамодель переносится в DSL Tools. В итоге получается метамодель нового языка, выполненная уже в DSL Tools.
После этого, как показано на рис. 13.3, метамодель дополняется различными свойствами, определяющими особенности нашего редактора. Задается также пользовательский интерфейс - палитра с графическими символами, всплывающие меню для элементов на диаграммах нового редактора, диалоги свойств и пр. При этом используются настройки DSL Tools, а также может создаваться свой собственный код на C#.
С помощью вставок на языке C# можно определить дополнительные свойства нового редактора в тех случаях, когда не хватает стандартных возможностей DSL Tools. Например, можно самостоятельно реализовать графический символ "ромб", который отсутствует в стандартной палитре DSL Tools, или задать возможность с помощью одной и той же связи соединять разные элементы нотации. Можно задать собственные правила валидации новых визуальных моделей, которые будут создаваться в новом редакторе. Архитектура DSL Tools устроена так, что в большинстве случаев новый код можно реализовать, аккуратно переопределив одни-два метода у автоматически генерируемых классов.
В рамках DSL Tools можно, по специальным правилам, написать генерационный модуль, который будет выполнять генерацию произвольного текста по моделям, созданным в новом редакторе. Для этого нужно описать шаблон генерируемого файла: там, где нужно, вставить статический текст или, если выводимая информация зависит от свойств модели, сделать на языке C# вставку, которая извлекает нужную информацию из модели, надлежащим образом ее форматирует и выводит в это место файла.
На рис. 13.4 показаны последующие действия, которые нужно выполнить после того, как определена метамодель нового языка и все дополнительные свойства нового редактора.
Итак, первый шаг - это валидация, что означает проверку на правильность и согласованность между собой всех элементов метамодели и их атрибутов. Такая поверка важна, поскольку если при компиляции возникнут ошибки, вызванные нашими нестыкующимися друг с другом действиями в DSL Tools, то понять, что произошло, в каком месте мы ошиблись, может оказаться непросто. Кроме того, часть ошибок может не "пойматься" при компиляции и "перекочевать" в откомпилированный код. Тогда наш целевой графический редактор будет работать неправильно или странно - и непонятно почему!
После успешной валидации происходит генерация кода целевого редактора в тексты на языке C#. После компиляции этого кода средствами Visual Studio получается целевой редактор, с палитрой графических элементов, браузером модели, редактором диаграмм, валидатором, генератором кода и пр. С помощью этого редактора пользователь может создавать свои собственные модели и диаграммы, валидировать их и генерировать по ним целевой код в рамках своего прикладного проекта, как показано на
На рис. 13.5.