Статус документа
Статус документа

ГОСТ Р ИСО/МЭК 10021-3-98 Информационная технология (ИТ). Передача текста. Системы обмена текстами, ориентированные на сообщения (MOTIS). Часть 3. Соглашения по определению абстрактных услуг

     7 АБСТРАКТНЫЕ МОДЕЛИ


Макроподход к задаче распределенной обработки информации называется абстрактной моделью (моделью) этой задачи и функциональной среды, в которой она выполняется. Он основан на понятиях абстрактных объектов, портов, услуг и уточнений. (Понятие абстрактной услуги более полно рассмотрено в разделе 8).

7.1 Абстрактные объекты

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

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

OBJECT MACRO

:: =

BEGIN

TYPE NOTATION

:: = "PORTS" " {"PortList" } " | empty

VALUE NOTATION

:: = value (VALUE OBJECT IDENTIFIER)

PortList

:: = Port "," PortList | Port

Port

:: = value (PORT) PortType

PortType

:: = Symmetric | Asymmetric

Symmetric

:: = empty

Asymmetric

:: = Consumer | Supplier

Consumer

:: = "[C]"

Supplier

:: = "[S]"

END


Значение данных типа OBJECT - это объектный идентификатор, однозначно и недвусмысленно идентифицирующий определенный тип объекта.

Примечание - Ключевое слово "OBJECT" зарезервировано в АСН.1. Выбор подходящей замены для использования в настоящем контексте - предмет дальнейшего изучения.

7.2 Абстрактные порты

Абстрактный порт (порт) - это пункт, в котором один абстрактный объект взаимодействует с другим абстрактным объектом. Порты бывают различных типов, определяющих виды допустимых взаимодействий. Например, порты одного типа могут представлять средство, с помощью которого осуществляется доступ к системе справочника, порты другого типа - средство, с помощью которого он административно управляется. Сами типы портов бывают двух разновидностей:

а) симметричные: все порты симметричного типа идентичны;

б) асимметричные: каждый порт асимметричного типа относится к одному из двух видов: поставщик и потребитель.

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


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

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

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

PORT MACRO

:: =

BEGIN

TYPE NOTATION

:: = Operations | empty

VALUE NOTATION

:: = value (VALUE OBJECT IDENTIFIER)

Operations

:: = Symmetrical | Asymmetrical

Symmetrical

:: = "ABSTRACT" "OPERATIONS" " { "OperationList" } "

Asymmetrical

:: = Onesided | TwoSided

OneSided

:: = Consumer | Supplier

TwoSided

:: = Consumer Supplier | Supplier Consumer

Consumer

:: = "CONSUMER" "INVOKES" " { "OperationList" } "

Supplier

:: = "SUPPLIER" "INVOKES" " { "OperationList" } "

OperationList

:: = Operation " , " OperationList | Operation

Operation

:: = value (ABSTRACT-OPERATION) |

- - идентифицирующее абстрактную операцию по типу значения данных

- - идентифицирующее абстрактную операцию по типу данных

END


Если тип порта - симметричный, оба объекта предлагают все перечисленные абстрактные операции. Если тип порта - асимметричный, макрокоманда определяет различие между абстрактными операциями, которые предлагает объект с портом потребителя, и абстрактными операциями, которые предлагает объект с портом поставщика.

Значение данных типа PORT - это объектный идентификатор, который однозначно и недвусмысленно идентифицирует определенный тип порта.

7.3 Абстрактные услуги

Абстрактная услуга - это набор возможностей, предлагаемых одним объектом другому посредством одного или нескольких его портов. Первый объект называется поставщиком абстрактной услуги (поставщиком), другой - пользователем абстрактной услуги (пользователем). Каждый рассматриваемый порт может быть либо симметричным, либо асимметричным и в последнем случае - либо потребителем, либо поставщиком.

Абстрактная услуга может иметь любое число пользователей и поставщиков.

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

Абстрактные услуги определены в разделе 8.

Примечание - Абстрактная услуга выполняет почти ту же задачу в прикладном уровне, которую она выполняет в услугах нижних уровней ВОС.