Les systèmes logiciels modernes reposent aujourd’hui sur des composants interconnectés. Un système logiciel peut être composé de plusieurs composants interagissant entre eux, tels que les systèmes fondés sur des plugins, les architectures orientées services (SOA) et les applications à microservices. Ces interactions visent à fournir des fonctionnalités complémentaires qui, ensemble, offrent un service, et peuvent nécessiter des changements coordonnés entre composants, ce que nous désignons par le terme de dépendances horizontales. Parallèlement, un composant d’un système logiciel peut utiliser un ensemble de dépendances externes qui se manifestent sous la forme de bibliothèques externes et qui fournissent un ensemble d’utilitaires pour implémenter un service. Par exemple, au lieu de réimplémenter des utilitaires de système de fichiers, les développeurs peuvent facilement importer une dépendance offrant les mêmes fonctionnalités. Les changements apportés à ces bibliothèques externes peuvent nécessiter des adaptations correspondantes dans le projet client, et nous désignons ces relations par le terme de dépendances verticales.
Nous définissons concrètement les dépendances horizontales comme des dépendances entre les composants et les services d’un même système logiciel, tandis que les dépendances verticales sont définies comme des dépendances entre un projet et les bibliothèques tierces spécifiées dans le fichier manifeste du projet (par exemple, package. json). Dans cette thèse, les dépendances horizontales et verticales sont considérées comme deux formes complémentaires de dépendances de maintenance : l’une à l’intérieur de la frontière du projet et l’autre à travers cette frontière.
Bien que les interconnexions horizontales et verticales entre les composants offrent des avantages significatifs, elles introduisent également des défis complexes qui se manifestent par la charge de maintenance liée à la synchronisation entre les composants et à la gestion des dépendances externes. D’un point de vue horizontal, les développeurs doivent fréquemment se coordonner au-delà des limites des composants—en synchronisant les changements avec les équipes travaillant sur d’autres composants, en collaborant sur du code complémentaire réparti sur plusieurs composants pour corriger un bogue ou fournir une nouvelle fonctionnalité, et en s’assurant qu’un changement effectué dans un composant est correctement validé par des tests dans d’autres composants. Cette coordination inter-équipes ajoute des frictions au développement quotidien et, lorsqu’elle est négligée, peut entraîner des échecs de compilation, des fusions partielles et des échecs de pipelines CI/CD. D’un point de vue vertical, les bibliothèques tierces publient fréquemment des mises à jour contenant de nouvelles fonctionnalités, des corrections de bogues et des correctifs de sécurité. Ne pas intégrer ces mises à jour rapidement peut rendre les projets clients instables, introduire des failles de sécurité exploitables et exposer le code source du client à des risques.
Cette thèse étudie les dépendances de maintenance dans les systèmes à grande échelle composés de multiples composants au moyen d’une série d’études empiriques, dans le but de mieux comprendre ces dépendances, de mettre en évidence les défis qu’elles introduisent et de proposer des approches automatisées afin d’aider les praticiens à gérer ces tâches de maintenance. Plus précisément, nous étudions d’abord la manière dont une modification apportée à un composant peut dépendre de changements effectués dans d’autres composants, phénomène également appelé dépendances inter-composants. Cette étude met en lumière la façon dont différents composants, souvent gérés par des équipes distinctes, dépendent les uns des autres, souligne les défis résultant de ces dépendances et dégage des implications pratiques à destination des praticiens et des chercheurs. Nous proposons ensuite une approche fondée sur l’apprentissage automatique et une approche basée sur l’IA agentique, afin d’aider les praticiens à identifier des changements candidats susceptibles d’être liés à un changement de code donné. Enfin, nous étudions les dépendances verticales de maintenance en examinant la gestion des mises à niveau des dépendances tierces en termes de stratégies de mise à niveau, de durée et de pratiques de configuration, afin de fournir aux développeurs et aux chercheurs des recommandations permettant d’améliorer la gestion de ces dépendances.
Nos résultats soulignent l’importance des dépendances de maintenance, tant horizontales que verticales, dans les systèmes logiciels modernes. En conséquence, le système de recommandation proposé peut aider les développeurs dans la maintenance de tels systèmes. Nous discutons également de plusieurs implications issues de nos résultats et présentons des pistes potentielles pour les travaux de recherche futurs.
| Date | 17 août 2026 |
|---|
| langue originale | Anglais américain |
|---|
| Établissement diplômant | - École de technologie supérieure
|
|---|
| Superviseur | Mohammed Sayagh (Directeur(-trice)) |
|---|
- maintenance logicielle
- modularité
- apprentissage automatique
- étude empirique
- IA agentique
Arabat, A. (Auteur(e)),
Sayagh (Directeur(-trice)),
17 août 2026Thèses et mémoires: Thèse de doctorat › Doctorat en génie: Génie