ARIANE : Re-documentation automatique pour améliorer la compréhension et l'évolution d'architectures logicielles
Auteur / Autrice : | Alexandre Le Borgne |
Direction : | Marianne Huchard, David Delahaye |
Type : | Thèse de doctorat |
Discipline(s) : | Informatique |
Date : | Soutenance le 24/01/2020 |
Etablissement(s) : | IMT Mines Alès |
Ecole(s) doctorale(s) : | École doctorale Information, Structures, Systèmes (Montpellier ; 2015-....) |
Partenaire(s) de recherche : | Laboratoire : Laboratoire de génie informatique et d'ingénierie de production (1994-2020) - Laboratoire de Génie Informatique et Ingénierie de Production / LGI2P |
Jury : | Président / Présidente : Nicole Levy |
Examinateurs / Examinatrices : Marianne Huchard, David Delahaye, Nicolas Anquetil, Sylvain Vauttier, Nicolas Belloir, Mourad-Chabane Oussalah, Christelle Urtado | |
Rapporteur / Rapporteuse : Nicole Levy, Nicolas Anquetil |
Mots clés
Résumé
Tout au long de son cycle de vie, un logiciel peut connaître de nombreux changements affectant potentiellement sa conformité avec sa documentation originelle. De plus, bien qu'une documentation à jour, conservant les décisions de conception prises pendant le cycle de développement, soit reconnue comme une aide importante pour maîtriser les évolutions, la documentation des logiciels est souvent obsolète. Les modèles d’architectures sont l’une des pièces majeures de la documentation. Assurer leur cohérence avec les autres modèles d’un logiciel (incluant son code) pendant les processus d’évolution (co-évolution) est un atout majeur pour la qualité logicielle. En effet, la compréhension des architectures logicielles est hautement valorisable en termes de capacités de réutilisation, d'évolution et de maintenance. Pourtant les modèles d’architectures sont rarement explicitement disponibles et de nombreux travaux de recherche visent à les retrouver à partir du code source. Cependant, la plupart des approches existantes n'effectuent pas un strict processus de rétro-documentation afin de re-documenter les architectures ''comme elles sont implémentées'' mais appliquent des étapes de ré-ingénierie en regroupant des éléments de code dans de nouveaux composants. Ainsi, cette thèse propose un processus de re-documentation des architectures telles qu’elles ont été conçues et implémentées, afin de fournir un support d’analyse des décisions architecturales effectives. Cette re-documentation se fait par l’analyse du code orienté objet et les descripteurs de déploiement de projets. Le processus re-documente les projets dans le langage de description d’architecture Dedal, qui est spécialement conçu pour contrôler et guider l’évolution des logiciels.Un autre aspect très important de la documentation des logiciels est le suivi de leurs différentes versions. Dans de nombreuses approches et gestionnaires de version actuels, comme Github, les fichiers sont versionnés de manière agnostique. S’il est possible de garder une trace de l’historique des versions de n’importe quel fichier, aucune information ne peut être fournie sur la sémantique des changements réalisés. En particulier, lors du versionnement d’éléments logiciels, il n’est fourni aucun diagnostic de retro-compatibilité avec les versions précédentes. Cette thèse propose donc un mécanisme de versionnement d’architectures logicielles basé sur le métamodèle et les propriétés formelles de l’ADL Dedal.Il permet d’analyser automatiquement les versions en termes de substituabilité, de gérer la propagation de version et d’incrémenter automatiquement les numéros de versions en tenant compte de l’impact des changements. En proposant cette approche formelle, cette thèse vise à prévenir le manque de contrôle des décisions architecturale (dérive / érosion).Cette thèse s’appuie sur une étude empirique appliquant les processus de re-documentation et de versionnement à de nombreuses versions d’un projet industriel extrait de GitHub.