Методи забезпечення працездатності програмних систем в процесі їх оновлення

Автор: Пфайфер Володимир Васильович
Кваліфікаційний рівень: магістр
Спеціальність: Інформаційні мережі зв'язку
Інститут: Інститут телекомунікацій, радіоелектроніки та електронної техніки
Форма навчання: денна
Навчальний рік: 2023-2024 н.р.
Мова захисту: українська
Анотація: В умовах постійного прогресу в ІТ секторі програмне забезпечення має постійно розвиватися, щоб залишатися лідером на ринку. Зміни неминучі. Наприклад, Леман стверджував, що програмне забезпечення «проходить постійні зміни або стає поступово менш корисним» [1]. Оновлення і підтримка компонентів програмного забезпечення в актуальному стані відіграє особливо важливу роль в розподілених системах які повсюдно використовуються, зокрема, програмні маршрутизатори, комутатори, контролери мереж, шлюзи, фаєрволи, сервери, елементи ядра мобільних систем, такі як реєстри, пакетні комутатори, білінг системи і т.д. У межах даної роботи увагу сфокусовано навколо питання оновлення ПЗ, зокрема таких компонентів, як бібліотеки, модулі, та фреймворки, оскільки їх використання при написанні коду стало загальною практикою в сучасній розробці завдяки таким перевагам як повторне використання коду, модульність, стандартизація коду, та підвищення швидкості розробки. Проте, попри переваги, використання залежностей має й свої ризики – конфлікти версій, проблеми сумісності при оновленні, залежність від сторонніх сервісів, прогалини в безпеці [2,3,4]. На сьогодні процес розробки й оновлення ПЗ в галузі ІТ базується на методах безперервної інтеграції та безперервного розгортання (CI/CD), що дає змогу автоматизувати процеси [5]. Незважаючи на це, оновлення залежностей ПЗ часто-густо відбувається за стандартним методом, який здійснюється вручну чи з використанням елементів автоматизації, що в обох випадках є малоефективним процесом, який потребує значних затрат часу, та уваги розробника. У випадку погіршення продуктивності ПЗ після оновлення залежностей, тривалість пошуку та виправлення причини, яка призвела до уповільнення роботи розподіленої системи, залежить від ручного процесу який покладається на розробників системи - це є наступний суттєвий недолік загальнопоширеного методу. Тому коли критичне ПЗ потребує термінового оновлення через те, що необхідно виправити критичну несправність чи виявлену прогалину в безпеці, тривалість оновлення, тестування та розгортання повинні бути мінімізовані, для того щоб гарантувати стабільну, надійну та безпечну роботу всієї розподіленої системи. Метою магістерської кваліфікаційної роботи є забезпечити надійну, стабільну та безпечну роботу розподілених інформаційно-комунікаційних систем шляхом автоматизаціїї процесу оновлень компонентів програмного забезпечення. Досягнення поставленої мети здійснюється розв’язанням таких завдань: аналіз життєвого циклу розробки програмного забезпечення та методології безперервної інтеграції та розгортання змін CI/CD; дослідження впливу оновлення залежностей на продуктивність програмного забезпечення; дослідження процесу оновлення залежностей із вразливостями відповідно до існуючого загально прийнятого методу; написання скрипта для автоматизованого виконання кроків оновлення програмного забезпечення; розроблення удосконаленого методу автоматизованого оновлення критичних систем. Об’єкт дослідження – процес оновлення програмного забезпечення. Предмет дослідження - методи оновлення компонентів програмного забезпечення Методи дослідження - емпіричні (експеримент, спостереження, опис) та теоретичні (аналіз, синтез). У першому розділі проведено аналітичний огляд ключових аспектів життєвого циклу розробки програмного забезпечення (SDLC) та методології безперервної інтеграції та розгортання змін (CI/CD). У другому розділі проаналізовано ключові аспекти тестування продуктивності програмних інтерфейсів (API), та досліджено концепцію залежностей від коду (Code Dependencies) і процес їх оновлення загальноприйнятим методом. У третьому розділі удосконалено стандартний метод оновлення компонентів ПЗ, запропоновано новий метод, який включає цілковиту автоматизацію кроків, розроблено відповідний сценарій для автоматизації процесу в середовищі GitHub Actions, і досліджено виконання удосконалених методів. У четвертому розділі проведено порівняльний аналіз ефективності розглянутих методів. Експериментальні результати підтверджують, що розроблений метод оновлення залежностей ПЗ є на 36% ефективнішим, скорочуючи загальний час виконання до 30 хвилин та виключаючи активну участь розробника, що зменшує його витрати часу на більше ніж 90%. П’ятий розділ присвячено аналізу техніко-економічної доцільності впровадження автоматизованого тестування програмного забезпечення.