5.9.3 Отображения для неконструкционных определенных типов данных языка EXPRESS
Для каждого определенного типа данных языка EXPRESS, не являющегося конструкционным типом данных, в UDS должен присутствовать класс UML, представляющий определенный тип данных. Значением атрибута ModelElement.name класса UML, представляющего определенный тип данных языка EXPRESS, должно быть наименование определенного типа данных языка EXPRESS, начинающееся с прописной буквы, за которой следуют строчные буквы. В UDS должно присутствовать UML-обобщение, связывающее представление на языке UML определенного типа данных с его базовым типом. Значением атрибута Generalization.discriminator должна быть пустая строка. Должна существовать UML-ассоциация, связывающая объект GeneralizableElement, представляющий определенный тип данных, с UML-обобщением. При этом роль UML-обобщения должна быть определена как "child (потомок)", а конец, соответствующий объекту UML GeneralizableElement, должен быть определен как "specialization (специализация)". Должна существовать UML-ассоциация, связывающая объект UML GeneralizableElement, представляющий базовый тип данных, с UML-обобщением. При этом роль UML-обобщения должна быть определена как "parent (предок)", а конец, соответствующий объекту UML GeneralizableElement, должен быть определен как "generalization (обобщение)". Для определения предка в UML-обобщении следует применять одно из следующих правил:
- если базовым типом является другой определенный тип данных языка EXPRESS, то класс UML, представляющий определенный тип данных языка EXPRESS, являющийся базовым типом, должен быть предком в UML-обобщении;
- если базовым типом является простой тип данных языка EXPRESS, то представление на языке UML этого простого типа данных языка EXPRESS должно быть предком в UML-обобщении;
- если базовым типом является агрегированный тип данных языка EXPRESS, то класс UML, представляющий агрегированный тип данных языка EXPRESS в соответствии с 5.10, должен быть предком в UML-обобщении.
5.10 Отображения для агрегированных типов данных языка EXPRESS
Язык EXPRESS поддерживает агрегированные типы данных, для которых не существует прямого эквивалента в языке UML. По этой причине, даже если агрегированные типы данных языка EXPRESS имеют сходные структуры, при отображении на язык UML результатом не всегда будут такие же структуры. Каждое использование агрегированных типов данных языка EXPRESS трактуется в настоящем стандарте следующим образом:
- отображение для использования агрегированного типа данных языка EXPRESS в качестве базового типа для определенного типа данных, установлено в 5.9.3 и в последующей части настоящего подраздела;
- отображение для использования агрегированного типа данных языка EXPRESS в качестве базового типа для другого агрегированного типа данных, установлено в последующей части настоящего подраздела;
- отображение для использования агрегированного типа данных языка EXPRESS в качестве объявленного типа данных для локальной переменной или параметра функции не установлено в настоящем стандарте, так как оператор FUNCTION языка EXPRESS не отображается на язык UML;
- отображение для использования агрегированного типа данных языка EXPRESS в качестве области определения явного атрибута трактуется по-разному, в зависимости от деталей его использования. Отображение для явных атрибутов языка EXPRESS с областями определения именованных типов данных SET или LIST OF UNIQUE установлено в 5.7.2. Отображение для явных атрибутов языка EXPRESS с областями определения именованных типов данных BAG или LIST OF установлено в 5.7.3. В этих случаях никакой класс UML сам по себе не представляет агрегированный тип данных языка EXPRESS. Для остальных случаев отображение установлено в последующей части настоящего подраздела.
Примечание - Взаимосвязи в языке EXPRESS определяются с помощью атрибутов, а не с помощью специальной конструкции, каковой в языке UML является UML-ассоциация. В языке EXPRESS множественные взаимосвязи определяются базовым типом атрибута языка EXPRESS, являющимся агрегированным типом данных. В языке UML связи между объектами UML-классификаторами являются математическими множествами, поддерживающими множественную взаимосвязь, но не допускающими дублирования (см. D2). По этим причинам, единственным случаем, когда структура агрегированного типа данных языка EXPRESS отображается на UML-ассоциации, является использование явных атрибутов языка EXPRESS, областью определения которых является тип данных SET или LIST OF UNIQUE, базовым типом которого является именованный тип данных языка EXPRESS (см. 5.7.2). Другие агрегированные типы данных языка EXPRESS не отображаются на UML-ассоциации, поэтому тот факт, что они могут представлять взаимосвязь в EXPRESS-схеме, является менее очевидным в результирующем отображении на UML.
Для всех применений агрегированных типов данных языка EXPRESS, кроме определенных в 5.7.2 и 5.7.3, в UDS должен присутствовать один или несколько классов UML, представляющих агрегированный тип данных языка EXPRESS. В последующей части настоящего подраздела подробно описаны данные классы и другие имеющие к ним отношение конструкции языка UML, которые должны присутствовать в UDS.
5.10.1 Базовые типы агрегированных типов данных, являющиеся агрегированными типами данных
Если базовым типом агрегированного типа данных языка EXPRESS является агрегированный тип данных (или любое число последующих вложений агрегированных типов данных языка EXPRESS), то он должен быть представлен двумя или более классами UML.
Класс UML, представляющий самый последний из вложенных агрегированных типов данных языка EXPRESS, для которого базовым типом не является другой агрегированный тип данных, должен присутствовать в UDS в соответствии с 5.10.2.
Класс UML, представляющий каждый уровень вложения агрегированных типов данных языка EXPRESS, должен присутствовать в UDS. Значение атрибута UML ModelElement.name каждого из этих классов UML должно быть конкатенацией следующих составляющих:
1) наименования вида агрегированного типа данных языка EXPRESS (Set, Bag, List или Array), начинающегося с прописной буквы, за которой следуют строчные буквы;
2) строки, представляющей целое число, обозначающее нижнюю границу, за которой следует строка "-", за которой, в свою очередь, следует строка, представляющая целое число, обозначающее верхнюю границу, или строка "unbounded (неограниченный)" в тех случаях, когда взаимосвязь между агрегированным типом данных и его базовым типом представлена многозначным атрибутом UML;
3) строки "-of-";
4) значения атрибута UML ModelElement.name, представленного всеми строчными буквами, конструкции языка UML, представляющей базовый тип агрегированного типа данных языка EXPRESS.
Для каждой пары классов UML, представляющих агрегированный тип данных языка EXPRESS (или отдельный уровень вложения в многократно вложенном агрегированном типе данных), в UDS должна присутствовать UML-ассоциация для агрегированного типа данных или многозначный атрибут UML в соответствии с 5.10.3.
5.10.2 Базовые типы агрегированных типов данных, не являющиеся агрегированными типами данных
Если базовым типом агрегированного типа данных языка EXPRESS является неагрегированный тип данных, то он должен быть представлен одним классом UML. Значение атрибута UML ModelElement.name данного класса UML должно быть конкатенацией следующих составляющих:
1) наименования вида агрегированного типа данных языка EXPRESS (Set, Bag, List или Array), начинающегося с прописной буквы, за которой следуют строчные буквы;
2) строки, представляющей целое число, обозначающее нижнюю границу, за которой следует строка "-", за которой, в свою очередь, следует строка, представляющая целое число, обозначающее верхнюю границу, или строка "unbounded" (неограниченный) в тех случаях, когда взаимосвязь между агрегированным типом данных и его базовым типом представлена многозначным атрибутом UML;
3) строки "-of-";
4) значения атрибута UML ModelElement.name, представленного всеми строчными буквами, конструкции языка UML, представляющей базовый тип агрегированного типа данных языка EXPRESS.
В UDS должна присутствовать UML-ассоциация для агрегированного типа данных или многозначный атрибут UML для того, чтобы связать агрегированный тип данных языка EXPRESS с его базовым типом в соответствии с 5.10.3.
Примечание - Отображения явных атрибутов языка EXPRESS с базовыми типами данных SET, LIST и BAG, базирующимися на именованных типах данных, определены в 5.7.2 и 5.7.3.
5.10.3 Связь агрегированных типов данных с их базовыми типами
Для каждого агрегированного типа данных языка EXPRESS, т.е. BAG, ARRAY или неуникального LIST, в классе UML должен присутствовать многозначный атрибут UML, представляющий этот агрегированный тип данных языка EXPRESS. Значением параметра UML Attribute.name должно быть "elements (элементы)". Атрибут UML должен быть задан как ссылка на Class, представляющий базовый тип агрегированного типа данных языка EXPRESS. Для типов данных BAG или LIST языка EXPRESS значение кратности атрибута UML должно отражать мощность множества агрегированного типа данных языка EXPRESS. Для типа данных ARRAY языка EXPRESS значение кратности атрибута UML должно отражать число элементов в агрегированном типе данных языка EXPRESS. Если атрибут UML представляет тип данных ARRAY или неуникальный LIST языка EXPRESS, то значением параметра UML StructuralFeature.ordering должно быть "ordered (упорядоченный)".
Для каждого агрегированного типа данных SET или LIST OF UNIQUE языка EXPRESS в UDS должна присутствовать совместно используемая UML-ассоциация для агрегированного типа данных, атрибут UML Association.name которой должен иметь значение "aggregation_of". UML-ассоциация должна иметь точно два конца связи UML AssociationEnd. Атрибут UML AssociationEnd.aggregation, относящийся к классу UML, представляющему агрегированный тип данных языка EXPRESS, должен иметь значение "aggregate". Атрибут UML AssociationEnd.aggregation, относящийся к классу UML, представляющему базовый тип агрегированного типа данных языка EXPRESS, должен иметь значение "none". Значение кратности объекта UML AssociationEnd должно отображать мощность множества агрегированного типа данных языка EXPRESS. В случае если агрегированным типом данных языка EXPRESS является ARRAY или LIST OF UNIQUE, то у объекта UML AssociationEnd, относящегося к представлению на языке UML базового типа агрегированного типа данных языка EXPRESS, атрибут UML AssociationEnd.ordering должен иметь значение "ordered".
Приложение A
(обязательное)
Регистрация информационного объекта
Для однозначного обозначения информационного объекта в открытой системе настоящему стандарту присвоен следующий идентификатор объекта:
{ iso standard 10303 part(25) version(1) }
Смысл данного обозначения установлен в ИСО/МЭК 8824-1 и описан в ИСО 10303-1.
Приложение B
(справочное)
Примеры схем, DTD, UML-диаграмм и XMI-файлов
Настоящее приложение содержит примеры EXPRESS-схем, DTD, UML-диаграмм и XMI-файлов.
B.1 Стандартные XMI DTD для UML
OMG опубликовала несколько соответствующих XMI шаблонов DTD для обмена UML-моделями. Примерами этих шаблонов DTD являются:
- шаблон DTD для обмена моделями UML 1.4 и 1.5, документ OMG от 01-02-16;
- шаблон DTD для UML 1.3, на основе XMI 1.0.
Эти шаблоны DTD поддерживают весь язык UML и поэтому содержат много объявлений, не используемых в отображениях, определенных в настоящем стандарте.
B.2 Пример - три связанные схемы
В приложении Е представлен итоговый пример отображения, определенного в настоящем стандарте. Приведенные в приложении Е фрагменты EXPRESS-схем взяты из схемы: context_schema, связанной со схемами s2_schema и s3_schema.