МЕТОДИ АНАЛІЗУ ВИХІДНИХ ТЕКСТІВ ПРОГРАМ

Автор(и)

  • S. Kuzhel
  • A. Lytvynov
  • O. Pliekhov

DOI:

https://doi.org/10.26906/SUNZ.2025.3.106

Ключові слова:

аналіз вихідного коду, статичний аналіз, динамічний аналіз, помилки в програмному забезпеченні, безпека коду, якість програмного забезпечення, інструменти аналізу, штучний інтелект, машинне навчання, автоматизована перевірка, code2vec, VulLibMiner, CI/CD

Анотація

Актуальність. Актуальність дослідження методів аналізу вихідних текстів програм зумовлена низкою сучасних тенденцій у сфері програмної інженерії. З одного боку, зростає складність і масштаби програмних рішень, що обумовлює необхідність підвищення якості та стабільності програмного забезпечення. З іншого боку, зростає частота кіберзагроз, що змушує особливу увагу приділяти безпеці програмного коду. Сучасні програмні системи задіяні у критичних сферах: фінансових операціях, охороні здоров'я, автоматизації виробництва, управлінні інфраструктурою тощо. Помилки і недоліки в таких системах можуть мати серйозні наслідки, що призводять до великих економічних втрат, збоїв у роботі критичних служб і навіть створюють загрозу життю людей. В умовах посилення конкуренції та стрімкої цифровізації якість програмного забезпечення стає визначальним фактором успіху компаній на ринку. Впровадження ефективних методів аналізу вихідних текстів програм стає необхідністю не лише для великих підприємств, але й для малих і середніх компаній, що прагнуть створювати надійне та безпечне програмне забезпечення. Окремо варто підкреслити перспективність інтеграції сучасних технологій штучного інтелекту та машинного навчання у процес аналізу коду. Такі підходи дозволяють здійснювати автоматичний пошук і класифікацію помилок, що значно скорочує витрати часу на їх виявлення і усунення, а також підвищує точність та ефективність аналізу. Таким чином, розвиток та поглиблення досліджень у сфері методів аналізу вихідних текстів програм є важливим завданням сучасної програмної інженерії, що дозволяє вирішувати актуальні проблеми забезпечення якості та безпеки програмних систем. Об'єкт дослідження: вихідні тексти програмного забезпечення як структура, що підлягає формальному, семантичному та поведінковому аналізу з метою виявлення помилок, вразливостей, недоліків архітектури та порушень стандартів кодування. Мета статті: дослідження існуючих методів аналізу вихідних текстів програм, зокрема статичних і динамічних підходів, їх інструментального забезпечення та перспектив застосування сучасних технологій, зокрема штучного інтелекту, для підвищення ефективності виявлення помилок, забезпечення якості, надійності та безпеки програмного коду на всіх етапах життєвого циклу розробки програмного забезпечення. Результати дослідження. Систематизовано класифікацію методів аналізу вихідного коду програмного забезпечення, зокрема статичних, динамічних, гібридних та інтелектуальних. Проведено порівняльний аналіз статичного та динамічного підходів за ключовими критеріями: ефективність, охоплення помилок, ресурсомісткість та застосовність на різних етапах життєвого циклу ПЗ. Визначено типові категорії помилок, які виявляються динамічними методами: витоки пам’яті, помилки доступу до ресурсів та проблеми продуктивності. Проаналізовано можливості використання інтелектуальних інструментів, зокрема нейромережевих моделей (code2vec, VulLibMiner), для автоматизованого аналізу та прогнозування вразливостей. Обґрунтовано доцільність комплексного підходу, що поєднує статичний і динамічний аналіз, як найбільш ефективну стратегію забезпечення якості та безпеки програмного забезпечення. Висновки. Статичний аналіз ефективний для раннього виявлення помилок і відповідності коду стандартам. Динамічний аналіз необхідний для виявлення помилок виконання, таких як витоки пам’яті та умови гонки. Жоден метод не є універсальним. Найкращі результати дає їх поєднання. Інтелектуальні підходи (AI/ML) значно підвищують автоматизацію та точність аналізу. Комплексне впровадження аналізу коду сприяє створенню безпечного, якісного та підтримуваного ПЗ.

Завантаження

Дані завантаження ще не доступні.

Посилання

1. C. Sadowski, J. van Gogh, Jaspan C., E. Söderberg, C. Winter. Tricorder: Building a program analysis ecosystem. ICSE '15: Proceedings of the 37th International Conference on Software Engineering, vol., 2015. P. 598-608. https://doi.org/10.1109/ICSE.2015.76 . DOI: https://doi.org/10.1109/ICSE.2015.76

2. Ayewah N., Pugh W. The Google FindBugs fixit. ISSTA '10: Proceedings of the 19th international symposium on Software testing and analysis, 2010. P. 241-252. https://doi.org/10.1145/1831708.1831738 . DOI: https://doi.org/10.1145/1831708.1831738

3. B. Chess, G. McGraw. Static Analysis for Security. IEEE Security & Privacy, vol. 2, No. 6, 2004. P. 76-79. https://doi.org/10.1109/MSP.2004.111 . DOI: https://doi.org/10.1109/MSP.2004.111

4. Z. Li, L. Tan, Y. Wang, S. Lu, Y. Zhou, C. Zhai. Have Things Changed Now? An Empirical Study of Bug Characteristics in Modern Open Source Software. Proceedings of the 1st Workshop on Architectural and System Support for Improving Software Dependability, ASID 2006, San Jose, California, USA, October 21, 2006. 9 p. https://doi.org/10.1145/1181309.1181314. DOI: https://doi.org/10.1145/1181309.1181314

5. T. Chen, L. Li, B. Shan, G. Liang, D. Li, Q. Wang, T. Xie. Identifying Vulnerable Third-Party Java Libraries from Textual Descriptions of Vulnerabilities and Libraries. Cornell University. Computer Science. Cryptography and Security, 2023. 23 p. https://doi.org/10.48550/arXiv.2307.08206 .

6. Uri Alon, Meital Zilberstein, Omer Levy, Eran Yahav. code2vec: Learning Distributed Representations of Code. Cornell University. Computer Science. Machine Learning, 2018. 23 p. https://doi.org/10.48550/arXiv.1803.09473 . DOI: https://doi.org/10.1145/3290353

7. Flach P. A. Machine Learning: The Art and Science of Algoritms that Makes Sense of Data. Cambridge: Cambridge University Press, 2012. 291 p. https://doi.org/10.1017/CBO9780511973000 . DOI: https://doi.org/10.1017/CBO9780511973000

Downloads

Опубліковано

2025-09-30

Номер

Розділ

Інформаційні технології