Главная страница
Навигация по странице:

  • Засіб опису програм Мова взаємодії Вид інтерфейсу

  • 7.2.3. Стандарт ISO/IEC 11404–96 з незалежних від мов типів даних

  • Стандартні типи даних Примітивні типи данихАгрегатні типи данихЗгенеровані типи данихТипи

  • Властивості: РівністьВпорядковністьОбмеженістьТочністьНадійністьЧисельністьТипи

  • Властивості: ОднорідністьРозмірністьУнікальністьВпорядкованістьДоступністьРекурсивністьЧисельністьТипи

  • Об’ява типів даних

  • Зворотне внутрішнє перетворення

  • 7.3. Перетворення даних за інтерфейсом 7.3.1. Перетворення форматів даних

  • 7.3.2. Перетворення даних з баз даних

  • К. М. Лавріщева програмна інженерія підручник Київ, 2008


    Скачать 5.23 Mb.
    НазваниеК. М. Лавріщева програмна інженерія підручник Київ, 2008
    Дата05.05.2022
    Размер5.23 Mb.
    Формат файлаpdf
    Имя файлаlavrishcheva-6.pdf
    ТипДокументы
    #513598
    страница27 из 43
    1   ...   23   24   25   26   27   28   29   30   ...   43
    7.2.2. Взаємодія різномовних програм
    Проблемі взаємодії різномовних програм на множині сучасних мов (C/C++,
    Visual C++, Visual Basic, Matlab, Smalltalk, Lava, LabView, Perl) присвячена праця
    [15]. У ній представлено різні варіанти і конкретні приклади зв'язків кожної пари
    МП з цієї множини за допомогою практично реалізованих і наведених функцій перетворення, методів звернення до них з програм в одній мові до програми в іншій мові. У табл. 7.1. подано варіанти взаємозв'язку різних МП.
    У ній відбито особливості їхньої взаємодії через різні види інтерфейсів, наведено більше ніж 25 видів пар сучасних МП і, відповідно, прямої та оберненої взаємодії різномовних програм. Для цих пар МП викладено принципи запуску різних програм і всі технічні питання передачі даних і перетворення параметрів.
    Матеріал цього навчального посібника містить у собі численні приклади
    інтерфейсних програм, які розроблені вказаним автором для перетворення різнотипних параметрів з урахуванням особливостей їхньої реалізації різними системами програмування.
    На відміну від розглянутої раніше загальної схеми взаємодії програм з двома модулями тут описано високотехнологічні засоби забезпечення процесу перетвореннярізних елементів, а саме: панелей, сценарієв, іконок і зразків
    інтерфейсних програм для кожного конкретного випадку взаємодії програм.

    192 Розділ 7
    Далі коротко описано шість схем засобів опису різномовних програм, що взаємодіють з мовами, наведеними в другому стовпці цієї таблиці.
    Інтерфейс між Visual Basic і іншими МП здійснюється за допомогою оператора звернення, параметрами якого можуть бути текстові рядки, значення, масиви та інші типи даних. Їхня обробка виконується функціями Windows API, API
    DLL і операціями перетворення типів даних. Як приклад наведено схему обробки
    Інтернет-застосувань, що задаються HTML-сторінками Basic Visual, які розміщуються у веб-браузері і базах даних.
    Matlab містить у собі засоби для розв’язання задач лінійної і нелінійної алгебри, операцій над матрицями і забезпечує математичні обчислення за допомогою Matlab Compiler, Matlab C++, Matlab Libriary, Matlab Graphic Library.
    Таблиця 7.1 Інтерфейс сучасних мов і засобів програмування
    Засіб
    опису
    програм
    Мова
    взаємодії
    Вид інтерфейсу
    Visual Basic
    – ANCI C
    – C C++
    – Windows API
    – DLL
    – VisualBasic 6.0
    – Win 32
    –API Viewer
    Платформо-орієнтовані функції
    Програмний інтерфейс
    Динамічна бібліотека функцій
    Інтерфейс між Visual Basic
    Функції обробки подій
    Інтерфейс в API
    Matlab
    – C C++
    – Matlab Engine
    – Matlab в JNI
    – Visual Basic 6.0
    – Java
    Виклик застосування з середовища
    Вбудовування функцій в VC++
    Використання інтерфейсу JNI
    Функції з Matlab
    Функції в Java
    Smalltalk
    – C++
    – Matlab
    – Start V1
    Модель додатку в Visual Works
    Функції графічної бібліотеки
    Бібліотеки С, С++ і процедури
    Visual Works
    Lab View
    – ANCI C
    – Visual C++
    – Visual Basic 6.0
    – C C++
    Інтерфейс VI і API
    Зв'язок Visual C, DLL, Obj
    Lib С C++
    Інтерфейсні функції драйвера
    Java
    – C, C++
    – Visual C++
    – Matlab
    Платформо-орієнтовані функції
    Бібліотеки функцій в С++, С
    Функції в JNI
    Perl
    – C, C++
    – API
    – Visual C++
    Платформо-орієнтовані функції
    Програмний інтерфейс
    Інтерфейсні функції в С++
    Наведено схему незалежного застосування у середовищі Matlab, яке містить у собі інтерфейс між VC і Matlab, що створюється MatlabCompiler шляхом перетворення програми у форматі Matlab (М-файли або М-функції) у формат мови
    С. Сформований файл викликається з програми в С++ і перетворюється до виду архітектури комп'ютера, куди відсилається результат.
    Базові засоби Smalltalk забезпечують створення застосувань у середовищі
    VisualWorks і вміщують модель застосувань, методи об'єктів, повідомлення для передачі значень зовнішнім об'єктам і призначений для користувача інтерфейс (рис.

    Розділ 7 193 7.5). Модель застосування містить у собі функції DLL з класу зовнішнього
    інтерфейсу, які взаємодіють з функціями бібліотеки С++.
    Рис. 7.5. Схема взаємодії моделі застосування у Smalltalk
    Система LabView призначається для автоматизації виробничих процесів, збирання даних, проведення вимірювань і керування створенням програм, що взаємодіють з апаратурою платформи. До її складу входять прикладні засоби, тестування програм і драйвери взаємодії з апаратурою, що запускаються з пульту.
    Система взаємодіє з ANS C, Visual Basic, Visual C++ Lab Windows/CV. Ці засоби розширюють можливості створення систем реального часу, які дозволяють виконувати за допомогою функцій зв'язку вимірювати апаратури типу термометрів, перемикачів тощо. Результати вимірювань можуть передаватися через мережу.
    Середовище Java містить у собі інструменти взаємодії зі всіма мовами, наведеними в другому стовпці таблиці. Загальна схема зв'язку мов JAVA, C і C++ програм наведена на рис. 7.6.
    Рис. 7.6. Схема взаємодії програм в мовах Java, C, C++ в системі Java
    Мова Perl з'явилася в 80-х роках минулого сторіччя як мова опису сценаріїв для взаємодії з Інтернетом, керування завданнями і створення CGI-сценаріїв на сервері в системі Unix. Ця мова має інтерфейс із С, С++, Visual Basic і Java.
    Інтерпретатор з мови Perl написано на мові С, і кожний інтерфейс з іншою мовою

    194 Розділ 7 розглядається як розширення, що представляється процедурами динамічної бібліотеки.
    Оператор виклику програми в С або С++, забезпечує перетворення її у спеціальний код, який розміщується в бібліотеці інтерпретатора Perl. Сам
    інтерпретатор може бути вміщені у Win32 для програм на C/C++.
    Таким чином, в праці [15] ретельно досліджені найсучасніші засоби і
    інструменти представлення різномовних програм і принципи їхній взаємодії з широко використовуваними МП. Подано рекомендації щодо конкретного застосування кожного засобу з урахуванням умов середовища і правил прямої і оберненої передачі параметрів програми в МП з класу розглянутих МП. Наведено численні приклади, які перевірено експериментально, ними можна користуватися на практиці або використовувати як зразки.
    7.2.3. Стандарт ISO/IEC 11404–96 з незалежних від мов типів даних
    Мета даного стандарту [16] та гармонизованого
    ГОСТ 30664-99
    полягає в тому, щоб забезпечити не тільки опис типів даних в стандартній мові LI (Language
    Independent) і їхню генерацію, а й перетворення типів даних МП у LI-мову, і навпаки. Стандарт пропонує спеціальні правила і характеристичні операції генерації примітивних типів даних і об'єднань LI-мови в простіші структури даних
    МП, а також визначення параметрів інтерфейсу засобами мов IDL, RPC і API.
    Незалежні від МП типи даних стандарту розділено на примітивні, агрегатні і такі, що згенерувані (рис. 7.7.).
    Стандартні типи
    даних
    Примітивні типи даних
    Агрегатні типи даних
    Згенеровані типи даних
    Типи:
    Логічний
    Перелічуваний
    Символьний
    Цілий
    Раціональний
    Дійсний
    Комплексний порядковий
    Масштабний
    Властивості:_РівністьВпорядковністьОбмеженістьТочністьНадійністьЧисельністьТипи'>Властивості:
    Рівність
    Впорядковність
    Обмеженість
    Точність
    Надійність
    Чисельність
    Типи:
    Запис
    Набір
    Портфель
    Масив
    Таблиця
    Послідовність
    Властивості:
    Однорідність
    Розмірність
    Унікальність
    Впорядкованість
    Доступність
    Рекурсивність
    Чисельність
    Типи:
    Вибір
    Покажчик
    Процедура
    Рис. 7.7. Незалежні від МП типи даних стандарту ISO/IEC 11404–1996
    У цю мову також вміщено генератор типів даних. Типи даних в стандарті описуються в LI-мові, яка є більш загальною мовою, на відміну від конкретних засобів опису типів даних МП.

    Розділ 7 195
    Він містить у собі всі існуючі типи МП і загальні типи даних, орієнтовані на генерацію інших типів даних. Стандарт складається з розділів (рис. 7.8): об’ява
    (declaration) типів даних, об’явлені типи даних; об’явлені генератори.
    Об’ява типів
    даних
    Об’ява типів даних
    Об’явлені типи даних
    Об’явлені генератори
    Перейменовані типи даних,
    нові типи даних,
    нові генератори значень
    Стек,
    дерево,
    циклічно- перелічуваний,
    необов’язковий
    Натуральний,
    модульно-цілий бітовий рядок,
    символьний рядок,
    октет,
    рядок октету,
    приватний,
    ідентифікатор
    Рис. 7.8. Об’ява типів даних у стандарті ISO/IEC 11404–1996
    У стандарті є розділ об’явлення типів даних, перейменування тих, що
    існують; об’явлення нових генераторів, значень і результатів. Кожен тип даних має шаблон, що містить у собі опис і специфікатор типу даних, значення в просторі значень, синтаксичний опис і операції над типами даних.
    Для об’явленого типу даних задається шаблон, що вміщує синтаксичний опис, специфікатор типу даних, значення в просторі значень і операції над цим типом даних.
    Засобами мови LI описуються параметри виклику як елементи інтерфейсу, необхідні при зверненні до стандартних сервісів і готових програмних компонентів.
    LI-мова стандарту рекомендує такі види перетворення даних:
    – зовнішнє перетворення типів даних МП в LI-типи даних;
    – внутрішнє перетворення з LI-типу даних в тип даних МП;
    – зворотне внутрішнє перетворення.
    Зовнішнє перетворення типів даних і генераторів типів даних полягає в такому: а) перетворення кожного примітивного типу з зовнішнього типу даних зв'язується з одним LI-типом даних; в) перетворення кожного внутрішнього типу даних перетворення визначає зв'язок між припустимим значенням внутрішнього типу даних і еквівалентним значенням відповідного LI-типу даних; с) для кожного значення LI-типу даних, що бере участь в перетворенні, визначається існуванням значення будь-якого внутрішнього типу даних, що перетворюється в LI-тип даних з узяттям цього значення.
    Зовнішнє перетворення документує аномалії з ідентифікації внутрішніх типів
    і дає гарантію того, що інтерфейс між програмними компонентами адекватно задається сервісним засобом з ігноруванням умов середовища МП.

    196 Розділ 7
    Внутрішнє перетворення зв'язує примітивний тип даних або те, що згенеровано, в LI-тип даних з конкретним внутрішнім типом даних МП.
    Представники окремого сімейства LI-типу даних можуть перетворюватися в різні внутрішні типи даних МП. Це перетворення має такі особивості: а) для кожного LI-типу даних (примітивного або згенерованого) перетворення визначає наявність цього типу даних в МП або відношення між допустимим значенням цього типа і еквівалентним значенням відповідного внутрішнього типу МП; в) для кожного значення внутрішнього типу даних перетворенняпоказує, чи є це значення образом (після перетворення) якогось значення LI-типу даних або його способом перетворення.
    Зворотне внутрішнє перетворення для LI-типу даних полягає в перетворенні значень внутрішнього типу даних у відповідне значення LI-типу за наявності відповідності і відсутності двозначності. Це перетворення для МП є колекцією зворотних внутрішніх перетворень LI-типу даних.
    У даному стандарті є набір додатків.
    У додатку 1 наведено перелік діючих стандартів (близько 40), що визначають набори символів. Для забезпечення сумісності типів даних, що використовуються і реалізуються, в додатку 2 містяться рекомендації щодо ідентифікації типів даних і опису анотацій для атрибутів, параметрів тощо.
    У додатку 3 подано рекомендації щодо відповідних внутрішніх типах даних, які повинні перетворюватися в LI-типи даних. У додатку D показано, що синтаксис
    LI-мови є підмножиною стандарту IDM (Interface Definition Notation), призначеного для опису інтерфейсу в LI-мові. Наведено варіант внутрішнього перетворення LI- типів даних в типи даних МП Паскаль (ISO/IEC 7185–90). У ньому розглянуто приклади перетворення примітивних типів даних
    LI-мови
    (логічний, перерахований, символьний, цілий раціональний і ін.) в типи даних мови Паскаль.
    Запропоновані в стандарті рекомендації, а також засоби опису типів даних і методів їхнього перетворення є універсальними. Потрібна програмна підтримки цього стандарту для масового застосування.
    7.3. Перетворення даних за інтерфейсом
    7.3.1. Перетворення форматів даних
    Програми, розташовані на різних типах комп'ютерів, передають один одному дані через протоколи, їхні формати перетворюються до формату даних приймаючої серверної платформи (так званий маршаллинг даних) з урахуванням порядку і стратегії вирівнювання, прийнятої на цій платформі. Демаршаллинг даних – це зворотне перетворення даних (тобто отриманого результату) до виду клієнтської передавальної програми. Якщо серед переданих параметрів оператора виклику містяться нерелевантні типи або структури даних, які не відповідають параметрам викликаного об'єкта, то проводиться пряме і зворотне їхнє перетворення засобами стандарту або МП [8, 11, 12].
    До засобів перетворення даних і їхніх форматів належать:
    – стандарти кодування даних (XDR – eXternal Data Representation, CDR –

    Розділ 7 197
    Common Representation Data [8]), NDR – Net Data Representation) і методи їхнього перетворення;
    – МП і механізми звернення компонентів один до одного;
    – мови опису інтерфейсів компонентів – RPC, IDL і RMI для передачі даних між різними компонентами.
    На кожній платформі комп'ютера використовуються угоди про кодування символів (наприклад, ASCII), про формати цілих чисел і чисел з плаваючою точкою
    (наприклад, IEEE, VAX і ін.). Для представлення цілих типів, як правило, використовується додатковий код, а для типів float і double – стандарт ANSI/IEEE та ін.
    Порядок розташування байтів залежить від структури платформи (Big Endian або Little Endian) від старшого до молодшого байта і від молодшого до старшого байта. Процесори UltraSPARC і PowerPC підтримують обидві можливості. При передачі даних з однієї платформи на іншу враховується можливий незбіг порядку байтів. Маршаллинг даних підтримується декількома стандартами, деякі з них розглянемо нижче.
    XDR–стандарт містить у собі мову опису структур даних довільної складності і засоби перетворення даних, що передаються на платформи (Sun, VAX,
    IBM і ін.). Програми в МП можуть використовувати дані в XDR-форматі, не зважаючи на те, що компілятори вирівнюють їх в пам'яті машини по-різному.
    У XDR-стандарті цілі числа з порядком «від молодшого» зводяться до порядку байтів «від старшого» і назад. Перетворення даних – це кодування (code) або декодування (decode) XDR-процедурами форматування простих і складних типів даних. Кодування – це перетворення з локального уявлення в XDR-уявлення і запис в XDR-блок. Декодування – це читання даних з XDR-блоку і перетворення в локальне уявлення заданої платформи.
    Вирівнювання даних – це розміщення значень базових типів з адреси, кратної дійсному розміру в байтах (2, 4, 8, 16). Межі даних вирівнюються за найбільшою довжиною (наприклад, 16). Системні процедури оптимізують розташування полів пам'яті під складні структури даних і перетворюють їх до формату приймальної платформи. Оброблені дані декодуються назад до виду формату передавальної платформи.
    CDR-cтандарт середовища CORBA забезпечує перетворення даних у формати платформи, що їх передає або приймає. Маршаллинг даних виконує
    інтерпретатор TypeCode і брокер ORB. Процедури перетворення складних типів вміщують:
    – додаткові коди для представлення цілих чисел і чисел з плаваючою точкою
    (стандарт ANSI/IEEE);
    – схему вирівнювання значень базових типів в середовищі компілятора;
    – базові типи (signed і unsigned) в IDL, а також плаваючому типі подвійної точності та ін.
    Перетворення даних виконуються процедурами encoder ( ) і decoder ( )
    інтерпретатора TypeCode, який використовує базові примітиви при вирівнюванні
    інформації і розміщенні її в буфері. Для складного типу визначається розмір і межі вирівнювання, а також їхнє розміщення в таблиці з індексами значень TCKind, які використовуються при ініціалізації брокера ORB.
    ХМL-стандарт забезпечує усунення неоднорідності у взаємозв'язках

    198 Розділ 7 компонентів у різних МП за допомогою XML-формату даних, який враховує різні платформ і середовища. Проміжні середовища (CORBA, DCOM, JAVA та ін.) мають у своєму складі спеціальні функції, аналогічні XML – альтернатива сервісам
    CORBA в плані забезпечення взаємозв'язків різномовних програм.
    XML має різну системну підтримку: браузер Internet Explorer для візуалізації
    XML-документів, об'єктна модель DOM (Document Object Model) для відображення
    XML-документів і інтерфейс IDL в системі CORBA.
    Тексти в XML-стандарті описуються у форматі ASCII, що дає можливість ефективніше застосовувати їх при обміні даними. XML використовується для кодування типів даних за допомогою файлових форматів. При необхідності переходу програмної системи до XML-стандарту проводиться переформатування даних у формат XML, і навпаки.
    Таким чином, XML-мова дозволяє представляти об'єкти для різних моделей на єдиній концептуальній, синтаксичній і семантичній основі. Він не залежить від платформи і середовища моделі взаємодії компонентів прикладного рівня. XML спрощує обробку документів, роботу з БД за допомогою стандартних методів і засобів (XML-парсеры, DOM-інтерфейси, XSL-відображення XML в HTML та ін.).
    7.3.2. Перетворення даних з баз даних
    Перетворення даних БД пов'язане з різницею логічних структур даних, а також з такими проблемами:
    1) багатомодельність представлення даних (ієрархічні, мережні, реляційні) в різних БД і СКБД;
    2) різниця в логічних структурах даних, в довідниках, класифікаторах і в системах кодування інформації;
    3) використання різних мов для представлення текстової інформації;
    4) різні типи СКБД і постійний розвиток даних БД в процесі експлуатації.
    Проблема 1 розв'язується шляхом переходу до реляційної моделі даних і
    СКБД, яка є потужним математичним апаратом, який ґрунтується на теорії множин
    і математичній логіці. Ця модель складається із структурної, маніпуляційної і цілісної частин. У цих частинах, відповідно, фіксується структура даних, опис програм в SQL-мові і вимоги до цілісності. Ієрархічні або мережні моделі даних загалом не підтримують цілісність, тому при переході від них до реляційних БД виникає порушення цілісності даних.
    Проблема 2 викликана тим, що логічна структура даних або концептуальна схема БД припускають проектування нової структури БД при зміні наочної області або при переході до нового типу СКБД. При цьому зіставляються дані старої і нової БД і змінюється довідкова інформація і класифікатори.
    Проблема 3 визначається різномовними текстовими представленнями
    інформації в БД. У старих БД використовувалася, як правило, одна мова, а в нових
    їх може бути декілька, тому для зберігання даних з простим доступом до текстових даних встановлюється відповідність текстових даних, записаних в різних мовах.
    Проблему 4 можна сформулювати як метод зберігання і обробки різних даних, викликаних специфікою СКБД ієрархічного, мережного і реляційного типів.
    Наявність явної несумісності типів і структур цих моделей даних, різні мови маніпулювання даними призводять до того, що не можна згенерувати мовою

    Розділ 7 199 старої СКБД скрипти для перенесення даних і подальшого запуску БД в середовище іншої СКБД. Кожна СКБД забезпечує внесення змін в БД, які певною мірою змінюють і концептуальну модель даних, якщо до неї вносять нові об'єкти.
    Внесені зміни повинні відображатися в довідниках і класифікаторах, що забезпечує перенесення даних із старої БД до нової з урахуванням поточних змін [19, 20].
    1   ...   23   24   25   26   27   28   29   30   ...   43


    написать администратору сайта