ГОСТ Р ИСО ТС 10303-25-2012 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 25. Методы реализации. Связь EXPRESS с XMI стр. 4

Для всех объектов UML Elementlmport, присутствующих в UDS, значением атрибута Elementlmport.visibility должно быть "public".
Конструкции языка UML, представляющие конструкции языка EXPRESS, прямо или косвенно связанные через интерфейс с данной контекстной EXPRESS-схемой, должны присутствовать в UDS в UML-пакете, представляющем EXPRESS-схему, в рамках которой они объявлены.
Кроме конструкций языка UML, представляющих конструкции языка EXPRESS, видимые в данной контекстной схеме, в UDS могут быть включены конструкции языка UML, представляющие конструкции языка EXPRESS, невидимые в данной контекстной схеме. Если такие конструкции имеются, то они должны отображаться в соответствии с настоящим стандартом.
Для каждой конструкции языка UML из UDS, соответствующая UML-ассоциация, связывающая объект UML ModelElement с его пространством имен (объектом UML Namespace), должна присутствовать в UDS. В данной UML-ассоциации значением атрибута ModelElement.namespace должна быть ссылка на UML-пакет, представляющий EXPRESS-схему, в которой объявлен данный элемент, а атрибут Namespace.ownedElement должен содержать ссылку на конструкцию языка UML, представляющую конструкцию языка EXPRESS, объявленную в данной схеме.

5.5 Отображения для объектных типов данных языка EXPRESS

Для каждого объектного типа данных языка EXPRESS в контексте отображения в UDS должен присутствовать класс UML. Значением атрибута UML ModelElement.name данного класса UML должно быть наименование объектного типа данных языка EXPRESS, который он представляет, начинающееся с прописной буквы, за которой следуют строчные буквы. Если объектный тип данных языка EXPRESS объявлен как ABSTRACT SUPERTYPE, то значением атрибута UML GeneralizableElement.isAbstract класса UML должно быть "true", в противном случае - "false". У всех классов UML, представляющих объектные типы данных языка EXPRESS, значением атрибутов UML GeneralizableElement.isLeaf и .isRoot должно быть "false".

5.6 Отображения для объявлений подтипов данных языка EXPRESS

Для каждого объявления SUBTYPE в объектном типе данных языка EXPRESS в контексте отображения, в UDS должно присутствовать UML-обобщение. Значением атрибута Generalization.discriminator должна быть пустая строка.
UML-ассоциация между UML-обобщением и классом UML, представляющим подтип данных языка EXPRESS, должна присутствовать в UDS. Объект UML AssociationEnd с именем "child", должен ссылаться на класс UML, представляющий подтип данных языка EXPRESS, а объект UML AssociationEnd с именем "generalization (обобщение)" должен быть ссылкой на класс UML, представляющий супертип языка EXPRESS.
UML-ассоциация между UML-обобщением и классом UML, представляющим супертип данных языка EXPRESS, должна присутствовать в UDS. Объект UML AssociationEnd с именем "parent (предок)", должен ссылаться на класс UML, представляющий подтип данных языка EXPRESS, а объект UML AssociationEnd с именем "specialization (специализация)" должен быть ссылкой на класс UML, представляющий подтип языка EXPRESS.
Для каждого объектного типа данных языка EXPRESS, видимого в контексте отображения, который имеет видимые в контексте отображения подтипы и в котором не заданы ограничения супертипа, в UDS должно присутствовать ограничение UML "overlapping (перекрытие)". Для каждого объектного типа данных языка EXPRESS, являющегося подтипом объектного типа данных языка EXPRESS, в котором не заданы ограничения супертипа, UML-обобщение, представляющее взаимосвязь данного подтипа языка EXPRESS, должно быть включено в ограничение UML "overlapping", созданное для данного супертипа языка EXPRESS.
Примечание - Ограничение перекрытия в языке UML эквивалентно оператору ANDOR языка EXPRESS. Это необходимо, так как ограничение непересечения в UML (эквивалентное ONEOF в EXPRESS) используется по умолчанию.
Для каждого объектного типа данных языка EXPRESS, видимого в контексте отображения, который имеет видимые в контексте отображения подтипы, каждый из которых присутствует в одном ограничении SUPERTYPE ONEOF, в UDS должно присутствовать ограничение UML "disjoint (непересечение)". Для каждого объектного типа данных языка EXPRESS, являющегося подтипом объектного типа данных языка EXPRESS, присутствующим в ограничении SUPERTYPE ONEOF, UML-обобщение, представляющее взаимосвязь данного подтипа языка EXPRESS, должно быть включено в ограничение UML "disjoint", созданное для ограничения SUPERTYPE ONEOF языка EXPRESS.

5.7 Отображения для явных и инверсных атрибутов языка EXPRESS

Для каждого явного атрибута объектного типа данных языка EXPRESS в контексте отображения в UDS должны присутствовать атрибут UML либо UML-ассоциация. Значением параметра ModelElement.name атрибута UML или UML-связи должно быть имя атрибута языка EXPRESS, представленное строчными буквами.
Если атрибут языка EXPRESS является повторным объявлением унаследованного атрибута, то его не надо повторять в отображении подтипа. В случае если повторное объявление является конкретизацией объектного типа данных в графе супертипов / подтипов, то в UDS должно присутствовать выражение на языке OCL. Атрибут UML Constraint.name должен иметь значение "redeclared- (повторно объявленный)" с добавлением после дефиса наименования атрибута языка EXPRESS, представленного строчными буквами. Атрибут UML Constraint.body должен иметь следующий вид: context inv: self. -> forAII (oclIsTypeOf ()),
где:
- имя класса UML, представляющего объектный тип данных языка EXPRESS, в котором определено данное повторное объявление;
- атрибут UML Constraint.name;
- наименование повторно объявленного атрибута языка EXPRESS, представленное строчными буквами;
- наименование класса UML, представляющего область определения повторно объявленного атрибута.
Для атрибута UML, представляющего явный атрибут языка EXPRESS, значением параметра UML Feature.owner должна быть ссылка на класс UML, представляющий объектный тип данных языка EXPRESS. Для атрибута UML начальное значение не устанавливают.
Для UML-ассоциации, представляющей явный атрибут языка EXPRESS, значение атрибута "navigability" у объектов UML AssociationEnd должно задаваться следующим образом:
- если ни один инверсный атрибут языка EXPRESS не связан с явным атрибутом, то значением атрибута "navigability" объекта UML AssociationEnd, связанного с классом UML представляющим объектный тип данных языка EXPRESS, должно быть "false";
- если инверсный атрибут языка EXPRESS связан с явным атрибутом, то значением атрибута "navigability" объекта UML AssociationEnd, связанного с классом UML, представляющим объектный тип данных языка EXPRESS, может быть "true" или "false", и такое же значение должно быть задано для всех инверсных атрибутов в контексте отображения;
- для объекта UML AssociationEnd, связанного с классом UML-классификатором, представляющим область определения явного атрибута языка EXPRESS, значением атрибута "navigability" должно быть "true".
Если явный атрибут языка EXPRESS объявлен как факультативный и он представлен атрибутом UML, то кратность данного атрибута UML должна иметь значение "0..1".
Если явный атрибут языка EXPRESS объявлен как факультативный и он представлен UML-ассоциацией, то значением нижней границы кратности объекта UML AssociationEnd должен быть "0" на конце, относящемся к UML-классификатору, представляющему область определения данного явного атрибута.
Остальные отображения явных атрибутов языка EXPRESS зависят от области определения атрибута и определены ниже.
5.7.1 Области определения простых типов данных
Для каждого явного атрибута языка EXPRESS, областью определения которого является простой или перечисляемый тип данных языка EXPRESS, в UDS должен присутствовать атрибут UML с единственным значением. Параметр UML StructuralFeature.type данного атрибута UML должен ссылаться на представление данной области определения на языке UML (см. 5.3 и 5.9.1).
5.7.2 Области определения именованных типов данных и типов данных SET и LIST OF UNIQUE, базирующихся на именованном типе данных
UML-ассоциация и два относящихся к ней объекта UML AssociationEnd должны присутствовать в UDS для каждого явного атрибута языка EXPRESS, областью определения которого является один из следующих типов данных:
- именованный тип данных;
- тип данных SET, базовым типом которого является именованный тип данных;
- тип данных LIST OF UNIQUE, базовым типом которого является именованный тип данных.
Один объект UML AssociationEnd должен ссылаться на класс UML, представляющий именованный тип данных языка EXPRESS, а значением его атрибута UML ModelElement.name должно быть наименование явного атрибута языка EXPRESS, представленное строчными буквами. Если областью определения является именованный тип данных, то кратность данного объекта UML AssociationEnd должна иметь значение "1..1", если данный явный атрибут является обязательным, и "0..1", если он факультативный. Если областью определения является тип данных SET или LIST OF UNIQUE, то кратность объекта UML Association должна иметь значение, отражающее мощность множества типа данных SET или LIST OF UNIQUE, за исключением случая, когда явный атрибут является факультативным. В данном случае значением нижней границы должен быть "0". Если типом данных LIST OF UNIQUE является агрегированный тип данных языка EXPRESS, то у объекта UML AssociationEnd, ссылающегося на представление на языке UML именованного типа данных языка EXPRESS, значением атрибута AssociationEnd.ordering должно быть "ordered (упорядоченный)".
Другой объект UML AssociationEnd должен ссылаться на класс UML, представляющий объектный тип данных языка EXPRESS, с которым явный атрибут языка EXPRESS был объявлен. Кратность данного объекта UML AssociationEnd должна быть равна "0..*", за исключением случая, когда явный атрибут языка EXPRESS имеет соответствующий инверсный атрибут. В данном случае значение кратности должно отражать границы инверсного атрибута. Если атрибут языка EXPRESS имеет соответствующий инверсный атрибут, то значением атрибута UML ModelElement.name данного объекта UML AssociationEnd должно быть имя инверсного атрибута языка EXPRESS, представленное строчными буквами. Если соответствующий инверсный атрибут языка EXPRESS не определен, то значением атрибута UML ModelElement.name может быть имя явного атрибута языка EXPRESS, представленное строчными буквами, с префиксом в виде строки ’reverse-of-’, либо данный атрибут может быть опущен.
5.7.3 Области определения типов данных BAG и LIST, базирующихся на именованном типе данных
Для каждого явного атрибута языка EXPRESS, областью определения которого является тип данных BAG или неуникальный тип данных LIST, базовым типом которого является именованный тип данных языка EXPRESS, в UDS должен присутствовать многозначный атрибут UML. Параметр UML StructuralFeature.type данного атрибута UML должен ссылаться на класс UML, представляющий именованный тип данных языка EXPRESS. Значение кратности объекта UML StructuralFeature должно отражать мощность множества типа данных BAG или неуникального LIST, за исключением случая, когда явный атрибут является факультативным. В данном случае значением нижней границы должен быть "0". Если тип данных LIST не является уникальным, то значением атрибута UML StructuralFeature.ordering должно быть "ordered".
5.7.4 Области определения других агрегированных типов данных
Для каждого явного атрибута языка EXPRESS, областью определения которого является агрегированный тип данных, не относящийся к типу данных SET, BAG или LIST, базирующемуся на именованном типе данных, в UDS должна присутствовать UML-ассоциация, представляющая явный атрибут языка EXPRESS. UML-ассоциация должна иметь два объекта UML AssociationEnd: один, ссылающийся на представление на языке UML объектного типа данных языка EXPRESS с агрегированным типом данных в качестве области определения атрибута, и второй, ссылающийся на представление на языке UML типа данных, являющегося базовым для агрегированного типа данных языка EXPRESS (см. 5.10). Значением кратности UML-ассоциации должно быть "1..1" на конце UML AssociationEnd, связанном с классом UML, представляющим объектный тип данных языка EXPRESS, за исключением случая, когда явный атрибут является факультативным. В данном случае значением нижней границы должен быть "0". Значением кратности UML-ассоциации должно быть "0..*" на конце UML AssociationEnd, связанном с областью определения явного атрибута.

5.8 Отображения для вычисляемых атрибутов языка EXPRESS

Для каждого вычисляемого атрибута объектного типа данных языка EXPRESS в контексте отображения в UDS должна присутствовать UML-операция класса UML, представляющего данный объектный тип данных. Значением атрибута ModelElement.name данной UML-операции должно быть имя вычисляемого атрибута языка EXPRESS, представленное строчными буквами. Значением атрибута UML BehavioralFeature.isQuery должно быть ’true’. Единственный UML-параметр, связанный с UML-операцией, должен присутствовать в UDS, представляя тип области определения вычисляемого атрибута языка EXPRESS. Значением атрибута UML Parameter.kind должно быть ’return’. Связь атрибута UML Parameter.parameter должна ссылаться на UML-операцию, представляющую вычисляемый атрибут языка EXPRESS. Связь атрибута UML Parameter.type должна ссылаться на класс UML или тип данных UML, представляющий область определения вычисляемого атрибута языка EXPRESS.

5.9 Отображения для определенных типов данных языка EXPRESS

Каждый из трех видов определенного типа данных языка EXPRESS отображается на разные конструкции языка UML. Перечисляемые типы данных языка EXPRESS имеют прямое соответствие с UML-перечислениями. Однако другие определенные типы данных языка EXPRESS отображаются на классы UML.
5.9.1 Отображения для перечисляемых типов данных языка EXPRESS
Для каждого перечисляемого типа данных языка EXPRESS в контексте отображения в UDS должно присутствовать UML-перечисление. Значением атрибута ModelElement.name данного UML-перечисления должно быть наименование перечисляемого типа данных языка EXPRESS, начинающееся с прописной буквы, за которой следуют строчные буквы. Значениями объектов UML EnumerationLiteral должны быть наименования элементов перечисления языка EXPRESS, представленные строчными буквами, в том же порядке, в котором они определены в объявлении перечисляемого типа данных языка EXPRESS. UML-перечисление должно иметь UML-стереотип со значением "<>".
5.9.2 Отображения для выбираемых типов данных языка EXPRESS
Для каждого выбираемого типа данных языка EXPRESS в контексте преобразования в UDS должен присутствовать класс UML. Значением атрибута ModelElement.name должно быть наименование выбираемого типа данных языка EXPRESS, начинающееся с прописной буквы, за которой следуют строчные буквы. Для каждого именованного типа данных языка EXPRESS из списка выбора, подлежащего отображению, в UDS должна присутствовать UML-ассоциация агрегации, не являющейся композитной агрегацией. Значением атрибута UML Association.name должно быть "selection_of". UML-ассоциация должна иметь точно два конца связи UML AssociationEnd. Значением атрибута UML AssociationEnd.aggregation должно быть "aggregate" на конце, указывающем на класс UML, представляющий выбираемый тип данных языка EXPRESS, и "none" на конце, указывающем на класс UML, представляющий элемент из списка выбора языка EXPRESS. Ограничение XOR языка UML должно применяться к множеству UML-ассоциаций, связывающих класс UML, представляющий выбираемый тип данных языка EXPRESS, с классами UML, представляющими элементы из списка выбора языка EXPRESS.