Застосування методів машинного навчання в інженерії програмного забезпечення

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

 Анотація навчальної дисципліни
Цей курс знайомит студентів з можливостями, які відкриває використання сучасних технологій машинного навчання (ML) в розробці програмного забезпечення (ПЗ). Студенти дізнаються, як ML може допосогти автоматизувати тестування, оцінювати якість коду, прогнозувати технічний борг та оптимізувати процеси розробки. Протягом курсу розглядаються різні алгоритми та практичні інструменти, а також підходи до вирішення реальних інженерних завдання з використанням цих методів.

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

Лекційні заняття
Лекція 1. «Вступ до машинного навчання: основні поняття і ролі в інженерії ПЗ». Основи ML, типи навчання, основні застосування в ПЗ.
Лекція 2. «Типи даних і їх підготовка для ML у програмному забезпеченні». Збір даних, очищення, перетворення, особливості підготовки даних для прогнозування в ПЗ.
Лекція 3. «Алгоритми класифікації та регресії в контексті ПЗ». Огляд алгоритмів класифікації та регресії: застосування для оцінки помилок та якості коду.
Лекція 4. «Нейронні мережі та їх застосування в автоматизації процесів ПЗ». Основи нейронних мереж, навчання моделей для автоматизації тестування та аналізу коду.
Лекція 5. «Побудова моделей для прогнозування якості програмного забезпечення». Метрики якості ПЗ та моделі для їх прогнозування з використанням ML.
Лекція 6. «Оцінка технічного боргу за допомогою ML». Методи автоматичного визначення технічного боргу та його впливу на розробку ПЗ.
Лекція 7. «Машинне навчання в управлінні проектами та плануванні». Використання ML для прогнозування термінів виконання, управління ризиками та оптимізації процесів розробки.
Лекція 8. «Автоматизоване тестування програмного забезпечення з ML». Як ML може автоматизувати генерацію тест-кейсів та управління тестуванням.
Лекція 9. «Машинне навчання для аналізу коду та виявлення вразливостей». Статичний та динамічний аналіз коду за допомогою ML, виявлення дефектів та антипатернів.
Лекція 10. «Оптимізація системного ресурсу та продуктивності програмного забезпечення». Використання ML для підвищення ефективності використання ресурсів ПЗ.
Лекція 11. «Інтеграція ML моделей у архітектуру програмного забезпечення». Стратегії та виклики інтеграції ML моделей у ПЗ, управління моделями в production-середовищі.
Лекція 12. «Розгортання та масштабування ML моделей у програмних системах». Практичні аспекти розгортання ML моделей у хмарних сервісах та мікросервісах.
Лекція 13. «Трансферне навчання та його застосування в розробці програмного забезпечення». Як використовувати попередньо навчені моделі для вирішення нових задач у ПЗ.
Лекція 14. «Натуральна мова в розробці ПЗ: використання NLP для документації та зворотного зв'язку». Використання NLP для обробки вимог, специфікацій та автоматизації аналізу користувацького зворотного зв’язку.
Лекція 15. «Майбутнє машинного навчання в інженерії програмного забезпечення». Огляд нових напрямків досліджень та технологій на стику ML і програмної інженерії.

Лабораторні роботи
Лабораторна робота №1. «Підготовка даних для прогнозування дефектів у програмному забезпеченні».
Мета роботи: Опанувати методи підготовки та обробки даних для машинного навчання на прикладі прогнозування дефектів у коді. 
Лабораторна робота №2. «Побудова моделі для прогнозування кількості помилок у коді».
Мета роботи: Навчитися будувати і тренувати модель регресії для прогнозування помилок у коді на основі метрик коду, таких як кількість рядків коду, кількість змін і складність.
Лабораторна робота №3. «Автоматизація тестування програмного забезпечення з використанням ML».
Мета роботи: Навчитися використовувати алгоритми класифікації для автоматичної генерації тест-кейсів на основі вихідних даних та можливих сценаріїв використання.
Лабораторна робота №4. «Аналіз коду для виявлення вразливостей за допомогою машинного навчання».
Мета роботи: Створення моделі для виявлення потенційних вразливостей у коді.
Лабораторна робота №5. «Інтеграція ML-моделі в десктоп-застосунок для аналізу коду».
Мета роботи: Навчитися інтегрувати модель машинного навчання безпосередньо в десктоп-застосунок.
Лабораторна робота №6-7. «Вирішення задачі програмної інженерії з застосуванням методів ML».
Мета роботи: Продемонструвати вміння реалізувати ML-рішення для розвязання конкретної проблему в розробці ПЗ (тестування, аналіз якості, оптимізація ресурсів тощо).

Консультації здійснюються впродовж семестру згідно встановленого розкладу.

 Індивідуальна робота
Індивідуальна робота не передбачена

 Форми контрольних заходів та оцінювання результатів навчання
Модульні контрольні роботи №1 і №2 виконуються у формі онлайн-тестів. Максимальна оцінка за бездоганне виконання модульних контрольних робіт становить 30 балів.
Модульні контрольні роботи містять відповіді на теоретичні питання. Бали за питання розподіляються порівну.
За результатами виконання лабораторних робіт та опитувань при захисті робіт студент може отримати до 20 балів за кожний модуль, тобто 40 балів за семестр. Якщо студент виконав лабораторну роботу або відповів на опитування бездоганно та своєчасно, то ставиться максимальний бал; якщо правильно, але неповно, то знімається 1/2 або 1/3 від максимального балу залежно від ступеня повноти; якщо невірно, то знімаються всі бали.
Максимальна оцінка, яку може отримати здобувач за всі виконані види робіт – 100 балів.
Підсумковим контролем з дисципліни є залік. Залік виставляється за підсумками модульних контрольних робіт та накопичувальної частини дисципліни.

 Політика освітнього процесу та умови допуску до підсумкового контролю
    Здобувач зобов’язаний своєчасно та якісно виконувати всі отримані завдання; за необхідністю з метою з’ясування всіх незрозумілих під час самостійної роботи питань відвідувати консультації викладача.
    Здобувач зобов’язаний дотримуватись принципів академічної доброчесності.
    У разі застосування засобів штучного інтелекту при виконанні оцінюваних робіт здобувач має явно зазначити, які саме і для чого саме було застосовано ці засоби.
    Виконаний не свій варіант завдання здобувачем не оцінюється.
    Робота, яка виконана після встановлених викладачем термінів, не приймається.
    Відсутність здобувача на контрольній роботі відповідає оцінці «0».
    Складання/перескладання заліку – за встановленим деканатом розкладом.
 

Компетентності: 

К1. Здатність застосовувати методи машинного навчання для покращення процесів розробки, тестування та підтримки програмного забезпечення

Передумови вивчення дисципліни: 

Знання базових методів машинного навчання та процесів розробки та забезпечення якості ПЗ

Результати навчання: 

РН1. Знати і вміти застосовувати сучасні методи ML та способи їх застосуванням в процесі розробки програмного забезпечення
РН2. Оцінювати і вибирати ефективні методи ML для покращення процесів на різних етапах життєвого циклу програмного забезпечення.

2024 рік