ГОСТ Р ИСО/МЭК 8824-3-2002
9 Ограничения, определенные пользователем
П р и м е ч а н и я
1 Эта форма спенификаиии ограничения может рассматриваться как спеииааьная форма комментария
АСИ. 1. так как она нс является полностью машинообрабатываемой. Однако автоматические средства могли
бы использовать наличие конкретною определенного пользователем ограничения для вызова проверки огра
ничения приложением пользователя.
2 Разработчики протокатов должны понимать, что, так как определение ограничения подобным образом
нс является полностью машииообрабатывасмым. спецификация, которая использует’ эту возможность, может
быть менее удобной для автоматической обработки.
9.1 Ограничение, определенное пользователем «UserDeflnedConstraint», специфицируется син
таксисом:
UserDeflnedConstraint:: =
CONSTRAINED BY « {• UserDefinedConstraintParameier « , » • « } *
9.2 Рекомендуется, чтобы фактическое ограничение описывалось где-либо в комментарии в
фигурных скобках (« {* и « }*). Этот комментарий должен ясно устанавливать, какое ограничение
накладывает «UserDeflnedConstraint*.
П р и м е ч а н и е — Если в фигурных скобках имеется несколько «UscrDefinedConstrainIParameter»
(см. 9.3). го комментарии могут стоять перед, после или между ними, как удобнее разработчику.
9.3 Фактическое ограничение, которое должно применяться, может зависеть от некоторых
параметров. Для каждого такого параметра в ограничение «UserDeflnedConstraint* должна быть
включена продукция «UserDefinedConstraintParameter»:
UserDeflnedConstraint Parameter:: =
Governor «:* Actual Parameter | Actual Parameter
Нотации для «Governor» и «ActualParameter* определены в ИСО/МЭК 8824-4, пункты 8.3 и 9.5
соответственно. Когда фактический параметр «ActualParameter» есть тип «Туре* или класс объекта
«ObjectСlass», то не должно быть продукции «Governor»: когда фактический параметр «ActualPara
meter* есть значение «Value* или множество значений *ValueSet*, то продукция «Governor* должна
присутствовать и быть типом «Туре*; когда фактический параметр «ActualParameter* есть объект
«Object* или множество объектов «ObjectSet*, то продукция «Governor* должна присутствовать и
быть «DefinedObjectClass*.
9.4 Пример
Если разработчик приложения хочет специфицировать, что некоторые компоненты должны
быть битовыми строками, представляющими зашифрованные значения некоторого типа АСН. 1
(различные для каждого компонента), то (используя параметризацию ИСО/МЭК 8824-4) парамет
ризованный тип ENCRYPTED может быть определен следующим образом:
ENCRYPTED {ToBeEnciphered} : : = BIT STRING
(CONSTRAINED BY
{- - должен быть результат шифрования некоторого BER-коднрованного значения - -
ТоBeEnciphered}
lError:: = securityViolation)
Error: : = ENUMERATED {securityViolation}
и использование параметризованного подтипа ENCRYPTED строки BIT STRING (чем, собственно,
и является тип ENCRYPTED) выглядит как;
ENCRYPTED {SccurityParameters}
или, эквивалентно, по желанию разработчика:
BIT STRING (ENCRYPTED {SecurityParameters})
Появление ошибки sequirityVioiation обрабатывается в соответствии с местной политикой
зашиты.
10 Табличные ограничения, включая ограничения связи компонента
П р и м е ч а н и я
I Классы информационных объектов, информационные объекты, множества информационных объектов
и тип «поле класса объекга* определены в ГОСТ Р ИСО/МЭК 8824-2. Понимание этих концепций подразу
мевается в данном разделе.
3