- •Перелік термінів та позначень
- •Передмова
- •Частина 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.1.1. Моделі взаємодії компонентів у пс
- •Частина 4. Методи індустрії виробицтва програм і систем
- •4.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. Програма курсу «Технологія програмування іс»
1.6. Індустріальні основи технології програмування (2002–2012)
Уряд в Україні в особі Агентства з науки та інформатизації (Семіноженко В.П.) стурбований відставанням або вірніше відсутністю індустрії в Україні.
Дії влади щодо індустрії ПП. Влада провела міжнародний науковий конгрес (17–18 листопада 2011) з питань інфраструктури електронного уряду та індустрії ПП. Відзначено, що індустрія розвивається в основному за рахунок закордонних фірм, яких в Україні більше 1000. Вони виробляють у нас продукти силами студентів для своєї країни і цей ПП нашій країні не надається. При такої політики розквіту індустрії в Україні очікувати не доводиться. З особистій точки зору, необхідно з закордонними фірмами укладати договори на виготовлення продукції 50 на 50, щоб нам ПП зроблений нашими фахівцями залишалися за 50% вартості. Тоді її можна буде продавати і отримувати прибуток. На даний момент на Верховній раді вирішується питання тільки декапіталізації зарплати і закону про пенсії.
Представляється, що Україна повинна мати свою національну програму розвитку ТП щодо індустрії ПП. Так в Білорусі при владі створено центр технологій, куди направляються гарні випускники БДУ, які строюють національні автоматизовані технології виробництва продукції в різних областях промисловості і господарства. В Росії, як відомо, створено прогресивну нанотехнологію, яку купують закордонні організації за великі гроші. Нам можливо зробити індустріальну технологію виробництва програм із готових КПВ, які специфічному стилю розроблення програм.
Розвиток індустрії ПП. Даний період розвитку індустрії програм характеризується подальшим удосконаленням об'єктів зборки і ліній складального конвеєра фабрик програм, а саме: технологія компонентної зборки [36, 61]; принципи взаємодії компонентів у різних гетерогенних середовищах [49]; мультитехнологія (об'єктна, компонентна, аспектна, сервісна) за Чернецьким і У. Айзенекером [46] з лейтмотивом «від ручної праці до конвеєрної збірці»; технологія І. Бея з автоматизованими прийомами і способами забезпечення взаємодії різномовних програм [47]; потокова зборка з use case UML на фабрики програм Дж. Грінфільда [48]; фабрика розробки програм Г.Ленця в .NET [49]; складальний конвеєр ЕПАМ (БДУ) [50], а також інші фабрики, які проаналізовані в роботі «Розвиток фабрик програм в інформаційному світі» (Андон П.І., Лавріщева К.М., Вісник НАНУ, 2010) [44]. Їх аналіз показав, що зараз діють сотні фабрик програм і сервісів, які створені різними закордонними компаніями.
Загальне, що об'єднує всі фабрики програм, це автоматизовані лінії збирання різних видів програм для масового використання, включаючи Product Lines (http://www.sei.cmu.edu/productlines/frame_report/), а також багато ліній фабрик програм в індустріальних фірмах виробництва продуктів (IBM, MS.Net, Sun Microsystems, Oberon, Unix, Intel та ін.) [52–54].
Базис фабрик програм. З метою переходу до індустрії ПП та збільшення продуктивності ПП на кожному процесі ЖЦ із заданими функціями, архітектурою та якістю почали розроблятися фабрики програм. Для цього накопичено велика кількість різного роду КПВ та засобів ТП з розробки простих і складних ПП. Головним механізмом фабрики є лінії, ТЛ. Вони, як правило, відповідають стандартизованому ЖЦ. На кожної лінії використовуються свої засоби. Наприклад в середовищі MS.Net базисом є каркаси (Framework), мова DSL (Domain Specific Language) та ін.
Головна лінія розробки складних ПП – це ТЛ зборки ПС з готових КПВ, які знаходяться в різних бібліотеках і репозиторіях Інтернету.
Виходячи з отриманого досвіду автоматизованої зборки різнорідних програм в МП [2, 32–40] та аналізу сучасних зарубіжних фабрик програм індустріального типу (IBM, OMG, Microsoft, Oberon і т.п.) нами сформовано загальний набір елементів, які характеризують будь-яку фабрику програм:
– готові програмні ресурси (артефакти, програми, reuses, assets, services, КПВ і т.п.);
– специфікатор (інтерфейсні посередники) паспортних даних готових програмних ресурсів, описані в одній з мов специфікації інтерфейсу (IDL, API, SIDL, WSDL, RAS і т.п.);
– операційне середовище, що містить системні програмні засоби та інструменти для системної зборки різнорідних ресурсів (http://nant.sourceforge.net/);
– ТЛ, продуктові лінії (Product Lines) виробництва ПП [40–45];
– метод розробки КПВ і зборки КПВ та в мовах UML, DSL і ін.);
– складальний конвеєр з набору ліній виробництва програм [45].
Ці елементи мають місце у всіх зарубіжних фірмах, таких як IBM, Microsoft, Corba, Java, Oberon і ін.
У даний період склалися всі необхідні умови, а саме, розроблено велику кількість якісних різноманітних програмних ресурсів для рішення наукових та фізико-технічних завдань в межах Європейського проекту Grid. В ньому функціонують фабрики програм системного і прикладного характеру. Це відповідає базової основі індустріального виробництва ПП [51, 52] для класу глобальних наукових задач.
Комп’ютерні засоби для індустрії. Розвиток індустрії програм і систем викликано також створенням високоефективної елементної бази в багатоядерної, процесорної конфігурації комп'ютерів, кластерів і т.п. Так як, комп'ютерна індустрія більш ніж на порядок випереджає розвиток індустрії програм, обчислень і даних, як з теоретичної, так і з практичної точки зору, то індустріальна технологія забезпечить ефективне виконання масштабних обчислень складних завдань в e-sciences (фізика, математика та ін. ), АСУ, а також і в інших галузях науки і промисловості. В зв’язку з цим з'явилися нові підходи і теорії, які визначені високим рівнем обчислювальної техніки і супер можливостями загальносистемного програмного забезпечення. Вони ініціювали появу нової предметної мови опису ПС (DSL, UML2, WokkFlow та ін.) з сценаріями виконання і обчислення задач (Cloud Computing) в e–science на даних з віртуальних міжнародних сховищ.
Для підтримки індустрії сформовані сотні фабрик програм різного призначення в середовищі загальносистемних індустріальних ОС (MS.Net, IBM, Corba, Sun Microsystems та ін.) Їх огляд та принципи побудови фабрик програм проаналізовані в роботі [44]. Серед них відзначимо ті фабрики, які засновані на конвеєрній збірці – це фабрика К.Чернецькі [25], І.Бея [47], Дж. Грінфільда [48], Г.Ленца [49], Авдошина, Фаулера (Continious integration) [50] та студентська фабрика програм в КНУ імені Тараса Шевченка [53, 54].
Важливим результатом цього періоду є формування теоретичних і практичних аспектів компонентного програмування. Розроблено теорію аналізу предметної області з об’єктів, створено з них об’єктну модель предметної області з використанням формальних математичних операцій визначення окремих елементів цієї моделі. Наведено метод трансформації об’єктної моделі до компонентної моделі з переходом до компонентів і інтерфейсів між ними [45, 58]. Це дало можливість використати механізми збирання компонентів за граф схемою модулів і тим самим узагальнити складальне програмування. До операцій збирання входять зовнішню, внутрішня алгебри компонентів з формальними операціями на лінії побудови окремих компонентів [35–38, 58].
Метод ОКМ поширений додатковою властивістю – варіабельністю для забезпечення зміни деяких КПВ новими функціями і отримання нового варіанту ПП [60]. Це подано двома формальними моделями варіабельності – об’єктною та компонентної для деякої предметної області чи сімейств ПС. Варіантна компонентна модель практично реалізується методом конфігураційної зборки в ІТК [57, 61] і виконана в межах дисертаційної роботи Колесник А. (2013).
Таким чином, ці наробки поповнюють методи індустріального виробництва ПП, що аналогічно методам в закордонних фабриках програм (наприклад, IBM, Microsoft, Corba, тощо). Деякі з них використовують лінії і ТЛ, як с з різними методами об’єднання компонентів у більш складні структури.
Лінії продуктів. Пройшов час коли ми запропоновану вітчизняну методологію побудови ТЛ розвинули до розподілених середовищ та провели співставлення з альтернативною закордонною методологією Product Lines SEI USA (www.sei.com.edu).
Методологія ТЛ визначається [33] попереднім етапом технологічної підготовки робіт (ТПР) для створення спеціальної ТЛ, як схеми лінії з процесів і операцій, що забезпечують продукування елементів майбутньої ПС засобами мов програмування (МП) чи комплексу інструментів. На ТПР будується ТЛ шляхом її комплектування з потрібних процесів, що відповідають майбутній предметної області (ПрО), стандартних інструментів і технологічних модулів (ТМ) підтримки специфіки ПрО в сучасному операційному середовищі та комплексу відповідного нормативно-методичного забезпечення (рис. 2). Тобто для ТЛ підбираються прикладні готові ресурси (ГОР), КПВ, засоби й інструменти породження і реалізації окремих функцій або елементів програм. Усі ресурси пов’язуються технологічним маршрутом, що впорядковує процеси і операції ТЛ щодо заповнення каркасів зі структури проектних рішень, реалізації їх та зміни елементів ПП. В кінцеву операцію маршруту включається, як провило, операція оцінки збудованого ПП на якість за відповідною методикою чи інструментального засобу [40].
Набір процесів ТЛ створюється з урахуванням вимог міжнародного стандарту з ЖЦ ISO/IEC 12207–96, 2007 та стандарту якості ДСТУ 3918–99, що підтримуються відібраними методами, засобами й інструментами и перебудови станів елементів з метою виконання відповідних змін проміжних елементів, що породжуються на лінії. Технологічний маршрут ТЛ описується спеціальною мовою з використаними інструментами, ТМ і методиками керування послідовною цілеспрямованою діяльністю спеціалістів з виконання процесів побудови елементів ПП і трансформації їх даних, що передаються між КПВ для обробки даних в процесі виконання. На рис.1.2. наведені процеси уніфікації процесу тестування, оцінювання якості та керування проектами ПП.
Рис. 1.2. Процеси ТПР
Альтернативна методологія – це методика побудови продуктової лінії (Product Lines) SEI США виникла пізніше у 2005 р. і буде розглянута в частині 4.
Кожна лінія підвищує продуктивність праці виконавців, поліпшує умови їх роботи, скорочує число збиральників, підвищує якість продукції та знижує собівартість випуску продукції.
Про такій конвеєр мріяв академік Глушков (1975 р.) “Пройде 20–30 років і складні програми будуть випускатися по принципу складального конвеєра, як в автомобільної промисловості ”. Ця ідея Глушкова нами реалізована на фабрики програм КНУ і в ІТК [54] зі спектром ТЛ – виробництва програм із КПВ, забезпечення їх взаємодії у середовищі ІТК, навчання студентів дисциплінам SE і програмуванню на різних МП.
Автоматизація ППП. шляхи розвитку ПП масового призначення відображені в ряді монографій [ ], зокрема методи побудови прикладних СП на прикладі створення сімейства ППП (В.Н.Редько, І.В.Сергієнко, О.С.Стукало) загального, проблемного та оптимізаційного призначення, зокрема широковідомого на той час сімейства пакетів ДІСПРО. в ньому сформовано низку загальних функціональних, системних та сервісних функцій для кожного члена сімейств та специфічних мов постановки задач для конкретного члена сімейства, що використовується при рішенні конкретних завдань. обґрунтовано структуру системи прийняття рішень – СППР, яка відпрацьована на ряді конкретних систем (Дістав, ДІСОД, тощо), що базувалась на сучасних СУБД [ 22].
В монографії запропоновані узагальнені методи та засоби до побудови ППП за функціональним підходом, модульної архітектурою програмних об’єктів реалізації функцій, принцип інтеграції та оригінальна модель виконання завдань в різних ППП для рішенні задач.
В руслі поширеної технології баз знань в ній розглянуті інтелектуальні прикладні ПС про формальне подання знань (наприклад, у галузі будування залізних доріг) з використанням логіки ісчислення виказувань, індуктивних методів виводу та емпіричних пропозицій та різних гіпотез. механізми індуктивних виводів застосовуються при аналізу ситуацій аналізованої системи.
В роботі сформульовані перспективні напрями розвитку ППП і СППР для майбутніх поколінь таких систем, які зараз застосовуються в системах управлінні, в сучасних асу та в автоматизованих системах, що працюють у нових гетерогенних середовищах.
