← Derniers articles
💻 computer science

What Characterizes Pairwise Modular Smells?

Cette étude caractérise les « Pairwise Modular Smells » en identifiant 19 caractéristiques de relations par paires, en entraînant des modèles d'apprentissage automatique sur plus de 6 millions de paires d'entités issues de 11 projets Java pour prédire les paires inaptes à être séparées ou colocalisées avec des améliorations significatives de l'exactitude, et en interprétant les résultats pour révéler des facteurs influents spécifiques, tels que les dépendances et la similitude sémantique, qui déterminent ces défauts architecturaux.

Auteurs originaux : Chenxing Zhong, Daniel Feitosa, Paris Avgeriou, Huang Huang, Wei Song, He Zhang

Publié 2026-06-23
📖 6 min de lecture🧠 Analyse approfondie

Auteurs originaux : Chenxing Zhong, Daniel Feitosa, Paris Avgeriou, Huang Huang, Wei Song, He Zhang

Article original sous licence CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Ceci est une explication générée par l'IA de l'article ci-dessous. Elle n'a pas été rédigée ni approuvée par les auteurs. Pour une précision technique, consultez l'article original. Lire la clause de non-responsabilité complète

Imaginez que vous soyez le gestionnaire d'une immense et trépidante bibliothèque. L'objectif d'une bonne bibliothèque est d'organiser les livres en sections logiques : « Cuisine », « Histoire », « Science », etc. Cela permet aux gens de trouver facilement ce dont ils ont besoin et aux bibliothécaires de maintenir les choses bien rangées.

Dans le monde du logiciel, ces « sections » sont appelées modules. Un « bon » module regroupe des fichiers qui travaillent étroitement ensemble (haute cohésion) et garde séparés les fichiers qui ne se parlent pas vraiment (faible couplage).

Cependant, avec le temps, les bibliothèques peuvent devenir désordonnées. Des livres se retrouvent éparpillés dans les mauvais bacs. Dans le logiciel, ce désordre est appelé une « odeur » (Smell). Ce n'est pas une mauvaise odeur, mais un signe qu'un problème structurel existe et pourrait causer des maux de tête plus tard.

Le Problème : L'odeur de modularité par paire (PairSmell)

Dans une étude précédente, les auteurs ont introduit une nouvelle façon de trouver ces désordres appelée PairSmell. Au lieu de regarder toute la bibliothèque à la fois, ils regardent des paires de livres (fichiers).

Ils posent une question simple : « Ces deux fichiers appartiennent-ils à la même section, ou devraient-ils être dans des sections différentes ? »

Pour répondre à cela, ils utilisent un panel de « bibliothécaires experts » (outils logiciels automatisés). Si tous les experts sont d'accord pour dire que le Fichier A et le Fichier B devraient être ensemble, mais que la bibliothèque les a actuellement dans des sections différentes, c'est un problème. C'est ce qu'on appelle l'InSep (Séparation Inappropriée).

Inversement, si les experts disent qu'ils devraient être dans des sections différentes, mais que la bibliothèque les a bloqués ensemble dans la même boîte, c'est aussi un problème. C'est ce qu'on appelle l'InCol (Collocation Inappropriée).

L'Écart : L'étude précédente pouvait trouver ces problèmes, mais elle ne pouvait pas facilement expliquer pourquoi ils étaient des problèmes. C'était comme un médecin disant : « Vous avez de la fièvre », sans expliquer si c'est causé par la grippe, une infection ou simplement par le soleil. Les développeurs avaient besoin de savoir pourquoi une paire était désordonnée afin de pouvoir la corriger correctement.

La Solution : Étudier la « personnalité » des paires

Ce nouvel article demande : Quels traits spécifiques font qu'une paire de fichiers est susceptible d'être mal placée ?

Les auteurs ont traité cela comme une enquête policière. Ils ont rassemblé une liste de 19 « traits de personnalité » (caractéristiques) qui décrivent comment deux fichiers se rapportent l'un à l'autre. Ces traits incluent :

  • Dépendances : Avec combien d'autres fichiers ce fichier communique-t-il ?
  • Mots Partagés : Utilisent-ils le même vocabulaire technique ?
  • Taille : Quelle est la taille des fichiers ?
  • Complexité : À quel point sont-ils difficiles à comprendre ?

Ils ont ensuite injecté ces traits dans un « Cerveau » d'Apprentissage Automatique (un modèle informatique) entraîné sur plus de 6 millions de paires de fichiers provenant de 11 projets de logiciels open-source différents (comme Kafka, Hadoop et Druid).

Les Résultats : Qu'est-ce qui rend une paire « malodorante » ?

L'ordinateur a appris à repérer les « odeurs » avec une grande précision. Plus important encore, les auteurs ont demandé à l'ordinateur d'expliquer quels traits étaient les plus gros signaux d'alarme.

1. Pour les fichiers qui devraient être ensemble mais qui sont séparés (InSep)

Le modèle a trouvé que les fichiers séparés sont probablement « malodorants » (incorrectement séparés) si :

  • Ils ont trop de connexions « sortantes » : Imaginez deux personnes dans des pièces différentes qui passent leur temps à crier des instructions au même groupe de personnes dans le couloir. Si elles dépendent fortement des mêmes ressources extérieures, elles devraient probablement être dans la même pièce pour mieux se coordonner.
  • Ils partagent trop de mots avec le reste du système : Si les deux fichiers parlent constamment des mêmes concepts que tout le monde ailleurs dans le bâtiment, il est probable qu'ils fassent partie de la même « équipe » et ne devraient pas être isolés.
  • Ils sont très simples (peu de champs) : Si deux fichiers sont petits et simples mais dépendent l'un de l'autre, les séparer revient à mettre une chaussure gauche et une chaussure droite dans des boîtes différentes. Ils sont trop simples pour justifier une séparation.

2. Pour les fichiers qui sont ensemble mais qui devraient être séparés (InCol)

Le modèle a trouvé que les fichiers coincés ensemble sont probablement « malodorants » (incorrectement regroupés) si :

  • Ils ne parlent pas la même langue (Faible similitude sémantique) : Si un fichier traite de la « Cuisine » et l'autre de l'« Histoire », mais qu'ils sont dans la même boîte, c'est une erreur. Le modèle vérifie s'ils utilisent des termes techniques similaires ; si ce n'est pas le cas, ils ne devraient pas être ensemble.
  • Ils ne partagent pas beaucoup de mots entre eux : Même s'ils sont dans la même boîte, s'ils ne mentionnent jamais les mêmes choses, ils sont probablement sans lien.
  • Ils ont trop de connexions « entrantes » : Imaginez un bureau unique où 50 personnes de différents départements viennent régulièrement déposer du travail. Si deux fichiers au sein d'un même module sont bombardés de requêtes de partout, ce module est probablement trop encombré et doit être divisé pour gérer la charge.

Pourquoi cela importe

Les auteurs fournissent un « Manuel d'utilisation » pour les développeurs. Désormais, au lieu de simplement voir un drapeau rouge disant « Ceci est incorrect », un développeur peut voir pourquoi :

  • « Oh, ces deux fichiers sont séparés, mais ils dépendent tous deux des 50 autres fichiers. Je devrais les rapprocher. »
  • « Oh, ces deux fichiers sont ensemble, mais l'un est un outil utilitaire et l'autre est un outil de logique métier, et ils n'ont aucun vocabulaire commun. Je devrais les séparer. »

L'essentiel

Ce document prend un problème logiciel complexe — comprendre pourquoi les modules logiciels sont désordonnés — et le décompose en traits simples et compréhensibles. En utilisant une approche de « détective » avec l'apprentissage automatique, ils ont identifié les « traits de personnalité » spécifiques (comme le nombre de connexions d'un fichier ou le nombre de mots qu'il partage) qui signalent une erreur de conception. Cela aide les développeurs non seulement à trouver le désordre, mais aussi à comprendre la cause profonde afin de le nettoyer efficacement.

Noyé(e) sous les articles dans votre domaine ?

Recevez des digests quotidiens des articles les plus récents correspondant à vos mots-clés de recherche — avec des résumés techniques, dans votre langue.

Essayer Digest →