Formal description of the types and - data structures mixed programmes
Examines examines the approaches to the formal submission types and data structures of programming language, subject-oriented languages such as DSL, which are used to describe the diverse programs at Applied-domains. The analysis software specifications ready program with fundamental, general and sp...
Збережено в:
| Дата: | 2025 |
|---|---|
| Автор: | |
| Формат: | Стаття |
| Мова: | Українська |
| Опубліковано: |
PROBLEMS IN PROGRAMMING
2025
|
| Теми: | |
| Онлайн доступ: | https://pp.isofts.kiev.ua/index.php/ojs1/article/view/808 |
| Теги: |
Додати тег
Немає тегів, Будьте першим, хто поставить тег для цього запису!
|
| Назва журналу: | Problems in programming |
| Завантажити файл: | |
Репозитарії
Problems in programming| _version_ | 1859502936865898496 |
|---|---|
| author | Stenyashin, A.Yu. |
| author_facet | Stenyashin, A.Yu. |
| author_sort | Stenyashin, A.Yu. |
| baseUrl_str | https://pp.isofts.kiev.ua/index.php/ojs1/oai |
| collection | OJS |
| datestamp_date | 2025-08-28T20:52:26Z |
| description | Examines examines the approaches to the formal submission types and data structures of programming language, subject-oriented languages such as DSL, which are used to describe the diverse programs at Applied-domains. The analysis software specifications ready program with fundamental, general and specific data types for specification some of the concepts and tasks of subject areas.Problems in programming 2011; 2: 50-61 |
| first_indexed | 2025-09-17T09:23:36Z |
| format | Article |
| fulltext |
Методи та засоби програмної інженерії
50
УДК 681.03
А.Ю. Стеняшин
ПРО ФОРМАЛЬНИЙ ОПИС ТИПІВ І СТРУКТУР ДАНИХ
РІЗНОРІДНИХ ПРОГРАМ
Розглядаються підходи щодо формального подання типів і структур даних мов програмування, пред-
метно-орієнтованих мов типу DSL, що використовуються при опису різнорідних програм прикладних
доменів. Дається аналіз специфікації готових програм за фундаментальними, загальними та специфі-
чними типами даних при специфікації понять і завдань деяких предметних областей.
Вступ
На даний час в комп’ютерному ін-
формаційному просторі накопичено вели-
ку кількість різнорідних програм, які ви-
користовуються багатьма постійно або ча-
стково у різних середовищах для обчис-
лення деяких завдань. При появі нових
комп'ютерів, мейнфреймів, кластерів, сис-
тем розподілених обчислювань (типу Grid)
проблема опису і накопичення якісних го-
тових програм продовжується. При обчис-
ленні програм виникає проблема взаємо-
зв’язків різних програм між собою, які ви-
користовують схожі типи даних (ТД) або
несумісні в межах МП чи мов опису спе-
цифіки доменів з урахуванням особливос-
тей сучасних архітектур комп’ютерів [1,
2].
Це породжує необхідність прове-
дення поглибленого аналізу фундамента-
льних ТД у МП, загальних ТД (стандарт
ISO/IEC 11404 – General Data Types) та да-
них із простору доменів, що подаються
мовою DSL (Domain Specific Languages).
Дана стаття і присвячена дослід-
женню особливостей подання ТД в різних
програмах [3].
Про особливості теорії подання
типів даних в МП
Існує теорія подання фундамента-
льних ТД (простих, структурних і склад-
них). Її аксіоматику розроблено відомими
спеціалістами – Н. Агафонов, З. Дейкстра,
Н. Вирт, В. Турський, П. Наур, та інщі [4–
7]. В ній структурна організація складних
ТД (масивів, файлів, таблиць тощо) роз-
глядається як агрегатна структура, що збу-
дована з більш простих типів даних.
У теорії ТД тип розглядається як
математичне поняття, яке позначає множи-
ну значень елементів. Базовий тип у цій те-
орії – це є елементарний тип змінної, що
описується у деякій програмі. Тип привла-
снюється змінний, визначальний клас зна-
чень, кожне з яких належить одному й
тільки одному типу. Операції над значен-
нями типу задаються аксіомами, а операції
над ними – функціями, що слугує встанов-
ленню взаємно однозначної відповідності
переданих ТД і перетворення значень од-
ного з представлення у значення іншого
типу у випадку їхній розбіжності [8].
Тобто ТД використовуються при
опису функцій і програм в МП, які реалі-
зуються системами програмування на різ-
них платформах комп'ютерів у проміжний
або у вихідний код. Кожна реалізована
програма відображає відповідний ТД ви-
користаної МП, значення якого передаєть-
ся іншій програмі засобами викликів (зве-
рнення) до іншої програми.
Всі ТД МП діляться на прості, стру-
ктурні та складні.
© Стеняшин А.Ю., 2011
ISSN 1727-4907. Проблеми програмування. 2011. № 2
Методи та засоби програмної інженерії
51
Прості ТД – це перелічені, а саме
"цілий – integer (i) ", "дійсний – real (r) ",
"булевий – boolean (b)" і "символьний –
character (с)". Вони мають вигляд
type T = X (х1, х2, .... хn),
де Т – ім'я типу, (х1, х2, .... хn) – імена зна-
чень з множини значень X типу Т.
Операції над переліченими типами
включають бінарні операції зіставлення та
унарні операції pred і succ, які визначають
відповідно попередній і подальший елеме-
нти в множині Х. Операції зіставлення (<,
≤,>, ≥, =, ≠), які надалі зазначаються ≤ і
визначають лінійний порядок елементів
множини X.
Булевий тип визначений на множи-
ні значень Хb та операцій Ωb:
Хb = {false, true},
Ωb = {&, V, ¬, pred, succ, ≤}.
Символьний тип визначається на
множині значень Хс і множині операцій Ωc:
Хс = {... , ’А’ ... , ’Х ’ . . . , ’0’, ’1’, . .. , ’9’},
Ωc ={pred, succ, ord, chаr, ≤}.
Операція ord надає кожному симво-
лу його порядковий номер, а chаr для цьо-
го номера значення.
Аксіоми наведених типів даних
мають такий вигляд:
X . min ∈ X, X . max ∈ X,
(∀ x X) & ( x ≠ X . max) succ (x) ∈ ⇒ ∈X.
(∀ x ∈ X) & ( x ≠ X . max) succ (x) ≠ X . min, ⇒
де X.min і X.max – мінімальний і максима-
льний елементи множини X.
Числові типи (integer та real) мають
обмеження, пов'язані з архітектурою або з
явним описом параметрів компонентів. Їм
відповідають базові типи, що визначають-
ся як відрізки вигляду:
type T = (X.min, …, X.max),
де X.min і X.max мінімальний і максима-
льний елементи цього відрізка.
Для будь-якого x X виконується ∈
умова х.min < х < х.max. Значення x зале-
жить від реалізації цього типу конкретним
транслятором з урахуванням архітектури
комп'ютера.
Над змінними цілого типу викону-
ються аналогічні операції, до них дода-
ються операції цілочисельної арифметики:
унарний мінус, +, –,× , div і mod.
Цілий тип даних на заданому відрі-
зку визначається наступними аксіомами:
Xi = {Хi.min, Xi.max + 1, … Хi .max},
Ωi = {+, × , div, –, ≤},
type Ti = (Xi.min ,…, Xi .max).
Дійсний тип визначається за допо-
могою операцій зіставлення та звичайних
арифметичних операцій (унарний мінус, +,
–,, /). Аксіоми дійсного типу на відрізку
такі: Х r = {x | Х r .min ≤ x ≤ Х r .max },
Ωr = {+, × , /, – , ≤ },
type Tr = (Хr.min ,…, Хr max).
Будь-які ТД зводяться до базового
типу і перетворюються до необхідного ви-
гляду, заданому в програмі. Після отри-
мання результату базовий тип приводиться
до вихідного типу за допомогою наступ-
них аксіом загального типу:
(∀ x ∈ X) ⇒ Т(Т0(х)) = х,
(∀ x1 ∈ X) & (∀ x2 ∈ X) ⇒ ( x1 ≤ x2 ) ≡
≡ (T0(x1) ≤. T0(x2)) .
У них Т0 позначає базовий тип для
типу Т. Операції перетворення значення
типу Т0 (x) до Т (x) визначають відповідний
базовий тип при виконанні арифметичних
операцій вигляду ⊕ :
(∀ x1 ∈ X) & (∀ x2 ∈ X) (x⇒ 1 ⊕ x2 ) ≡
≡T(T0(x1) ⊕ T0(x2)).
Структурні ТД – це масив, запис
та таблиця, що будуються з базових і не
структурних типів даних і таких, що міс-
тять набір впорядкованих елементів, ко-
жен з яких обробляється як самостійний
тип.
Масив конструюється з базових пе-
релічених типів і представляється механі-
змом відображення множини індексів I ма-
сиву на множині значень Y елементів ма-
сиву:
Методи та засоби програмної інженерії
52
M: I → Y .
Над даним типом – масив можуть
виконуватися наступні операції:
– упорядкування елементів масивів;
– додавання і віднімання елементів
однотипних масивів,
– множення двовимірних масивів за
правилами множення матриць та ін.
Операція множення накладає обме-
ження на область значень індексів масивів,
що визначаються математичними прави-
лами множення матриць. Операції дода-
вання і віднімання виконуються для чис-
лових масивів, входять до складу множини
спільних операцій над масивами і мають
вигляд:
Xα = { x |(∀ x1 ∈ Xα) & (∀ x2 ∈ Xα) ⇒ I( x1) =
= I( x2 )) & (Y(x1) ∪ Y(x2) ⊂ Y (Хα) )},Ωα ={ ≤ },
type Та = аrrаy Т(I) of T(Y ),
де I(х) – множина індексів х для масиву,
Y(x) – множина значень елементів масиву,
Y (Хα) – множина значень елементів для
будь-яких типів масиву, Та – ТД масив;
Т(I) – тип даних індексів масиву; T(Y ) –
тип даних для множини значень елементів
масивів типу Та.
Виходячи з другого виразу наведе-
ного визначення до даного типу належать
лише ті масиви, у яких множини індексів
збігаються, а множини значень їх елемен-
тів належать одній і тій же числовій мно-
жині, що характеризує даний тип. Операції
виконуються над масивами як над єдиним
значенням, відповідним типу даних маси-
ву. Дані типу Т(Y) в описі масиву Та у свою
чергу можуть визначатися рекурсивно,
тобто через масив за наступною схемою:
type Та = array T(I1) оf T(Y1),
type T(Y1) = array Т(I2) оf Т(Y2), що
еквівалентно наступному запису:
type Та = array Т(I1 × I2) оf Т(Y2).
Запис, як і масив, представляє со-
бою конкатенацію окремих компонентів,
які можуть мати різні типи. Множина зна-
чень типу запис – прямий добуток множи-
ни значень її компонентів. До множини
операцій, що виконуються над записами,
належать тільки операції зіставлення, які
використовуються для порівняння одноти-
пних структур (типи компонентів порів-
нюваних записів та їх порядок слідування
однакові):
Xz = {x | (x=xv1 × . . . × xvn) & (xv1 ∈
X v1) & . . . & (xvn ∈ X vn )}, Ωz = { ≤ }. ∈
Загальна форма представлення типу
для запису має вигляд:
type Тz = (Sv1:T
v1; ... Svn : T vn ),
де Sv1, ..., Svn – селектори, а nv1vT ,..., T –
типи даних компонентів запису.
У МП запис (Sv1, ..., Svn) описується
наступним чином:
type T z = record
Sv1: 1vT , : Sv1: nvT end.
Операції виконуються над записом
як над єдиним структурним значенням.
Обробка окремих компонентів запису ви-
конується за допомогою операцій селекто-
ра, аналогічно відповідній операції для об-
робки масиву. Проведений аналіз стосуєть-
ся фіксованих записів. Для варіантних запи-
сів, послідовність компонентів яких визна-
чається спеціальною ознакою, можна діяти
в такий спосіб. Ознака є змінною перерахо-
ваного типу з кінцевою множиною значень.
Кожному конкретному значенню відповідає
визначе-ний вид запису. Тому замість одно-
го варіантного запису розглядається сімейс-
тво фіксованих записів для кожного значен-
ня ознаки. Сімейство кінцеве, тому що
кінцеве число елементів перерахованого
типу.
Аналіз варіантного запису можли-
во звести до перебору отриманої родини
даних й обробки конкретного фіксованого
запису, тобто з розглядом тільки фіксованих
записів.
Таблиця (table) належить до
складних структур даних, складається з
кінцевого числа рядків і стовпців. Вони
Методи та засоби програмної інженерії
53
однозначно визначаються іменами, а їхнє
положення в таблиці задається вказівкою
номера (або ім'я) рядка й стовпця. Імена
стовпців називають атрибутами (або озна-
ками, реквізитами), рядка – записами або
кортежами, а їхні елементи – компонента-
ми або полями.
Таблиця завдає ТД, значення якого
становлять колекції значень з простору
одного або декількох типів даних, що ви-
значається полем, так що кожне значення
задає асоціації між значеннями його полів.
ТД поле можуть бути невизначено, тоді
довільне значення типу даних таблиця міс-
тить задане число асоціацій.
Загальна форма представлення типу
для таблиці має вигляд:
type Тt = (St1:Tt1; ... Stn : Tt1 ),
де St1 ,..., Stn – селектори, а Tt1,..., Tt1 – типи
даних компонентів таблиці.
У МП таблиця (St1 ,..., Stn) опису-
ється наступним чином:
type T t = table
St1:Tt1; ,..., Stn : Tt1
end.
Операції над таблицею виконуються як
над єдиним структурним значенням. Об-
робка окремих компонентів таблиці вико-
нується за допомогою операцій селектора.
Складні ТД. До них належать:
множини, об'єднання, списки, послідовно-
сті, дерева та ін. Деякі з цих ТД – стандар-
тні в конкретних МП, інші реалізуються
шляхом моделювання через відповідні
структури та операції над ними. При цьо-
му подання даних операцій у МП менш
формалізоване.
Множини. Загальна форма пред-
ставлення цього типу даних має вигляд
type T = powerset T0,
де Т – тип множини; Т0 – базовий тип для
його елементів.
Тип Т включає операції над множи-
нами як над математичними типами – об'-
єднання, перетин, різниця, включення, то-
тожність та ін. За допомогою операцій се-
лектора проводиться вибір типу Т0 з об'єк-
та типу Т, а за рахунок операції конструю-
вання – формування з одного або з декіль-
кох елементів Т0 об’єкта типу Т.
Об'єднання. Загальна форма для ти-
пу – об'єднання має вигляд:
type T = union ( 1vT ,..., nvT ),
де Т – тип об'єднання, nv1vT ,..., T – базові
типи.
Будь-який об'єкт типу Т має зна-
чення і ознаку, за яким визначається один
з типів, nv1vT ,..., T для даного значення.
Механізм реалізації об'єднання подібний
механізму реалізації варіантних записів.
Відмінність полягає у тому, що сама озна-
ка прихована на відміну від ознаки варіан-
тної записи, в яку вона входить окремо.
Списки. Це конструктивний еле-
мент МП ЛІСП. Елемент списку описуєть-
ся як запис з однією або декількома ком-
понентами посилального типу, над якими
виконуються операції, аналогічні операці-
ям над фіксованими записами. Існують та-
кож операції, що застосовуються до цілого
списку: вибір початкового елемента, отри-
мання залишку списку, підключення спис-
ків, їх порівняння, інвертування, пошук
елементів у списку та ін. Ці операції нале-
жать до засобів мови ЛІСП.
Послідовність. Загальна форма має
вигляд: type T = sequence T0, де Т – тип
послідовності, а T0 – базовий тип. Послі-
довність – один з варіантів типу списку, в
якого кожен елемент містить тільки одне
посилання для забезпечення однобічного
зв'язку. Операції над послідовностями
аналогічні операціям над списками. Один з
різновидів послідовності – рядок. Для
рядка кожний елемент, крім посилальної
змінної, містить елемент символьного
типу.
Дерева. Це спискові структури, які
використовуються для представлення
графів або інших аналогічних об'єктів.
Множина операцій над деревами аналогіч-
Методи та засоби програмної інженерії
54
на множині операцій над списками.
Реалізація цих операцій залежить від кон-
кретних програм.
Крім розглянутих типів, у програму-
ванні використовуються різноманітні ком-
бінації вищеперерахованих ТД, а також
нові типи даних, що використовуються на
практиці.
Особливості типів даних
стандарту з GDT
Стандарт ISO/IEC 11404 визначає
такі нові ТД, які відсутні у фундаменталь-
них ТД.
Раціональний (rational) – це матема-
тичний тип даних, що відповідає раціона-
льним (дійсним) числам.
Масштабований (scaled) – це роди-
на типів даних, простором значень якого є
підмножина простору раціональних чисел і
кожний окремий тип даних має фіксований
знаменник; цей тип даних передбачає ап-
роксимацію значення.
Дійсний (real) – це родина типів да-
них, які є обчислювальними апроксимаці-
ями щодо відношення до математичного
ТД, що відповідає дійсним числам.
Комплексний (сomplex) – це родина
типів даних, кожний з яких задає числову
апроксимацію математичного типу даних,
що подає комплексні числа. Кожний
такий ТД становить колекцію математич-
них комплексних величин, які відомі у
застосуваннях з деякою кінцевою точністю
і мають розрізнятися принаймні з цією то-
чністю у цих застосуваннях.
Пустий (void) – це тип даних, що
подає об’єкт з необхідними синтаксични-
ми і семантичними вимогами, але не несе
жодної інформації у цьому конкретному
випадку.
Крім того він включає нові складні
ТД, а саме.
Набір (set) завдає ТД, простір зна-
чень якого становить набір всіх піднаборів
простору значень типу даних елемент з
операціями, властивими математичній
множині set.
Портфель (bag) завдає ТД, значення
якого становлять колекції зразків значень
типу даних елемент. Численні зразки того
ж значення можуть подаватися у цій коле-
кції; а порядок, у якому вони присутні в
колекції, несуттєвий.
У стандарті завдається простір зна-
чень ТД, як сукупність (колекції) значень
типу даних, яка визначається одним з на-
ступних способів:
− переліченням;
− аксіоматичним визначенням згі-
дно основних положень;
− підмножиною вже визначеного
простору значень, яка має той же набір
властивостей;
− комбінацією будь-яких значень
деякого, вже визначеного простору
значень за допомогою специфікованої
процедури конструювання нових значень.
Кожне окреме значення належить
тільки одному типу даних, хоча воно може
належати і декільком підтипам цього типу
даних.
У кожному просторі значень існує
поняття рівності (equality) за такими пра-
вилами:
− для будь-яких двох значень (a, b)
з простору значень виконується умова
значення a дорівнює b (a = b), або a не
дорівнює b (a ≠ b);
− не існує пари таких значень (a, b)
з простору значень, для яких одночасно
виконуються умови a = b і a ≠ b;
− для кожного значення а з просто-
ру значень виконується умова а = а;
− для будь-яких двох елементів
значень (a, b) з простору значень a = b то-
ді і тільки тоді, коли b = а;
− якщо для довільних трьох елеме-
нтів значень (a, b, с) з простору значень
виконуються умови a = b і b = с, то вико-
нується умова а = с.
Для кожного типу даних операція
рівності Equal визначається як властивість
рівності простору значень. Для будь-яких
значень a і b з простору значень Equal (a,
b) є true (істина), якщо a = b, і false у про-
тилежному випадку.
Простір значень впорядкований,
якщо для нього встановлено відношення
порядку (order), яке позначається як знак
Методи та засоби програмної інженерії
55
≤ і задовольняє наступним умовам:
− для кожної пари значень (a, b) з
простору значень виконується умова a ≤ b
або b ≤ a, чи обидві ці умови;
− для будь-яких двох значень (a,
b), якщо a ≤ b і b ≤ a, то a = b;
− для будь-яких трьох значень (a,
b, с), якщо a ≤ b і b ≤ с, то a ≤ c.
Запис a < b визначає нотації відно-
шень: b ≤ a і a ≠ b.
Даний ТД визначається на його
просторі значень. Операція InOrder визна-
чається так. Для довільних двох значень a і
b з простору значень InOrder (a, b) є true,
якщо b≤a, і false у протилежному випадку.
Простір значень ґрунтується на ма-
тематичній концепції численності або кар-
динальності (cardinality), тобто він може
бути скінченним, зчисленним нескінчен-
ним (зліченим) або незчисленним нескін-
ченним. Тип даних повинен мати кардина-
льність (потужність) свого простору зна-
чень за категоріями ТД, простір значень
яких такий:
− скінченний;
− точний (exact) і зчисленний не-
скінченний;
− наближений має скінченну або
зчисленну нескінченну модель, хоча кон-
цептуальний простір значень може бути
незчисленно нескінченним.
Кожний концептуальний тип даних
обов’язково точний. Необчислюваний ТД є
незчисленним нескінченним.
Якщо кожне значення у просторі
значень концептуального типу даних мож-
на відрізнити від іншого значення у прос-
торі цієї моделі, то тип даних вважається
точним (exact).
Математичні типи даних, що мають
значення, які не мають певного подання,
звуться наближеними (approximate) та фо-
рмуються наступним чином. Нехай М –
математичний тип даних, а С – відповід-
ний обчислюваний ТД, Р – перетворення
простору значень М на простір значень С.
Тоді для кожного значення v’ з С існує ві-
дповідне значення ТД v з М і таке дійсне
значення h, що P(x) = v’ для всіх x з М та
|v – x| < h.
Таким чином, v’ – це наближення у
С для всіх значень з М, які знаходяться в
h – околі значення v’’. Крім того, принай-
мні для одного значення v’ з С існує більш
ніж одне таке значення y з М, що Р(y) = v’.
Таким чином, С – це неточна модель М.
Особливості мови DSL
Мова DSL спрямована на відобра-
ження специфіки предметної області
(ПрО), а МП загального призначення (Java,
C++ й ін.) – на будь-якої тип програм. Ця
мова застосовується для специфікації осо-
бливостей ПрО, вона близька до мов типу
HTML, XML і має:
– абстракції, які забезпечують визна-
чення концепцій і абстрактних понять із
ПрО;
– синтаксис, призначений для приро-
дного представлення понять домену і за-
побігання синтаксичній неузгодженості
понять ПрО;
– опис в DSL реалізується задопомо-
гою спеціалізованих статичних аналізато-
рів для перевірки синтаксису, щоб знайти
помилки в описі специфікації моделі або в
опис деякої МП;
– предметні абстракції у МП базу-
ються на використанні бібліотек програм і
КПВ, що містять функції, класи і структу-
ри даних;
– інструменти підтримки DSL вима-
гають оточення, наприклад, середовища,
редактора, засобу контролю версій і т.п.
Специфіка ПрО є загальною модел-
лю генерації домену GDM, що відбиває:
– поняття, характеристики ПрО і
членів родини в просторі проблем;
– набір членів родини і їхніх специ-
фікацій у мовах типу DSL, RSL, CSP і ін.;
– задачі ПрО в просторі задач для їх-
ньої реалізації компонентами і з наступ-
ним збиранням їх у конфігурацію визначе-
них членів родини;
– знання про конфігурацію мови
(Сonfiguration knowledge) відбивають ха-
рактеристики членів родини і їхнє
об’єднання в конфігурації;
– модель характеристики (feature
models) відображає загальні, змінювані й
незмінні характеристики членів родини, а
також правила конструювання систем ро-
Методи та засоби програмної інженерії
56
дини з урахуванням і їхньої взаємозалеж-
ності та залежності від КПВ;
– архітектуру (каркас) родини сис-
тем;
– реалізацію компонентів архітекту-
ри у мовах програмування.
При проектуванні каркаса або мо-
делі ПрО у вигляді моделі GDM можуть
задаватися механізми змінювання, синхро-
нізації, безпеки з використанням аспект-
ного програмування.
Головною частиною моделі ПрО є
моделі характеристик, що призначені для
подання вимог до сімейств ПС, різних ха-
рактеристик систем, що входять до складу
ПрО та застосування КПВ. Ці моделі по-
ділені на дві категорії [3]:
– моделі характеристик FODA
(Feature-oriented Development Architecture),
FORM (Feature-oriented Reuse Method),
RSEB (Reuse-Driven Software Engineering
Business), FeatureRSEB (з інтеграцією у
RSEB – діаграм характеристик з FODA-
com) тощо [9];
– моделі варіантів сценаріїв викорис-
тання (Use Case Variants) [10].
У першу категорію потрапляють тра-
диційні методології моделювання, викори-
стовувані при побудові ПС, у другу – ме-
тодології, засновані на аналізі сценаріїв
діяльності потенційних користувачів ПС у
ПрО, що будуються за допомогою UML
(Sequence diagrams та Activity diagrams).
Про трансформацію опису моде-
лей ПрО в DSL. Як сказано раніше, мо-
дель предметної області Мпро є загальною
моделлю GDM домену, який складається з
декількох моделей окремих прикладних
систем Мпро1, Мпро2, ..., МпроN. Кожна з цих
моделей відображає поняття і специфіку
відповідної системи із родини систем до-
мену. На їхньому перетині існують зага-
льні поняття, характеристики й обмежен-
ня, які відображаються у моделі характе-
ристик ПрО. Опис кожної моделі Мпроi ви-
конується відповідною проблемно-
орієнтованою DSLi – мовою. Цей опис
трансформується безпосередньо у відпові-
дну МПi, тобто мову реалізації, або в іншу
DSLj – мову, яка потім трансформується у
МП. Програма у МП транслюється до ви-
хідного коду стандартними компілятора-
ми.
Аналіз опису різнорідних програм
Аналіз опису програм з використан-
ням різних ТД показує, що головною про-
блемою взаємодії програм є інтерфейс, в
якому дається набір параметрів з описом їх
типів даних. Для забезпечення інформацій-
ного зв’язування пари різномовних моду-
лів склалися три класи операцій:
1) Р – операції перетворення ТД мо-
дулів, що зв’язуються між собою;
2) S – операції селектора компонен-
тів складного ТД;
3) С – операції конструювання стру-
ктурних типів.
Операції класу 1 дозволяють здійс-
нювати безпосереднє перетворення типу
даних Таt у Тβt без додаткових операцій
зміни рівня структурування [2, 8]. Опера-
цію перетворення ТД запишемо у вигля-
ді: Pt q
аβ = (Та t , Тq
β).
Тут дані ТД Таt перетворяться в Тq
β ,
а і β відповідають мовам lа і lβ. Множина
ТД кожної МП впорядкована й індекси t і q
визначають конкретні елементи цієї множи-
ни. Для деяких МП t і q будуть функціями
від інших індексів і упорядкованість їх типів
може визначатися конструюванням нового
типу t з типів у яких індекси не більше t.
Новий тип буде мати індекс, що функціона-
льно залежить від індексів визначених типів
і конкретних операцій конструювання.
Операції класу 2 слугують вибору зі
структурного типу його окремих компонен-
тів з меншим рівнем структурування. Меха-
нізми реалізації цих операцій відмінні від
аналогічних, наявних у МП, тому що вони
не повинні змінювати структури даних, тих,
що безпосередньо обробляються в модулях.
Операції класу 3 є зворотними що-
до операцій селектора. Їхні механізми конс-
Методи та засоби програмної інженерії
57
труювання відмінні від аналогічних опера-
цій, що є в МП.
Множина розглянутих операцій кла-
су 1, 2, 3 охоплює перетворення ТД для МП,
функції конструювання структурних типів і
вибору окремих компонентів. Детальний
розгляд показує, що для даної множини опе-
рацій повнота відсутня. Причини цього роз-
глядаються далі.
Виходячи з наведених визначень по-
становка задачі перетворення ТД за зада-
ним набором операцій класів 1–3 має та-
кий вигляд.
Нехай дано клас L = {l1,l2, ..., ln} і
для кожної з окремої мови відомі множини
ТД і операції конструювання нових типів.
Необхідно: побудувати для структу-
рних типів операції перетворення ТД
P = { }, операції селектора S і констру-Ptq
αβ
ювання C.
Для рішення поставленої задачі про-
водимо розбивку множин фактичних і фо-
рмальних параметрів і будування відобра-
жень ТД за допомогою операцій Р, S і С.
Якщо відображення одного типу до реле-
вантного типу іншого не вдається, то це
означає, зв’язування пари модулів не мо-
жливо або воно може бути реалізоване з
порушенням деяких властивостей, що роз-
глядалися.
Визначимо апарат опису ТД МП.
Кожен ТД характеризується множиною
значень, що можуть приймати змінні цього
типу, і множини операцій над цими змін-
ними.
Тому найбільш підходящим мето-
дом є опис ТД як алгебраїчних систем.
Операції перетворення типів Ptq
αβ
мають забезпечувати не тільки однозначну
відповідність множини значень перетворю-
ваних типів даних у модулях, які виклика-
ють, та тих модулях що викликаються, але й
однакову інтерпретацію операцій над дани-
ми в цих модулях. При цьому має здійсню-
ватися як пряме перетворення даних ви-
кликаючого до викликуваного модуля, так і
зворотне. При такому підході операції пере-
творення відповідають ізоморфним ві-Ptq
αβ
дображенням однієї алгебраїчної системи в
іншу. Тобто ми маємо діло з ізоморфним
відображенням множин фактичних і фор-
мальних параметрів.
Підходи до опису даних БД
Проблема перетворення даних має
місце при використанні різних система ке-
рування базами даних (СКБД), оскільки
дані мають різні способи їх подання і збе-
рігання. Серед даних можуть опинитися
несумісні ТД або доступ до них здійсню-
ється різними мовами маніпулювання і за-
собами.
Перетворення форматів даних.
Програми, що розташовані на різних типах
комп'ютерів, передають один одному дані
через протоколи, повідомлення, їхні фор-
мати перетворюються до формату даних
приймаючої серверної платформи (так
званий маршалінг даних) з урахуванням
порядку і стратегії вирівнювання, прийня-
тої на цій платформі. Демаршалінг даних –
це зворотне перетворення даних (тобто
отриманого результату) до виду клієнтсь-
кої передавальної програми. Якщо серед
переданих параметрів оператора виклику
містяться нерелевантні типи або структури
даних, які не відповідають параметрам ви-
кликаного об'єкта, то проводиться пряме і
зворотне їхнє перетворення засобами ста-
ндарту або МП [11]. Засобами перетворен-
ня даних за їхніми форматами є:
– стандарти XDR – eXternal Data
Representation, CDR – Common Repre-
sentation Data, NDR – Net Data Repre-
sentation) і методи їхнього перетворення;
– МП і мови опису інтерфейсів
(RPC, IDL і RMI) для передачі даних між
різними компонентами.
Методи та засоби програмної інженерії
58
XDR – стандарт містить у собі за-
соби опису структур даних довільної скла-
дності і засоби перетворення даних, що
передаються на платформи (Sun, VAX,
IBM і ін.). Програми в МП можуть вико-
ристовувати дані в XDR – форматі, не зва-
жаючи на те, що компілятори вирівнюють
їх в пам'яті машини по – різному. Перетво-
рення даних – це кодування (code) або де-
кодування (decode) XDR – процедурами
форматування простих і складних типів
даних. Вирівнювання даних – це розмі-
щення значень базових типів з адреси, кра-
тної дійсному розміру в байтах (2, 4, 8, 16).
Межі даних вирівнюються за найбільшою
довжиною (наприклад, 16). Системні про-
цедури оптимізують розташування полів
пам'яті під складні структури даних і пере-
творюють їх до формату приймальної пла-
тформи. Оброблені дані декодуються на-
зад до виду формату передавальної плат-
форми.
CDR – стандарт середовища
CORBA забезпечує перетворення даних у
формати платформи, що їх передає або
приймає. Маршалінг даних виконує інтер-
претатор TypeCode і брокер ORB. Пере-
творення складних типів виконуються про-
цедурами encoder ( ) і decoder ( ) інтерпре-
татора TypeCode, який використовує базо-
ві примітиви при вирівнюванні інформації
і розміщенні її в буфері. Для складного ти-
пу визначається розмір і межі вирівнюван-
ня, а також їхнє розміщення в таблиці з
урахуванням індексів значень, які ініцилі-
зуються брокером ORB.
ХМL – стандарт забезпечує усу-
нення неоднорідності у взаємозв'язках
компонентів у різних МП за допомогою
XML – формату даних, який враховує різні
платформ і середовища. XML має різну
системну підтримку: браузер Internet
Explorer для візуалізації XML – докумен-
тів, об'єктна модель DOM (Document
Object Model) для відображення XML –
документів і інтерфейс IDL в системі
CORBA. Тобто, XML – мова дозволяє
представляти об'єкти для різних моделей
на єдиній концептуальній, синтаксичній і
семантичній основі. Він не залежить від
платформи і середовища взаємодії компо-
нентів прикладного рівня.
Перетворення даних БД. Перетво-
рення даних в БД пов'язане з різницею ло-
гічних структур даних (ієрархічні, мереж-
ні, реляційні) в різних БД і СКБД, в довід-
никах, класифікаторах і в системах коду-
вання інформації, а також різних мов для
подання інформації тощо.
Перехід до реляційної моделі даних
і СКБД ґрунтується на теорії множин, ма-
тематичній логіці та опису програм в
SQL – мові. При переході від одної БД до
БД нового типу зіставляються дані старої і
нової БД і змінюється довідкова інформа-
ція і класифікатори. В нових БД може бути
декілька мов, тому для зберігання даних з
простим доступом до текстових даних
встановлюється відповідність текстових
даних, записаних у різних мовах. Наяв-
ність явної несумісності типів і структур
різних моделей даних забезпечується різ-
ними мовами шляхом внесення змін в БД
та концептуальну модель даних. Внесені
зміни відображаються в довідниках і кла-
сифікаторах, що забезпечує перенесення
даних із старої БД до нової з урахуванням
поточних змін.
Перетворення даних БД може про-
водитися кілька разів шляхом створення
спеціальних скриптів і DBF – файлів з
урахуванням раніше введених даних, без
їхнього дублювання і коректного зведення
несумісних типів даних. Це перетворення з
перенесенням даних у різні СКБД розв'я-
зується через спеціальний драйвер або
транзитні файли, в які копіюються дані із
старої БД для перенесення їх у нову БД.
У випадку коли дані із старої БД
переносяться до транзитних файлів, SGL –
Методи та засоби програмної інженерії
59
скриптів, DBF – файлів з заданими форма-
тами даних, вони пересилаються до нової
транзитної БД засобами мережі. Якщо
друга СКБД реляційного типу, то дані в
транзитних файлах перетворяться до таб-
личного вигляду. При не реляційна СКБД
дані приводяться до табличного вигляду і
першої нормальної форми. Подальша нор-
малізація даних і зведення їх до структури
нової БД здійснюється в транзитній БД з
використанням 3 – або 4 – нормальної фо-
рми. Кожна вища форма нормалізації міс-
тить у собі як підмножину нижчу форму,
наприклад, першу нормальну форму у ви-
гляді скалярних значень.
Іншими словами, відношення зна-
ходяться в першій нормальній формі, якщо
вони зберігаються в табличному вигляді
(всі чарунки в рядку таблиці розташовані в
строго певній послідовності) і кожний
елемент таблиці містить у собі тільки ато-
марні значення (елемент не є множиною).
Відношення знаходиться в третій
нормальній формі тоді і тільки тоді, коли
кожний кортеж складається із значення
первинного ключа, що ідентифікує деяку
суть, і набору пустих значень або значень
незалежних атрибутів цієї суті. Тобто від-
ношення знаходиться в третій нормальній
формі, коли не ключові атрибути – взаєм-
но незалежні, але залежать від первинного
ключа.
Два або декілька атрибутів – взаєм-
но незалежні, якщо жодний з них не зале-
жить функціонально від комбінації решти
атрибутів. Подібна незалежність припус-
кає, що кожен атрибут можна оновлювати
незалежно від інших.
Процес нормалізації відношень до-
зволяє позбавитися проблем, які можуть
виникнути при оновленні, внесенні або
видаленні даних, а також при забезпеченні
цілісності даних. Структури старих БД не
завжди можна привести до третьої норма-
льної форми, тому потрібно, щоб дані, що
знаходяться в транзитних файлах, існували
хоч би в першій нормальній формі й нале-
жали до реляційної моделі.
Приклади перебудови даних для
БД. Як приклад розглянемо підхід до пе-
ретворення ТД, а саме строкових, двійко-
вих, символьних щодо сучасної MSDN
(Microsoft Developer Network) [12].
Ці дані мають різний опис
(char, varchar, nchar, nvarchar, binary, varbin
ary тощо) та представлення у БД. Пере-
творення їх до єдиного виду створює сер-
вер. Коли ТД binary або varbinary подають-
ся нерівної довжини, то SQL Server пере-
творює ці дані шляхом їх усікання право-
руч. При перетворенні цих типів даних у
тип binary або varbinary вони доповнюють-
ся ліворуч шістнадцятирічними нулями.
Перетворення цих ТД будь – якого досить
великого значення у двійкове й обернено
до первісного значення, виконуються в
одній і тій же версії сервера. Залежно від
версії SQL Server двійкове подання зна-
чень може мінятися.
Перетворення даних цілого ти-
пу int, smallint і tinyint до типу да-
них binary або varbinary приводиться тіль-
ки до значення binary і обернено до ціло-
чисельного шляхом усікання вихідного
подання.
Наприклад, SELECT CAST(123456
AS BINARY(4)) представляє цілочисельне
значення 123456 у вигляді двійкового
0x0001e240. Якщо цільовий тип binary
SELECT CAST (123456ASBINARY (2))
розміру 2, то для зберігання цільового
значення початкові цифри усікаються й те
ж саме число зберігається як 0xe240. Пере-
творення будь-якого типу даних до типу
binary завжди залежить від версії SQL
Server.
Перетворення символьних даних
БД. При перетворенні символьного вира-
ження в символьний тип довгі дані так
само усікаються при отриманні нового
Методи та засоби програмної інженерії
60
типу даних. Якщо символьне вираження
перетвориться в символьне вираження ін-
шого типу даних або розміру, наприклад,
з char (5) в varchar (5) або char (20) в сhar
(15), то перетвореному значенню привлас-
нюються параметри сортування вхідного
значення. Якщо не символьне вираження
перетвориться в символьний тип даних, то
перетвореному значенню привласнюються
параметри сортування, задані за замовчу-
ванням у поточної БД.
Перетворення кодових сторінок ви-
конується для типів даних char і varchar.
Символьні вираження, які перетворяться в
наближений тип даних numeric, можуть
містити необов'язкову експонентну нота-
цію (символ Е нижнього регістра або E
верхнього регістра, за яким ідуть необов'я-
зковий знак плюс (+) або мінус (–) і чис-
ло). Символьні вираження, пре утворені в
точний тип даних numeric, складатися із
цифр, десяткового роздільника й необов'я-
зкового знака плюс (+) або мінус (–). Пере-
творення типу integer у дані типу character,
SQL Server вставляє символ з кодом ASCII
42 – зірочку (*). Цілочисельні константи,
що перевищують 2 147 483 647, перетво-
ряться в тип даних decimal.
Таким чином, дана стисла характе-
ристика основних принципів перетворення
даних у системі SQL Server 2008.
Висновок
У роботі розглянуто загальну аксі-
оматику ТД, що використовуються у су-
часних МП. Результатом дослідження є
опис фундаментальних типів даних у МП
і їх використання при рішенні задач взає-
модії різномовних програм у межах сучас-
них середовищ. Наведено формальне по-
дання простих, структурних і складних
типів даних МП. Обґрунтовано місце цьо-
го напряму дослідження при інтеграції рі-
зномовних програм і забезпеченні їх взає-
модії у сучасних середовищах. Деяка час-
тина роботи займає аналіз сучасних під-
ходів до опису даних БД і методів їх пере-
творення при поданні або переносі даних
з однієї БД в іншу. Результати роботи бу-
дуть корисні в інфраструктурах середо-
вищ виконання програм, а також при об-
числюванні задач в системах типу Grid.
1. Лаврищева Е.М. Проблема интеропера-
бельности разнородных объектов, компо-
нентов и систем. Подходы к ее решению //
Матер. 7 Міжнар. конф. з програмування
“Укрпрог–2008”. – С. 28–41.
2. Лаврищева Е.М., Грищенко В.Н. Сбороч-
ное программирование. Основы индустрии
программных продуктов.– К.: Наук. думка,
2009. – 371 с.
3. Jeff Grey et al. OOPSLA’02 Workshop on
Domain Specific Visual Languages, 2002.
http://www.cis.uab.edu/info/OOPSLA–
DSVL2
4. Агафонов В.Н. Типы и абстракция данных
в языках программирования // Данные в
языках программирования. – М.: Мир,
1982. – С. 267 – 327.
5. Замулин А.В. Типы данных в языках про-
граммирования и базах данных. – М.:
Наука, 1987. – 152 с.
6. Hoar К.О структурной организации дан-
ных // Структурное программирование. –
М.: Мир, 1975.– С. 92 – 197.
7. Турский В. Методология программирова-
ния: Пер. с англ. – М.: Мир, 1981. – 265 с.
8. Лаврищева Е.М. Сборочное программиро-
вание. Теория и практика // Кибернетика и
системный анализ. – 2009. – № 6. –
C. 3 – 12.
9. Kang K.C., Cohen S.G., Hess J.A., Novak
W.E. and Peterson A S. Feature-oriented do-
main analysis (FODA) feasibility study.
Technical Report CMU/SEI-90–TR–21,
Software Engineering Institute, Carnegie Mel-
lon University, 1990.
10. Consel C. From a program family to a domain
specific language // Symposium on Principles
Методи та засоби програмної інженерії
61
of Programming Languages, Charleston, SC,
USA, ACM Press, 1993. – P. 19–29.
11. Лаврищева Е.М. Програмна інженерія.–
Підручник. – К.: Академперіодика, 2008. –
317 с.
12. Библиотека MSDN:http://msdn.microsoft.
com/ru–ru/library/ms191530.aspx
Отримано 24.02.2011
Про автора:
Стеняшин Адрій Юрійович,
аспірант Інституту програмних систем
НАН України.
Місце роботи автора:
ПТЗТ «Скарбниця».
E–mail: andrey.stenyashin@gmail.com
Пустий (void) – це тип даних, що подає об’єкт з необхідними синтаксичними і семантичними вимогами, але не несе жодної інформації у цьому конкретному випадку.
Крім того він включає нові складні ТД, а саме.
Особливості мови DSL
|
| id | pp_isofts_kiev_ua-article-808 |
| institution | Problems in programming |
| keywords_txt_mv | keywords |
| language | Ukrainian |
| last_indexed | 2025-09-17T09:23:36Z |
| publishDate | 2025 |
| publisher | PROBLEMS IN PROGRAMMING |
| record_format | ojs |
| resource_txt_mv | ppisoftskievua/29/d249f57440beb43ca619ffe728395329.pdf |
| spelling | pp_isofts_kiev_ua-article-8082025-08-28T20:52:26Z Formal description of the types and - data structures mixed programmes Про формальний опис типів і структур даних різнорідних програм Stenyashin, A.Yu. UDC 681.3 УДК 681.3 Examines examines the approaches to the formal submission types and data structures of programming language, subject-oriented languages such as DSL, which are used to describe the diverse programs at Applied-domains. The analysis software specifications ready program with fundamental, general and specific data types for specification some of the concepts and tasks of subject areas.Problems in programming 2011; 2: 50-61 Розглядаються підходи щодо формального подання типів і структур даних мов програмування, предметно-орієнтованих мов типу DSL, що використовуються при опису різнорідних програм прикладних доменів. Дається аналіз специфікації готових програм за фундаментальними, загальними та специфічними типами даних при специфікації понять і завдань деяких предметних областей.Problems in programming 2011; 2: 50-61 PROBLEMS IN PROGRAMMING ПРОБЛЕМЫ ПРОГРАММИРОВАНИЯ ПРОБЛЕМИ ПРОГРАМУВАННЯ 2025-08-28 Article Article application/pdf https://pp.isofts.kiev.ua/index.php/ojs1/article/view/808 PROBLEMS IN PROGRAMMING; No 2 (2011); 50-61 ПРОБЛЕМЫ ПРОГРАММИРОВАНИЯ; No 2 (2011); 50-61 ПРОБЛЕМИ ПРОГРАМУВАННЯ; No 2 (2011); 50-61 1727-4907 uk https://pp.isofts.kiev.ua/index.php/ojs1/article/view/808/860 Copyright (c) 2025 PROBLEMS IN PROGRAMMING |
| spellingShingle | UDC 681.3 Stenyashin, A.Yu. Formal description of the types and - data structures mixed programmes |
| title | Formal description of the types and - data structures mixed programmes |
| title_alt | Про формальний опис типів і структур даних різнорідних програм |
| title_full | Formal description of the types and - data structures mixed programmes |
| title_fullStr | Formal description of the types and - data structures mixed programmes |
| title_full_unstemmed | Formal description of the types and - data structures mixed programmes |
| title_short | Formal description of the types and - data structures mixed programmes |
| title_sort | formal description of the types and - data structures mixed programmes |
| topic | UDC 681.3 |
| topic_facet | UDC 681.3 УДК 681.3 |
| url | https://pp.isofts.kiev.ua/index.php/ojs1/article/view/808 |
| work_keys_str_mv | AT stenyashinayu formaldescriptionofthetypesanddatastructuresmixedprogrammes AT stenyashinayu proformalʹnijopistipívístrukturdanihríznorídnihprogram |