
Нові видання викладачів факультету інформаційних технологій
До фонду наукової бібліотеки надійшли видання викладачів факультету інформаційних технологій Хмельницького національного університету, які були надруковані редакційно-видавничим відділом університету протягом 2024 року.
Навчальний посібник «Основи програмної інженерії та тестування програмного забезпечення. Теоретичний курс та лабораторний практикум».
Авторський колектив – викладачі кафедри комп’ютерних наук Олександр Бармак (д-р техн. наук, проф., завідувач кафедри), Валерія Кліменко, Олександр Мазурець (канд. техн. наук, доц.), Марина Молчанова, Олена Собко.
✦ Зміст
РОЗДІЛ І. ТЕОРЕТИЧНИЙ КУРС…… 13
ТЕМА 1. Життєвий цикл розробки програмного забезпечення…..13
1.1. Основи програмної інженерії та проблеми розробки програмного забезпечення……13
1.2. Цільові об’єкти програмної інженерії……..14
1.3. Життєвий цикл розробки ПЗ. Міжнародні стандарти життєвого циклу ПЗ…14
1.4. Структура програмного забезпечення……..15
1.5. Моделі та методології розробки програмного забезпечення….16
1.6. Методи та інструменти програмної інженерії……19
1.7. Розробка проектної документації відповідно до вимог і обмежень замовника………19
1.8. Технічне завдання (Technical Specification)..20
Запитання для самоконтролю……21
Завдання на лабораторний практикум….21
ТЕМА 2. Основи інженерії вимог до програмного забезпечення…22
2.1. Види вимог до ПЗ. Етапи складання вимог до ПЗ………22
2.2. Функціональні вимоги. Нефункціональні вимоги. Галузеві вимоги. Вимоги до програмного забезпечення….24
2.3. Аналіз потреб користувачів та збір вимог…25
2.4. Специфікація вимог до програмного забезпечення (SRS). Компоненти SRS. Тестування вимог (RTS). Способи подання вимог до ПЗ…….25
Запитання для самоконтролю……27
Індивідуальне завдання для самостійної роботи……..27
ТЕМА 3. Гнучкі методології створення програмного забезпечення та системи керування проектами…..28
3.1. Керування життєвим циклом ПЗ. Гнучкі методології створення програмних продуктів…28
3.2. Переваги та недоліки методології гнучкої розробки……30
3.3. Сфери застосування Agile……30
3.4. Методологія Scrum……31
3.5. Методологія Kanban….33
3.6. Інструменти керування проектами…34
3.7. Середовище керування проектами Jira……35
Запитання для самоконтролю……36
Завдання на лабораторний практикум….36
Індивідуальне завдання для самостійної роботи……..36
ТЕМА 4. Системи керування версіями та сервіси для спільної роботи…….37
4.1. Системи контролю версій……37
4.2. Типи систем контролю версій..38
4.3. Система керування версіями Git……39
4.4. Вебсервіс спільної роботи GitLab та GitHub…….40
4.5. Компоненти та команди GitHub……41
4.6. Проблема конфлікту злиття версій…44
4.7. Робота з програмним кодом за допомогою GitHub Desktop…..44
Запитання для самоконтролю……45
Завдання на лабораторний практикум….45
ТЕМА 5. Проектування інтерфейсу користувача та інструменти прототипування……46
5.1. Призначення та типи інтерфейсів користувача. Введення до UI/UX…46
5.2. Етапи проектування інтерфейсу користувача (UI)……..47
5.3. Дослідження потреб та очікувань користувачів для формування UX..48
5.4. Прототипування та креативність. Види прототипів. Засоби прототипування (Figma, Sketch, Axure RP, Adobe Photoshop) …49
5.5. Компоненти дизайну (сітка, колір, типографіка)..52
5.6. Принципи UX Flow та UI Fluidity Importance……55
Запитання для самоконтролю……56
Завдання на лабораторний практикум….56
ТЕМА 6. Проектування архітектури програмного забезпечення….57
6.1. Проектування архітектури ПЗ. Принципи проектування архітектури…….57
6.2. Послідовність проектування архітектури ПЗ……58
6.3. Критерії для оцінки спроектованої архітектури….59
6.4. Концептуальна модель програмного забезпечення……..60
6.5. Структура системи та її властивості. Типи структур систем ПЗ 61
6.6. Шаблони проектування програмного забезпечення…….64
Запитання для самоконтролю……66
Практичні завдання для самостійного опрацювання…66
ТЕМА 7. Мови та засоби моделювання програмного забезпечення…….67
7.1. Підходи до моделювання ПЗ…67
7.2. Методи структурного аналізу систем……..68
7.3. Мови моделювання (UML, SysML, ArchiMate)….69
7.4. Засоби інформаційного моделювання (діаграми сценаріїв, взаємодії, станів, класів, компонентів, часові)…..70
7.5. Стандарт моделювання бізнес-процесів BPMN….71
7.6. Особливості аналізу та функціонального моделювання бізнес-процесів ..7.4
Запитання для самоконтролю……75
Практичні завдання для самостійного опрацювання…75
ТЕМА 8. Методології, технології та засоби моделювання програмного забезпечення..76
8.1. Методології моделювання ПЗ..76
8.2. Особливості дослідження характеристик і поведінки складних об’єктів і систем..77
8.3. Моделювання потоків даних (DFD)…78
8.4. Нотації DFD-діаграм…..79
8.5. Методи оцінювання ризиків проектування функціональних моделей…81
8.6. Функціональне моделювання бізнес-процесів (SADT, IDEFO).. 82
8.7. CASE-технології. Класифікація CASE-засобів. Переваги CASE-технологій……..85
8.8. Сучасні засоби автоматизації моделювання ПЗ….86
Запитання для самоконтролю……87
Завдання на лабораторний практикум….87
ТЕМА 9. Методи забезпечення та контролю якості програмного забезпечення..88
9.1. Поняття якості ПЗ. Метрики і стандарти якості ПЗ……..88
9.2. Стандарти ISO 9000 / IEEE….89
9.3. Завдання тестування ПЗ……..90
9.4. Основні принципи тестування……..90
9.5. Система моніторингу, контролю та забезпечення якості..91
9.6. Шляхи оцінювання та забезпечення якості ПЗ (Verification and Validation). Тестувальник і QA інженер…..92
Запитання для самоконтролю……93
Завдання на лабораторний практикум….93
ТЕМА 10. Планування тестування програмного забезпечення та робота з дефектами….94
10.1. Тестування програмного забезпечення…..94
10.2. Базова термінологія тестування ПЗ………94
10.3. Види тестування…….95
10.4. Життєвий цикл тестування (STLC)………95
10.5. Документація з тестування ПЗ……96
10.6. План тестування (Test Plan)..98
10.7. Пошук та документування дефектів у ПЗ..98
10.8. Пріоритетність та критичність дефектів..100
10.9. Життєвий цикл дефектів…..100
10.10. Інструментарій Jira для документування дефектів….100
Запитання для самоконтролю…..101
Завдання на лабораторний практикум….101
ТЕМА 11. Підходи та рівні тестування…….102
11.1. Підходи до тестування. Ознайомлювальне тестування, тестування за сценарієм……102
11.2. Ручне і автоматизоване тестування……..103
11.3. Позитивне і негативне тестування………103
11.4. Функціональний та структурний підходи до тестування……104
11.5. Рівні тестування. Модульне тестування (Unit testing). Інтеграційне тестування (Integration testing). Системне тестування (System testing). Приймальне тестування (Acceptance testing)…..104
11.6. Регресивне тестування та комбінування рівнів тестування … 105
11.7. Тестування продуктивності..105
11.8. Інструментальні засоби тестування……..106
11.9. Класифікація помилок…….106
Запитання для самоконтролю…..107
Практичні завдання для самостійного опрацювання..107
ТЕМА 12. Засоби ручного тестування..108
12.1. Ручне тестування. Типи ручного тестування. Переваги та недоліки ручного тестування……..108
12.2. Процес ручного тестування..109
12.3. Правила ручного тестування…….109
12.4. Інструменти для ручного тестування……109
12.5. Використання Checklist для планування розробки Test Case. Приклади Checklist…..110
12.6. Тестування поведінки ПЗ засобами Test Case…111
12.7. Життєвий цикл Test Case….113
12.8. Атрибути (поля) Test Case. Приклади Test Case……..115
12.9. Test Case Suite. Види Test Case Suite……118
12.10. Інструментальні засоби для створення Test Case……119
Запитання для самоконтролю…..120
Завдання на лабораторний практикум….120
Індивідуальне завдання для самостійної роботи……120
ТЕМА 13. Засоби автоматизованого тестування…..121
13.1. Автоматизація тестування. Переваги та недоліки……121
13.2. Інструменти та технології автоматизації тестування….122
13.3. Генератори тестів. Структура тестового набору для автоматизованого прогону. Додатки для автоматизованого прогону тестів..123
13.4. Сервера постійної інтеграції (Hudson, CruiseControl)…124
13.5. Порівняння витрат та ефективності різних методів тестування…….124
Запитання для самоконтролю…..125
Практичні завдання для самостійного опрацювання..125
ТЕМА 14. Спеціалізовані фреймворки для модульного тестування……126
14.1. Основні принципи модульного тестування. Типи модульних тестів……126
14.2. Переваги та недоліки модульного тестування..126
14.3. Інструменти модульного тестування. Фреймворки для модульного тестування……..127
14.4. Фреймворки для модульного тестування..127
14.5. Тестування ПЗ за допомогою Unit Test….128
14.6. Правила написання модульних тестів. Інструменти модульного тестування……..130
14.7. Генерація звітів з тестування Unit Test….130
Запитання для самоконтролю…..131
Завдання на лабораторний практикум….131
Індивідуальне завдання для самостійної роботи……131
ТЕМА 15. Тестування інтерфейсу користувача……132
15.1. Завдання і цілі тестування UI……132
15.2. Типи вимог до UI….133
15.3. Функціональне тестування UI……134
15.4. Тестування зручності використання UI…135
15.5. Методи тестування UI…….135
15.6. Ітеративний підхід до покращення UI/UX…….136
15.7. Проблеми тестування UI….136
Запитання для самоконтролю…..137
Практичні завдання для самостійного опрацювання..137
ТЕМА 16. Проектування діаграм розгортання програмного
забезпечення…….138
16.1. Розгортання програмного застосунку…..138
16.2. Ключові ролі у розгортанні програмного забезпечення…….139
16.3. Планування розгортання. План розгортання. Переваги планування розгортання……140
16.4. Підготовка середовища для розгортання. Переваги підготовки середовища для розгортання..141
16.5. Кроки підготовки середовища для розгортання………141
16.6. Інсталяція програмного продукту. Етапи установки програмного продукту. Види установки програмного продукту……..142
16.7. Навчання користувачів і персоналу. Мета навчання користувачів і персоналу. Типи навчання..142
16.8. Вимоги до розгортання. Мета вимог до розгортання…143
16.9. Діаграма розгортання програмного забезпечення. Елементи діаграми розгортання. Типи діаграм розгортання……..143
16.10. Створення діаграм розгортання….144
16.11. Переваги діаграм розгортання….145
Запитання для самоконтролю…..145
Завдання на лабораторний практикум….145
ТЕМА 17. Керування супроводом програмного забезпечення…..146
17.1. Особливості супроводу програмного забезпечення….146
17.2. Керування супроводом ПЗ..147
17.3. План супроводу ПЗ….147
17.4. Процеси супроводу ПЗ……148
17.5. Техніки супроводу ПЗ…….149
Запитання для самоконтролю…..149
Практичні завдання для самостійного опрацювання..149
ТЕМА 18. Тестування програмного забезпечення засобами штучного інтелекту….150
18.1. Напрямки застосування ШІ для тестування ПЗ………150
18.2. Автоматизоване візуальне тестування ПЗ (Automated Visual Software Testing)…….151
18.3. Інтелектуальне програмування агентів тестування…..151
18.4. IntelliTest, як засіб для автоматизації тестування з використанням ШІ….153
Запитання для самоконтролю…..154
Практичні завдання для самостійного опрацювання..154
ПЕРЕЛІК ЛІТЕРАТУРИ ДО ТЕОРЕТИЧНОГО КУРСУ…155
РОЗДІЛ II. ЛАБОРАТОРНИЙ ПРАКТИКУМ……..157
Лабораторна робота 1. Створення технічного завдання для
розробки ПЗ……..157
Лабораторна робота 2. Використання Jira для керування проектами за
методологією Scrum……165
Лабораторна робота 3. Використання GitHub та GitHub Desktop для
керування версіями та спільної роботи…….174
Лабораторна робота 4. Проектування та креативне прототипування UI з
використанням Figma…..187
Лабораторна робота 5. Прикладне моделювання потоків даних (DFD) та
функціональних моделей бізнес-процесів (IDEF0)..194
Лабораторна робота 6. Пошук та документування дефектів…….198
Лабораторна робота 7. Розробка Checklist, Test Case та Test Case Suite для
тестування ПЗ……207
Лабораторна робота 8. Розробка Unit Test та тестування ПЗ за допомогою
фреймворків……214
Лабораторна робота 9. Визначення вимог до розгортання та проектування
діаграми розгортання ПЗ..225
Самостійна робота №1. Розробка специфікації вимог до ПЗ (SRS)……231
Самостійна робота №2. Використання Trello для керування проектами за
методологією Kanban…..232
Самостійна робота №3. Розробка Checklist, Test Case та Test Case Suite для
тестування ПЗ……233
Самостійна робота №4. Розробка Unit Test та тестування ПЗ за допомогою
фреймворку nUnit………234
ПЕРЕЛІК ЛІТЕРАТУРИ ДО ЛАБОРАТОРНОГО ПРАКТИКУМУ……235
Навчальний посібник «Технології створення програмних продуктів. Теоретичний курс та лабораторний практикум».
Авторський колектив – викладачі кафедри комп’ютерних наук Едуард Манзюк (д-р техн. наук, проф.), Олександр Бармак (д-р техн. наук, проф., завідувач кафедри), Павло Радюк (Ph.D.), Марина Молчанова, Олександр Пасічник (канд. техн. наук, доц.), Руслан Багрій (канд. техн. наук, доц.).
✦ Зміст
РОЗДІЛ І. ТЕОРЕТИЧНИЙ КУРС……………9
ТЕМА 1. Шаблони проектування GoF. Породжуючі шаблони…………9
1.1. Вступ в шаблони проектування………….9
1.2. Абстрактна фабрика (Abstract Factory)……..11
1.3. Будівельник (Builder)……….17
1.4. Метод фабрики (Factory Method)………23
1.5. Прототип (Prototype)………..29
1.6. Одинак (Singleton)…….33
Запитання для самоконтролю….37
Завдання на лабораторний практикум……..37
ТЕМА 2. Шаблони проектування GoF. Поведінкові шаблони………..38
2.1. Ланцюг відповідальності (Chain of Responsibility)…….38
2.2. Команда (Command)….42
2.3. Інтерпретатор (Interpreter)..47
2.4. Ітератор (Iterator)………60
2.5. Посередник (Mediator)……..63
2.6. Зберігач (Memento)……68
2.7. Спостерігач (Observer)……..72
2.8. Стан (State)………76
2.9. Стратегія (Strategy)……81
2.10. Метод шаблону (Template Method)….83
2.11. Відвідувач (Visitor)….85
Запитання для самоконтролю….91
Завдання на лабораторний практикум……..91
ТЕМА 3. Шаблони проектування GoF. Структурні шаблони…..92
3.1. Адаптер (Adapter)……..92
3.2. Міст (Bridge)……94
3.3. Декоратор (Decorator)………98
3.4. Компоновщик (Composite)……..102
3.5. Фасад (Facade)…………107
3.6. Заступник (Proxy)……ПО
3.7. Пристосуванець (Flyweight)…..114
Запитання для самоконтролю..119
Завдання на лабораторний практикум……120
ТЕМА 4. Розширення шаблонів GoF…….121
4.1. Віртуальний заступник (Virtual Proxy)……121
4.2. Керування кешем (Cache Management)…..126
4.3. Пул об’єктів (Object Pool)………135
4.4. Динамічне компонування (Dynamic Linkage)…141
Запитання для самоконтролю..147
Практичні завдання для самостійного опрацювання……..148
ТЕМА 5. Шаблони для конкуруючих операцій……..149
5.1. Однопотокове виконання (Single Threated Execution)……..149
5.2. Об’єкт блокування (Lock Object)……..156
5.3. Охоронюване припинення (Guarder Suspension)……..160
5.4. Скасування (Balking)………166
5.5. Планувальник (Scheduler)………169
5.6. Блокування читання/запису (Read/Write Lock)………..175
5.7. Виробник-Споживач (Producer-Consumer)……..179
5.8. Двофазне завершення (Two-Phase Termination)……….182
5.9. Подвійна буферизація (Double Buffering)……..185
5.10. Асинхронна обробка (Asynchronous Processing)…….189
5.11. Майбутнє (Future)….197
Запитання для самоконтролю..202
Практичні завдання для самостійного опрацювання……..202
ТЕМА 6. Проектування на основі обов’язків (Responsibility-Driven Design, RDD)….203
6.1. Принципи GRASP…..204
6.2. Принцип «Низька зв’язність» (Low Coupling)..205
6.3. Принцип «Високе зачеплення» (High Cohesion)………209
6.4. Принцип «Інформаційний експерт» (Information Expert)..212
6.5. Принцип «Творець (Creator)»………….218
6.6. Принцип «Чиста синтетика» (Pure Fabrication)……….219
6.7. Принцип «Перенаправлення» (Indirection)……..222
6.8. Принцип «Поліморфізм» (Polymorphism)………224
6.9. Принцип «Захищені зміни» (Protected Variations)……226
6.10. Принцип «Контролер» (Controller)……….230
Запитання для самоконтролю..236
Практичні завдання для самостійного опрацювання……..237
ТЕМА 7. Архітектура корпоративних застосувань. Шаблони логіки сутності…………238
7.1. Модель предметної області (Domain Model)…..238
7.2. Шар служб (Service Layer)……..241
7.3. Модуль таблиці (Table Module)……….243
7.4. Сценарій транзакцій (Transaction Script)…246
Запитання для самоконтролю..248
Практичні завдання для самостійного опрацювання……..248
ТЕМА 8. Архітектура корпоративних застосувань.
Шаблони архітектури джерел даних………249
8.1. Активний запис (Active Record)………249
8.2. Перетворювач даних (Data Mapper)………..251
8.3. Шлюз запису даних (Row Data Gateway)..255
8.4. Шлюз таблиці даних (Table Data Gateway)…….258
Запитання для самоконтролю..260
Практичні завдання для самостійного опрацювання……..261
ПЕРЕЛІК ЛІТЕРАТУРИ ДО ТЕОРЕТИЧНОГО КУРСУ……….262
РОЗДІЛ II. ЛАБОРАТОРНИЙ ПРАКТИКУМ…263
ЛАБОРАТОРНА РОБОТА №1 Застосування породжуючих шаблонів Abstract Factory і Builder..264
ЛАБОРАТОРНА РОБОТА №2 Застосування породжуючих шаблонів Factory Method, Prototype, Singleton……..267
ЛАБОРАТОРНА РОБОТА №3 Застосування поведінкових шаблонів Chain of Responsibility, Command, Interpreter..271
ЛАБОРАТОРНА РОБОТА №4 Застосування поведінкових шаблонів Iterator, Mediator, Memento…..276
ЛАБОРАТОРНА РОБОТА №5 Застосування поведінкових шаблонів Observer, State, Strategy…280
ЛАБОРАТОРНА РОБОТА №6 Застосування поведінкових шаблонів Visitor, Template Method, структурного шаблона Adapter…….284
ЛАБОРАТОРНА РОБОТА №7 Застосування структурних шаблонів Bridge, Composite, Decorator…..287
ЛАБОРАТОРНА РОБОТА №8 Застосування структурних шаблонів Facade, Flyweight, Proxy…………291
САМОСТІЙНА РОБОТА №1 Практичне використання шаблонів проектування для розробки програмних систем…..294
САМОСТІЙНА РОБОТА №2 Реалізація багатозадачності з використанням конкуруючих операцій…………296
САМОСТІЙНА РОБОТА №3 Проектування об’єктно-орієнтованих систем за принципами GRASP……..298
САМОСТІЙНА РОБОТА №4 Розробка корпоративного застосунку з використанням шаблонів логіки сутності…..301
САМОСТІЙНА РОБОТА №5 Розробка корпоративного застосунку з використанням шаблонів архітектури джерел даних…303
ПЕРЕЛІК ЛІТЕРАТУРИ ДО ЛАБОРАТОРНОГО ПРАКТИКУМУ……..305
Повнотекстову версію видання можна переглянути в БД «Електронна бібліотека» (вхід для зареєстрованих користувачів бібліотеки).
Навчальний посібник «Формальні методи розроблення критичних систем».
Авторський колектив – викладачі кафедри комп’ютерної інженерії та інформаційних систем Сергій Лисенко (д.т.н., професор, заступник декана факультету інформаційних технологій з наукової та міжнародної роботи кафедри ), Дмитро Медзатий (к.т.н., доцент) у співпраці з В’ячеславом Харченком (д-р техн. наук, проф. ХАІ).
✦ Зміст
Розділ 1. Алгебра процесів дослідження безпеки
Вступ………………….5
1.1. Цільова модель низького рівня……6
1.2. Розподілене числення з учасниками та автентифікацією………….8
1.3. Еквівалентність високого рівня та безпека……..18
1.4. Конкретна реалізація…………..29
Контрольні питання…………….40
Розділ 2. Алгебри квантових процесів
Вступ…………..41
2.1. Квантові поліноміальні машини……….41
2.2. Алгебра процесу…..47
2.3. Семантика локального процесу…50
2.4. Спостереження та еквівалентність спостережень……..52
2.5. Теорема емуляції та композиції……54
2.6. Квантові докази нульового знання……..55
Контрольні питання……56
Розділ 3. Методи формальної розробки резильєнтних систем
Вступ….57
3.1. Концепція резильєнтності….57
3.2. Надійність: основні визначення……58
3.3. Цілі систем….61
3.4. Автономність і реконфігурація системи……62
3.5. Методи формальної розробки та кількісної оцінки систем…64
Контрольні питання……74
Розділ 4.
Формальна розробка та кількісна оцінка резильєнтних розподілених систем
Вступ….75
4.1. Підвищення резильєнтності
на основі функціональної декомпозиції……78
4.2. Моделювання взаємодії компонентів
із мультиагентною структурою…84
4.3. Цілеорієнтоване моделювання резильєнтних систем….90
4.4. Формальна розробка стійкої MAS на основі шаблона….91
4.5. Формальне цілеорієнтоване обґрунтування резильєнтності реконфігурованої MAS…….97
4.6. Моделювання та оцінка резильєнтних архітектур……101
Контрольні питання…..109
Література……110
Повнотекстову версію видання можна переглянути в БД «Електронна бібліотека» (вхід для зареєстрованих користувачів бібліотеки).