DOI: https://doi.org/10.20998/2079-0023.2020.01.19

ТЕХНОЛОГІЯ ІДЕНТИФІКАЦІЇ АНТИПАТЕРНІВ В КОДІ ANDROID ПРОЕКТІВ МОВОЮ KOTLIN

Ivan Yuriyovich Malik, Valeriy Yuriyovich Volovshchykov, Vladlen Felixovitch Shapo, Marina Anatoliyvna Grinchenko

Анотація


Визначена проблема відсутності програмного забезпечення для ідентифікації характеристик низькоякісного коду в проектах Android, що розроблені з використанням мови програмування Kotlin. Проведено огляд сучасних підходів до виявлення анти-шаблонів в програмному коді. Виконано аналіз методів, що використовуються для знаходження проблем з кодом для Android проектів. Розглянуто відомі підходи до ідентифікації: DECOR та Paprika. Зроблено висновки про важливість знаходження недоліків у програмному коді для розробки мобільного програмного забезпечення та його майбутнього обслуговування. Запропоновано підхід до ідентифікації антипатернів у програмному коді Kotlin для Android проектів. Представлено алгоритм ідентифікації неякісного коду. Технологія визначення характеристик неякісного коду включає чотири етапи: збір метрик про програмну систему, що аналізується, побудова моделі якості, конвертація моделі якості в графове представлення та ідентифікація наперед визначених антипатернів. Збір метрик, що включає пошук як Android-специфічних, так і об’єктноорієнтованих метрик Чидамбера та Камерера, пропонується реалізувати через синтаксичний аналіз вихідного коду та його конвертацію в абстрактне синтаксичне дерево з використанням бібліотеки KASTree. Впровадження бібліотеки KASTree пропонується через шаблон проектування Адаптер. Побудова моделі якості реалізується засобами інструменту Paprika, що доповнено низкою введених метрик. З метою забезпечення швидкості та якості виконання складних запитів для ідентифікації антипатернів використовується конвертація моделі якості саме в графове представлення. Безпосередньо ідентифікація антишаблонів за допомогою запитів використовує в якості основи різн оманітні шаблонні правила, у тому числі правила Католіно. Для представлення правил у вигляді запитів використовуються можливості застосування мови запитів Cypher до графової бази даних. Результати роботи можуть бути використані при розробці програмного забезпечення для ідентифікації неякісного коду в мобільних застосунках, що написані мовою Kotlin, а також при дослідженні антипатернів в мобільній розробці з використанням даної мови.

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


антипатерн; ідентифікація; графова модель; неякісний код; Kotlin; Android; патерн Адаптер

Повний текст:

PDF (English)

Посилання


Counsell S., Rob M. H., Hamza H., Black S. Exploring the eradication of code smells: An empirical and theoretical perspective. Advances in Software Engineering. 2010, vol. 2010, p. 12. doi:10.1155/2010/820103.

Fowler M. Refactoring: Improving the Design of Existing Code. Boston: Addison-Wesley Professional, 2018. 448 p.

Rashedul I., Rofiqul I., Tahidul Arafhin M. Mobile application and its global impact. International Journal of Engineering and Technology. 2010, vol. 10, iss. 6, pp. 72–78.

Reimann J., Brylski M. A tool-supported quality smell catalogue for Android developers. Softwaretechnik-Trends. 2015, vol. 34, no. 2, pp. 44-46.

Hecht G., Rouvoy R., Moha N., Duchien L. Detecting antipatterns in Android apps. Lille: INRIA, 2015. 24 p.

Kessentini M., Ouni A. Detecting Android smells using multiobjective genetic programming. ICMSES. 2017, pp. 122–132. doi:10.1109/MOBILESoft.2017.29.

Palomba F., Di Nucci D., Panichella A. Lightweight detection of Android-specific code smells: the aDoctor project. ICSAER. 2017, 12 p. doi:10.1109/SANER.2017.7884659.

Linarez-Vasquez M., Klock S., McMillan C. Domain matters: bringing further evidence of the relationships among antipatterns, application domains, and quality-related metrics in Java mobile apps. ICPC. 2014, pp. 232–243. doi: 10.1145/2597008.2597144.

Moha N., Duchien L., Gueheneuc Y. DECOR: a method for the specification and detection of code and design smells. IEEE Transactions on Software Engineering. 2010, vol. 36, pp. 20–36. doi: 10.1109/TSE.2009.50.

Rasool G., Ali Arab A. Recovering Android Bad Smells from Android Applications. Springer Berlin Heidelberg. 2020, pp. 1–27. doi: 10.1007/s13369-020-04365-1.

Mannan A. M., Ahmed I., Almurshed R. A. M. Understanding code smells in Android applications. ICMSES. 2016, pp. 225–236. doi: 10.1109/MobileSoft.2016.048.

Azeem M.I., Palomba F., Shi, L., Wang, Q. Machine learning techniques for code smell detection: A systematic literature review and meta-analysis. Information & Software Technology. 2019, vol. 108, pp. 115–138.

Kotlin 2019 the state of Developer Ecosystem in 2019 Infographic. Available at: https://www.jetbrains.com/lp/devecosystem2019/kotlin/ (accessed 04.02.2020).

Chidamber S. R., Kemerer C. F. A metric suite for object oriented design. IEEE Transactions on Software Engineering. 1994, vol. 20, pp. 476–493.

Catolino G. Improving change prediction models with code smellrelated information. Empir Software. 2019, p. 42.