Les Software Product Lines (SPLs) constituent un paradigme éprouvé pour gérer la variabilité et favoriser la réutilisation systématique entre des systèmes logiciels partageant des fonctionnalités communes. Les SPLs sont particulièrement utiles dans les environnements industriels, où la demande pour une personnalisation de masse et une maintenance efficace des variantes de produits est élevée. Toutefois, malgré leur maturité, l’ingénierie des SPLs continue de faire face à des défis importants, notamment dans le contexte de la migration d’applications existantes vers des SPLs structurées et maintenables.
Cette thèse s’appuie sur Mobioos Forge (MF), une extension Visual Studio Code conçue pour accompagner la migration d’applications existantes vers des SPLs. Dans le cadre de la première contribution, nous avons étendu MF de deux manières principales. Premièrement, nous avons amélioré sa capacité à gérer la variabilité au niveau des ressources, permettant ainsi la modélisation et la réutilisation de ressources telles que le contenu textuel, les couleurs ou les fichiers externes. Deuxièmement, nous avons intégré des mécanismes automatisés de détection d’anomalies capables d’identifier les problèmes liés aux fonctionnalités optionnelles ainsi que le code mort. Ces extensions renforcent considérablement la cohérence, la fiabilité et la maintenabilité des variantes générées.
Deuxièmement, nous avons validé le processus de migration semi-automatisé de MF en l’appliquant à trois études de cas représentatives : ArgoUML, un benchmark largement utilisé dans le domaine de la localisation de fonctionnalités ; eShopOnContainers, une application fondée sur des microservices développée par Microsoft ; et Magento, une plateforme de commerce électronique de grande envergure développée en PHP et comprenant environ 3,6 millions de lignes de code. Les résultats montrent que l’approche proposée permet de migrer des systèmes divers et complexes vers des SPLs avec un effort manuel relativement faible, démontrant ainsi sa scalabilité et son applicabilité pratique.
La troisième contribution, Var-Scope, propose une technique de rétro-ingénierie visant à récupérer automatiquement des SPLs à partir de code utilisant des préprocesseurs et annoté avec #ifdef. À l’aide de Var-Scope, nous avons transformé cinq systèmes open source en SPLs compatibles avec MF. Cela montre que des bases de code existantes peuvent être modernisées efficacement et rendues plus faciles à gérer selon les principes des SPLs.
Enfin, nous avons introduit InsightMapper, une approche d’analyse de la qualité qui déplace le focus des composants structurels vers les fonctionnalités. À l’aide d’outils d’analyse statique tels que SonarQube et Snyk, nous avons réalisé des évaluations orientées fonctionnalité sur ArgoUML, eShopOnContainers et Magento. Cela a permis une compréhension plus fine de la qualité logicielle, facilité le calcul de scores de qualité au niveau des fonctionnalités et mis en évidence la manière dont différents outils convergent ou divergent dans leur évaluation de la qualité des fonctionnalités. Fort de ces observations, InsightMapper permet également la conception de stratégies de priorisation plus pertinentes pour les décideurs.
Au travers de ces contributions, ce travail fait progresser l’état de l’art de l’ingénierie des SPLs en renforçant le support outillé, en facilitant la migration de systèmes existants, en permettant la détection d’anomalies liées à la variabilité et en soutenant la prise de décision grâce à des évaluations de qualité orientées fonctionnalités.