Аналіз існуючих підходів до автоматизації рефакторингу об’єктно-орієнтованих програмних систем
Main Article Content
Анотація
Автоматизований рефакторинг відіграє ключову роль у супроводі й еволюції об’єктно-орієнтованих програмних систем, де покращення внутрішньої структури коду є визначальним чинником підтримуваності, масштабованості та зменшення технічного боргу. У цій роботі представлено розширений огляд сучасних підходів до автоматизованого рефакторингу з акцентом на методологічні засади, рівень автоматизації, застосування штучного інтелекту та практичну інтеграцію в CI/CD-процеси. Розглянуто традиційні rule-based та graph-based методи, моделі глибокого навчання (CNN, GNN, LLM), історично обґрунтовані техніки (MSR), а також гібридні підходи із залученням людського контролю (human-in-the-loop). Особливу увагу приділено класифікації трансформацій згідно з авторитетною термінологією (Fowler): структурним, архітектурним (semantic) та поведінковим перетворенням з фокусом на збереження інваріантів поведінки. Окремо розглянуто формалізовані моделі рефакторингу як графові перетворення з чітко визначеними передумовами та постумовами, що дозволяє гарантувати семантичну еквівалентність між версіями програми. У роботі представлено приклад реального застосування інструмента DeepSmells, що демонструє змістовну трансформацію «до/після» та коментує обґрунтованість запропонованих змін. Досліджено виклики explainability та semantic drift, а також запропоновано способи їх усунення через SHAP-аналіз, attention-візуалізацію в трансформерах, інтеграцію з формальними верифікаторами (SMT, symbolic execution) та пояснювані AI-рекомендації. Окремий акцент зроблено на обмеженнях у динамічно типізованих мовах (Python, JavaScript), де типова статична перевірка втрачає ефективність. Узагальнення на мультимовні проєкти підтримується завдяки застосуванню моделей CodeBERT, CodeT5, PLBART, які працюють із графами, токенами та кросмовними узагальненнями. Показано практичну інтеграцію автоматизованого рефакторингу у CI/CD-середовище – через боти, refactoring-aware quality gates, періодичне застосування трансформацій у pre-commit/merge-циклах, а також перевірку інваріантів за допомогою тестів або формальних засобів. Стаття орієнтована на інженерів, дослідників і розробників інструментів, які працюють у галузі інтелектуального супроводу ПЗ та автоматизації процесів підтримки якості коду. Представлені класифікації, практичні сценарії та критерії вибору інструментів забезпечують прикладну цінність огляду для розробки власних рішень або впровадження існуючих технологій у проєкти з різними вимогами до стабільності, масштабування та рівня автоматизації.