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

Автор(и)

DOI:

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

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

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

Анотація

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

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

Ivan Yuriyovich Malik, National Technical University "Kharkiv Polytechnic Institute"

bachelor, National Technical University "Kharkiv Polytechnic Institute", student; Kharkiv, Ukraine

Valeriy Yuriyovich Volovshchykov, National Technical University "Kharkiv Polytechnic Institute"

Candidate of Technical Sciences, Docent, National Technical University "Kharkiv Polytechnic Institute", Associate Professor of the Department of Software Engineering and Management Information Technologies; Kharkiv, Ukraine

Vladlen Felixovitch Shapo, National University "Odessa Maritime Academy"

Candidate of Technical Sciences, Docent, National University "Odessa Maritime Academy", Associate Professor of the Theory of Automatic Control and Computing Machinery Department; Odessa, Ukraine

Marina Anatoliyvna Grinchenko, National Technical University "Kharkiv Polytechnic Institute"

Candidate of Technical Sciences, Associate Professor, National Technical University "Kharkiv Polytechnic Institute", Professor of the Department of Strategic Management; Kharkiv, Ukraine

Посилання

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.

##submission.downloads##

Номер

Розділ

ІНФОРМАЦІЙНІ ТЕХНОЛОГІЇ