Заметки консультанта

Шамрай Александр Владимирович

Archive for 23.04.2013

Руководство по инструментам архитектуры Visual Studio. Сценарий – мне необходимо создать специализированный язык используя инструменты DSL

Posted by Shamrai Alexander на 23 апреля, 2013

<<Перейти к содержанию

ЦЕЛЬ
Этот сценарий ориентирован на архитекторов и разработчиков для понимания концепции DSL, подходов и как использовать Visual Studio Visualization and Modeling SDK (VsVmSdk) для создания мощных инструментов разработки на основе моделей, которые можно интегрировать в Visual Studio.

Описание

В отличие от языка моделирования общего назначения, таких как Unified Modeling Language (UML), или языка программирования общего назначения, например C#, Visual Basic, Java; Domain-Specific Language (DSL) — это язык программирования или язык спецификации, который предлагает использование соответствующих обозначений и абстракций, сосредотачиваясь на конкретной области и обычно ограничиваясь конкретной предметной областью.

Инструменты DSL

Domain-Specific Language (DSL) — нотации, которые вы проектируете для конкретной цели. В Visual Studio, обычно графически, можно использовать создание визуальных конструкторов, настроенных для вашей проблемной области.

Что такое Domain-Specific Language?

Domain

Области можно разделить на горизонтальные области и вертикальные области:

Представьте горизонтальные области как слои в архитектуре программного обеспечения. Visual Studio содержит Дизайнеры Специализированные для Области для GUI (Windows.Forms и WPF), для базы данных (платформа Entity framework) и ресурсов, и дизайнеров настроек, которые основаны на формах. У вас также есть ClassDiagram (мы могли бы сказать схема физических классов), которая является другим представление кода и конкретных языков. Однако, ClassDiagram уникальна в том смысле, что она двунаправленна.

Интересно видеть, что эти дизайнеры всегда генерируют код/артефакты, основываясь на некоторых платформах. Платформа предоставляет контракт. DSL пытается представить изменяемые точки для платформы.

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

Specific

Языки могут измеряться как от общего назначения (C#) до определенных. Это действительно континуум, но чем более определенный, тем больше значения DSL имеет для их владельцев.

Language

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

Когда использовать язык для определенной области?

Мы рассмотрели, что Domain-Specific Language создан специально для решения проблемы в конкретной области. Область также может быть бизнес-областью. Некоторые примеры сферы бизнеса:

  • dsl для информации о путешествиях
  • dsl для банковской администрации
  • dsl для расчета котировки

Можно создать множество типов приложений, но вы всегда имеете в виду, что каждое приложение, которое вы спроектировали, накладывает предметную область на модель реализации области решения. DSL является артефактом, который является важной частью этого процесса сопоставления.

Роли

Описания ролей смотрите в руководстве Visual Studio ALM Rangers Personas and Scenarios.

Жизненный цикл DSL

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

Субъекты и жизненный цикл DSL

Определить проблемную область

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

Анализ области

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

Моделирование

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

Главная цель участвующих в моделировании области является сопоставление проблемной области артефактам области решения, так чтоб все компоненты, взаимодействия и сотрудничество были представлены правильно и осмысленно, результатом этого шага будет метамодель, которая будет использоваться пользователями DSL для построения области решения. Чтобы сделать это, необходимо сначала классифицировать объекты области на должном уровне гранулярности. Когда вы правильно классифицируете объекты области, каждый объект проблемной области будет виден в области решения, с правильной семантикой и структурой. Но ваше сопоставление может быть настолько хорошим, насколько хорош язык взаимодействия между доменами. Сплошное взаимодействие требует, чтобы проблемная область и область решения использовали общий словарь, это означает, что в общих условиях, использование обычного языка для конечного пользователя и пользователя DSL поможет понимать и общаться на одном языке с конечным пользователем продукта.

Моделирование DSL идентификации с использованием VsVmSdk

РЕКОМЕНДАЦИИ
Хорошая абстракция имеет важное значение для реализации хорошо продуманного DSL, Visual Studio Visualization and Modeling SDK (VsVmSdk) включает дизайнеры, которые помогут вам создать модели для представления концепций в вашей бизнес-области.

Реализация

На этапе реализации пользователи DSL используют определение dsl, созданное автором DSL для создания продукта, на этом шаге пользователь DSL генерирует код, документы и файлы конфигурации для целевой платформы. Полностью поддерживаемое и интегрированное с Visual Studio IDE определение DSL позволяет пользователю DSL написать настраиваемый и расширяемый код, этот код может включать проверки модели. В наиболее общих процессах разработки этот шаг может включать мероприятия по тестированию, где пользователь DSL включает проект тестирования для модульного тестирования каждой части сгенерированных артефактов.

Развертывание

Этот шаг состоит в построении артефактов, созданных на предыдущем шаге, сейчас в службе построения Visual Studio Team Foundation Server можно включить определение для сборки DSL артефактов, сгенерированных из метамодели.

Использование продукта

На этом этапе конечный продукт готов для установки в целевую платформу и готов к использованию в конечном пользовательском продукте.

РЕКОМЕНДАЦИИ
Мы рекомендуем следовать упражнениям DSL Tools, где мы используем простой пример, проходящий через весь процесс описываемый в этом сценарии.

<<Перейти к содержанию

Posted in Architecture Tooling Guide, Microsoft, Team Foundation Server, Visual Studio | Отмечено: , | Leave a Comment »