Откройте актуальную версию документа прямо сейчас
Если вы являетесь пользователем интернет-версии системы ГАРАНТ, вы можете открыть этот документ прямо сейчас или запросить по Горячей линии в системе.
Приложение А
(обязательное)
Использование нотации АСН.1-90
А.1 Сроки действия
Термин АСН.1-90 используется для указания, что нотация определена в ГОСТ Р ИСО/МЭК 8824-93. Термин текущая нотация АСН.1 используется для нотации, определенной в настоящем стандарте.
На дату публикации настоящего стандарта продолжает действовать ГОСТ Р ИСО/МЭК 8824-93 и соответствующий ему международный стандарт ИСО/МЭК 8824-90. Действие последнего зависит от решения ИСО/МЭК/СТК1/ПК21.
Продолжение действия прежней спецификации дает пользователям время на замену характеристик (в частности, ANY и использование макронотации) нотации АСН.1-90 текущей нотацией АСН.1. (Это может быть сделано без изменений битов в строках).
А.2 Смешанное использование АСН.1-90 и текущей нотации АСН.1
Как в АСН.1-90, так и в текущей нотации АСН.1 специфицирована семантическая конструкция верхнего уровня, которой является модуль АСН.1. Пользователь АСН.1 создает совокупность модулей АСН.1 и может импортировать определения из других модулей АСН.1.
Для любого данного модуля требуется, чтобы используемая нотация (полностью) соответствовала либо АСН.1-90, либо текущей нотации АСН.1, и пользователь спецификации должен ясно идентифицировать (указанием соответствующего стандарта), какая нотация используется для каждого модуля, текстуально включенного в спецификацию пользователя.
Может случиться так, что пользователь захочет модифицировать часть модуля с использованием новой нотации, но оставить другие части в старой нотации. Это может быть достигнуто (только) путем расщепления модуля на два других модуля.
Когда модуль соответствует нотации АСН.1-90, ссылки на типы и значения могут быть импортированы из модуля, определенного с использованием текущей нотации. Такие типы и значения должны быть ассоциированы с типами, которые могут быть определены с использованием нотации АСН.1-90. Например модуль, написанный с использованием нотации АСН.1-90, не может импортировать значение типа UniversalString, так как этот тип определен в текущей нотации, но не в АСН.1-90; однако он может импортировать значения, типы которых, например, INTEGER, IA5String и т.п..
Когда модуль соответствует текущей нотации АСН.1, ссылки на типы и значения могут быть импортированы из модуля, определенного с использованием нотации АСН.1-90. Макронотация АСН.1 не может быть импортирована. Нотация значения для импортированного типа должна использоваться в импортирующем модуле, только если присутствуют идентификаторы для значений SET, SEQUENCE и CHOICE, использованных в значении нотации, и если в значении нотации не требуется значение типа ANY. Ограничение внутреннего типа не должно применяться к импортированному типу, если компонент, который должен быть ограничен, не имеет идентификатора.
А.3 Переход к текущей нотации АСН.1
При модификации модуля (первоначально написанного в согласно нотации АСН.1-90) для соответствия текущей нотации следует учитывать следующие моменты.
а) Всем компонентам SET, SEQUENCE и CHOICE должны быть даны идентификаторы, не двусмысленные в данном экземпляре SET, SEQUENCE и CHOICE, и такие же идентификаторы должны быть включены в нотацию значения.
Примечание 1 - Значение нотации для типа CHOICE содержит двоеточие (":").
б) Все использования ANY и ANY DEFINED BY должны быть обеспечены подходящими определениями классов информационных объектов с заменой ANY и ANY DEFINED BY (и указанных компонентов) соответствующими ссылками на поля этого класса объектов. В большинстве случаев спецификация может быть улучшена за счет удачной вставки табличных ограничений и ограничений отношений компонентов. Во многих случаях спецификации может быть еще более улучшена, если табличное ограничение или ограничение отношений компонентов осуществляется как параметр типа.
в) Макроопределения должны быть заменены определением класса информационных объектов, параметризованным типом или параметризованным значением. Если раздел WITH SYNTAX удачно спроектирован в определении класса информационных объектов, то нотация, используемая для определения объектов этого класса, может быть сделана очень похожей на нотацию, определенную старым использованием макронотации.
г) Все экземпляры использования макронотации должны быть заменены либо эквивалентными определениями информационных объектов, либо ссылками на эквивалентные типы "ObjectClassFieldType", параметризованные типы или параметризованные значения. В большинстве случаев спецификация информационных объектов может быть существенно улучшена группировкой таких определений в множества информационных объектов и ясным указанием, является ли обязательной поддержка всех информационных объектов множества, должны ли принимающие реализации приспосабливаться к зависящим от реализации расширениям этого множества информационных объектов и, если это так, как они должны обрабатывать полученные "неизвестные" значения. Может оказаться желательным рассмотреть возможность, что в последующей версии спецификации пользователя может быть расширено множество информационных объектов и дано руководство нынешним разработчикам, как такие расширения должны трактоваться.
д) Все появления EXTERNAL должны быть тщательно рассмотрены; хотя эта нотация остается допустимой в текущей нотации АСН.1, спецификация пользователя может быть улучшена следующим образом:
1) Рассмотрите использование нотации INSTANCE OF (предпочтительно с табличным ограничением в качестве параметра типа, как обсуждалось выше для ANY и ANY DEFINED BY) вместо нотации EXTERNAL; во многих случаях это не изменит битов в строке.
2) Когда сохраняется EXTERNAL, использование внутренних подтипов ассоциированного типа (см. 33.5) может помочь придать точность спецификации тому, используются ли идентификаторы контекстов представления, или это не допускается. Здесь же применимы предшествующие комментарии (см. раздел 33), которые дают руководство о том, какие значения EXTERNAL должны поддерживаться и что должны делать реализации, если получены неподдерживаемые значения.
3) Рассмотрите замену
CHOICE { external EXTERNAL, embedded-pdv EMBEDDED PDV }
(c использованием внутренних подтипов, если это подходит) для того, чтобы обеспечить постепенный переход распределенных приложений к текущей нотации. Это может повлиять на биты в строке и обычно может быть сделано как часть изменения версии протокола. Использование EMBEDDED PDV (практически для новой спецификации) обычно дает большую гибкость, как можно увидеть из сравнения ассоциированных типов; более того, всеми правилами кодирования, определенными в ИСО/МЭК 8825-1, EMBEDDED PDV кодируется более эффективно, чем EXTERNAL.
е) Может оказаться возможным улучшить удобочитаемость нотации в существующих модулях АСН.1 (без изменения битов в строке) вставкой AUTOMATIG TAGS в заголовок модуля и удалением некоторых или всех тегов.
Примечание 2 - Это следует делать с осторожностью и пониманием метода действия автоматического тегирования, так как, если этот прием использовать некорректно, биты в строке изменятся.
ж) Если AUTOMATIG TAGS не применяется в существующих модулях так, как описано в е), то нежелательно добавлять определения новых типов в существующий модуль, а лучше создать новый модуль (с автоматическим тегированием) для определений новых типов. Это позволяет использовать преимущества автоматического тегирования без изменения битов в строке.
и) Следует уделить внимание полям, содержащим символьные строки, и посмотреть, нельзя ли задействовать нотации CHARACTER STRING, BMPString или UniversalString. Однако обычно это изменит биты в строке и может быть проведено как часть изменения версии.
к) Необходимо добавить идентификаторы "mantissa", "base" "exponent" ко всем нотациям вещественных значений, которые используют альтернативу "NumericRealValue" в продукции "RealValue". Рассмотрение должно ограничиваться значениями "base" 2 и 10 в нотации типа.
В общем случае возможно существенное улучшение удобочитаемости, эффективности, точности и гибкости за счет использования новой нотации АСН.1 (в частности, если использовать все преимущества табличных ограничений, ограничений связи компонентов и параметризации, а также новые типы символьных строк).
Всем пользователям АСН.1-90 необходимо осуществить переход на новую нотацию АСН.1, либо при пересмотре своих спецификаций, либо как самостоятельное действие, если такой пересмотр не предвидется. В общем случае, дополнение существующих модулей с использованием нотации, не соответствующей текущей нотации АСН.1, рассматривается как ошибка, даже если ссылка на спецификации АСН.1-90 сохраняется в таких модулях. В частности, запрещается использование макронотации, ANY, ANY DEFINED BY, а также новых конструкций SET, SEQUENCE и CHOICE без недвусмысленных идентификаторов.
Если вы являетесь пользователем интернет-версии системы ГАРАНТ, вы можете открыть этот документ прямо сейчас или запросить по Горячей линии в системе.