ТЕХНОЛОГІЯ ІДЕНТИФІКАЦІЇ АНТИПАТЕРНІВ В КОДІ 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, а також при дослідженні антипатернів в мобільній розробці з використанням даної мови.Посилання
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##
Як цитувати
Номер
Розділ
Ліцензія
Авторське право (c) 2020 Вісник Національного технічного університету «ХПІ». Серія: Системний аналiз, управління та iнформацiйнi технологiїАвтори, які публікуються у цьому журналі, погоджуються з наступними умовами:
- Автори залишають за собою право на авторство своєї роботи та передають журналу право першої публікації цієї роботи на умовах ліцензії Creative Commons Attribution License, котра дозволяє іншим особам вільно розповсюджувати опубліковану роботу з обов'язковим посиланням на авторів оригінальної роботи та першу публікацію роботи у цьому журналі.
- Автори мають право укладати самостійні додаткові угоди щодо неексклюзивного розповсюдження роботи у тому вигляді, в якому вона була опублікована цим журналом (наприклад, розміщувати роботу в електронному сховищі установи або публікувати у складі монографії), за умови збереження посилання на першу публікацію роботи у цьому журналі.
- Політика журналу дозволяє і заохочує розміщення авторами в мережі Інтернет (наприклад, у сховищах установ або на особистих веб-сайтах) рукопису роботи, як до подання цього рукопису до редакції, так і під час його редакційного опрацювання, оскільки це сприяє виникненню продуктивної наукової дискусії та позитивно позначається на оперативності та динаміці цитування опублікованої роботи (див. The Effect of Open Access).