Разработка инструментальных средств создания визуальных предметно-ориентированных языков тема диссертации и автореферата по ВАК РФ 05.13.11, кандидат наук Сухов, Александр Олегович

  • Сухов, Александр Олегович
  • кандидат науккандидат наук
  • 2013, Пермь
  • Специальность ВАК РФ05.13.11
  • Количество страниц 256
Сухов, Александр Олегович. Разработка инструментальных средств создания визуальных предметно-ориентированных языков: дис. кандидат наук: 05.13.11 - Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей. Пермь. 2013. 256 с.

Оглавление диссертации кандидат наук Сухов, Александр Олегович

ОГЛАВЛЕНИЕ

ВВЕДЕНИЕ

Глава 1. ЯЗЫКИ МЕТАМОДЕЛИРОВАНИЯ И ЯЗЫКОВЫЕ ИНСТРУМЕНТАРИИ: СРАВНИТЕЛЬНЫЙ АНАЛИЗ

1.1. Модельно-ориентированный подход к разработке программного обеспечения

1.2. Предметно-ориентированные языки моделирования

1.3. Языковые инструментарии

1.3.1. MetaEdit+

1.3.2. Microsoft Tools for Domain-Specific Languages

1.3.3. Eclipse Graphical Modeling Framework

1.3.4. QReal

1.3.5. Разработка DSM-платформы на основе системы MS Visio

1.3.6. Автоматный метод определения проблемно-ориентированных языков

1.4. Сравнение технологий создания предметно-ориентированных языков

1.5. Выводы

Глава 2. МЕТОД СОЗДАНИЯ ВИЗУАЛЬНЫХ ПРЕДМЕТНО-ОРИЕНТИРОВАННЫХ ЯЗЫКОВ МОДЕЛИРОВАНИЯ В СИСТЕМЕ METALANGUAGE

2.1. Конструкции метаязыка системы MetaLanguage

2.1.1. Сущность

2.1.2. Отношение

2.1.2.1. Отношение наследования

2.1.2.2. Отношение ассоциации

2.1.2.3. Отношение агрегации

2.1.3. Ограничения

2.1.3.1. Ограничения, налагаемые на сущности

2.1.3.2. Ограничения, налагаемые на отношения

2.2. Математическая модель, лежащая в основе процесса создания визуальных

предметно-ориентированных языков

2.2.1. Граф метамодели

2.2.2. Граф модели

2.2.3. Отображение графа метамодели на граф модели

2.2.4. Отображение графа модели на граф метамодели

2.3. Выводы

Глава. 3. ПРОГРАММНАЯ РЕАЛИЗАЦИЯ СИСТЕМЫ METALANGUAGE

3.1. Архитектура системы MetaLanguage

3.2. Создание и трансформация моделей с использованием системы MetaLanguage

3.3. Использование системы MetaLanguage в процессе разработки и сопровождения информационных систем

3.4. Алгоритмы функционирования системы

3.4.1. Построение графа метамодели

3.4.1.1. Создание сущности

3.4.1.2. Создание отношения

3.4.1.3. Создание ограничений

3.4.2. Построение графа модели

3.4.2.1. Создание экземпляра сущности

3.4.2.2. Создание экземпляра отношения

3.4.3. Удаление элементов модели и метамодели

3.4.3.1. Удаление элементов модели

3.4.3.2. Удаление элементов метамодели

3.4.4. Проверка ограничений

3.4.4.1. Проверка ограничений, налагаемых на сущности

3.4.4.2. Проверка ограничений, налагаемых на отношения

3.5. Трансформация моделей в системе MetaLanguage

3.5.1. Основные понятия

3.5.2. Вертикальные трансформации моделей

3.5.3. Горизонтальные трансформации моделей

3.5.3.1. Алгоритм поиска паттерна в исходном графе

3.5.3.2. Алгоритм замены левой части правила на правую для трансформации вида «модель-текст»

3.5.3.3. Алгоритм замены левой части правила на правую для трансформации вида «модель-модель»

3.6. Выводы

Глава. 4. РАЗРАБОТКА ПРЕДМЕТНО-ОРИЕНТИРОВАННЫХ ЯЗЫКОВ С ИСПОЛЬЗОВАНИЕМ СИСТЕМЫ METALANGUAGE

4.1. Язык описания административных регламентов

4.1.1. Метамодель языка описания административных регламентов

4.1.2. Создание языка ARDL с использованием системы MetaLanguage

4.2. Язык описания систем массового обслуживания

4.3. Выводы

ЗАКЛЮЧЕНИЕ

СПИСОК СОКРАЩЕНИЙ

СЛОВАРЬ ТЕРМИНОВ

СПИСОК ЛИТЕРАТУРЫ

Приложение А. СРАВНЕНИЕ ФОРМАЛИЗМОВ ОПИСАНИЯ СИНТАКСИСА ВИЗУАЛЬНЫХ ЯЗЫКОВ МОДЕЛИРОВАНИЯ

А. 1. Графы и орграфы

А.2. Мультиграфы и псевдографы

А.З. Метаграфы

А.4. Hi-графы

А. 5. Гиперграфы

A.6. Выводы

Приложение В. СРАВНЕНИЕ ЯЗЫКОВ И ИНСТРУМЕНТАЛЬНЫХ СРЕДСТВ ТРАНСФОРМАЦИИ ВИЗУАЛЬНЫХ МОДЕЛЕЙ

B. 1. Attributed Graph Grammar

В.2. Graph Rewriting and Transformation

B.3. Visual Automated Model Transformations

B.4. Query/View/Transformation

В.5. ATLAS Transformation Language

В.6. Model Transformation By-Example

B.7. Выводы

Приложение С. ПРИМЕРЫ ВИЗУАЛЬНОГО ОПИСАНИЯ

АДМИНИСТРАТИВНЫХ РЕГЛАМЕНТОВ

Приложение D. ТРАНСФОРМАЦИЯ МОДЕЛЕЙ, ОПИСАННЫХ С ИСПОЛЬЗОВАНИЕМ ЯЗЫКА ARDL, В МОДЕЛИ, ВЫПОЛНЕННЫЕ В

НОТАЦИИ FLOWCHART

Приложение Е. XML-ОПИСАНИЕ МОДЕЛИ АДМИНИСТРАТИВНОГО

РЕГЛАМЕНТА, СГЕНЕРИРОВАННОЕ СИСТЕМОЙ METALANGUAGE

Приложение F. СРАВНЕНИЕ СИСТЕМЫ METALANGUAGE С ДРУГИМИ

DSM-ПЛАТФОРМАМИ

Приложение G. КОПИИ СВИДЕТЕЛЬСТВ О РЕГИСТРАЦИИ ЭЛЕКТРОННЫХ РЕСУРСОВ ПО МАТЕРИАЛАМ ДИССЕРТАЦИОННОГО ИССЛЕДОВАНИЯ

Приложение Н. КОПИИ АКТОВ О ВНЕДРЕНИИ РЕЗУЛЬТАТОВ ДИССЕРТАЦИОННОГО ИССЛЕДОВАНИЯ

Рекомендованный список диссертаций по специальности «Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей», 05.13.11 шифр ВАК

Введение диссертации (часть автореферата) на тему «Разработка инструментальных средств создания визуальных предметно-ориентированных языков»

ВВЕДЕНИЕ

Информационные системы (ИС) стали неотъемлемой частью инфраструктуры большинства организаций. Активное участие в процессе создания и сопровождения ИС должны принимать эксперты в предметной области и конечные пользователи, поскольку именно они знают особенности работы организации и замечают ограничения уже функционирующих в ней систем. При этом использование традиционных подходов к разработке программного обеспечения (ПО) становится проблематичным, поскольку эксперты, не являющиеся ИТ-специалистами, не способны понять языки программирования общего назначения, языки описания схем баз данных, пользовательского интерфейса, применяемые при создании ИС, а программисты не обладают достаточным уровнем знаний о предметной области, чтобы учесть ее особенности при реализации системы.

В связи с этим все более востребованными становятся инструментальные средства, основанные на применении моделъно-ориентированного подхода к созданию ИС. Такие средства позволяют объединить усилия разработчиков и экспертов в предметной области, снизить трудоемкость создания и сопровождения систем за счет переиспользования ранее описанных моделей, и сделать ИС более гибкими, поскольку для их модификации в этом случае уже не требуется «вручную» вносить изменения в исходный код, а достаточно лишь модифицировать визуальную модель. Важно подчеркнуть, что с этой задачей при наличии соответствующих инструментальных средств способны справиться даже пользователи, не являющиеся профессиональными разработчиками [88].

Понятие «модель» трактуется достаточно широко. Здесь и далее будем рассматривать понятие «модель» в контексте модельно-ориентированного подхода (МОП) к разработке ПО. Модель - абстрактное описание системы (объекта, процесса), содержащее существенные с точки зрения цели моделирования характеристики системы, отражающее особенности ее функционирования [23].

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

Существуют реализации МОП, которые используют языки моделирования общего назначения для построения моделей. Так язык моделирования общего назначения UML вместе со стандартом MOF (Meta-Object Facility) формирует основу для концепции MDA (Model-Driven Architecture). Но языки моделирования общего назначения сложны для понимания не только для экспертов в конкретной предметной области, которые принимают участие в процессе создания системы, но и, в некоторых случаях, даже для профессиональных разработчиков. Кроме того, иногда бывает затруднительно адекватно выразить понятия предметной области с помощью языков общего назначения [70].

Именно поэтому в модельно-ориентированной разработке ПО все более широко применяются визуальные предметно-ориентированные языки моделирования (Domain-Specific Modeling Languages - DSML, Domain-Specific Languages - DSL), предназначенные для решения определенного класса задач в конкретной предметной области. Предметно-ориентированные языки просты в применении и понятны различным категориям специалистов, поскольку они оперируют привычными для них терминами предметной области.

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

и т.д., где метамоделъ - модель языка, используемого для создания моделей, а мета-метамодель {метаязык) - язык, на котором описываются метамодели.

При создании крупных ИС, как правило, строится несколько моделей, описывающих систему с различных точек зрения, с разной степенью детализации, поэтому возникает необходимость согласования моделей, созданных различными категориями специалистов на разных этапах разработки систем с использованием различных DSL. Для этого требуется наличие средств горизонтальной трансформации моделей, которые позволяют выполнять преобразование моделей, описанных с использованием одного визуального языка, в модели, построенные в иной графической нотации. Причем описание правил преобразования моделей должно производиться в терминах исходного и целевого языков моделирования, понятных различным категориям специалистов. Кроме того, достаточно часто появляется необходимость преобразования визуальной модели в некоторое текстовое представление, например, в исходный код на целевом языке программирования. Таким образом, трансформация моделей является неотъемлемой частью модельно-ориентированного подхода к разработке программного обеспечения [109].

Большое влияние на формирование и развитие предметно-ориентированного моделирования оказали исследования М. Фаулера, Ю.-П. Толванена, С. Келли, работы, ведущиеся в СПбГУ (руководитель -профессор А.Н. Терехов), в НИУ ИТМО (руководитель - профессор Ф.А. Новиков), в ЮФУ (руководитель - профессор Ю.И. Рогозов) и др.

В настоящее время разработано большое число DSL, используемых для создания систем разного класса и назначения: систем искусственного интеллекта [7, 54, 74], распределенных систем [27], мобильных систем [46, 126], систем имитационного моделирования [11, 43] и др. Однако построение нового предметно-ориентированного языка - достаточно сложная задача, поскольку помимо описания самого языка необходимо создать удобный редактор для работы с ним. Для поддержки процесса разработки и сопровождения DSL используется специальный вид ПО, получивший название языковой инструментарий, или DSM-платформа. Существуют различные средства создания визуальных DSL с

возможностью задания собственных графических нотаций: MetaEdit+[117, 118], DSL Tools [65, 103], Eclipse GMF [34, 81, 89], QReal [8, 20, 36, 53] и др. Анализ существующих языковых инструментариев выявил следующие основные ограничения, присущие большинству рассмотренных систем [47]:

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

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

3. Наличие избыточной функциональности языкового инструментария, не используемой при создании DSL, которая затрудняет изучение инструментария пользователями, не являющимися ИТ-специалистами.

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

Целью диссертационного исследования является разработка методов и реализующих их инструментальных средств, позволяющих создавать визуальные динамически настраиваемые предметно-ориентированные языки моделирования, производить построение моделей программных систем с использованием этих языков и выполнять вертикальные и горизонтальные трансформации созданных моделей.

Для достижения цели диссертационного исследования были поставлены следующие задачи:

1. Провести анализ методов и инструментальных средств создания визуальных DSL.

2. Построить математическую модель для реализации процесса разработки визуальных DSL.

3. На основе построенной математической модели разработать метод создания визуальных предметно-ориентированных языков моделирования, обеспечивающий:

- возможность многоуровневого моделирования;

- возможность динамического изменения описания языков моделирования без перегенерации исходного кода их редакторов;

- единообразие средств представления, описания и использования моделей различных уровней иерархии.

4. Разработать метод описания и выполнения трансформаций моделей, позволяющий определять преобразования моделей в нотациях исходного и целевого языков моделирования.

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

Методы исследования. В диссертационной работе используется понятийный аппарат теории множеств, теории графов, теории графовых грамматик; методы и средства объектно-ориентированного программирования.

Научной новизной обладают следующие результаты диссертационного исследования:

1. Разработанная математическая модель, лежащая в основе процесса создания визуальных предметно-ориентированных языков, позволяющая унифицированным образом описывать модели различных уровней иерархии, поддерживать метамодели и модели в согласованном состоянии при внесении изменений в метаязык и/или метамодель.

2. Построенный на основе разработанной математической модели метод создания визуальных DSL, позволяющий не только производить многоуровневое моделирование, но и выполнять внесение изменений в описание предметно-ориентированных языков без повторной генерации исходного кода их редакторов.

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

Практическая значимость. Система Metalanguage используется в практике деятельности ООО «Новая платформа» при создании системы FlexBerry, предназначенной для разработки SaaS-решений.

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

Предложенные в диссертационном исследовании методы применялись автором на практике для создания предметно-ориентированных языков для различных предметных областей [11, 26, 43, 46, 51]. Были созданы: язык описания имитационных моделей (в рамках работы над грантом РФФИ проект № 08-07-90006-

Бел_а «Интеграция систем имитационного моделирования и информационных систем на основе онтологий и многоуровневых моделей предметных областей» и ЕЗН «Автоматизация и оптимизация этапов имитационного моделирования»), язык описания административных регламентов, язык описания моделей для систем типа «Умный дом» и др.

По теме диссертационной работы получено свидетельство о регистрации программы для ЭВМ в ФИПС РФ (Роспатент) [38], пять свидетельств о регистрации электронных ресурсов в ОФЭРНиО (ЦИТиС) [13-17]. Копии свидетельств о регистрации электронных ресурсов приведены в приложении G.

Результаты диссертации могут быть использованы в следующих перспективных исследованиях:

- в области программной инженерии, при разработке основанных на методах многоуровневого моделирования инструментальных средств создания ИС, которые позволяют повысить эффективность разработки систем, сократить сроки их создания за счет переиспользования ранее построенных моделей и сделать ИС более гибкими, поскольку для их модификации достаточно внести изменения только в соответствующие модели;

- при решении практических задач в области создания DSL для конкретных предметных областей: использование предметно-ориентированных языков позволяет привлечь конечных пользователей к процессу разработки и сопровождения системы, что приводит к снижению издержек организации на привлечение сторонних специалистов и в большей степени ориентирует ИС на задачи конкретной организации;

- в области разработки подходов к автоматизированному построению DSL на основе онтологий, полученных в результате анализа различных документов предметной области, что позволяет снизить трудоемкость этапа анализа при создании DSL;

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

нетривиальных трансформаций моделей, а также задания операционной семантики языков моделирования.

Апробация работы и публикации. Основные положения диссертационной работы докладывались и обсуждались на следующих конференциях:

1. Всероссийская научно-практическая конференция «Технологии Microsoft в теории и практике программирования», г. Новосибирск, 2008 г.

2. Всероссийская научно-практическая конференция «Технологии Microsoft в теории и практике программирования», г. Нижний Новгород, 2008 г.

3. Всероссийская научно-практическая конференция «Технологии Microsoft в теории и практике программирования», г. Томск, 2009 г.

4. Всероссийская научно-практическая конференция «Технологии Microsoft в теории и практике программирования», г. Нижний Новгород, 2010 г.

5. Всероссийская научно-практическая конференция молодых ученых «Современные проблемы математики и ее прикладные аспекты», г. Пермь, 2010 г.

6. Международный конгресс по интеллектуальным системам и информационным технологиям AIS/CAD'10, пос. Дивноморское, 2010 г.

7. Международная научно-техническая конференция «Технологии разработки информационных систем ТРИС-2011», г. Геленджик, 2011 г.

8. Международная конференция «Spring/Summer Young Researchers' Colloquium on Software Engineering (SYRCoSE-2012)», г. Пермь, 2012 г.

9. Научная школа молодых ученых «Computer Science Days in Ekaterinburg», г. Екатеринбург, 2012 г.

10. Международная научно-техническая конференция «Технологии разработки информационных систем ТРИС-2012», г. Геленджик, 2012 г.

11. Всероссийская научно-практическая конференция с международным участием «Актуальные проблемы механики, математики, информатики 2012», г. Пермь, 2012 г.

12. Международная конференция «Spring/Summer Young Researchers' Colloquium on Software Engineering (SYRCoSE-2013)», г. Казань, 2013 г.

13. Международная научно-техническая конференция «Технологии разработки информационных систем ТРИС-2013», г. Геленджик, 2013 г.

14. Всероссийская научно-практическая конференция по имитационному моделированию и его применению в науке и промышленности «Имитационное моделирование. Теория и практика - ИММОД-2013», г. Казань, 2013 г.

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

Основные результаты диссертации опубликованы в 29 работах, среди которых 21 статья, 3 из них в изданиях, включенных в перечень ведущих рецензируемых научных журналов, рекомендованных ВАК.

Работа была поддержана следующими грантами:

1. РФФИ, 2008-2009 гг., проект № 08-07-90006-Бел-а «Интеграция систем имитационного моделирования и информационных систем на основе онтологий и многоуровневых моделей предметных областей».

2. РФФИ, 2010-2011 гг., проект № 10-01-00794-а «Методы создания Б8Ь-инструментария и моделирования предметных областей на основе многоуровневых онтологий и графовых грамматик».

3. РФФИ, 2012-2013 гг., проект № 12-07-00763-а «Методы и средства реализации трансформаций предметно-ориентированных языков моделирования сложных проблемно-ориентированных информационных систем».

4. Научный фонд НИУ «Высшая школа экономики», софинансирование гранта РФФИ, 2012-2013 гг.

Структура, объем и содержание диссертации. Диссертация состоит из введения, четырех глав, заключения, списка сокращений, списка терминов, списка литературы из 128 наименований и 8 приложений. Основная часть работы изложена на 157 страницах, содержит 41 рисунок и 1 таблицу.

В начале первой главы рассматривается процесс многоуровневого моделирования ИС, анализируются ограничения языков и средств моделирования

общего назначения. Основную часть первой главы составляет анализ наиболее развитых на сегодняшний день зарубежных и отечественных языковых инструментариев и подходов к разработке DSL. По результатам анализа выявлены ограничения, присущие большинству рассмотренных DSM-платформ, сформулированы требования к системе MetaLanguage.

Вторая глава посвящена описанию разработанного метода создания визуальных DSL. В начале главы рассматриваются основные конструкции метаязыка языкового инструментария MetaLanguage, описываются примеры их использования для построения метамоделей. Далее приводится описание математической модели для реализации процесса создания визуальных DSL; формально описываются операции построения и интерпретации моделей, которые задают правила выполнения вертикальных трансформаций моделей в прямом и обратном направлении.

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

Четвертая глава посвящена иллюстрации возможностей системы MetaLanguage и выразительной мощности ее метаязыка. В этой главе рассматриваются примеры создания DSL для описания административных регламентов (АР) и построения моделей систем массового обслуживания (СМО).

Созданный язык описания административных регламентов позволяет снизить трудоемкость разработки и сопровождения моделей АР, сделать регламенты понятными как государственным служащим, так и обычным гражданам.

Разработанный многоуровневый язык построения моделей систем массового обслуживания позволяет различным категориям специалистов работать с одной моделью на различных уровнях языка в привычных для них терминах.

В заключении формулируются основные результаты работы и раскрываются перспективы дальнейших исследований.

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

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

Приложение С содержит примеры фрагментов моделей административных регламентов, описанных с использованием различных графических нотаций.

В приложении D содержится описание трансформации, позволяющей выполнять преобразование моделей, созданных с помощью языка описания административных регламентов, в эквивалентные модели, выполненные в нотации Flowchart, а также пример применения данной трансформации к модели административного регламента регистрации автомототранспортных средств.

Приложение Е содержит XML-описание административного регламента регистрации автомототранспортных средств, сгенерированное компонентом трансформации разработанной системы.

В приложении F иллюстрируется сравнение разработанного языкового инструментария с другими DSM-платформами на примере создания предметно-ориентированного языка описания административных регламентов.

Приложение G содержит копии свидетельств о регистрации электронных ресурсов по материалам диссертационного исследования.

Приложение Н содержит копии актов о внедрении результатов диссертационного исследования.

Глава 1. ЯЗЫКИ МЕТАМОДЕЛИРОВАНИЯ И ЯЗЫКОВЫЕ ИНСТРУМЕНТАРИИ: СРАВНИТЕЛЬНЫЙ АНАЛИЗ

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

Прежде чем приступить к описанию методов создания языкового инструментария необходимо сформулировать требования, которым он должен удовлетворять. Для этого следует:

- рассмотреть основные принципы МОП к разработке ПО, выявить преимущества этого подхода, определить существующие в этой области проблемы, ограничения средств реализации модельно-ориентированного подхода;

- определить, каким образом для построения моделей могут использоваться предметно-ориентированные языки;

- провести анализ различных методов, языков и инструментальных средств создания DSL, определить, насколько эти средства удовлетворяют требованиям разработчиков, предъявляемым к DSM-платформам.

1.1. Модельно-ориентированный подход к разработке программного обеспечения

Основная идея МОП - систематическое использование моделей на различных этапах разработки ПО, что позволяет сместить фокус с написания кода на языке общего назначения к построению моделей и автоматической генерации

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

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

С другой стороны, в разработку ПО вовлечены различные категории ИТ-специалистов: проектировщики баз данных (БД), бизнес-аналитики, дизайнеры пользовательского интерфейса, программисты, тестеры и др. Различные категории специалистов используют свою собственную информацию о системе, причем эта информация может описывать одни и те же объекты, но с разных точек зрения и с помощью различных языков моделирования (см. рис. 1).

Таким образом, разные виды деятельности при разработке ПО и разные категории ИТ-специалистов, задействованные в ней, - все это приводит к созданию и использованию в процессе построения систем различных моделей, выполненных с разных точек зрения, с разной степенью детализации и абстракции, описанных с использованием различных языков моделирования.

Для построения единой модели системы, представляющей всю систему в целом, и импорта/экспорта моделей необходимо наличие средств трансформации, которые позволяют выполнять преобразование моделей, описанных на одном языке моделирования, в модели, выполненные в иной

графической/текстовой нотации. Например, концепция МБА предполагает построение нескольких моделей системы, относящихся к различным уровням абстракции (платформенно-независимая модель, платформенно-зависимая модель), с возможностью дальнейшей трансформации одной модели в другую [92, 110], что значительно облегчает перенос системы на различные платформы.

Похожие диссертационные работы по специальности «Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей», 05.13.11 шифр ВАК

Список литературы диссертационного исследования кандидат наук Сухов, Александр Олегович, 2013 год

Список

Метамодель Модель Модель ошибок

Мета-модели

Исходная модель

I

Правила трансформации

_4_

Трансформатор

У

Целевая модель

Рис. 14. Архитектура системы MetаLаnguаge

Единым хранилищем описаний моделей различных уровней иерархии является репозиторий. Он содержит информацию о метамоделях, моделях, сущностях, отношениях, атрибутах, ограничениях, трансформациях и др. Информация о метамоделях и моделях хранится единообразно, что позволяет работать с ними с помощью одного инструментария [48].

Браузер моделей позволяет загружать/сохранять метамодели вместе с созданными на их основе моделями, выполнять над метамоделями и моделями различные операции (редактирование, проверка ограничений, трансформация и др.). Используя браузер, пользователь может получить доступ ко всем элементам метамодели: моделям, созданным с использованием открытой метамодели, сущностям, отношениям, а также к их атрибутам.

При построении модели пользователь может с помощью браузера моделей добавить в нее элементы ранее созданных моделей. Это позволяет выполнять мультиязыковое моделирование и предоставляет возможность повторного использования уже существующих моделей.

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

пользовательский интерфейс. Для создания нового элемента модели достаточно переместить соответствующую ему фигуру из палитры инструментов и указать необходимые свойства элемента (имя, атрибуты и др.).

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

При создании графического редактора использовался графический компонент FlowChart.Net, который предоставляет широкие возможности для визуализации конструкций языка (позволяет задавать различные пиктограммы, типы линий и др.) и поддерживает возможность работы со средой разработки MS Visual Studio.

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

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

3.2. Создание и трансформация моделей с использованием системы MetaLanguage

Описав основные компоненты инструментальной среды разработки, перейдем к рассмотрению того, каким образом в системе MetaLanguage могут быть созданы DSL и построены с их помощью модели предметной области [42].

Система имеет достаточно простой визуальный интерфейс, поэтому работать с ней могут как профессиональные разработчики, так и эксперты в

конкретной предметной области. В отличие от языковых инструментариев MetaEdit+, DSL Tools, Eclipse GMF, даже при задании ограничений и описании трансформаций от пользователя не требуются знания высокоуровневых или скриптовых языков программирования. Кроме того, процесс создания/модификации языков моделирования и описания моделей может быть разделен на несколько этапов. К созданию метамоделей могут быть привлечены профессиональные разработчики при участии экспертов, а к построению моделей - конечные пользователи.

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

Процесс создания и трансформации моделей предметной области можно представить схемой, изображенной на рис. 15 [114].

Создание/модификация метамодели

Создание/ модификация сущностей

Задание отношений между сущностями

Задание ограничений, налагаемых на метамодель

I

Создание/модификация модели

Создание/модификация экземпляров сущностей Создание/модификация экземпляров отношений

I

Валидация

Проверка ограничений, налагаемых на сущности

Проверка ограничений, налагаемых на отношения

f

Трансформация

Описание трансформаций моделей

Выполнение трансформаций моделей

Рис. 15. Процесс создания/модификации моделей предметной области с использованием системы MetaLanguage

Как видно из рисунка, для создания нового DSL следует задать основные конструкции языка: определить сущности и отношения между ними, задать

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

После построения метамодели разработчик получает в распоряжение готовый расширяемый настраиваемый визуальный язык моделирования. Используя полученный DSL, пользователь может создавать модели, содержащие конкретные объекты предметной области и связи между ними.

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

После построения модели необходимо проверить, удовлетворяет ли она ограничениям метамодели, с помощью которой описана эта модель. Для этого следует выполнить валидацию созданной модели. Если какие-либо из ограничений не выполняются, то пользователь будет об этом проинформирован.

Если ошибок в созданной модели не обнаружено, пользователь может приступить к описанию трансформаций модели. Система поддерживает два вида трансформаций: вертикальные и горизонтальные.

Описание вертикальных трансформаций фактически выполняется при построении модели на основе метамодели, т.е. при отображении элементов модели одного уровня иерархии в элементы модели, расположенной на другом уровне иерархии (см. рис. 16).

Горизонтальные трансформации позволяют выполнять преобразования моделей, находящихся на одном уровне иерархии, при этом пользователь может определить два вида таких трансформаций «модель-текст» и «модель-модель».

Трансформация вида «модель-модель» применяется для преобразования модели, описанной с использованием одного визуального языка моделирования, в модель, описанную на другом визуальном языке, или для выполнения каких-либо операций над конкретной моделью (добавление объектов, редукция модели и др.).

Мета-метамодель

Метамодель

Модель предметной области

Вертикальная трансформация

Модель состояния

Модель предметной области

Модель 1

/ Горизонтальная N. трансформация

Модель 2

Рис. 16. Вертикальная и горизонтальная трансформации моделей

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

Следует отметить, что система MetaLanguage позволяет выполнять многоуровневое моделирование: определив некоторую метамодель, пользователь может загрузить ее в систему и использовать уже в качестве метаязыка для создания других метамоделей.

3.3. Использование системы MetaLanguage в процессе разработки и сопровождения информационных систем

Создание информационных систем с использованием современных СА8Е-средств основано на разработке различных моделей, описывающих предметную область ИС, определяющих структуры данных и алгоритмы функционирования системы. Выбор инструментальных средств зачастую определяет и выбор языков описания моделей: используемое средство фактически «навязывает» разработчикам и пользователям определенный язык моделирования, который чаще всего оперирует терминами некоторой парадигмы программирования, поэтому инструментальное средство не позволяет экспертам, специалистам в

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

Одним из подходов к решению этой проблемы является интеграция ОБМ-платформ со средствами разработки информационных систем или непосредственно с самими ИС, выполняющими в процессе своего функционирования интерпретацию моделей. При этом ОБМ-платформа может стать основой для интеграции различных инструментальных средств, предназначенных как для разработки ИС на основе созданных моделей (САЭЕ-средств), так и для анализа моделей (систем имитационного моделирования). Так, например, система MetaLanguage может быть интегрирована с СА8Е-средствами, системами бизнес-анализа, системами имитационного моделирования (см. рис. 17).

Система Ме1аЬа1щиа^е

Языки описания моделей системы

Языки настройки-системы

Языки имитационного моделирования

ИТ-снециалис!

Генерации! кода

Информационная система

штшш

.3

■ ¡¡■г

Конечный пользователь

Описание бизнес-процессов

1/Р

ИТ-специалист, эксперт

Система имитационного моделирования

Бншес-аналипис, экспср I

Рис. 17. Схема использования системы MetaLanguage в процессе создания и сопровождения информационных систем

Вместо того чтобы описывать модели в нотации визуальных языков общего назначения, ИТ-специалисты могут с помощью системы MetaLanguage выполнить

построение DSL для создания и сопровождения моделей. После описания предметно-ориентированных языков ИТ-специалист при непосредственном участии экспертов в предметной области производит построение моделей ИС. Для экспорта созданных моделей в CASE-средство следует выполнить предварительное преобразование их описаний в один из стандартных языков моделирования, поддерживаемых этим инструментальным средством.

Если разрабатываемый продукт - это информационная система с интерпретацией моделей, то языковой инструментарий MetaLanguage может быть использован даже на этапе функционирования системы, так конечные пользователи могут с использованием языков, оперирующих терминами предметной области, вносить изменения в описание моделей предметной области, бизнес-процессов.

Для оптимизации построенных аналитиками БП могут быть использованы системы имитационного моделирования. Для проведения имитационных экспериментов необходимо выполнить преобразование моделей БП, созданных с использованием DSL или в нотации других языков моделирования, в графическую/текстовую нотацию, поддерживаемую программными средствами имитации. После исследования бизнес-процессов аналитиками может быть выполнен их реинжиниринг с помощью предметно-ориентированных языков, созданных в системе MetaLanguage, без перегенерации кода ИС и привлечения ИТ-специалистов.

Таким образом, система MetaLanguage может быть использована как в процессе разработки и сопровождения информационных систем, так и в качестве расширения средств их анализа.

3.4. Алгоритмы функционирования системы

Рассмотрев архитектуру системы, перейдем к описанию алгоритмов функционирования ее компонентов. В соответствии с требованиями, предъявляемыми к системе MetaLanguage, и построенной математической моделью были описаны следующие алгоритмы:

- создания/модификации/удаления сущностей, отношений, ограничений;

- создания/модификации/удаления экземпляров сущностей и отношений;

- проверки ограничений, налагаемых на метамодель;

- горизонтальной трансформации моделей.

3.4.1. Построение графа метамодели

Создание метамодели - это построение такого графа метамодели GMM = (V, Е), для которого в начальный момент времени V = 0, Е = 0, а в

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

3.4.1.1. Создание сущности

Определим операцию создания сущности. Пусть в граф метамодели СММ' = (V, Е') необходимо добавить сущность, которой соответствует вершина еп. Введем следующие обозначения:

- ЕАиг' - множество вершин графа метамодели, соответствующих атрибутам создаваемой сущности;

- ЕЛеБ? - множество вершин графа метамодели, соответствующих ограничениям, налагаемым на создаваемую сущность;

- еесх - дуга графа метамодели, соединяющая вершину еЫ' с множеством вершин ЕАиг';

- еег' — дуга графа метамодели, соединяющая вершину еп^ с множеством вершин ДОе^'.

Создание сущности - это операция над графом метамодели СММ', результатом выполнения которой является такой граф метамодели вММ = (V, Е), что V = V11 {епГ} II ЕАиг' и ЕЯеБГ, Е = Е' II {ееа'} II {еег'}.

В соответствии с алгоритмом 1 при создании сущности в множество вершин графа метамодели необходимо включить вершину еп^, определяющую создаваемую сущность, множество вершин, соответствующих атрибутам,

ограничениям создаваемой сущности. Помимо этих вершин, необходимо создать дуги, соединяющие вершину еЫ' с каждым из множеств ЕАЫг', ЕЯе.^'.

Алгоритм 1. Добавление новой сущности в метамодель

Добавить_новую_вершину ( ent', V') ; foreach ( eattr[ еEAttr )

Добавить_новую_вершину ( eattr[, V' ) ; Добавить_новую_дугу ( eea', E') ; foreach ( eres t[ e ERes t')

Добавить_новую_вершину ( erest[, V' ) ; Добавить_новую_дугу(eer', E');

При создании сущности в граф метамодели будут добавлены \EAttr'\ + LE/tej/' +1 вершина и две дуги, т.е. сложность алгоритма добавления

новой сущности в метамодель линеина и равна

3.4.1.2. Создание отношения

После описания сущностей языка моделирования, необходимо задать отношения между ними. Поскольку метамодель может содержать отношения трех типов: наследование, ассоциация и агрегация, то рассмотрим создание каждого из типов отношений отдельно.

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

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

Пусть в граф метамодели СММ' = (V, Е') необходимо добавить отношение

наследования, которому соответствует вершина геГ. Отношению наследования поставим в соответствие вершину графа и две дуги. Первая дуга направлена от вершины, соответствующей дочерней сущности, к вершине графа, соответствующей отношению наследования. Вторая дуга направлена от вершины, соответствующей отношению наследования, к вершине, соответствующей родительской сущности.

Введем следующие обозначения:

- егй1 - вершина графа метамодели, соответствующая родительской сущности;

- еМ1_1 - вершина графа метамодели, соответствующая дочерней сущности;

- ЕАщ' - множество вершин графа метамодели, соответствующих атрибутам родительской сущности;

- ЕЯея^ - множество вершин графа метамодели, соответствующих ограничениям, налагаемым на родительскую сущность;

- ЕАЩ^ - множество вершин графа метамодели, соответствующих атрибутам дочерней сущности;

- - множество вершин графа метамодели, соответствующих ограничениям дочерней сущности;

- ееа[_х - дуга метамодели, соединяющая вершину с множеством вершин, соответствующих атрибутам дочерней сущности;

- eer¡_x - дуга графа метамодели, соединяющая вершину enti l с множеством вершин, соответствующих ограничениям, налагаемым на дочернюю сущность;

- Rel[ - множество дуг графа метамодели, соединяющих вершину ent¡ x

с вершинами графа метамодели, соответствующими отношениям, в которых участвует родительская сущность, за исключением отношений «Наследование».

Создание отношения наследования - это операция над графом метамодели GMM' = (V, Е'), результатом выполнения которой является такой граф метамодели GMM = (V, Е), что

V = V U {reí'} U RAttr; U RRest], Е = Е' U {eea't_x} U {eer^} (J Reí', U {(ent^, reí')} U {(reí', ent,)}. При создании отношения наследования в метамодель будут добавлены + RRest' +1 вершина и \Rel[\ + 4 дуги. Сложность алгоритма создания

отношения наследования (см. алгоритм 2) равна Oi^RAttr^ + +•

Алгоритм 2. Создание отношения наследования

Добавить_новую_вершину ( reí', V' ) ; foreach (eattr' G EAttr' )

Добавить_новую_вершину(ea

ttr; , EAttr^ ) ;

foreach (erest' eERest')

Добавить_новую_вершину(erest' ,ERest) ; if ( eea'.j i E' )

Добавить_новую_дугу ( eea[_ir E') ; if ( eer2'.j {£ E')

Добавить_новую_дугу ( еег^_1Г E' ) ;

foreach ( reí' e Reí' )

ь 1

Добавить_новую_дугу ( reí' , E' ) ; Добавить_новую_дугу ((ent±_ir reí'), E' ) ; Добавить_новую_дугу (( reí', entj, E') ; Рассмотрим пример. Опишем фрагмент графа GMM, соответствующий

метамодели ERD-диаграмм, изображенной на рис. 9. Метамодель содержит

абстрактную сущность «Абстрактный класс», которая имеет атрибуты «Имя», «Описание». Данная сущность выступает в качестве родительской для сущности «Сущность», которая не имеет собственных атрибутов.

Теперь в метамодели создадим отношение наследования между сущностями «Абстрактный класс» и «Сущность» (см. рис. 18).

Имя Описание Д ( Имя Описание

• • J V • •

Л %

ееа,и ееа.

Сущность I-¡nh-и-¡nh-^ Абстрактный

(enfM) класс (ent,)

Наследование

Сreí)

Рис. 18. Создание отношения наследования в графе метамодели

Как видно из рис. 18, помимо дуг пути «Сущность» - «Наследование» -«Абстрактный класс» (все дуги пути имеют метку «inh»), в графе метамодели было произведено копирование наследуемых атрибутов EAttr = {«Имя», «Описание») и проведена дуга от сущности «Сущность» к множеству этих атрибутов.

Создание отношения ассоциации. Пусть в граф метамодели GMM' = (V, Е') необходимо добавить отношение ассоциации, которому соответствует вершина reí'. Пусть ent¡A, entl+] - вершины, соответствующие соединяемым сущностям.

Поскольку отношение «Ассоциация» может являться как однонаправленным, так и двунаправленным, то при создании этого отношения в граф метамодели для однонаправленной ассоциации будут добавлены дуги лишь прямого пути (entl+x, reí', entt_x), а для двунаправленной ассоциации, помимо дуг прямого пути (entl+l,rel',ent¡ ч), будут добавлены дуги обратного пути {ent¡ x, reí', entl+l). Кроме того, в граф метамодели необходимо добавить атрибуты и ограничения создаваемого отношения, а также дуги, соединяющие вершину, соответствующую отношению ассоциации, с множествами вершин, соответствующих его атрибутам и ограничениям.

Введем следующие обозначения:

- RAttr' - множество вершин графа метамодели, соответствующих атрибутам создаваемого отношения;

- RRest' - множество вершин графа метамодели, соответствующих ограничениям, налагаемым на создаваемое отношение;

- era' - дуга графа метамодели, соединяющая создаваемое отношение с множеством вершин, соответствующих его атрибутам;

- err' - дуга графа метамодели, соединяющая создаваемое отношение с множеством вершин, соответствующих ограничениям, налагаемым на него.

Создание отношения ассоциации - это операция над графом метамодели GMM', результатом выполнения которой является такой граф метамодели GMM - (V, Е), что V = V U {геГ} U RAttr' U RRest', а множество дуг определяется следующим образом:

- Е-Е' U {era'} U {err'} U {(ent¡+,, reí')} U {{reí, ent, если ассоциация однонаправлена;

- E = E' U {era'} U {err'} U {{entl+l,rel')} U {{reV, entt_x)} U

rel')} U {{rel', entl+l)}, если ассоциация двунаправлена.

При создании отношения ассоциации в метамодель будут добавлены | RAttr' + +1 вершина, четыре дуги в случае однонаправленной

ассоциации и шесть дуг в случае двунаправленной (см. алгоритм 3). Сложность алгоритма создания отношения ассоциации равна + .

Алгоритм 3. Создание двунаправленного отношения ассоциации

Добавить_новую_вершину(rel, V ); foreach ( rattr' eRAttr' )

Добавить_новую_вершину ( rattrV') ; Добавить_новую_дугу ( era', E') ; foreach ( rrest' e RRest' )

Добавить_новую_вершину ( rrest[, V' ) ; Добавить_новую_дугу ( err', E' ) ; Добавить_новую_дугу ((ел tI+1, rel'), E' ) ;

Добавить_новую_дугу ((reí', ent^), Е' ) ; Добавить_новую_дугу ((ел t^, reí'), Е' ) ; Добавить_новую_дугу ({reí', ent1+1), Е' ) ;

Расширим граф метамодели диаграмм «Сущность-Связь» сущностью «Связь», являющейся дочерней для сущности «Абстрактный класс». Соединим в графе метамодели сущности «Сущность» и «Связь» двунаправленной ассоциацией (см. рис. 19).

Наследование_Сущность (relk)

inh--inh-

Сущность (еп/и)

ееа,

Абстрактный класс (ent¡)

-inh-

Наследование_Связь (геМ -•Ч

-assoc-

-assoc-

ХН«-

-assoc-

-assoc-

Ассоциация (reí)

Рис. 19. Создание отношения ассоциации в графе метамодели

Из рисунка видно, что в графе метамодели GMM отношению «Ассоциация» соответствует четыре дуги: {entгеГ), (rel',entl+]), (ent¡+x, reí'), (reí', ent¡ x), все они имеют метку «assoc».

Создание отношения агрегации. Определим операцию создания отношения агрегации. Пусть в граф метамодели GMM' = (V, Е') необходимо

добавить отношение агрегации, которому соответствует вершина геГ.

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

Введем следующие обозначения:

- ent¡ - вершина графа метамодели, соответствующая сущности-«целое»;

- ent¡+2 - вершин графа метамодели, соответствующая сущности-«часть»;

- RAttr' - множество вершин графа метамодели, соответствующих атрибутам создаваемого отношения агрегации;

- RRest' - множество вершин графа метамодели, соответствующих ограничениям, налагаемым на создаваемое отношение;

- era' - дуга графа метамодели, соединяющая создаваемое отношение с множеством вершин, соответствующих его атрибутам;

- err' - дуга графа метамодели, соединяющая создаваемое отношение с множеством вершин, соответствующих ограничениям, налагаемым на него.

Создание отношения агрегации - это операция над графом метамодели GMM', результатом выполнения которой является такой граф метамодели GMM - (V, Е), что

V = V U {rel'} U RAttr' U RRest', Е = Е' U {era'} U {err'} (J {(enti+2, rel')} U {(rel', ent,)}.

В соответствии с алгоритмом 4 при создании отношения агрегации в метамодель будут добавлены RAttr'| +1RRest' +1 вершина и четыре дуги:

Алгоритм 4. Создание отношения агрегации

Добавить_новую_вершину ( rel', V' ) ; foreach ( rattr[ € RAttr')

Добавить_новую_вершину ( rattr'±, V') ; Добавить_новую_дугу ( era', E') ; foreach ( rrest[ eRRest' )

Добавить_новую_вершину ( rrest', V' ) ; Добавить_новую_дугу ( err', E' ) ; Добавить_новую_дугу ((ent1+2, rel'), E' ) ; Добавить_новую_дугу ((rel', entj, E' ) ;

Сложность алгоритма добавления в метамодель отношения агрегации равна

Рассмотрим пример. Пусть в метамодель ЕШЗ-диаграмм необходимо добавить сущность «Атрибут» с атрибутами «Имя», «Тип», «Описание». Причем сущность «Атрибут» связана агрегацией с сущностью «Абстрактный класс» (см. рис. 20).

Имя тип ОписаниеЛ ( Имя Описание

* * J V * '

ж ж

ееа/+2 ееа,

Атрибут - - - -^ Абстрактный

(entl+2) класс lent)

Агрегация

(,ПВО

Рис. 20. Создание отношения агрегации в графе метамодели

Как видно из рис. 20, при создании агрегации между сущностями «Атрибут» и «Абстрактный класс» в граф метамодели были добавлены дуги пути «Атрибут» - «Агрегация» - «Абстрактный класс» (на рисунке все дуги пути имеют метку «aggr»).

3.4.1.3. Создание ограничений

Пусть в графе метамодели GMM' = (V, Е') необходимо задать ограничение rest', налагаемое на сущность (отношение) ent'. Обозначим дугу метамодели, соединяющую вершину ent' с множеством вершин, соответствующих ограничениям, налагаемым на ent', через еег'.

Создание ограничения, налагаемого на сущность (отношение) ent' - это операция над графом метамодели GMM', результатом выполнения которой является такой граф метамодели GMM = (V, Е), что

\Е' U {еег'}, если еег' € Е'\ V = V'U {resf},E = \

, в противном случае

Таким образом, при добавлении ограничения, налагаемого на сущность (отношение), в граф метамодели необходимо включить вершину rest',

соответствующую данному ограничению, а также дугу, соединяющую сущность (отношение) епс множеством вершин, соответствующих ограничениям, на нее (него) налагаемым, если эта дуга ранее не была создана.

3.4.2. Построение графа модели

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

Создание модели - это построение такого графа модели ОМ = (VI, Е1), для которого в начальный момент времени VI — 0, Е1 = 0, а в процессе добавления новых объектов предметной области и связей между ними множества VI, Е1 пополняются новыми элементами в соответствии с правилами создания экземпляров сущностей и отношений.

Рассмотрим основные операции создания модели и то, как меняется граф модели при выполнении этих операций.

3.4.2.1. Создание экземпляра сущности

Определим операцию создания экземпляра сущности. Пусть в граф модели СМ' = (VI', ЕГ) необходимо добавить экземпляр сущности, которому соответствует вершина епй'. Введем следующие обозначения:

- еп? - вершина графа метамодели, соответствующая сущности, экземпляр которой добавляется в модель;

- ЕАшГ - множество вершин графа модели, соответствующих значениям атрибутов создаваемого экземпляра сущности;

- ееаГ — дуга графа модели, соединяющая вершину епй' с множеством вершин ЕАМгГ;

- ? — дуга, соединяющая вершину графа модели епй' с вершиной графа метамодели еЫ'.

Создание экземпляра сущности - это операция над графом модели GM', результатом выполнения которой является такой граф модели GM = (VI, EI) , что

VI = VI' U {end'} U EAttrV, EI = ЕГ U {ееаГ} U {?}.

В соответствии с алгоритмом 5 при создании экземпляра сущности в множество вершин модели необходимо включить вершину entl', соответствующую создаваемому экземпляру сущности, а также множество вершин, соответствующих значениям его атрибутов. Помимо этого, необходимо создать дугу, соединяющую вершину entl' с множеством вершин EAttrV, и дугу t', соединяющую создаваемый экземпляр сущности с сущностью, на основе которой создается данный экземпляр.

Алгоритм 5. Создание экземпляра сущности

Добавить_новую_вершину ( entl', VI' ) ;

foreach ( eattrl[ eEAttrl' )

Добавить_новую_вершину ( eattrl'ir VI' ) ;

Добавить_новую_дугу ( eeal', El' ) ;

Добавить_новую_дугу (t'r El') ;

При создании экземпляра сущности в граф модели будут добавлены \EAttrI'\ +1 вершина и две дуги, т.е. сложность алгоритма добавления нового

экземпляра сущности в модель линеина и равна

3.4.2.2. Создание экземпляра отношения

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

Определим операцию создания экземпляра отношения ассоциации (агрегации). Пусть в граф модели GM' = (VI', EI') необходимо добавить экземпляр отношения ассоциации (агрегации), которому соответствует вершина

reír. Пусть entl', entl'+l - вершины, соответствующие соединяемым экземплярам сущностей, at' - дуга, соединяющая вершину графа модели rell' с вершиной графа метамодели, соответствующей отношению, экземпляр которого создается. Обозначим через RAttrl' множество вершин графа модели, соответствующих значениям атрибутов создаваемого экземпляра отношения, а через егаГ - дугу графа модели, соединяющую вершину rell' с множеством вершин RAttrl'.

Создание экземпляра отношения ассоциации (агрегаций) — это операция над графом модели GM', результатом выполнения которой является такой граф модели GM = (VI, EI), что

VI = VI'[j {rell'} [j RAttrl', EI = EI' U {eral'} U {(entl'l+l, rell')} U {(reW, entl[)} U {t'}.

Таким образом, при создании экземпляра отношения ассоциации (агрегации) в граф модели необходимо добавить вершину, соответствующую создаваемому экземпляру отношения, множество вершин-значений атрибутов экземпляра отношения, дугу егаГ, дугу t', а также дуги пути (entl', rell', entI'+]).

При создании экземпляра отношения ассоциации (агрегации) в граф модели будут добавлены +1 вершина и четыре дуги (см. алгоритм 6). Сложность

алгоритма создания экземпляра отношения ассоциации (агрегации) равна 0(\RAttrI'\).

Алгоритм 6. Создание экземпляра отношения ассоциации (агрегации)

Добавить_новую_вершину ( rell', VI') ;

for each ( attrl[ e RAttrl')

Добавить_новую_вершину ( attrl[, VI' ) ;

Добавить_новую_дугу ( eral', El' ) ;

Добавить_новую_дугу ((entl'+1, rell') , El' ) ;

Добавить_новую_дугу (( reí i', entl[) , El' ) ;

Добавить_новую_дугу (t', El' ) ;

Рассмотрим пример. На рис. 21 изображен граф, представляющий собой объединение графа метамодели ERD-диаграмм и графа модели, созданной с

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

На рис. 21 представлены следующие вершины, соответствующие экземплярам сущностей:

- еШ1 - вершина графа модели «Сущность_Человек», соответствующая экземпляру сущности «Сущность»;

- епй - вершина графа модели «Сущность_Студент», соответствующая

экземпляру сущности «Сущность», которая является подсущностью для суперсущности «Сущность_Человек»;

- еМ11+2 - вершина графа модели «Атрибут_ФИО», соответствующая экземпляру сущности «Атрибут».

V_

Сущность, описывающаяЧ студента вуза ]

• У

Рис. 21. Граф модели, построенный на основе графа метамодели ЕКО-диаграмм

Каждая из этих вершин соединена дугой с вершинами, соответствующими значениям ее атрибутов.

Модель содержит экземпляры двух отношений, в графе СМ им соответствуют вершины:

- ге11 - экземпляр отношения «Агрегация»;

- ге11 - экземпляр отношения «Ассоциация».

Путь (епП , ге11, ) определяет экземпляр отношения ассоциации.

Вершина соединена дугой с вершиной ге11к[, которая в свою очередь

смежна вершине еШ1 , что отвечает правилам создания экземпляра отношения

агрегации в модели.

Дуги tl, , , соединяют экземпляры сущностей и отношений с

сущностями и отношениями, на основе которых они созданы. Эти дуги представлены на рисунке пунктирными линиями.

3.4.3. Удаление элементов модели и метамодели

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

3.4.3.1. Удаление элементов модели

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

Удаление экземпляра отношения. Определим операцию удаления экземпляра отношения. Пусть из графа модели СМ' = (VI', ЕГ) необходимо

удалить экземпляр отношения, которому соответствует вершина ге1Г. Для этого необходимо удалить:

- вершину графа модели геП', соответствующую удаляемому экземпляру отношения;

- множество вершин графа модели, соответствующих атрибутам удаляемого экземпляра отношения, - ЯАигГ;

- дугу графа модели, соединяющую вершину reíГ с множеством вершин RAttrl', - eral';

- дугу t', соединяющую удаляемый экземпляр отношения с отношением, на основе которого он был создан;

- множество дуг графа модели, инцидентных вершине reíГ, - ERI'. Удаление экземпляра отношения - это операция над графом модели

GM' = (VI', EI'), результатом выполнения которой является такой граф модели GM = (VI,EI), что

VI = VI' \ ({rell'} U RAttrl'), El = El' \ {{eral'} U ERI' (J {¿'}). В соответствии с алгоритмом 7 при выполнении операции удаления экземпляра отношения из графа модели будут удалены \RAttrI'\ + l вершина и

ERI' + 2 дуги, т.е. сложность алгоритма линейна и равна 0{^RAttrI'\ +•

Алгоритм 7. Удаление экземпляра отношения

Удалить_дугу ( eral', El' ) ; foreach ( rattrl[ e RAttrl')

Удалить_вершину ( rattrlVI' ) ; foreach ( erl[ e ERI' )

Удалить_дугу ( erl[, El') ; Удалить_дугу (t', El' ) ; Удалить_вершину ( rell', VI' ) ;

Удаление экземпляра сущности. Определим операцию удаления экземпляра сущности. Пусть из графа модели GM' = (VI', ЕГ) необходимо удалить экземпляр сущности, которому соответствует вершина entl'. Для этого необходимо удалить:

- вершину графа модели entl', соответствующую удаляемому экземпляру сущности;

- множество вершин графа модели, соответствующих значениям атрибутов удаляемого экземпляра сущности, - EAttrV;

- множество экземпляров отношений, в которых участвует удаляемый экземпляр сущности, - Яе1Г, удаление экземпляров отношений осуществляется с помощью алгоритма 7;

- дугу графа модели, соединяющую вершину еШГ с множеством вершин ЕАигГ, - ееаГ;

- дугу , соединяющую удаляемый экземпляр сущности с сущностью, на основе которой он был создан.

Удаление экземпляра сущности - это операция над графом модели СгМ' = (VI', ЕГ), результатом выполнения которой является такой граф модели СМ = (VI, Е1), для которого после удаления множества экземпляров отношений 11е1Г выполняется:

VI = VI' \ ({еШГ} 11 ЕАигГ), Е1 = ЕГ \ ({ееаГ} II {/'}).

В соответствии с алгоритмом 8 при удалении экземпляра сущности из графа модели будут удалены \ЕАМгГ\ +1 вершина, две дуги, а также \RelI' экземпляров отношений, т.е. сложность алгоритма удаления экземпляра сущности равна 0(\ЕАигГ\ + где И- сложность удаления \Яе1Г\ экземпляров отношении.

Алгоритм 8. Удаление экземпляра сущности

Удалить_дугу(ееаГ, ЕГ ); foreach (eattrl[ eEAt trl' )

Удалить_вершину ( eattrl'if VI' ) ; f oreach ( rel Г. e Rel Г )

Удалить_экземпляр_отношения(ге11\ ); Удалить_дугу (t', El' ) ; Удалить_вершину ( en ti', VI') ;

Рассмотрим пример. Удалим из графа, представленного на рис.21, экземпляр «Сущность_Студент» сущности «Сущность».

Проследим, как изменялся граф модели при удалении экземпляра «Сущность_Студент». На первом этапе из графа модели был удален экземпляр отношения, в котором участвует удаляемый экземпляр сущности, -

«Ассоциация_Студент» (см. рис. 22). При его удалении из графа модели были исключены:

1) дуги пути (еи/7, ге\1к л, ел/7 );

2) дуга ;

3) вершина ге11к+1 .

ФИО Строковый Атрибут задает н ФИО человека

ееа/,+21

Сущность, описывающая человека в предметной области

Атрибут_ФИО (елИ,+21)

Атрибут (еп?,+2)

Агрегация_ФИО (гей* 1)

-аддг!-М-аддг!-

1

ееа/,1

I Сущность_Человек

и

I

-аддг-

Ь

Л

-аддг-

¿3

I

1 \Т

-азБос-

-аззос-

Агрегация (ге1к)

Д Сущность

I ^

Ассоциация

Сущность_Студент (

(епНв)

ееэ/,2

_Г.

Студент

Сущность, описывающая4 студента вуза

Рис. 22. Удаление экземпляра сущности «СущностьСтудент». Этап I

На втором этапе из графа модели были удалены:

1) дуга ееа1 , соединяющая вершину епП^ с множеством атрибутов

удаляемого экземпляра сущности;

2) множество вершин ЕАНг1 , соответствующих значениям атрибутов

экземпляра «Сущность_Студент»;

3) дуга ¿4;

4) вершина , соответствующая удаляемому экземпляру сущности.

Результатом выполнения операции является граф, представленный на рис. 23.

ФИО

Строковый

Атрибут задает ФИО человека

ют\ ка I

Человек

Сущность, описывающая человека в предметной o6nai

Агрегация_ФИО (ге//*,)

■aggrl-►f-aggrl-

ееа/„

Атрибут_ФИО (^

(entl,t21) * >

fi

Сущность_Человек (enf/„)

Í3

■assoo

Атрибут (ení,+2)

■аддг-М—

Агрегация

(гек)

i .ог

■аддг-ЧИ»-

■assoc-

Ассоциация

Сreki-1)

Сущность (enf,)

Рис. 23. Удаление экземпляра сущности «Сущность Студент». Этап II

3.4.3.2. Удаление элементов метимо дел и

При рассмотрении алгоритмов удаления элементов метамодели (сущностей, отношений, ограничений) воспользуемся описанными ранее алгоритмами удаления элементов модели. Метамодель может содержать три типа отношений: наследование, ассоциация, агрегация. Поскольку агрегация - это частный случай отношения ассоциации, то семантики этих отношений схожи, отношение наследования имеет семантику отличную от других типов отношений. Рассмотрим операцию удаления отношений метамодели отдельно для отношения ассоциации (агрегации) и отношения наследования.

Удаление отношений «Ассоциация» и «Агрегация». Определим операцию удаления отношения ассоциации (агрегации). Пусть из графа метамодели GMM' = (V, Е') необходимо удалить отношение ассоциации (агрегации), которому соответствует вершина reí'. Обозначим через k количество моделей, содержащих экземпляры удаляемого отношения.

Обратите внимание, представленные выше научные тексты размещены для ознакомления и получены посредством распознавания оригинальных текстов диссертаций (OCR). В связи с чем, в них могут содержаться ошибки, связанные с несовершенством алгоритмов распознавания. В PDF файлах диссертаций и авторефератов, которые мы доставляем, подобных ошибок нет.