Шаг 0. Начало работы алгоритма.
ModelElements
=
=
{
A, B, C, D, E, F, H, G
}
.
Шаг 1. Поиск вершин, в которые не входит ни одна дуга (1 уро-
вень):
LevelElements
[1]=
{
B, C, H
}
ModelElements
=
{
A, D, E, F, G
}
.
Шаг 2. Поиск вершин, в которые ведут дуги из вершин:
LevelElements
[1] :
LevelElements
[2] =
{
A, D, G
}
ModelElements
=
=
{
E, F
}
.
Шаг 3. Поиск вершин, в которые ведут дуги из вершин двух пре-
дыдущих уровней:
LevelElements
[3] =
{
E
}
ModelElements
=
{
F
}
.
Шаг 4. Поиск вершин, в которые ведут дуги из вершин трех пре-
дыдущих уровней:
LevelElements
[4] =
{
F
}
ModelElements
=
{}
.
Шаг 5. Множество
ModelElements
пустое, прекращение работы.
Формальная стратегия получения полного и корректного мно-
жества правил трансформации.
Эта стратегия состоит из двух эта-
пов: 1) построение по метамодели графа зависимостей, разбиение
множества вершин графа зависимостей на уровни; 2) построение мно-
жества правил трансформации, соответствующих этому разбиению.
Рассмотрим данную стратегию на примере реляционной метамодели,
представленной в виде диаграммы классов на языке UML (рис. 3).
Граф зависимостей строить нет необходимости, поскольку в таком
случае структура его очевидна, и порядок обхода вершин метамодели
следующий:
Schema
;
Table
;
Column
;
P rimaryKey
;
ForeignKey
.
Для представления правил трансформации в графическом виде
(рис. 4) использованы обозначения, взятые из работы [3]. Закрашенные
вершины обозначают условие, необходимое для выполнения правила
(на момент трансформации эти элементы должны существовать).
Элемент
Schema
— исходный элемент, с которого начинается фор-
мирование модели, поэтому добавляем правило для создания этого
элемента (рис. 4,
а
). Элемент связан отношением композиции с эле-
Рис. 3. Пример реляционной метамодели
ISSN 0236-3933. Вестник МГТУ им. Н.Э. Баумана. Сер. “Приборостроение”. 2015. № 3 87