Гнучкі методології розробки ПЗ

Обов'язкова дисципліна
Навчальна дисципліна професійної підготовки
Обсяг освітнього компонента: 
• у кредитах ЄКТС — 4.5.
Кількість аудиторних занять: 
15 лекцій, 7 практичних занять.
Самостійна робота: 
складає 91 годину. Самостійна робота здобувача відбувається впродовж семестру та складається з підготовки до аудиторних занять та контрольних заходів.
Індивідуальна робота: 
• очна форма — розрахунково-графічна робота.
Семестровий контроль: 
Залік.
Освітню компоненту забезпечує: 
Анотація: 

Анотація навчальної дисципліни

Мета вивчення дисципліни 
формування теоретичних знань та практичних навичок щодо застосування різних практик гнучких методологій для розробки та управління програмним проектом, вивчення найкращих практик програмної інженерії.

Практичне значення та використання отриманих знань 
ознайомитись з Маніфестом гнучкої розробки програмного забезпечення і 12 принципах, що лежать в його основі; оволодіти загальними засадами теорії та практик гнучких методологій розробки програмного забезпечення; вивчити особливості застосування управлінських та інженерних практик, в тому числі з метою мінімізації ризиків успішної розробки програмного забезпечення; розуміти основні процеси управління проектами, що виконуються за гнучкими методологіями.
Основні результати навчання

ПРН03. Знати основні процеси, фази та ітерації життєвого циклу програмного забезпечення.
ПРН06. Вміти вибирати та використовувати відповідні задачі методологію створення програмного забезпечення.
ПРН14. Застосовувати на практиці інструментальні програмні засоби доменного аналізу, проектування, тестування, візуалізації, вимірювань та документування програмного забезпечення. 
ПРН15. Мотивовано обирати мови програмування та технології розробки для розв’язання завдань створення і супроводження програмного забезпечення. 
ПРН16. Мати навички командної розробки, погодження, оформлення і випуску всіх видів програмної документації. 
ПРН17. Вміти застосовувати методи компонентної розробки програмного забезпечення.
ПРН22. Знати та вміти застосовувати методи та засоби управління проектами. 
ПРН23. Вміти документувати та презентувати результати розробки програмного забезпечення.
ПРН25. Здатність планувати, здійснювати та розвивати комунікації в команді та з зацікавленими сторонами. 
ПРН26. Здатність ефективно формувати комунікаційну стратегію через точність аргументації. 
ПРН27. Здатність спілкуватися з колегами, клієнтами, партнерами щодо конкретних питань моделювання, проектування та програмування комп’ютерних систем.
ПРН32. Здатність до ефективної роботи в команді.

Тематика та види навчальних занять

1 тиждень
Лекція 1. Методології розробки програмного забезпечення. Особливості Agile та Waterfall. Agile-маніфест та його принципи. 
Виконання розрахунково-графічної роботи. Одержання й уточнення завдання.

2 тиждень
Лекція 2. Сильні і слабкі сторони Agile. Довгострокове планування в Agile. Основні практики Agile. Agile та визначення бізнес-цінності для клієнта. 
Практичне заняття 1. Методології Agile: освоєння основних термінів та визначень. Практичні цінності маніфесту гнучкої розробки. Обговорення шляхів масштабування та впровадження Agile.
Виконання розрахунково-графічної роботи. Одержання й уточнення завдання.

3 тиждень
Лекція 3. Scrum – гнучкий управлінський фреймворк. Принципи та особливості Scrum. Цінності Scrum. Сильні і слабкі сторони Scrum.
Виконання розрахунково-графічної роботи. Визначення профілю студента у команді

4 тиждень
Лекція 4. Загальна схема роботи Scrum. Ролі в Scrum. Артефакти. Процеси. 
Практичне заняття 2. Оволодіння принципами роботи з управлінським фреймворком Scrum. Робота з тайм-боксами: планування релізу, планування, перегляд та ретроспектива спринту.
Виконання розрахунково-графічної роботи. Написання User Stories.

5 тиждень
Лекція 5. Історії користувача. INVEST історії користувача. Принципи побудови діаграм згоряння.
Виконання розрахунково-графічної роботи. Написання User Stories.

6 тиждень
Лекція 6. Scrum-покер – ігровий метод для оцінки складності виконання задачі: процедура проведення та переваги методу. Гра в оцінювання. 
Практичне заняття 3. Практичне оволодіння артефактами Scrum. Створення User story, Story mapping, Story Points. Побудова діаграми згоряння. 
Виконання розрахунково-графічної роботи. Оцінювання складності історій користувача в Story Points.

7 тиждень
Лекція 7. Методологія розробки програмного забезпечення Kanban. Основні принципи та умови застосування. Візуалізація процесів. Дошки та картки в Kanban. 
Виконання розрахунково-графічної роботи. Оцінювання складності історій користувача в Story Points.

8 тиждень
Лекція 8. Карта потоку створення цінності: призначення, спосіб формування, покрокове керівництво. 
Практичне заняття 4. Практичне оволодіння методологією розробки Kanban. Робота з дошкою Kanban. 
Виконання розрахунково-графічної роботи. Будування Story Map, розробка плану першого спринта.
Модульна контрольна робота 1.

9 тиждень
Лекція 9. Методологія бережливого виробництва Lean Management. Постулати Lean. Практичні аспекти впровадження Lean Management. 
Виконання розрахунково-графічної роботи. Будування Story Map, розробка плану першого спринта.

10 тиждень
Лекція 10. Екстремальне програмування (XP). Практики ХР. Переваги і недоліки XP. Принципи XP. 
Практичне заняття 5. Практичне оволодіння методологією розробки програмного забезпечення Lean.
Виконання розрахунково-графічної роботи. Моделювання тайм-боксу. Демонстрація методології Scrum. 

11 тиждень
Лекція 11. Методика розробки через тестування Test-driven Development (TDD).
Виконання розрахунково-графічної роботи. Застосування принципів Lean до розробки програмного проекту.

12 тиждень
Лекція 12. Предметно-орієнтоване проектування (DDD): основні визначення, концепція, будівельні блоки. Розробка, керована поведінкою (BDD): опис, специфікація поведінки. Розробка, керована функціональними можливостями (FDD). П’ять процесів FDD. 
Практичне заняття 6. Практичне оволодіння процесами екстремального програмування. Розробка програми з використанням методики Test-driven Development.
Виконання розрахунково-графічної роботи. Проведення ретроспективи.

13 тиждень
Лекція 13. Рефакторинг: призначення, умови застосування. Проблеми рефакторингу. Методи рефакторингу. Визначення умов, коли рефакторинг не потрібен.
Виконання розрахунково-графічної роботи. Оформлення презентації та пояснювальної записки.

14 тиждень
Лекція 14. Розширений каталог методів рефакторингу. Практичні програмні приклади. 
Практичне заняття 7. Практичне оволодіння методами рефакторингу. Розбір та удосконалення програмного коду з використанням методів рефакторингу.
Виконання розрахунково-графічної роботи. Командний захист розрахунково-графічної роботи.

15 тиждень
Лекція 15. Постійна інтеграція: призначення, умови застосування методів постійної інтеграції. Методи та переваги постійної інтеграції. 
Модульна контрольна робота 2.

Оцінювання результатів навчання

Оцінювання результатів навчання з дисципліни здійснюється за накопичувальною системою, яка дає можливість здобувачеві протягом семестру отримати максимально 100 балів.

Модуль 1
Оцінка за виконання завдання на  практичних заняттях – максимально 10 балів за модуль. 
Оцінка за виконання завдання з розрахунково-графічної роботи – максимально 10 балів за модуль.
Модульна контрольна робота 1 – за бездоганне виконання 30 балів (в кожному завданні модульної контрольної роботи наведено максимальну кількість балів за виконання завдання). 
Модуль 2
Оцінка за виконання завдання на  практичних заняттях – максимально 10 балів за модуль. 
Оцінка за виконання завдання з розрахунково-графічної роботи – максимально 10 балів за модуль.
Модульна контрольна робота 2 – за бездоганне виконання 30 балів (в кожному завданні модульної контрольної роботи наведено максимальну кількість балів за виконання завдання). 

Література
1.    Блискучий Agile: Практичний посібник для проєкт-менеджерів із використання Agile, Scrum, Kanban / Роб Коул, Едвард Скотчер; пер. з англ. Л. Кухарчук. — Харків : Вид-во «Ранок » : Фабула, 2020. — 192 с.
2.    Ken Schwaber, Jeff Sutherland. The Scrum Guide. The Definitive Guide to Scrum: The Rules of the Game. 2020. – 13 p.
3.    Daniel S. Vacanti. The Kanban Guide. 2020. – 9 р.
4.    Бахам К., Гіршхайм Р. Питання, виклики та запропоноване теоретичне ядро гнучкої розробки програмного забезпечення. Журнал інформаційних систем. 2021. – Pp. 103-129. DOI: https://doi.org/10.1111/isj.12336
5.    D. Staegemann, M. Volk, M. Perera, Chr. Haertel, M. Pohl, Chr. Daase, and K. Turowski, “A Literature Review on the Challenges of Applying Test Driven Development in Software Engineering,” Complex Systems Informatics and Modeling Quarterly, CSIMQ, no. 31, pp. 18–28, 2022. Available: https://doi.org/10.7250/csimq.2022-31.02  . 
6.    Мартін Р. Чистий код: створення і рефакторинг за допомогою Agile / пер. з англ. — Харків : Вид-во «Ранок» : Фабула, 2019. — 448 с.

2022 рік