Научная статья на тему 'Формализация двумерных графо-подобных диаграмм'

Формализация двумерных графо-подобных диаграмм Текст научной статьи по специальности «Математика»

CC BY
85
17
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ГРАФО-ПОДОБНАЯ ДИАГРАММА / GRAPH-LIKE DIAGRAM / ФОРМАЛИЗАЦИЯ ГРАФИЧЕСКИХ КОНСТРУКЦИЙ / DRAWING FORMALIZATION / НОТАЦИЯ / NOTATION / КОНКРЕТНЫЙ СИНТАКСИС / DIAGRAMMING

Аннотация научной статьи по математике, автор научной работы — Степанян Карлен Багратович

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

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

ERD, UML, IDEFx и SDL.The paper proposes formalism to specify plane graph like diagrams. Formalism is based on formalization described by Zhogolev E. A. New kind of diagrammatic constructions introduced with possible relationships between them. Elements of such visual languages as Petri's Nets, ERD, UML, IDEF and SDL are considered throughout the paper.

Текст научной работы на тему «Формализация двумерных графо-подобных диаграмм»

Степанян Карлен Багратович

ФОРМАЛИЗАЦИЯ ДВУМЕРНЫХ ГРАФО-ПОДОБНЫХ ДИАГРАММ

Аннотация

В статье излагается формализм для описания двумерных графо-подобных диаграмм. Основанный на формализации диаграмм, предложенной Е.А. Жоголевым, он расширяет ее, вводя конкретные типы двумерных конструкций и допустимые отношения между ними. При этом рассматриваются элементы таких визуальных языков, как сети Петри, ERD, UML, IDEFx и SDL.

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

ВВЕДЕНИЕ

Для формализации двумерных графо-подобных диаграмм (далее просто диаграмм) Е.А. Жоголев [1] выделил два множества конструкций на диаграмме (буквенное обозначение выбрано автором):

V - множество двумерных конструкций, которые располагаются на диаграмме контекстно-независимо (вершины);

E - множество линий, которые располагаются на диаграмме в зависимости от расположения инцидентных им двумерных конструкций (ребра).

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

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

- множество меток T - множество конструкций, отображающих текст;

- множество декораций D с V - множество конструкций, предназначенных для отображения статических элементов, например, таких как значки на концах линии;

- множество фигур F с V - множество конструкций, отображающих сущности диаграммы;

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

- множество контейнеров K с F - фигуры, которые могут содержать в себе другие конструкции, представляющие на диаграмме отдельные сущности;

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

- множество ребер E - множество контекстно-зависимых конструкций, отображающих отношения между сущностями.

© К.Б. Степанян, 2010

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

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

- прямоугольник;

- эллипс;

- прямоугольник со скругленными углами;

- ломаная;

- замкнутая ломаная.

Для V определено отношение geom :V ® G , сопоставляющее каждой вершине геометрический примитив из множества G.

Не умаляя общности, будем считать, что ребро представляется всегда ломаной линией.

Введем обозначения:

C - множество всех конструкций диаграммы;

N - множество натуральных чисел;

R - множество действительных чисел;

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

Point = Z X Z - множество точек плоскости, на которой отображается диаграмма;

point: V ® Point - сопоставляет любой вершине диаграммы координаты ее левого верхнего угла, эти координаты будем также называть координатами вершины;

Size = Z + X Z+- множество всевозможных размеров элементов по ширине и высоте;

size :V ® Size - сопоставляет любой вершине ее размер на диаграмме.

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

На строго формализованной диаграмме каждая конструкция имеет свой тип. Например, в сетях Петри [6] все вершины поделены на два типа - позиции и переходы. Оператор type: C ® Type сопоставляет конструкции диаграммы ее тип. У любой конструкции определен единственный тип:

Определим множество операторов индексации для произвольного множества А как

Тогда следующее высказывание обозначает, что множество A индексируемо операто-

ОБЩИЕ ОПРЕДЕЛЕНИЯ

Vc: c е C ® $! type(c) е Type . Обозначим множество всех типов вершин на диаграмме как

Type = {type (v)}veV .

veV .

In

ром I

enumerable (A,i) ° i е Index (A).

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

eqtype(Aj, A2) ° Aj е C л A2 е Cл | Aj1 = | A2 |

л 3ij: enumerable (A1, i1) л 3i2 : enumerable (A2, /'2)

л (Vaj е AjVa2 е A2 : ij(aj) = i2(a2) ® type (aj) = type (a 2)),

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

МЕТКИ

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

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

C = V и E и T .

Метки являются контекстно-зависимыми элементами - их расположение зависит от расположения родительского элемента. Однако простого отображения метки рядом (или внутри) родительского элемента в некоторых случаях недостаточно, так как расположение метки может носить семантическую составляющую. Например, ассоциация из диаграммы классов UML [2] может иметь название, которое должно выводиться в середине линии, и метки на своих полюсах, которые должны располагаться рядом с соответствующим полюсом. Это означает, что для каждой метки должно существовать правило ее отображения относительно расположения родительского элемента на диаграмме.

Контекстная зависимость для метки t от конструкции p может быть определена через отношение прикрепления:

attachedt (p, t, op, x) ° p еV и E л t е T л point (t) = op (p, t, x), то есть метка является контекстно-зависимой в том случае, если ее координаты на диаграмме определяет оператор прикрепления

op :V и E X T X AttCont ® Point с помощью контекста прикрепления x е AttCmt .

Основываясь на отношении прикрепления одной метки, можно определить множество всех меток, прикрепленных к конструкции, как

attachedtS(p,S,op,X) ° Vs е S З!xе X : attachedt(p,s,op,x)

л—lЗop,x,sе T \ S: attachedt(p,s,op,x).

Поскольку у всех конструкций одинакового типа одинаковое количество прикрепленных меток и они располагаются одинаково, то их множества контекстов прикрепления равны, а множества прикрепленных меток равны с точностью до типов: type (pj) = type (p2) л attachedtS (pj, Sj, op, Xj) л

л attachedtS (p2, S2, op, X2) ® Xj = X2 л eqtype (Sj, S2).

ОПЕРАТОР ПРИКРЕПЛЕНИЯ МЕТКИ К ВЕРШИНЕ

Для всех вершин диаграммы одинакового типа прикрепление метки должно выглядеть одинаково. Но вершины могут иметь разное положение и размеры, поэтому кон-

N.

N

Рис. 1: а) вершина с прикрепленной в центре

меткой; б) схематическое изображение прикрепления цетра метки к центру вершины

текст прикрепления определяется точками а) б)

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

На рис. 1 а приведен пример вершины с прикрепленной к центру меткой. Для того

чтобы описать подобное прикрепление, необходимо указать, что центр метки должен совпадать с центром вершины (см. рис. 1 б). Центру метки соответствует точка (0.5, 0.5) в относительной системе координат метки. Для вершины точка прикрепления определяется аналогично.

Формально контекстом прикрепления для оператора являются следующие параметры: rv = (rxv, ryv) е R X R - точка прикрепления родительской вершины в ее системе координат;

rf = (rxf, ryt) е R XR - точка прикрепления метки в системе координат метки. Тогда для любой вершины v, имеющей координаты (xv, yv) = point (v) и размеры (wv,hv) = size(v) , оператор прикрепления TAV вычисляет положение прикрепленной метки по ее размерам:

TAV (v, r) =

-rx.

0

rxv • wv + xv

- ryt 0

/ \ xt

yt

1

V

f \ wt

= TAV(v,r.) X

h

1

V У

ry ■ w + y

v v v 1

где (wf, ht) е Size - размер метки, вычисленный по тексту, который необходимо отобразить; (xf,yt) е Point - вычисленное положение метки на диаграмме.

ОПЕРАТОР ПРИКРЕПЛЕНИЯ МЕТКИ К РЕБРУ

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

length : E ® Z+- функция вычисления длины;

apoint: E X R ® Point - функция, определяющая точки на линии по относительному положению вдоль нее;

angle : E XPoint ® R - функция, определяющая угол поворота линии по часовой стрелке относительно оси x в любой ее точке S.

Прикрепление метки к ребру отличается от прикрепления метки к вершине тем, что для указания точки прикрепления на ребре используется одна координата, обозначающая положение вдоль ребра относительно его длины. То есть 0 означает полюс-начало ребра, а точка 1 означает полюс-конец ребра. Контекстом для оператора прикрепления метки к ребру являются следующие параметры:

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

re е R - относительное положение точки прикрепления на ребре;

rf = (rxf, ry ) е R XR - точка прикрепления метки в системе координат метки.

Пусть e е E - рассматриваемое ребро, тогда

(xe, ye) = apoint (e, re) - точка прикрепления на ребре в координатах плоскости, a = angle (e,( xe, ye)) - угол поворота линии в точке прикрепления.

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

' 1 0 0.5 ^ ' cosa - sin a 0Л ' 1 0 - 0.5 ^ / \ rxt

0 1 0.5 X sin a cosa 0 X 0 1 - 0.5 X ryt

0 V 0 1 0 V 0 1 У 0 V 0 1 У 1 V /

rrxt cosa - ryt sin a + 0.5(sina - cosa + 1)Л rxt sin a + ryt cos a - 0.5(sin a + cos a-1) 1

Обозначим

rxt = rxt cos a - ryt sin a + 0.5 (sin a - cos a +1), ryt = rxt sina + ryt cosa-0.5(sina + cosa-1).

Тогда для ребра e оператор прикрепления TAE вычисляет положение прикрепленной метки по ее размерам:

TAE (e, r.) =

-rxt 0 0

0

- ryt 0

в

ye 1

/ \ xt

yt 1

V у

/ \ wt

= TAE (e, r.) X

1

где (w , ht) e Size - размер метки, вычисленный по тексту, который необходимо отобразить; (xt, yt) e Point - вычисленное положение метки на диаграмме.

На рис. 2 а приведен пример ребра с прикрепленными к концу декорацией (см. ниже) и меткой. Для прикрепления метки необходимо указать, что ее правый нижний угол должен совпадать с концом горизонтально расположенного ребра (см. рис. 2 б). На рис. 2 в изображено то же ребро, но повернутое на 90 градусов против часовой стрелки. Для учета поворота ребра точка прикрепления у метки меняет свое положение, что отображено на рис. 2 г.

ДЕКОРАЦИЯ

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

а)

б)

>

в)

р ■ ■ г rilliiiiit

] áWJUdl-Jf

А

as=o=inban

г)

A"-t

.j

: eWXMüfl ;

h

Рис. 2: а) ребро с прикрепленными к концу меткой и декорацией;

б) схематическое изображение прикрепления метки и декорации;

в) ребро, повернутое на 90 градусов против часовой стрелки;

г) схематичное изображение конструкций и точек прикрепления после поворота

ции - это указание направления у ребра (см. рис. 2). Для этого обычно используются разнообразные стрелки на соответствующем полюсе. Некоторые визуальные языки используют более сложные декорации для отображения дополнительной семантики, например, нотация Crow's Foot диаграмм сущность-отношение (Entity-Relation Diagram -ERD) [7] использует различные наборы из окружности и отрезков для отображения кратности отношения.

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

Формально множество вершин V можно разбить на два непересекающихся подмножества:

V=DиF,DпF= 0, где D - множество декораций и F - множество фигур. Для элементов множества D верно

"d1, d2 е D: type (d1) = type (d2) ® size (d1) = size (d2),

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

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

"d1, d2 е D: type (d1) = type (d2) ® size (d1) = size (d2).

Аналогично определяется множество всех прикрепленных к конструкции декораций:

attacheddS(p,S,op,X) °"sе S $!xе X : attachedd(p,s,op,x)

A—3op,x,sе D \ S : attachedd(p,s,op,x)

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

type (p1) = type (p2) л attacheddS(px, S^ op,X1) л attacheddS(p2, S2, op,X2) ®

® D1 = D2 л | S11=| S2 | лtypeequality (S^ S2)

Оператор прикрепления декорации к вершине абсолютно аналогичен оператору прикрепления метки к вершине, так как декорация, как и метка, обладает размером и положением.

ОПЕРАТОР ПРИКРЕПЛЕНИЯ ДЕКОРАЦИИ К РЕБРУ

Оператор прикрепления декорации к ребру отличается от оператора прикрепления метки к ребру тем, что декорация, в отличие от метки, должна поворачиваться вместе с ребром. Контекстом для оператора прикрепления декорации к ребру являются следующие параметры:

re е R - относительное положение точки прикрепления на ребре, rd = (rxd, ryd) е R X R - точка прикрепления декорации в системе координат декорации. Пусть

(xe, ye) = apoint (e, re) - точка прикрепления на ребре в координатах плоскости, a = angle (e,( xe, ye)) - угол поворота линии в точке прикрепления.

Тогда оператор прикрепления DAE вычисляет положение неповернутой прикрепленной декорации по ее размерам:

DAE (e, rd) =

rxd 0 x e

0 - ryd Уе

0 0 1

/ \

xd

yd 1

v у

/ \ wd

= DAE(e, rd) X

1

V У

где (wd, hd) e Size - размер декорации, а (Xd, yd) e Point -

неповернутой декорации на диаграмме.

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

вычисленное положение

ROT (d, rd) =

0 x, + rx, ■ w,

d d d

1

0 1 yd + ryd ■ hd 0 0 1

/

X

cos a sin a 0

sina 0

cosa 0

v

X

10 01 00

вокруг точки при-

rx ■ w

dd

-yd -ryd ■ hd 1

Пример, иллюстрирующий прикрепленную декорацию к ребру, представлен на рис. 2 а. Декорация крепится в точке, соответствующей середине правой стороны, к концу ребра. После поворота ребра (рис. 2 в) декорация поворачивается вместе с ним.

h

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

d

x

d

ФИГУРА

Основной конструкцией для представления вершин на диаграмме является фигура. В отличие от декорации, фигуры не могут быть прикреплены к другим конструкциям, фигуры одного типа могут иметь разные размеры и могут содержать в себе другие конструкции (см. сложная фигура и контейнер). Примерами фигур могут быть состояние из диаграммы состояний, сущность и отношение из ЕЯЭ, модуль поведения из ГОЕБЗ [5] и т.д. Для двух фигур одного типа, верно, что они представлены на диаграмме одинаковым геометрическим примитивом:

/ е F л f2 е F л type(Д) = type(/2) ® geom (Д) = geom(/2).

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

СОСТАВНАЯ ФИГУРА

В современных визуальных языках семейства IDEFx [3,4,5] и UML для представления вершин диаграмм простых графических примитивов недостаточно. Например, конструкция для отображения класса на диаграмме классов UML должна обладать вертикальными секциями для отображения названия класса, его атрибутов и его операций. Конструкция, отображающая модуль поведения (unit of behavior) в IDEF3, имеет внизу две горизонтальные секции для отображения порядкового номера элемента и его связи с элементами из IDEF0 [4]. Все перечисленные конструкции представляют на диаграмме одну сущность визуального языка, однако используют сложные геометрические образы. Для описания подобных образов можно использовать комбинации из нескольких контекстно-зависимых вершин. Контекстная зависимость определяет отношение принадлежности зависимой вершины (дочерней) от независимой (родительской). Если дочерние вершины вместе с родительской представляют на диаграмме одну сущность визуального языка, то родительская вершина называется составной фигурой. То есть составную фигуру можно описать как фигуру, содержащую в себе конечный заранее определенный набор других конструкций. Конкретное расположение дочерней вер-

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

Определим множество операторов расположения на диаграмме: Layout = {layout | layout :V X V ® Point X Size} , где оператор layout определяет положение и размер на диаграмме дочерней вершины, в зависимости от ее параметров и параметров родительской вершины. Тогда высказывание

constrained (p, c, layout) ° p, c e V л layout e Layout

л "point (p)," size (p): (point (c), size (c)) = layout (p, c)

определяет контекстную зависимость p от c и утверждает, что расположение вершины c определяется с помощью оператора layout.

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

В приведенном выше примере оператор расположения для родительской фигуры может быть формализован следующим образом. Пусть p - родительская фигура, а ci - дочерние фигуры i = 0..n. Тогда

(xp, yp) = point (p) - координаты родительской фигуры;

(w p, hp) = size ( p) - размер родительской фигуры;

(x'c,y'c) = point(ci) - вычисляемые координаты i-ой дочерней фигуры;

(w'c,кгс ) = size(ci) - вычисляемый размер i-ой дочерней фигуры; тогда координаты и размер i-ой дочерней фигуры вычисляется по следующим формулам:

Рис. 3. Пример составной фигуры, представляющей составное состояние на диаграмме состояний иМЬ (пунктирными прямоугольниками выщелены! границы дочерних фигур)

x = x .

c p ■

yc =

y' + h' + y , i > 0

c c p

I y

p

cp

i=0

w = w ,

cp

hci - не изменяется оператором.

Ниже описана формализация составной фигуры.

Будем говорить, что дочерняя вершина c eV принадлежит родительской вершине p e V в том случае, если расположение c на диаграмме зависит от расположения p. Отношение принадлежности определяется следующим высказыванием: parentv(p,c) ° $! layoute Layout: constrained(p,c,layout) Данное отношение обладает рядом свойств (приводятся без доказательств):

parentv(p,c) °3\layoute Layout: constrained (p,c,layout) - оно асимметрично; Vv: 0parentv (v, v) - оно антирефлексивно;

parentv (px, c) л parentv( p2, c) ® px = p2 - у дочерней вершины может быть только

одна родительская вершина.

Определим родительскую вершину, содержащую в себе множество дочерних вершин:

parentvC (p,C) ° C с V л C ^ 0 л Vc e C ® parentv (p, c). Тогда множество всех дочерних вершин определяется как

parentvFC (p, FC) ° parentvC (p, FC) л VC с V: parentv C(p, C) ® C с FC . Обозначим родительскую вершину с единственным оператором расположения как

single layout (p, layout) ° Vc, Vl: constrained (p, c, l) ® l = layout,

uniquelayout (p) ° $layout: single layout (p, layout),

тогда формальное определение составной фигуры описывается следующим образом:

compfig (cf) ° cf e F лЗC : parentvFC (cf, C) л uniquelayout (cf).

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

compfig (cf) л compfig (cf2) л type (cf) = type (cf2) л parentvFC (cf, FCj) л parentvFC (cf2, FC2) ® eqtype (FCj, FC2) .

КОНТЕЙНЕР

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

typerestr(р,Т) °Т с Туре л"v: рагепру(р,V) ® type(у)е Т .

Формально контейнер определяется как

соМг(С) °Се Fл—lComp/ig(с0 л$Т : typerestr(ct,T)л$у: рагеп^(ct,V),

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

соМг (с^) л соМг (^2) л type (с^) = type (^) л

л typerestr(с^,Тх) л typerestr(с^,Тх) ® Т = Т2 .

РАМКА

Наряду с обычными вершинами, в таких языках, как UML, IDEFx, SDL [8] и т. д., широко используется рамка для обрамления других конструкций. Ее основное отличие от других вершин заключается в том, что она всегда отображается поверх них. Рамка не содержит в себе конструкции, которые обрамляет. Сама по себе рамка может быть как простой фигурой (например SDL и UML), так и составной (IDEFx) или даже контейнером (когда у нее неопределенное количество секций, как в языке UML).

Для формализации понятия рамки необходимо ввести оператор, определяющий порядок отображения вершин

zorder : V ® N .

Тогда, если обозначить множество рамок как Fr с F, будет верно следующее утверждение

"fr e Fr "v eV \ Fr: zorder (v) < zorder (fr).

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

РЕБРА

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

Пусть следующие высказывания определяют, может ли быть ребро e инцидентно вершине v

source(e,v) - своим полюсом-началом;

target (e,v) - своим полюсом-концом.

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

sourceT (e, ST) ° ST с Type л "v eV: type (v) e ST ® sorce (e, v).

Аналогично для полюса-конца

targetT(e,TT) ° TT с Type a"ve V : type(v)e TT ® target(e,v).

ЗАКЛЮЧЕНИЕ

Основываясь на предложенной классификации конструкций диаграммы и выделенных для каждого класса свойствах и отношениях, можно описать нотацию современных диаграмм. Для этого необходимо определить типы конструкций, которые будут присутствовать на диаграмме, для каждого типа задать один из возможных классов и определить в соответствии с классом свойства и отношения, которыми будут обладать конструкции данного типа. Подобный подход лег в основу языка DiaDeL - языка описания диаграмм, рассмотренного в статьях [9-11]. Кроме вышеизложенного, DiaDeL позволяет определять «косметические» свойства представления конструкций, такие как цвет, толщина и тип линий, шрифт для текста, его размер и т. д.

Литература

1. Жоголев Е.А. Графические редакторы и графические грамматики // Программирование, 2001. № 3. С. 30-42.

2. Unified Modeling Language (http://www.uml.org/).

3. Integration Definition methods (IDEF) (http://www. idef. com).

4. Integration Definition for Function Modeling (IDEF0) (http://www.idef.com/pdf/idef0.pdf).

5. Integration Definition for Process Description Capture (IDEF3) (http://www.idef.com/pdf/ Idef3 fn.pdf).

6. Котов В.Е. Сети Петри. M.: Наука, 1984. 160 с.

7. Entity-relationship diagram (ERD) (http://ru.wikipedia. org/wiki/ERD).

8. Specification and Description Language implementer's guide - Version 1.0.2 (http://www.itu.int/ rec/T-REC-Z.Imp100-200709-I/en).

9. Степанян К.Б. Язык описания диаграмм // Научно-технические ведомости СПбГПУ, 2006. № 6-1. С. 36-41.

10. Новиков Ф.А., Степанян К.Б. Язык описания диаграмм // Информационно-управляющие системы, 2007. № 4. С. 28-36.

11. Степанян К.Б. Использование языка описания диаграмм // Информационно-управляющие системы, 2009. № 1. С. 25-32.

Abstract

The paper proposes formalism to specify plane graph like diagrams. Formalism is based on formalization described by Zhogolev E. A. New kind of diagrammatic constructions introduced with possible relationships between them. Elements of such visual languages as Petri's Nets, ERD, UML, IDEF and SDL are considered throughout the paper.

Keywords: diagramming, graph-like diagram, notation, drawing formalization.

© Наши аеторы, 2010. Our authors, 2010.

Степанян Карлен Багратович, магистр математических наук, проектировщик программного обеспечения ЗАО «Моби.Денъги» karlens @hotmail. com

i Надоели баннеры? Вы всегда можете отключить рекламу.