Методы и средства инженерии программного обеспечения

       

Средства стандарта ISO/IEC для преобразования данных


Цель этого стандарта состоит в том, чтобы  обеспечить не только описание типов данных в языке  LI (Language Independent), их генерацию,  но и   преобразование типов данных  ЯП в LI–язык и наоборот. Стандарт предлагает специальные правила и характеристические операций генерации примитивных  типов данных и  их объединений  LI–языка в более простые  структуры данных ЯП, а также при  определении параметров интерфейса, задаваемых в языках  IDL, RPC и API.

Независимые от ЯП  типы данных LI–языка разделены  на примитивные, агрегатные, сгенерированные типы данных (рис.1), семейство типов данных и генератор типов данных.

                  Рис.8.1. Независимые от ЯП типы данных стандарта ISO/IEC 11404–1996   

 Типы данных в стандарте должны описываться в LI–языке, который  в отличие от средств описания типов данных в ЯП является более общим языком, содержащим все существующие типы в ЯП и типы данных, ориентированные на генерацию других типов данных. Средствами LI  описываются  параметры вызова, как элементы интерфейса, необходимые при обращении к стандартным сервисам и готовым программным компонентам.

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

                 

LI–язык предлагает следующие виды преобразования данных:

– внешнее преобразование из  внутренних типов данных ЯП в LI–типы данных;

– внутреннее преобразование из LI–типы данных, в тип данных ЯП;

– обратное  внутреннее преобразование.

                                 

               Рис.8.2.  Объявление типов данных в стандарте ISO/IEC 11404–1996

Суть внешнего преобразования типов данных и генераторов типов данных состоит в  следующем:

а) для каждого примитивного типа для сгенерированного внешнего типа данных преобразование связывается с одним  LI–типом данных;


в) для каждого внутреннего типа данных  преобразование определяет связь между  допустимым значением внутреннего типа данных  и эквивалентным значением соответствующего LI–типа данных;

с) для каждого значения LI–типа данных, участвующего в преобразовании, определяется существование значения любого внутреннего типа данных, преобразуемого в LI–тип данных со  взятием этого значения.

Внешнее преобразование документирует аномалии при идентификации внутренних типов  и дает гарантию того, что интерфейс между программными компонентами адекватно  задается сервисным средством и игнорирует среду ЯП.

Внутреннее преобразование  связывает примитивный тип данных или сгенерированный в LI–тип данных с конкретным внутренним типом данных ЯП. Представители отдельного семейства LI–типа данных могут преобразовываться в различные внутренние типы данных ЯП.  Данное преобразование обладает следующими свойствами:

а)  для каждого LI–типа данных (примитивного или сгенерированного) преобразование определяет наличие этого типа данных  в ЯП;

в)  для каждого  LI–типа данных преобразование определяет отношение между  допустимым значением этого типа и эквивалентным значением соответствующего внутреннего типа ЯП;

с) для каждого значения внутреннего типа данных преобразование определяет является ли это значение образом (после преобразования)  какого–то значения LI–типа данных и способ  преобразования.

Обратное внутреннее преобразование для LI–типа данных состоит в преобразовании значений внутреннего типа данных в соответствующее значение LI–типа при наличии соответствия и отсутствия двусмысленности. Это преобразование для ЯП является коллекцией обратных внутренних преобразований LI–типа данных.

 

В стандарте приведен набор приложений. В приложении А приведен  перечень действующих стандартов (около 40),  определяющих наборы символов.  Для обеспечения  совместимости используемых и реализуемых типов данных  в приложении В содержатся рекомендации по идентификации типов данных и описанию  аннотаций для атрибутов, параметров и др.В приложении С даны рекомендации по соответствующим  внутренним типы данных, которые должны преобразовываться LI–типы данных. В приложении D показано, что синтаксис LI–языка является подмножеством    стандарта IDM (Interface Definition Notation), предназначеного для описания интерфейса в LI–языке,          Приведен вариант внутреннего преобразования LI–типов данных в типы данных ЯП Паскаль (ISO/IEC 7185–90). В нем рассмотрены примеры преобразования примитивных типов данных LI–языка (логический, перечислимый, символьный, целый рациональный и др.) в типы данных языка Паскаль.

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


Содержание раздела