Здравствуйте, не могу найти ссылку на скачивание курса «Визуальное моделирование: теория и практика»
Номер платежа 6400454020565 |
Знакомство с DSM-платформой Microsoft DSL TOOLS
Доменные свойства (Domain Propeties)
Определяя в метамодели DSL Tools класс (доменный, отношение, графический класс), разработчик может создать у него произвольное количество доменных свойств. Для доменных классов такие свойства используются при задании свойств предметной области. Например, если у нас есть доменный класс "Тип Оборудования", то его атрибуты "маркировка", "изготовитель" и "описание" будут доменными свойствами. Для графических классов доменные свойства позволяют определить характеристики этих классов, связанные с метамоделью, в то время как декораторы определяют свойства таких классов, связанные с графическими характеристиками фигур.
Каждое такое свойство имеет следующие группы атрибутов:
- Code - характеристики данного свойства как свойства C# -класса; дело в том, что созданный в DSL-дизайнере класс будет превращен при генерации в C# -класс, а его свойства - в C# -свойства этого класса; группа атрибутов code определяет различные C# -характеристики данного свойства, например, его видимость ( public protected и т. д.);
- Definition - определение таких характеристик доменного свойства, как его имя (Name), значение по умолчанию ( Default Value ), быть именем класса или нет ( Is Element Name ) - если да, тогда генератор обеспечит уникальность имен по умолчанию на диаграммах будущего графического редактора; еще один атрибут из этой группы - Kind, который может принимать значения normal или calculated ; в последнем случае у нас имеется вычисляемое свойство, которое задается некоторым кодом на языке C#, прилагаемом к метамодели;
- Resources - дополнительные C#-характеристики свойства.
Рассмотрим пример calcutated-свойства. Одно такое свойство присутствует на рис. 13.8 - это свойство класса Transition под названием ComplexTransition. Оно задает текст на линии, обозначающей переход между двумя состояниями. Этот текст, во-первых, "собирается" из нескольких доменных классов и отношений, во-вторых, имеет сложное форматирование. Ниже представлен фрагмент кода на языке C#, который определяет правило вычисления и форматирования этого свойства:
public partial class Transition { public string GetComplexCaptionValue() { string result = string.Empty; result += string.Format(@"{0}/{1};{2}{3}", this.InvokedBy == null ? string.Empty : this.InvokedBy.Name, this.Signal == null ? string.Empty : this.Signal.Name, Environment.NewLine, this.Method == null? string.Empty : this.Method.Name); return result; } }Листинг 13.1.
Здесь используется механизм частичных классов языка C#, с помощью которого доопределяется класс Transition, автоматически генерируемый по классу Transition. Данный текст записывается в отдельный файл, который помещается в проекте Dsl.
Декоратор (Decorator)
Свойства такого типа могут встречаться у графических классов DSL-метамодели. У одного класса их может быть несколько, например, одно - для определения изображения имени фигуры на диаграмме, другое - для задания свойств текстовой секции фигуры (например, атрибут Collapse, который позволяет отображать такие секции на фигуре в двух режимах - в "схлопнутом" и развернутом виде). На рис. 13.7 у графического класса StateShape есть декоратор StateName, определяющий способ изображения имен состояний, которые будут создаваться в целевом графическом редакторе.
Декораторы бывают следующих видов:
- текст ( text );
- изображение ( icon );
- "схлопывающаяся" область ( Expand Collapse ).
Кроме того, свойства декоратора отличаются для фигуры и соединителя.
Вот основные группы атрибутов декоратора:
- Appearance - настройка шрифтов изображения;
- Definition - имя в коде и в метамодели;
- Layout - задание расположения текста;
- Documentation - примечания метамодели;
- Resources - настройка отображаемого текста.
Настройка палитры
На рис. 13.11, слева, можно увидеть палитру ( toolbox ), в которой перечислены все конструкции нового языка, которые можно создавать на диаграммах. При активации элемента Edit/Toolbox в браузере вызывается инструмент для задания палитры: создаются ее элементы, которые связываются с соответствующими классами метамодели языка, задается иконка и другие свойства. Аналогичным образом настраивается и браузер целевого редактора.
В итоге…
На рис. 13.12 показан внешний вид целевого редактора, сгенерированный для языка SCL. Сравните это с рис. 13.7 предыдущей лекции.
Контрольные вопросы
- Расскажите о тех задачах, для решения которых, по вашему мнению, предназначен пакет DSL Tools.
- На вашем компьютере установлена Visual Studio. Опишите ваши действия по подготовке DSL Tools к работе. Проделайте эти действия.
- На вашем компьютере пакет DSL Tools готов к работе. Опишите ваши начальные действия, вплоть до открытия рабочего окошка DSL Designer. Проделайте эти действия.
- Почему целесообразно создавать метамодель нового DSL с помощью UML, вне DSL Tools, и только после ее завершения перенести ее DSL Tools?
- Сформулируйте, для чего предназначены доменные классы DSL Tools.
- Выскажите свое мнение о том, зачем в DSL Tools ассоциации изображаются с помощью специальных классов.
- Опишите виды графических классов, используемых в DSL Tools для создания метамодели нового языка.
- Как в метамоделях DSL Tools реализуется связь доменных графических классов?
- Для задания какой информации используется доменное свойство?
- Для задания какой информации используется декоратор?
- Приведите пример вставки собственного кода в проект нового редактора, разрабатываемого с помощью DSL Tools. Попробуйте написать, вставить и протестировать (в составе итогового редактора) собственный "ручной" код.
- Зачем в DSL Tools используется валидация?
- Попробуйте оценить (отдавая отчет в недостаточности имеющейся у вас информации!) эффективность использования DSL Tools в промышленном проекте. Постарайтесь определить минимальный нижний порог сочетания "объем проекта/компетентность специалистов" для того, чтобы пакет DSL Tools "выстрелил".
- Вам предложили реализовать в DSL Tools язык UML. Возможно ли будет это сделать? Что облегчит, а что затруднит вашу работу?