Рис. 1. Примеры зависимостей элементов в диаграммах классов UML
подобного выявления предполагает наличие некоторой стратегии об-
хода ее элементов.
Примеры зависимости элементов в диаграммах классов UML при-
ведены на рис. 1 [11]. На диаграммах, представленных на рис. 1,
а
,
б
,
класс
A
зависит от класса
B
, поскольку для его создания необхо-
димо иметь
n
элементов класса
B
, а на диаграммах, показанных на
рис.1,
в–д
, зависимым является класс
B
, так как он является частью
класса
A
.
Для анализа влияния зависимостей между элементами метамоде-
ли на возможность создания множества
Т
преобразуем граф мета-
модели
G
= (
V, E, s, t, l, m
)
в граф зависимостей между элементами
G
dep
= (
V
dep
, E
dep
, s
dep
, t
dep
)
, где
V
dep
=
V
,
E
dep
— множество дуг, зави-
сящее от меток дуг графа метамодели; дуга
h
ν
i
, ν
j
i
, направленная из
вершины
ν
i
в вершину
ν
j
, указывает, что вершина
ν
j
зависит от вер-
шины
ν
i
(класс
ν
j
создается после класса
ν
i
);
s
dep
, t
dep
:
E
dep
→
V
dep
—
функции, которые каждой дуге графа модели ставят в соответствие
инцидентные вершины. В случае UML множество дуг графа зависи-
мостей можно определить как
E
dep
=
e
dep
:
s
dep
(
e
dep
) =
s
(
e
)
∧
t
dep
(
e
dep
) =
t
(
e
)
,
если
e
—
композиция
e
dep
=
∅
,
если
e
−
ассоциация с ограничениями
0
..n,
0
..
∗
,
∗
, n >
0;
e
dep
:
s
dep
(
e
dep
) =
t
(
e
)
∧
t
dep
(
e
dep
) =
s
(
e
)
,
если
e
—
ассоциация с ограничениями
n, n..
∗
, n >
0
.
Для того чтобы можно было создать экземпляр метамодели, в по-
лученном графе зависимостей должны отсутствовать контуры. Мно-
жество вершин
E
dep
ориентированного графа без контуров можно
разбить на непересекающиеся подмножества
N
1
, . . . , N
r
следующим
образом [14]:
84 ISSN 0236-3933. Вестник МГТУ им. Н.Э. Баумана. Сер. “Приборостроение”. 2015. № 3