Hamdi, Oumayma (2021). An empirical study on the impact of refactoring in Android applications. Mémoire de maîtrise électronique, Montréal, École de technologie supérieure.
Prévisualisation |
PDF
Télécharger (1MB) | Prévisualisation |
Résumé
Android applications (apps) are becoming complex software that must be developed quickly while continuously evolving to meet new user needs as well as regular updates. This rapid evolution may lead to poor implementation and design choices, known code smells. The presence of these smells within an application may degrade the quality and performance by complicating maintenance and evolution tasks. Thus, it is important to know these smells but also to detect and correct them, in order to allow developers to improve the quality and performance of their applications. Code refactoring is a key practice that is employed to ensure that the intent of a code change is properly achieved without compromising internal software quality.
While most of existing studies have investigated the impact of refactoring activities in desktop applications, little attention has been paid to mobile applications. In particular, there is a lack of knowledge about the impact of refactoring on different software quality aspects, including code smells and quality metrics. Moreover, most of previous research focused on studying the characteristics of traditional object-oriented (OO) code smells affecting source code files in desktop software systems, and advocated that the interaction and co-presence of code smells reduce the ability of developers to understand and maintain source code. However, little knowledge is available on emerging categories of Android-specific code smells and their interactions, i.e., co-occurrences, with traditional OO smells, in the context of Android apps.
Therefore, in this work we conduct a series of empirical studies to better understand the concept of refactoring and code smells in mobile apps. First, we conduct a longitudinal empirical study that analyses the evolution history of five open-source mobile apps to investigate the impact of refactoring on code smells. Then, we examined the prevalence of code smell co-occurrences and determine which code smell types tend to co-exist more frequently on a large dataset composed of 1,923 open-source mobile apps. Finally, we perform a study on a dataset composed of 300 open-source mobile apps to analyze the impact of refactoring on quality metrics.
Our results show that (1) code smells are widespread across Android applications, but smelly classes are not particularly targeted by refactoring activities and, when they are, it is rare for refactoring to actually remove a smell, (2) the co-occurrence phenomenon is indeed prevalent in Android apps and several smell types have strong associations, and (3) when refactoring affects the metrics it generally improves them. In many cases refactoring has no significant impact on the metrics, whereas one metric (LCOM) deteriorates overall as a result of refactoring.
The results of these studies revealed important research findings. In particular, on the current practice of refactoring and code smells in the context of mobile applications. These results allowed us to develop some recommendations for researchers and tool creators to design tools for detecting and refactoring mobile code smells. Our results opened perspectives for research works about the identification of code smells in mobile codes and development practices in general.
Titre traduit
Une étude empirique sur l’impact du refactoring dans les applications Android
Résumé traduit
Les applications mobiles (apps) deviennent des logiciels complexes qui doivent être développés rapidement tout en évoluant de manière continue afin de répondre aux nouveaux besoins des utilisateurs ainsi qu’aux mises à jour régulières. Cette évolution rapide peut provoquer la présence de mauvais choix d’implémentions ou de conception qui se manifestent par ce qu’on appelle défauts de code ou code smells. La présence de ces défauts au sein d’une application peut dégrader la qualité et les performances en compliquant les tâches de maintenance et d’évolution. Il est alors important de connaître ces défauts mais aussi de pouvoir les détecter et les corriger, afin de permettre aux développeurs d’améliorer la qualité et les performances de leur application. Pour corriger les défauts de code et améliorer la qualité des apps, refactoring, est une technique clé largement acceptée qui consiste à modifier la structure interne du code source tout en préservant son comportement externe.
Bien que la plupart des études existantes ont étudié l’impact des activités de refactoring dans les applications orientées objet, peu d’attention a été accordée aux applications mobiles. En particulier, il y a un manque de connaissances sur l’impact de refactoring sur différents aspects de la qualité du logiciel, y compris les défauts de code et les métriques de qualité. De plus, la plupart des recherches précédentes se sont concentrées sur l’étude des caractéristiques des défauts de code orientées objet (OO) traditionnelles affectant les fichiers de code source dans les systèmes logiciels traditionnels, et ont préconisé que l’interaction et la co-présence des défauts de code réduisent la capacité des développeurs à comprendre et maintenir le code source. Cependant, peu de connaissances sont disponibles sur les catégories émergentes de défauts de code spécifiques à Android et leurs interactions, c’est-à-dire les cooccurrences, avec les défauts OO traditionnelles, dans le contexte des applications Android.
Par conséquent, dans cette mémoire, nous menons une série d’études empiriques pour mieux comprendre le concept de refactoring et de défauts de code dans les applications mobiles. Premièrement, nous menons une étude longitudinale sur l’historique d’évolution de cinq applications Android pour étudier l’impact de refcatoring sur les défauts de code orientés objets et spécifique à Android. Ensuite, nous performons une étude empirique sur un vaste ensemble de données composé de 1,923 applications Android pour étudier la co-occurrence des défauts de code. Finalement, nous réalisons une étude sur un ensemble de données composé de 300 applications Android pour analyser l’impact du refactoring sur les métriques de qualité.
Nos résultats montrent que (1) les défauts de code sont répandues dans les applications Android, mais les classes contenant des défauts de code ne sont pas particulièrement ciblées par les activités de refactoring et, lorsqu’elles le sont, il est rare que le refactoring élimine réellement lé défaut, (2) le phénomène de co-occurrence est en effet répandu dans les applications Android et plusieurs types de défauts de code ont de fortes associations, et (3) lorsque le refactoring affecte les métriques, elle les améliore généralement. Dans de nombreux cas, le refactoring n’a pas d’impact significatif sur les métriques, alors qu’une métrique (LCOM) se détériore globalement à la suite du refactoring.
Les résultats de ces études empiriques ont révélé des résultats de recherche importants. Notamment, sur la pratique actuelle du refactoring dans le contexte de développement d’applications mobiles ainsi que sur les défauts de code et leur interaction. Ces résultats nous ont permis d’élaborer quelques recommandations pour les chercheurs et les développeurs d’outils pour concevoir des outils de détection et de refactoring des défauts de code mobile. Nos résultats ouvert des perspectives pour des travaux de recherche sur l’identification des défauts de code mobiles et sur les pratiques de développement en général.
Type de document: | Mémoire ou thèse (Mémoire de maîtrise électronique) |
---|---|
Renseignements supplémentaires: | "Manuscript-based thesis presented to École de technologie supérieure in partial fulfillment of a master’s degree with thesis in software engineering". Comprend des références bibliographiques (pages 101-114). |
Mots-clés libres: | applications mobiles, refactoring, défauts de code, métriques de qualité, étude empirique |
Directeur de mémoire/thèse: | Directeur de mémoire/thèse Ouni, Ali |
Programme: | Maîtrise en ingénierie > Génie |
Date de dépôt: | 09 févr. 2022 19:02 |
Dernière modification: | 09 févr. 2022 19:02 |
URI: | https://espace.etsmtl.ca/id/eprint/2888 |
Gestion Actions (Identification requise)
Dernière vérification avant le dépôt |