Автоматизація рефакторингу коду із використанням бази знань і логічних правил - Ткачук, А. В. (Scientific Bulletin of UNFU, 2024)
Розглянуто завдання автоматизації процесу заміни початкового програмного коду без зміни поведінки програми (рефакторингу), яку запропоновано вирішити шляхом використання бази знань про початковий код та логічних правил для опису процесу перетворення коду. Окреслено актуальність завдання розроблення нових методів і підходів до рефакторингу з урахуванням обмежень наявних систем і ростом потреб безпосередніх користувачів в автоматизації процесів рефакторингу внаслідок зростання обсягу кодових баз. Наголошено на важливості збереження семантики початкового коду для успішного виконання дій рефакторингу. Запропоновано використовувати онтології та засоби роботи із семантикою (зокрема, такі, що стосуються мови OWL (англ. Web Ontology Language) для формалізованого подання початкового коду програмного продукту у базі знань. Запропоновано метод автоматизованого рефакторингу на підставі знань про початковий код, модель подання початкового коду на підставі онтології, метод оброблення моделі на підставі правил, що дають можливість спиратися на семантику початкового коду під час виконання дій рефакторингу. Запропонований метод автоматизованого рефакторингу полягає у його здійсненні з використанням двох перетворень і оброблення проміжного подання коду. Описана модель подання початкового коду складається з двох частин, яку будують на підставі онтології та аксіом, що додають до моделі після проведення синтаксичного аналізу початкового коду. Метод оброблення моделі на підставі правил використовує два типи правил для логічного виведення, що описують додаткові функціональні залежності між сутностями бази знань. Проаналізовано запропоновані методи та моделі, а також описано їх практичне застосування. Проведено ряд випробувань для перевірки теоретичних засад запропонованих моделі та методів на практиці. Встановлено, що програмний інструментарій рефакторингу доцільно реалізувати з використанням клієнт-серверної архітектури для спрощення абстрагування бази знань про код від конкретної кодової бази. Експериментально встановлено поліноміальну залежність необхідного об'єму оперативної пам'яті для виконання завдань від обсягу початкового коду, який обробляють. Продемонстровано пришвидшення до 36 % процесу рефакторингу з використанням розробленого програмного прототипу порівняно з наявними засобами.