Malik, Ivan YuriyovichVolovshchykov, Valeriy YuriyovichShapo, Vladlen FelixovitchGrinchenko, Marina Anatoliyvna2020-07-172020-07-172020Technology of identifying antipatterns in Android projects written in Kotlin language / I. Y. Malik [et al.] // Вісник Національного технічного університету "ХПІ". Сер. : Системний аналіз, управління та інформаційні технології = Bulletin of the National Technical University "KhPI". Ser. : System analysis, control and information technology : зб. наук. пр. – Харків : НТУ "ХПІ", 2020. – № 1 (3). – С. 117-123.https://repository.kpi.kharkov.ua/handle/KhPI-Press/47404The problem of the lack of instruments for identifying the characteristics of low-quality code in Android projects that are written in the Kotlin language is determined. A review of modern approaches for identifying antipatterns in program code is accomplished. The analysis of the methods used to find problems with code in Android projects is performed. DECOR and Paprika approaches are considered. Conclusions are drawn about the importance of finding design flaws in program code for the mobile software development and its further support. An antipatterns identification approach for Kotlin language program code in Android projects is proposed. An algorithm for identifying low-quality Kotlin code is presented. The technology for detecting poor quality code characteristics consists of four stages: collecting metrics about an analyzed software system, building a quality model, converting a quality model into a graph representation, and identifying predefined antipatterns. The collection of metrics, including the search for both Androidspecific and object-oriented metrics of Chidamber and Kamerer, is proposed to be implemented through parsing source code and converting it into an abstract syntax tree using the KASTree library. The implementation of KASTree library usage is offered through the Adapter design pattern. The construction of a quality model is implemented using the Paprika tool, supplemented by a number of introduced metrics. Conversion of quality model exactly into graph representation is used to identify antipatterns in order to ensure the speed and quality of complex queries execution for identifying antipatterns. Antipatterns identification using database queries is based on various template rules, including the Catolino rules. Different features of applying the Cypher query language to a graph database are used to represent the rules in form of queries. Results of the work can be used in development of software for poor quality code identification in mobile applications written in Kotlin language, as well as in studies of mobile development antipatterns for this language.Визначена проблема відсутності програмного забезпечення для ідентифікації характеристик низькоякісного коду в проектах Android, що розроблені з використанням мови програмування Kotlin. Проведено огляд сучасних підходів до виявлення анти-шаблонів в програмному коді. Виконано аналіз методів, що використовуються для знаходження проблем з кодом для Android проектів. Розглянуто відомі підходи до ідентифікації: DECOR та Paprika. Зроблено висновки про важливість знаходження недоліків у програмному коді для розробки мобільного програмного забезпечення та його майбутнього обслуговування. Запропоновано підхід до ідентифікації антипатернів у програмному коді Kotlin для Android проектів. Представлено алгоритм ідентифікації неякісного коду. Технологія визначення характеристик неякісного коду включає чотири етапи: збір метрик про програмну систему, що аналізується, побудова моделі якості, конвертація моделі якості в графове представлення та ідентифікація наперед визначених антипатернів. Збір метрик, що включає пошук як Android-специфічних, так і об’єктно-орієнтованих метрик Чидамбера та Камерера, пропонується реалізувати через синтаксичний аналіз вихідного коду та його конвертацію в абстрактне синтаксичне дерево з використанням бібліотеки KASTree. Впровадження бібліотеки KASTree пропонується через шаблон проектування Адаптер. Побудова моделі якості реалізується засобами інструменту Paprika, що доповнено низкою введених метрик. З метою забезпечення швидкості та якості виконання складних запитів для ідентифікації антипатернів використовується конвертація моделі якості саме в графове представлення. Безпосередньо ідентифікація антишаблонів за допомогою запитів використовує в якості основи різноманітні шаблонні правила, у тому числі правила Католіно. Для представлення правил у вигляді запитів використовуються можливості застосування мови запитів Cypher до графової бази даних. Результати роботи можуть бути використані при розробці програмного забезпечення для ідентифікації неякісного коду в мобільних застосунках, що написані мовою Kotlin, а також при дослідженні антипатернів в мобільній розробці з використанням даної мови.enAdapter patternпатерн АдаптерTechnology of identifying antipatterns in Android projects written in Kotlin languageТехнологія ідентифікації антипатернів в коді Android проектів мовою KotlinArticledoi.org/10.20998/2079-0023.2020.01.19https://orcid.org/0000-0003-1015-0603https://orcid.org/0000-0003-4454-2314https://orcid.org/0000-0002-3921-4159https://orcid.org/0000-0002-8383-2675