Автоматизація рефакторингу коду із використанням бази знань і логічних правил

  • А. В. Ткачук Національний технічний університет України "Київський політехнічний інститут ім. Ігоря Сікорського", м. Київ https://orcid.org/0000-0002-9127-6381
Ключові слова: програмне забезпечення, початковий код, онтологія, модель, формалізоване подання знань

Анотація

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

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

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

Біографія автора

А. В. Ткачук, Національний технічний університет України "Київський політехнічний інститут ім. Ігоря Сікорського", м. Київ

аспірант, кафедра системного проектування

Посилання

Aguiar, C. Z., Zanetti, F., & Souza, V. E. (2021). Source Code Interoperability based on Ontology. VII Brazilian Symposium on Information Systems (pp. 1–8). ACM. https://doi.org/10.1145/3466933.3466951

Atzeni, M., & Atzori, M. (2017). CodeOntology: RDF-ization of Source Code. The Semantic Web – ISWC, (pp. 20–28). https://doi.org/10.1007/978-3-319-68204-4_2

Berners-Lee, T., Hendler, J., & Lassila, O. (2001) The Semantic Web: A New Form of Web Content That is Meaningful to Computers Will Unleash a Revolution of New Possibilities. Linking the World's Information: Essays on Tim Berners-Lee's Invention of the World Wide Web (1st ed.). Association for Computing Machinery, New York, NY, USA, 91–103. https://doi.org/10.1145/3591366.3591376

Fernandes, S., Aguiar, A., & Restivo, A. (2023). LiveRef: a Tool for Live Refactoring Java Code. In: Proceedings of the 37th IEEE/ACM International Conference on Automated Software Engineering (ASE '22). Association for Computing Machinery, New York, NY, USA, Article 161, 1–4. https://doi.org/10.1145/3551349.3559532

Ganapathy, G., & Sagayaraj, S. (2011). To Generate the Ontology from Java Source Code. International Journal of Advanced Computer Science and Applications, 2(2), 111–116. https://doi.org/10.14569/IJACSA.2011.020218

Kesseli, P. (2017). Semantic refactorings [PhD thesis]. University of Oxford. URL: https://ora.ox.ac.uk/objects/uuid:0c74954e-dc83-463f-bcd4-519d98c3dcca

Pailoor, S., Wang, Y., & Dillig, I. (2024). Semantic Code Refactoring for Abstract Data Types. Proc. ACM Program. Lang. 8, POPL, Article 28, 32 pages. https://doi.org/10.1145/3632870

Paydar, S., & Kahani, M. (2012). A Semantic Web based approach for design pattern detection from source code. 2012 2nd International eConference on Computer and Knowledge Engineering (ICCKE), Mashhad, Iran, pp. 289–294. https://doi.org/10.1109/ICCKE.2012.6395394

Reiter, P., Espinoza, A. M., Doupé, A., Wang, R., Weimer. W., & Forrest, S. (2022). Improving source-code representations to enhance search-based software repair. In Proceedings of the Genetic and Evolutionary Computation Conference (GECCO '22). Association for Computing Machinery, New York, NY, USA, 1336–1344. https://doi.org/10.1145/3512290.3528864

Riemer, Y., Pedroso Nogueira, P. M., Matos, S. N., & Bronoski Borges, H. (2023). RMT: A Semi-Automated Tool for Refactoring Design Patterns. In: Proceedings of the XXXVII Brazilian Symposium on Software Engineering (SBES '23). Association for Computing Machinery, New York, NY, USA, 77–82. https://doi.org/10.1145/3613372.3613416

Tkachuk, A., & Bulakh, B. (2022). Research of possibilities of default refactoring actions in Swift language. Technology Audit and Production Reserves, 5(2(67)), 6–10. https://doi.org/10.15587/2706-5448.2022.266061

Tkachuk, A., & Bulakh, B. (2022). Usage of formalized knowledge about source code for refactoring actions in Swift. Technology Audit and Production Reserves, 6(2(68)), 6–10. https://doi.org/10.15587/2706-5448.2022.267160

Tkachuk, A., & Bulakh, B. (2023). Describing the Knowledge About the Source Code Using an Ontology. Infocommunication and Computer Technology, 1(5), 123–133. https://doi.org/10.36994/2788-5518-2023-01-05-14

Vagavolu, D., Swarna, K. C., & Chimalakonda, S. (2022). A mocktail of source code representations. In Proceedings of the 36th IEEE/ACM International Conference on Automated Software Engineering (ASE '21). IEEE Press, 1296–1300. https://doi.org/10.1109/ASE51524.2021.9678551

Опубліковано
2024-03-04
Як цитувати
Ткачук, А. В. (2024). Автоматизація рефакторингу коду із використанням бази знань і логічних правил. Scientific Bulletin of UNFU, 34(2), 87-93. https://doi.org/10.36930/40340211
Розділ
Інформаційні технології