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

Формальное описание данных в ЯП и их преобразование


Основными ЯП, используемыми для описания компонентов для  распределенной  сети, являются С++, Паскаль,  JAVA и др.

При обращении разноязыковых  компонентов устанавливается взаимно однозначное соответствие между  фактическими параметрами V= { v1,v2

,...vк} вызывающего компонента  и   формальными    параметрами  F = { f1, f2 , ..., fк1} вызываемого компонента, а также  строится отображение (mapping) типов данных одного ЯП в соответствующие типы другого ЯП.

В  общем  случае   задача отображения  А: Пà Ф  для множеств параметров V и F состоит в построении:

                          П =  { V1, V2 ,..., Vm  } ,     Ф  =  { F1, F2 ,..., Fm }         

                       m

                      È V t = V ,              Vt  Ç Vt¢  =  Æ      при  t £ t¢

                      t=1

                                  m

                       È F t = F ,              Ft  Ç Ft¢  =  Æ        при   t = t¢

                       t=1

Построение отображения  выполняется за два этапа.

1) Построение операций преобразования типов данных T a = {Tat}   для множества языков  L = {la }a=1, n



.

2) Построение отображения типов данных для каждой пары взаимодействующих компонентов в  ЯП  la1  и la2  с  применением  операций селектора S и конструктора  С.

Для проведения формализованного преобразования   типов  данных используется  алгебраический  подход, при котором каждому  типу  данных Tat  ставиться    в соответствие алгебраическая  система

            Gat = <Xat

, Wat

>,

 где   t – тип данных,  Xat – множество значений, которые  могут  принимать  переменные  этого  типа данных,  Wat – множество операций над этими типами данных.

Для   простых типов данных  ЯП  t = b (bool), c (char),  i (int),  r (real)

и   сложных типов данных t =  a (array),   z (record), u (union), e (enum),  как комбинация простых типов данных,   построены две алгебраические системы:


                  S1 = { G ab , Gac ,  Gai , Gar }

                  S2 = { Gaa , Gaz G au , Gae ...}                                                                                  (1)

Каждая из систем определяется  на множестве значений  типов данных и операций над ними:

                 Gat = <Xat  , Wat >,   где t = b, c, i, r, a, z, u, e.

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

В классе  систем  (1)  преобразование типов данных t® q  для пары языков la и lb    обладает  такими свойствами отображений:

1) Системы Gat и Gbq

являются изоморфными (типы q, t определены на том же множестве).

2)  Между значениями   Xat и Xbq существует изоморфизм, если множества операций Wat и Wbq   различны.   Если  множество операций  W  = Wat Ç Wbq не пусто,  то имеем изоморфизм  двух систем    G at¢ = < Xat , W >  и   Gbq¢ = < Xbq , W  > . Если тип  t – строка, а тип q  – вещественный,  то между множествами Xat и  Xbq   не существует изоморфного соответствия.

3) Мощности  алгебраических  систем  должны быть равны   çGat ç  = ç Gbq ç.

Алгебраические системы  линейно  упорядочены и поэтому любое   отображение 1), 2) сохраняет линейный порядок.


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