24 Nov 2021 |
article de recherche |
Les systèmes logiciels, le multimédia et la cybersécurité
Effet du réusinage sur la qualité des applications Android



Achetée sur Istockphoto.com. Droits d’auteur.
Les applications (ou applis) mobiles doivent constamment évoluer et, parfois, les contraintes de temps sont telles que de mauvais choix de conception ou d’implémentation sont faits, causant inévitablement des problèmes de qualité logicielle. Le réusinage (aussi refactoring) est une approche largement reconnue pour résoudre ces problèmes de qualité. Alors que l’effet du réusinage sur la qualité des logiciels orientés objet a été largement étudié, ce n’est toujours pas le cas pour les applications mobiles. Cet article porte donc sur la première étude empirique visant à combler cette lacune. En effet, nous avons mené une étude empirique à grande échelle sur l’évolution de 300 applications Android à code ouvert constituant 42,181 opérations de réusinage. Nous avons analysé l’effet de ces opérations sur 10 métriques de qualité par une méthode d’inférence causale basée sur le modèle des doubles différences (DD). Nos résultats indiquent que lorsque le réusinage influence les métriques de qualité, il tend généralement à les améliorer. Par contre, dans de nombreux cas, le réusinage n’a pas d’effet notable sur les mesures de qualité, mais cause une détérioration de la mesure de cohésion LCOM (Lack of Cohesion Metric). Ces résultats mettent en lumière la pratique actuelle du réusinage dans le développement d’applications Android. Mots-clés : Application mobile, réusinage, qualimétrie, Android, étude empirique.
Introduction
Les applications Android subissent de constantes modifications et améliorations pour répondre aux exigences rapides et changeantes des utilisateurs. Ces activités de maintenance peuvent nuire à la qualité si elles sont mal gérées [1] [2]. Ainsi, pour faciliter l’évolution des logiciels, les développeurs doivent continuellement améliorer leur structure. Le réusinage est l’approche la plus courante pour améliorer la structure interne des systèmes logiciels sans affecter leur comportement externe [3] [4] [5].
Les applications mobiles diffèrent beaucoup des systèmes logiciels classiques [6] [7] [8] en raison de leurs limitations matérielles (mémoire, unité centrale, taille de l’écran, etc.), de la nature hautement dynamique du marché des applications mobiles et des exigences sans cesse croissantes des utilisateurs. Ces différences ont des répercussions sur le développement et l’évolution des applications mobiles. En effet, contrairement aux systèmes logiciels orientés objet [4] [9] [10], l’effet du réusinage sur la qualimétrie des applications mobiles a reçu peu d’attention.
Pour combler cette lacune, nous avons mené une étude empirique sur un ensemble de données composé de 300 applications Android à code ouvert. Nous avons analysé l’effet de 10 opérations de réusinage sur 10 métriques de qualité.
Conception de l’étude
Pour réaliser notre étude, nous avons conçu un essai contrôlé portant sur deux groupes de modifications de code. Le premier groupe était composé de changements de code liés au réusinage (groupe de traitement), et le second comportait des changements de code sans réusinage (groupe de contrôle). Ensuite, nous avons étudié l’effet des deux groupes sur la qualimétrie pour effectuer des analyses statistiques à l’aide du modèle des doubles différences (DD). La figure 1 décrit la démarche de notre étude, composée de six grandes étapes : (1) sélection des applications Android, (2) extraction du réusinage, (3) extraction des soumissions (commits), (4) extraction des changements non réusinés, (5) qualimétrie, et (6) analyse de l’effet du réusinage.

Figure 1. Démarche de notre étude empirique
Nous avons ciblé les applications Android à code ouvert offertes gratuitement dans Google Play (accompagnées de leur historique de versions hébergé sur GitHub) en faisant une recherche personnalisée sur GitHub. Nous avons obtenu un total de 19 212 applications. Ensuite, nos filtres ont réduit ce nombre à 1 923 applications valides. Enfin, nous avons choisi au hasard un ensemble de 300 applications représentant 15 % de l’ensemble final, ayant subi 42 181 opérations de réusinage.
Étape 2 : Extraction du réusinage
Dans cette étape, nous avons collecté toutes les opérations de réusinage relatives aux applications étudiées, à l’aide de RefactoringMiner, un outil de ligne de commande à code ouvert [11]. Dans l’ensemble, notre processus d’extraction a identifié 10 types communs de réusinage [3].
Étape 3 : Extraction des soumissions de changement
Après l’extraction de toutes les opérations de réusinage, nous avons collecté les ID de toutes les soumissions de réusinage et des soumissions qui précèdent immédiatement la soumission de réusinage. L’API de GitHub a facilité ce processus, en particulier, la commande git clone pour télécharger le code source de chaque soumission de réusinage et de sa soumission précédente.
Étape 4 : Extraction des changements non réusinés
À cette étape, nous avons extrait un ensemble de soumissions qui contiennent des changements non réusinés. Pour ce faire, nous avons choisi au hasard un ensemble de soumissions non réusinées représentant notre groupe de contrôle. Pour chaque soumission, nous avons collecté l’ID et les soumissions qui le précèdent. Ensuite, nous avons repris la procédure de l’étape 3 pour collecter leur code source.
Étape 5 : Qualimétrie
Nous avons mesuré un ensemble de facteurs de qualité pour chaque réusinage et pour les changements non réusinés. Pour calculer ces valeurs, nous avons eu recours à un outil à code ouvert populaire, le CK-metrics Suite.
Étape 6 : Analyse de l’effet du réusinage
Nous avons calculé les différences entre les valeurs qualimétriques avant et après le réusinage, de la classe. Ensuite, nous avons appliqué deux méthodes statistiques : (1) le test Rank Sum de Wilcoxon [12] et l’effet non paramétrique de Cliff’s delta [12], et (2) l’inférence causale [13].
Effet sur la qualimétrie
1. Réusinage
- Couplage : le réusinage a un effet positif important sur le couplage quant aux mesures CBO et RFC, mais pas sur la mesure NOSI. Les réusinages les plus influents favorisant un faible couplage sont la méthode Move et la méthode Extract and Move.
- Cohésion : les mesures de qualité de cohésion LCOM, TCC et LCC, peuvent présenter des variations statistiquement significatives dues aux opérations de réusinage liées au déplacement des attributs et des méthodes. Les réusinages qui influent le plus sur la cohésion sont l’attribut Move, la méthode Move, et la méthode Extract and Move. LCOM, par contre, semble plus volatile en cas de réusinage.
- Complexité : plusieurs types de réusinage ont tendance à améliorer la complexité en diminuant la mesure WMC. Les réusinages les plus concluants sont l’Extract Super Class, la méthode Extract et la méthode Move.
- L’héritage : les réusinages hiérarchiques peuvent améliorer l’attribut de qualité de l’héritage (DIT). Les réusinages les plus influents sont l’attribut Pull Up, l’Extract Super Class et la méthode Push Down.
- Taille de conception : la plupart des types de réusinage tendent à réduire les mesures de taille de conception LOC et VQTY. Les réusinages les plus influents sont l’Extract Superclass, la méthode Pull UP/Push Down et la méthode Move.
2. Modifications sans réusinage
Les mesures de qualité n’ont pas montré de changement significatif sans réusinage (groupe de contrôle), sauf LOC et VQTY qui ont tendance à augmenter après chaque soumission. En effet, il est normal que les mesures liées à la taille de la conception augmentent au fur et à mesure de l’évolution du projet. Ces résultats prouvent que les changements de mesures observés dans les données de l’étude sont dus aux activités de réusinage et non au hasard.
Conclusion
Nous avons présenté une étude de l’effet du réusinage sur la qualimétrie dans les applications Android. Nos résultats montrent que plusieurs types de réusinage ont un des retombées positives sur la qualimétrie (méthodes Move et Extract and Move). De plus, la cohésion (LCOM) est la mesure la moins cohérente, s’améliorant sous certains types de réusinage et se détériorant sous d’autres. Enfin, pour les soumissions sans réusinage, les mesures ne montrent aucun changement significatif, à l’exception évidente des mesures de taille de conception.

Oumayma Hamdi
Oumayma Hamdi est étudiante en maîtrise à l’ÉTS. Ses recherches portent sur la qualité des applications Android.
Programme : Génie logiciel Génie des technologies de l'information

Ali Ouni
Ali Ouni est professeur au Département de génie logiciel et TI à l’ÉTS. Ses travaux portent sur la qualité, la maintenance et l'évolution de logiciels et l'application des techniques d'intelligence artificielle à l'ingénierie logicielle.
Programme : Génie logiciel
Domaines d'expertise :

