Застосування формалізованих знань про вихідний код для здійснення рефакторингу у мові Swift

Автор(и)

  • Андрій Віталійович Ткачук Національний технічний інститут України «Київський політехнічний інститут ім. І. Сікорського», Україна https://orcid.org/0000-0002-9127-6381
  • Богдан Вікторович Булах Національний технічний інститут України «Київський політехнічний інститут ім. І. Сікорського», Україна https://orcid.org/0000-0001-5880-6101

DOI:

https://doi.org/10.15587/2706-5448.2022.267160

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

мова програмування Swift, база знань, засоби аналізу та рефакторингу, вихідний код

Анотація

Об’єктом дослідження у роботі є вихідний код програмного продукту, написаний мовою програмування Swift. Більшість програм як продукт певного проєкту протягом життєвого циклу потребують внесення змін і правок, що є затратним чи неможливим у разі поганої якості коду. Одним із варіантів вирішення проблеми якості коду є своєчасне застосування принципів рефакторингу. Існуюча проблема полягає в тому, що здійснення високорівневого рефакторингу повинне проводитись самостійно розробником без використання автоматизованих засобів, оскільки вбудовані рішення не працюють через архітектурну складність продукту.

Для зменшення кількості помилок, внесених під час виконання рефакторингу, спрощення самого процесу виконання рутинних дій пропонується використовувати новий програмний продукт для рефакторингу. Він працює із високорівневими командами користувача на основі формалізованого опису вихідного коду разом із базою знань, що містить опис сутностей коду та їх властивостей (які конкретні дії можна виконати із ними). У роботі рефакторинг вихідного коду здійснено на прикладі мови програмування Swift. Запропонований підхід компонентної архітектури (база знань, програмний двигун) в подальшому дозволяє розширити функціонал програмного продукту на інші мови програмування.

Робота була направлена на розробку прототипу програмного продукту із використанням запропонованого підходу для перевірки та порівняння результатів з іншими засобами рефакторингу. Розроблено утиліту командного рядка, яка приймає на вхід вербальну команду та здійснює вивід результатів обробки та аналізу вихідного коду (пошук складних конструкцій у коді) або застосовує запропоновану зміну. У результаті проведеного тестування встановлено, що використання запропонованого підходу дозволяє виконувати складні завдання рефакторингу за допомогою простої вербальної формалізованої команди. Виконання такого ж завдання із використанням тільки вбудованих засобів рефакторингу вимагає значно більше часу та зусиль або ж взагалі неможливе.

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

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

Аспірант

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

Богдан Вікторович Булах, Національний технічний інститут України «Київський політехнічний інститут ім. І. Сікорського»

Кандидат технічних наук, доцент

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

Посилання

  1. Swift Documentation. Swift Local Refactoring. Available at: https://www.swift.org/blog/swift-local-refactoring/
  2. Lacerda, G., Petrillo, F., Pimenta, M., Guéhéneuc, Y. G. (2020). Code smells and refactoring: A tertiary systematic review of challenges and observations. Journal of Systems and Software, 167. doi: https://doi.org/10.1016/j.jss.2020.110610
  3. Almogahed, A., Omar, M., Zakaria, N. H. (2022). Refactoring Codes to Improve Software Security Requirements. Procedia Computer Science, 204, 108–115. doi: https://doi.org/10.1016/j.procs.2022.08.013
  4. Code refactoring best practices. Available at: https://www.altexsoft.com/blog/engineering/code-refactoring-best-practices-when-and-when-not-to-do-it/
  5. Kaur, S., Singh, P. (2019). How does object-oriented code refactoring influence software quality? Research landscape and challenges. Journal of Systems and Software, 157. doi: https://doi.org/10.1016/j.jss.2019.110394
  6. Fowler, M. (1999). Refactoring. Improving the Design of Existing Code. Addison-Wesley, 63.
  7. Morales, R., Soh, Z., Khomh, F., Antoniol, G., Chicano, F. (2017). On the use of developers’ context for automatic refactoring of software anti-patterns. Journal of Systems and Software, 128, 236–251. doi: https://doi.org/10.1016/j.jss.2016.05.042
  8. Don, R., Brant, J. Refactoring tools. Available at: http://www.laputan.org/pub/patterns/fowler/Roberts-Brant.doc
  9. De Nicola, R., Di Stefano, L., Inverso, O., Uwimbabazi, A. (2022). Automated replication of tuple spaces via static analysis. Science of Computer Programming, 223. doi: https://doi.org/10.1016/j.scico.2022.102863
  10. Hammad, M., Babur, Ö., Basit, H. A., van den Brand, M. (2022). Clone-Writer: An effective editor for developing code by using code clones. Software Impacts, 13. doi: https://doi.org/10.1016/j.simpa.2022.100323
  11. Al Dallal, J. (2012). Constructing models for predicting extract subclass refactoring opportunities using object-oriented quality metrics. Information and Software Technology, 54 (10), 1125–1141. doi: https://doi.org/10.1016/j.infsof.2012.04.004
  12. Swift Syntax Command Line Tool (2019). Available at: https://www.pointfree.co/episodes/ep55-swift-syntax-command-line-tool
  13. Almeida, L. (2019). An Overview of SwiftSyntax. Available at: https://medium.com/@lucianoalmeida1/an-overview-of-swiftsyntax-cf1ae6d53494
  14. Mattt (2018). SwiftSyntax. Available at: https://nshipster.com/swiftsyntax/
  15. SwiftSyntax Documentation. Available at: https://github.com/apple/swift-syntax/tree/main/Documentation
  16. A set of Swift bindings for the libSyntax library. Available at: https://iosexample.com/a-set-of-swift-bindings-for-the-libsyntax-library/
Usage of formalized knowledge about source code for refactoring actions in Swift

##submission.downloads##

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

2022-11-17

Як цитувати

Ткачук, А. В., & Булах, Б. В. (2022). Застосування формалізованих знань про вихідний код для здійснення рефакторингу у мові Swift. Technology Audit and Production Reserves, 6(2(68), 6–10. https://doi.org/10.15587/2706-5448.2022.267160

Номер

Розділ

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