
- •Перелік термінів та позначень
- •Передмова
- •Частина 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. Програма курсу «Технологія програмування іс»
3.1.5. Моделі взаємодії і варіабельності пс для організації обчислень
Під взаємодією розуміють сумісність двох і більше об'єктів (програм і середовищ між собою), яка пов’язана з обміном інформацією і використанням її для організації обчислень у сучасних операційних середовищах. Для завдання взаємодії програм у мовах програмування (МП) використовується апарат зв’язку типу CALL, а для розподілених програм – RPC, RMI, ORB (stub, skeleton), IContract тощо. Взаємодія здійснюється інтерфейсом, який специфікується мовою IDL (Interface Definition Language) допомогою якої на загальному рівні передаються дані компонентам, що знаходяться в різних гетерогенних середовищах [5]. Для опису взаємодії різнорідних компонентів нами розроблено модель взаємодії. Головне її призначення – забезпечувати взаємодію різнорідних компонентів, що побудовані в інтегрованому середовищі ІТК з Eclipse, MS.Net, CORBA, Protégé тощо. Цю модель можна адаптувати до середовища Grid для обчислення різнорідних програм глобального масштабу в області e–science та Cloud Computing [1, 2].
Модель взаємодії Мinter
Ця модель має такий загальний вигляд:
Мinter = {Мpro, Мsys, Мenv},
де Мpro = {Com, Int, Pro} – модель програми, Com – компонент, Int– інтерфейс, Pro –програма;
Мsys = {PS, Int, Prot } – модель програмної системи PS, Int – інтерфейс, Prot – протокол зв’язку для передачі даних ;через мережу;
Мenv = {Envir, Int, Pro} – модель середовища, в якому Int, Pro відображають сукупність зовнішніх інтерфейсів, викликів та протоколів, що забезпечують передачу даних між програмами або системи через мережу відповідно.
Фактично Мinter по відношенню до стандартної семірівневої моделі відкритих систем OSI , є моделлю верхнього рівня.
Програмні компоненти і системи й інтерфейси специфікуються відповідною МП, інтерфейсом IDL, протоколами з XDL, RDF, що зберігаються в бібліотеках і репозиторіях ІТК Новим способом взаємодії між програмами типу клієнт і сервер є інтерфейс типу Icontract системи WCF [ ], який призначений для опису атрибутів та операцій для передачі даних від сервісного об’єкту (Service consumer) до клієнтського (Service provider) за контрактами Icontracts.
Базисом інструментального середовища ІТК є Eclipse, як засоб керування репозиторієм КПВ і використання КПВ для зборки в складну структуру. В процесі взаємодії програм і систем через інтерфейс при обчисленнях в тому чи іншому середовищі застосовуються різні механізми перебудови типів даних з різних форматів даних їх опису і формою трансформації типів даних в системах програмування з МП та використання бібліотек функцій і процедур з примітивами перетворення різних даних [ ].
Практичним рішенням задач взаємодії в ІТК є моделі розподілених систем:
– Visual Studio.Ne Eclipse реалізує взаємодію програм в мові С# на основі опису специфікації інтерфейсу, перенесення готового продукту в репозиторій системи Eclipse, що відображає зв'язок з даним середовищем програм через плагини і конфігураційний файл з параметрами і операціями оброблення даних в даному середовищі;
– CorbaJavaMS.Net забезпечує встановлення зв’язків між цими програмними середовищами шляхом розміщення програм в МП у репозиторії ІТК та надання доступу до них інших програм;
– IBM Eclipse орієнтована на нові програми в МП з використання інтерфейсу, що допускаються у цьому середовищі та у віртуальному варіанті VSphere.
Тобто при переході в середовище Eclipse використовуються вихідні файли програми, dll–бібліотки VS та файли ресурсів (.resx). Коли необхідно знов перейти із цього середовище в Visual Studio, вся проектна програма імпортується туди і зворотньо. Обчислення програми та її змінювання можна виконувати як у середовищі Eclipse, так і у Visual Studio. Модель IBM Eclipse буде продовжено надалі у випадку використання сервісів для взаємодії програм, як обчислень у розширеному середовищі ІТК.
Модель варіабельності ПС і СПС
Варіабельність це властивість деякого програмного об’єкту до розширення, змінювання, пристосування або конфігурування з метою використання у визначеному контексті та забезпечення подальшого еволюціонування. Програмування ПС як членів СПС з КПВ у парадигмі СПС стала важливим засобом для забезпечення еволюційності ПС за рахунок побудови різних варіантів продукту в залежності від зміни деяких функцій деяких окремих компонентів [ 3].
СПС із ПС має спільну множину характеристик, відповідних потребам певних функціональних варіантів ПрО, розрізняються способами втілення цих характеристик в окремі ПС і розробляються з використанням готових ресурсів. ПС створюються не «з нуля», а породжуються за моделлю СПС або обираються для неї готові КПВ з репозиторіїв, після чого адаптуються і збираються у нову структуру ПС [ ].
Модель СПС пов’язана з об’єктною і її компонентною моделлю ПрО і доповнена точками варіантності, створив розширену модель сімейства варіантної системи (СВС) за таким формальним виглядом:
М СВС = (Мпс, Int, C), C = CC BC; Bc = ib, rb, BC ! o3**L3 | ib = met(o3**),
dat(o3**), {rb}= im(ib);
CC = ic, rcCC !o3*O3\L3 | ic = met(o3*), dat(o3*) , BC={met(o3u), dat(o3u),
Part_of(o3*,o3u)}, {rc}= im(ic),
де bcBC і CC – унікальні імена КПВ, названих базовими та складними;
ib, rb – вхідний інтерфейс і реалізація базового КПВ, яка підтримує інтерфейс базового КПВ: (bc1, bc2) BC im(bc1) im(bc2);
ic, rc – вхідний s вихідні інтерфейси та реалізація складного КПВ;
im() – функція, що надає множину реалізацій інтерфейсу;
crij = (ci, cj) Int – відношення Part_of: (ci, cj)NC Part_of(o3i, o3j), що пов’язує КПВ, прототипи яких o3i, o3j в об’єктній моделі.
Компонентна модель програмного КПВ входить в модель CВС. Для забезпечення властивостей варіантності і змінності ПС з СПС проведено узагальнення наведених моделей для послаблення відношення Part_of.
Нехай Ct: Ot {0;1} і Dt: {vptOt |C(vpt)=1} 2Ot {0;1}, t= 1,...,4 – деякі предикати, які для об’єкту otjOt (Сt, Dt) декомпозує варіантнт об’єкту otiOt (VP(Ct,Dt; oti,otj)), якщо реалізація в певній ПС об’єкту тягне за собою реалізацію нового об’єкту тоді й тільки тоді, коли
Ct(oti)=1, SOti Ot {oti} | otjSOti, Dt(oti, SOti)=1, t = 1,..., 4.
Об’єкти oti і otj уданому виразі будемо звати об’єктною точкою варіантності та варіантом підпорядкованого об’єкта для oti, а предикати Ct і Dt – обмеженням на точки варіантності і залежністю між варіантами.
Процесі розроблення СПС як програмного продукту є керованим за такими підпроцесами:
– планування реалізації варіантів в артефактах СПС [9]) (F1);
– системного моніторингу забезпечення варіантності СПС;
– актуалізації СПС шляхом конфігурування підібраних нових КПВ чи артефактів з метою отримання нового варіанта ПС.
При реалізації варіабельністі використовуються такі принципи:
– узгодженість способу створення й реалізації рішень на всіх рівнях абстракції та на процесах ЖЦ розроблення СПС з готових КПВ;
– незалежність способу опису готових ресурсів від функціональних можливостей СПС;
– обов’язкове завдання інтерфейсів КПВ з точками варіантності змуних компонентів;
– можливість відстеження зв’язків між проявами варіантів на всіх рівнях абстракції та процесах розроблення СПС тощо..
Забезпечення цих принципів потребує адекватного середовища ІТК для реалізації моделі СПС. Деякі методи реалізації варіабельності підтримані операціями конфігурування, змінювання КПВ в СПС і повторної композиції готових компонентів.
Необхідним елементом ІТК у майбутньому має бути інтегрована модель варіабельності СПС (VР), яка дозволить створити прогнозовану структуру СПС, визначати оцінку можливості побудови варіантів ПС із КПВ.
Про варіанти взаємодії користувача з ПС
Мделювання взаємодії користувача з ПС базується на сценаріях UML, а саме, Варіантах використання, до яких актор звертається до системи. У відповідь система виконує певну роботу у результаті одного запуску відповідної роботи системи, або, якщо якісь події її перервали, вважається невиконаною. Будь–яка робота складається з чотирьох частин, а саме:
Актор посилає до системи запит та дані до нього.
Система підтверджує отримання запиту та даних.
Система реагує на підтверджений запит зміною свого стану.
Система видає актору результат.
Варіанти використання системи деталізуються в процесі їх подальшого аналізу у сукупність взаємодіючих об’єктів. Визначений таким чином ланцюг трансформацій (проблема – цілі – варіанти використання – об'єкти) відображає ступені концептуалізації, тобто досягнення розуміння проблеми, послідовного зниження складності її частин та підвищення рівня формалізації моделей останніх.
Зазначимо, що наведені вище трансформації зазвичай виражаються в термінах базових понять проблемної області, які використовується при представленні ПрО та варіантів використання.
Життєвий цикл варіанта використання такий:
Особа–в–ролi, або екземпляр актора, вводить підходящий стимул, стартує екземпляр потрібного йому варіанта використання і виконується доти, доки екземпляр варіанту використання знову чекає на вхідний стимул від екземпляру актора.
Екземпляр варіанта використання існує, поки він виконується.
У даній моделі визначені такі правила:
– кожен варіант використання може запускатися тільки одним актором;
– кожен актор може запускати декілька варіантів використання;
– взаємодія акторів в інтересах системи (тобто, як складова її функціональності) дозволяється тільки через передбачені для цього варіанти використання;
– актор не визначає варіант використання, він тільки ініціює ланцюжок подій, який викличе варіант використання;
– для кожного актора визначаються (неформально) його інтерфейси з тими варіантами використання, які він буде запускати.
Варіант використання має стан та поведінку. Якщо запуск багатьох варіантів використання системи мають подібну поведінку, вони розглядаються як клас об`єктів варіанту використання. Виклик варіанта породжує екземпляр класу.. Фіксація варіантів використання визначається вимогами та неформальним описом його властивостей. Кожному процесу відповідають один або декілька сценаріїв взаємодії з користувачем системи. Сценарії визначають послуги, які запускаються кожним типом актора.
Для специфікації властивостей варіантів використання пропонується каркас (framework), подається послідовністю наступних елементів:
– назва, яка однозначно ідентифікує варіант використання на діаграмах моделі сценарію i є засобом посилання на варіант використання;
– анотація (короткий зміст у неформальному поданні);
– актори, що можуть запускати варіант використання за зверненнями до послуги системи;
– визначення усіх аспектів взаємодії системи з акторами: можливих дій акторів та їх можливих наслідків;
– передумови визначення початкового стану, необхідного для успішного виконання;
– функції, які здійснюються при виконанні варіанта використання ;
– опис нестандартні ситуації, яка може з'явитися при виконанні варіанта використання та завдання дії, яка є реакцією на таку ситуацію ;
– умови завершення варіанта використання;
– постумови, що визначає кінцевий стан варіанта використання при його нормальному, тобто успішному завершенні.;
– опис інтерфейсів, який також подається неформально; .
– нефункціональні вимоги до варіанта використання.
Включення – перелік назв сценаріїв, які він використовує у сенсі UML
Нижче подаються специфікації властивостей сценаріїв взаємодії користувача задля його інформаційного забезпечення. В даному документі специфікації варіанта використання обмежуються такими атрибутами: назва, функції, передумови, пост–умови, опис інтерфейсів тощо.