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
Автор: Stenyashin, A.Yu.
Формат: Стаття
Мова:Українська
Опубліковано: PROBLEMS IN PROGRAMMING 2025
Теми:
Онлайн доступ:https://pp.isofts.kiev.ua/index.php/ojs1/article/view/808
Теги: Додати тег
Немає тегів, Будьте першим, хто поставить тег для цього запису!
Назва журналу:Problems in programming
Завантажити файл: Pdf

Репозитарії

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