
- •Перелік термінів та позначень
- •Передмова
- •Частина 1. Початок програмування в срср. Витоки розвитку
- •1.1. Поява і розвиток технології програмування (1952–2012)
- •1.2. Формування технологічних напрямів (1965–1975)
- •1.3. Становленья технології програмування (1975–1982)
- •1.4. Розвиток інтерфейсу в технології програмування (1976–1992)
- •1.5. Розвиток об’єктної технології програмування (1992–2002)
- •1.6. Індустріальні основи технології програмування (2002–2012)
- •1.7. Навчання тп у кну Тараса Шевченко (1965–2012) та філії мфті (2000–2012)
- •Контрольні питання і завдання до частини 1
- •Список літератури до частини 1
- •Частина 2. Парадигми технології програмування
- •2.1. Модульне програмування та збиральний підхід
- •2.1.1. Інтерфейс в програмуванні
- •2.1.2. Зборка модулів по а.П.Єршову
- •2.1.3. Метод зборки готових програмних елементів
- •2.1.4. Формальне подання методу збирання різномовних модулів
- •2.2. Парадигма об’єктно-орієнтованого програмування
- •2.2.1. Базові концепції ооп
- •2.2.2. Чотирьох рівневе проектування ом
- •2.2.3. Концепції об’єктного аналізу
- •2.2.4. Функції, алгебра та операції об’єктного аналізу
- •2.2.5. Моделювання моделі ПрО
- •2.2.6. Опис параметрів інтерфейсу ом
- •2.3. Парадигма uml-метода моделювання
- •2.3.1 Основні діаграми методу
- •2.3.2. Моделювання поведінки системи
- •2.3.3. Побудова пс засобами uml
- •2.4. Парадигма компонентного програмування
- •2.4.1. Теоретичні аспекти компонентного програмування
- •2.4.2. Моделі компонентного програмування
- •2.4.3. Графове подання компонентної моделі ПрО
- •2.4.4. Об’єднання компонентів. Модель середовища
- •2.4.5. Компонентна алгебра
- •2.4.6. Іінструментальні засоби кп
- •2.4.7. Технологія компонентної розробки пс
- •2.4.8. Типізація і класифікація програмних компонентів
- •2.4.9. Жц проектування пс із типових компонентів та кпв
- •Розробка вимог до пс – це формування та опис функціональних, технологічних, організаційних та ін. Властивостей програмної системи, які необхідні чи бажані з точки зору кінцевого користувача.
- •Розгортання рпс. У випадку, коли рпс створюється для конкретного замовника, який є і користувачем, то деякі завдання розгортання виконуються на попередніх етапах. До них, зокрема, відносяться:
- •Супровід рпс компонентній пс характеризується наступними особливостями.
- •2.5. Парадигма аспектно-орієнтованого програмування
- •2.5.1.Основні елементи парадигми аоп
- •2.5.2. Засоби аоп
- •2.5.3. Підтримка аоп впродовж життєвого циклу пс
- •2.5.5. Методичні аспекти аоп
- •2.6. Парадигма генерувального програмування
- •2.6.1 Предметно-орієнтована мова – dsl
- •2.6.2. Простір проблем і рішень ПрО
- •2.6.3. Інженерія ПрО і кпв
- •2.7. Сервісно-орієнтоване програмування
- •2.7.1 Базові понятті сервісу Інтернет
- •2.7.2. Сервіси wcf мs.Net з контрактами
- •2.8. Парадигми теоретичного програмування
- •2.8.1 Алгебраїчне та інсерційне програмування
- •2.8.2. Реалізація агентних програм
- •2.8.3. Експлікативне, номінативне програмування
- •2.8.4. Алгоритмічні алгебри
- •Контрольні питання і завдання до частини 2
- •Список літератури до частини 2
- •Частина 3. Моделі і засоби проектування предметних областей
- •3.1. Моделі проектування ПрО предметних областей
- •3.1.1. Концептуальні моделі пс, спс за компонентами
- •3.1.2. Моделі взаємозв’язку об’єктів
- •3.1.3. Модель інтеграції (зборка) компонентів
- •3.1.4. Тестування прикладних і інтерфейсних об'єктів
- •3.1.5. Моделі взаємодії і варіабельності пс для організації обчислень
- •3.1.6. Підхід до виконання пс в сучасних розподілених середовищах
- •3.2. Онтологічний підхід до подання знань про проблемні області
- •3.2.1. Онтологічне моделювання проблемної області
- •3.2.2. Мовний опис онтології домену чи спс
- •3.2.3. Підхід до реалізація онтології ПрО
- •3.3. Типи даних та засоби їх генерації для використання в збиральному прогрмуванні
- •3.3.1. Проблема забезпечення сумісності типів даних при зборки кпв
- •3.3.2. Аксіоматика простих типів даних
- •3.3.3. Аксіоматика структурних і складних типів даних. Структурні типи даних.
- •3.3.4. Семантичні аспекти взаємодії різнорідних програм
- •3.3.5. Характеристика типів даних для зборки програм
- •3.3.6. Фундаментальні і загальні типи даних
- •3.3.6. Баові поняття стандарту з типів даних
- •3.3.7. Перебудова загальних типів даних до фундаментальних для мп
- •3.4. Підходи і методи доказу програм
- •3.4.1. Мови специфікації програм –vdm, raise, Concept
- •3.4.2. Концепторна мова специфікації
- •3.4.3. Методи доведення правильності програм
- •3.4.4. Модель доказу програми за твердженнями
- •З.5. Проектування пс засобами жц з реалізації доменів
- •3.4.1. За загальна характеристика стандарту жц iso/iec 12207:2002
- •3.4.2. Формування конкретних моделей життєвого циклу
- •3.4.3. Підходи до моделювання ПрО мовними засобами dsl
- •3.6. Модель якості пс
- •3.6.1. Структура моделі якості
- •3.6.2. Модель витрат сосомо Боєма
- •3.6.3. Інтегрована модель витрат на спс
- •Контрольні питання і завдання до частини 3
- •Список літератури до частини 3
- •Частина 4. Методи індустрії виробицтва програм і систем
- •4.1. Загальні основи методології виробництва пс і спс
- •4.1.1. Моделі взаємодії компонентів у пс
- •4.1.2 Методологічні аспекти виробництва спс з готових ресурсів
- •4.2. Мова опису моделей взаємодії на основі xml
- •4.2.1 Подання та обмін даними в компонентних моделях
- •4.2.3 Модель конфігурації компонентів на основі xml
- •4.3. Графове подання пс і спс
- •4.3.1 Графове визначення моделі взаємодії об'єктів
- •4.3.2 Типи зв’язків об’єктів у графової моделі ПрО
- •4.4. Розробка методів побудови проблемно-орієнтованих технологій
- •4.4.1. Аналіз динаміки розвитку фабрик програм
- •4.3.2. Базисні ресурси фабрики програм
- •4.5. Загальні лінії виробництва програм з кпв
- •4.4.1. М етодологія побудови тл
- •4.4.2. Нові дисципліни індустрії наукового совтвера
- •4.4.3. Новітні засоби Grid і Cloud для обчислення задач e–sciences
- •4.4.4. Сучасні системи побудови рпс з сервісних ресурсів
- •4.4.5. Методологія розроблення тл
- •4.4.6. Принципи проектування іс
- •4.5. Методи при оцінюванні економічних характеристик проектів
- •4.5.2. Формальний апарат експертно-аналітичного оцінювання об’єктів і процесів у спс
- •4.5.3. Методи оцінки розміру
- •4.6. Створення Windows застосувань
- •4.6.1. Створення нової програми.
- •4.6.2. Властивості і дизайн програм
- •4.6.3. Компіляція програм
- •2.5. Запуск застосунка
- •4.6.4. Розширення функціональності програм
- •4.7. Інженерії тестування програмних систем
- •4.7.1. Основні поняття інженерії тестування
- •4.7.2 Становлення інженерії тестування
- •4.7.3. Методи тестування. Метрики і критерії
- •4.7.4. Інструменти тестування та оцінювання
- •4.7.5. Тестування веб-застосувань
- •Контрольні питання і завдання до частини 4
- •Список літератури до частини 4
- •5.2. Фабрика програм в кну
- •5.2.3. Створення фабрики студентів
- •5.2.4. Лінії продуктів фабрики на головної сторінки
- •5.2.5. Принципи роботи з репозиторієм програм і артефактів
- •5.2.6. Навчання дисципліні “Програмна інженерія” на фабрики
- •5.3. Репозиторій кпв
- •5.3.1. Загальний опис репозиторію
- •5.3.2. Технологія обслуговування репозиторію кпв
- •5.4. Розробка кпв
- •5.4.1. Опис моделей кпв, інтерфейсу і операцій розробки кпв
- •5.4.2. Реалізація побудови компонентної системи
- •5.4.3. Процеси технології оброблення кпв
- •5.4.4. Зборка різномовних програм у середовищі Visual Studio
- •5.5. Конфігурація кпв
- •5.5.1. Конфігурування кпв з урахуванням варіабельності
- •5.5.2. Опис прикладу використання конфігуратору програм
- •5.6. Генерація систем мовою dsl
- •5.6.1. Лінія опису та генерації доменів dsl
- •5.6.2. Опис життєвого циклу пз та його реалізації на мові dsl
- •2.7. Онтологія – обчислювальна геометрія
- •5.7.1. Онтологія домену – Обчислювальна геометрія
- •5.7.3. Опис моделі онтології ПрО «Обчислювальна геометрія»
- •5.7.4. Опис програми домену «Обчислювальна геометрія» мовою owl
- •5.8. Оцінка якості пс
- •5.8.2. Оцінка витрат на продукт
- •5.8.3. Опис модуля прогнозування трудовитрат на розробку пс
- •5.8.4. Приклад оцінювання затрат на розробку пс ас
- •5.9.1. Опис веб-технології Java ee
- •5.9.3. Приклад взаємодії Java і ms.Net через веб-сервіси
- •5.9.4. Інструкція по використанню графічного інтерфейсу прикладу
- •5.10. Генерація тд
- •5.10.1. Відображення типів даних у середовищі ітк
- •5.10.2. Система генерації загальних типів даних до фундаментальних
- •5.11. Інструментальні засоби сайта ітк
- •5. 12. Розділ сайта «Технологія навчання»
- •Контрольні питання і завдання до частини 5
- •Список літератури до частини 5
- •Післямова
- •Додаток 1. Парадигма структурного програмування
- •Додаток 2. Приклад створення служб wcf у ms Visual Studio 2010
- •Додаток 3. Онтологічний підхід з подання тестування кпв та пс
- •Додаток 4. Оцінка застосування метода сосомо на конкретних даних
- •Додаток 5. Програма курсу «Технологія програмування іс»
4.2. Мова опису моделей взаємодії на основі xml
В якості мови опису моделей взаємодії програмних компонентів пропонується використовувати XML (Extensible Markup Language), підмножини SGML, найбільш потужної з сучасних мов подання та обробки документів. Як наслідок з цього, XML-орієнтовані програмні засоби мають значні функціональні властивості і можуть працювати на різних платформах та середовищах як засоби взаємодії програмних компонентів. Актуальності цієї проблеми відповідають провідні сучасні компонентні моделі (Corba, DCOM, COM, JAVA-моделі тощо), які включають до складу своїх функціональних можливостей різні аспекти XML, або розглядають XML як альтернативу сервісам Corba щодо забезпечення взаємодії компонентів [5, 11, 12].
Вважається, що опис моделі взаємодії з використанням XML має два підходи.
1) На основі опису XML-документу може бути сгенеровані тексти на певній мові програмування, які після компіляції включаються до складу середовища, що реалізує подання відповідної компонентної моделі. Усі особливості взаємодії окремих компонентів (пошук та встановлення зв’язків, звернення до функцій, обмін даними) знаходять своє відображення у сгенерованому текстові.
2) XML-документ оброблюється у первинному вигляді, тобто у режимі інтерпретації. При цьому, застосовуються типові засоби – парсери (програми, що виконують синтаксичний розбір XML-конструкцій), прикладні інтерфейси (наприклад, інтерфейс DOM [11] – документо-орієнтований інтерфейс) та ін.
На абстрактному рівні модель будь-якого XML-документу є продукційною системою, яка засобами XML-нотації подається як опис типу документу (Document Type Definition, DTD). Продукційна система відображає синтаксичну структуру документу, а певні елементи можуть мати і семантичні ознаки (наприклад, для певних типів файлів, імена яких знаходяться у DTD, наперед визначені можливі операції та засоби обробки). Як узагальнений приклад подання компонента засобами XML можна розглянути фрагмент відповідного опису для певного абстрактного рівня. Ось початковий фрагмент такої продукційної моделі:
<компонент> :=<особливості><інтерфейси><атрибути><методи><події>
<особливості>:=<версія><мова програмування><операційне середовище><ресурси>
<версія>:= <визначення версії>
<мова програмування>:=<визначення мови програмування>
<операційне середовище>:=<визначення операційного середовища>
<ресурси>:=<перелік ресурсів>
<інтерфейси>:=<пусто>|<інтерфейс><інтерфейси>
<атрибути>:=<пусто>|<атрибут><атрибути>
<методи>:=<пусто>|<метод><методи>
<події>:=<пусто>|<подія><події>
. . . .
При цьому взаємодія компонентів відбувається на основі моделі подій, коли певна подія в компоненті спричиняє активізацію методів в інших компонентах, які пов’язані з цією подією.
Описів DTD для цієї продукційної моделі може бути декілька. Всі вони будуть розрізнятися назвами тегів (структурних елементів XML-документу), методами подання параметрів та сутностей, іншими синтаксичними особливостями. Але на семантичному рівні вони будуть визначати одну й ту ж продукційну модель.
Нижче наведено кілька з найбільш відомих на цей час підходів та моделей на основі XML, які вже практично застосовуються для реалізації зв’язки компонентів у середовищах:
1) Підхід, який запропонувала фірма IBM на основі Bean Markup Language (BML) – XML-подібна мова для інтеграції JAVA-компонентів. Хоч цей підхід, в першу чергу, орієнтований на інтеграцію JavaBeans-компонентів, проте інтегрувати можна довільні компоненти, які подані у вигляді JAVA-класів. Існує два режими – інтерпретації (безпосередньо оброблюється відповідний XML-документ) та компіляції (на основі XML-документу генеруються JAVA-класи).
2) XML-орієнтований протокол віддалених викликів Remote Procedure Call (XML-RPC), націлений на кросплатформену взаємодію компонентів в розподіленому середовищі на базі Інтернет. Підхід здобув поширення завдяки дуже простій адаптації до проблем електронної комерції. XML-документи для цього протоколу відображають всю необхідну інформацію для віддаленого виклику до процедури.
3) Фірма Microsoft, проаналізувавши обмеження своєї розподіленої компонентної моделі DCOM, розробила власний варіант RPC-протоколу “The Simple Object Access Protocol” (SOAP), який визначається як метод обміну командами та параметрами між клієнтом та сервером, абстрагуючись від конкретних операційних систем, МП та моделей взаємодіючих компонентів.
4) Компонентний підхід “Coins” є однією з ідей реалізації високорівневого XML-протоколу серіалізації для обміну компонентами. Концептуальна основа “Coins” базується на створенні протоколу серілізації JavaBeans-компонентів, що є альтернативою стандартному протоколу серіалізації JAVA-об’єктів.
5) Консорціум W3C продовжив вдосконалення Corba-моделі. Найбільш суттєвим напрямком розвитку є розширення концепцій Corba на Інтернет-середовище – WebBroker, в його рамках розроблено серіалізацію повідомлень між об’єктами та подання інтерфейсів між об’єктами для репозиторію інтерфейсів засобами XML.
Серед множини компонентних моделей і підходів до інтеграції .є базові:
1) моделі та підходи, що забезпечують для компонентів звернення до методів, процедур, функцій, які визначені в інших компонентах;
2) моделі та підходи, що забезпечують переміщення компонентів у компонентному середовищі як окремих об’єктів компонентної моделі відповідно до правил інтеграції та взаємодії (моделі та підходи серіалізації);
3) моделі та підходи, що визначають структурні властивості та правила інтеграції сукупності компонентів моделі.
Моделі звернення до процедур є найбільш прості моделі і визначають лише правила взаємодії пари компонентів. Моделі такого типу мають наступні властивості:
– ідентифікація компоненту, в якому знаходиться необхідна процедура (метод, функція).
– ідентифікація процедури, яка буде виконуватись.
– ідентифікація типів та/або класів параметрів процедури та результату (якщо вони присутні у зверненні).
– ініціація параметрів процедури необхідними значеннями.
Розглянемо більш детально окремі риси цих моделей.
Ідентифікація компонентів. Існує два аспекти ідентифікації компонентів – визначення класу, до якого належить компонента, та визначення екземпляру класу. Клас компонентів вміщує необхідні метадані, які потрібні для управління компонентою (її створення, опис інтерфейсів і т.і.). Новому екземплярові класу привласнюєтся унікальний ідентифікатор, за допомогою якого інші компоненти можуть з ним взаємодіяти. Звичайно, компонент може бути самостійною одиницею і не мати класу. У цьому випадку компонент повинний мати самодостатній характер, тобто мати необхідні метадані, у тому числі і дані, що описують її інтерфейси.
Наведемо кілька прикладів ідентифікації компонентів. У BML існує тег <bean> (аналог тегу <component> в узагальненому прикладі) з параметрами class та id. Перший визначає клас компонента, а другий привласнює їй унікальне ім’я, що ідентифікує її у рамках даної моделі. Зовсім інший підхід у XML-RPC. Для цього протоколу не суттєвим є опис компонента, а важливим є ідентифікація процедури. Тому одночасно з ідентифікацією процедури визначається і компонента, в якій вона знаходиться.
Ідентифікація процедури. Для ідентифікації процедури існує два аспекти. По-перше, необхідно визначити ім’я процедури, а по-друге, необхідно врахувати сигнатуру процедури. Сигнатура процедури (методу, функції) визначається впорядкованою множиною параметрів та результатів з ідентифікацією їх типів чи класів. Це є суттєвим аспектом, бо компонент може мати кілька процедур з однаковим іменем але різними семантиками. Розрізняються ці процедури за сигнатурами.
Вирішення першого питання забезпечується поданням у XML-документі пари – ім’я компонентаі назва процедури. Наприклад, в XML-RPC для цього застосувається складне ім’я – <ім’я компонента.<назва процедури>. В моделі Corba віддалене звернення до процедури має двокроковий характер. Спочатку для інтерфейсу, до якого входить опис метода (процедури), шукається компонент, а вже потім вказується метод. Для кожного з цих двох кроків (як вже наводилось вище) існують відповідні XML-орієнтовані підходи.
Питання щодо сигнатури методів вирішуються відповідно до способу організації інтерфейсів між компонентами. Наприклад, в моделі Corba існують статичні та динамічні інтерфейси. Для організації статичних інтерфейсів проблема сигнатури вирішується згідно з правилами об’єктної орієнтації (перевантаження методів) МП компонента (якщо ця МП не є об’єктно-орінтованою, то всі процедури повинні мати унікальні імена). Для динамічних інтерфейсів під час роботи компоненти можна запросити опис інтерфейсів та їх методів, а потім визначити потрібну процедуру.
Ідентифікація типів та/або класів параметрів процедур і їх результатів. Ця властивість необхідна для:
– адекватної трансформації внутрішнього подання даних компонента в XML –документ і навпаки;
– визначення сигнатури процедури.
Принципових відмінностий для подання типів даних та класів у різних підходах та моделях не має. Всі розбіжності можна звести до наступних особливостей:
– відмінності у кількості типів даних та класів, які підтримуються компонентним підходом чи моделлю;
– відмінності у назвах тегів, що описують параметри та результати;
– відмінності у кількості повідомлень (XML-документів), у яких описують параметри та результати.
Так, в BML нема власних наперед визначених типів. Замість цього для будь-якого типу чи класу у XML-документі присутня його назва як строка символів, а вже безпосередня обробка виконується у відповідному JAVA-класі, якому потрібні ці дані. В той же час XML-RPC має власну множину визначених типів, більшість з яких є простими типами даних. А в моделі Corba та протоколі SOAP, крім базових типів, існують і складні типи – масиви, структури. Крім цього, для них встановлені формальні правила співвідношення (відображення) типів даних компонентів і їх поданням в XML-документах.
Corba має ще одну характерну властивість. В ній існують окремі типи XML-документів для передавання параметрів віддаленій процедурі (Request-message) і отримання відповіді з результатами роботи процедури (Response-message). Аналогічну властивість має і протокол SOAP. Такий підхід реалізується у тих випадках, коли потрібна асинхронна взаємодія об’єктів. Компонент може ініціювати виконання процедури в іншому компоненті, а сама буде продовжувати свою роботу. Отримання відповіді буде сигналізувати про закінчення виконання процедури.
Ініціація параметрів процедури необхідними значеннями. Ініціація даних потрібна у таких випадках:
– для визначення “умовчаних” даних;
– для визначення значень параметрів процедур, для якої у компонента, що звертається до віддаленої процедури, немає відповідних змінних, а саме звернення носить проміжний характер (результат роботи такої процедури, наприклад, є параметром для звернення до головної віддаленої процедури).
Ця властивість XML-орієнтованих підходів та моделей є типовою і тому, в цілому, може існувати одна суттєва розбіжність – включати дані як один із параметрів елемента (тега) в XML-документі чи подати їх як значення цього тегу (ці особливості описуються відповідним DTD).
Наведені механізми XML-орієнтованих підходів та моделей використані при практичної реалізації моделей взаємодії програм і систем в ІТК (см. розділ 2 книги 2 звіту заданим проектом).