Thèse soutenue

Ré-ingénierie des applications à objets pour une amélioration de leurs attributs de qualité

FR  |  
EN
Auteur / Autrice : Soumia Zellagui
Direction : Chouki TibermacineHinde Lilia BouzianeChristophe Dony
Type : Thèse de doctorat
Discipline(s) : Informatique
Date : Soutenance le 05/07/2019
Etablissement(s) : Montpellier
Ecole(s) doctorale(s) : École doctorale Information, Structures, Systèmes (Montpellier ; 2015-....)
Partenaire(s) de recherche : Laboratoire : Laboratoire d'informatique, de robotique et de micro-électronique (Montpellier ; 1992-....)
Jury : Président / Présidente : Bernard Coulette
Examinateurs / Examinatrices : Chouki Tibermacine, Hinde Lilia Bouziane, Christophe Dony, Bernard Coulette, Mireille Blay-Fornarino, Antoine Beugnard
Rapporteurs / Rapporteuses : Mireille Blay-Fornarino, Antoine Beugnard

Résumé

FR  |  
EN

Les systèmes logiciels existants représentent souvent des investissements importants pour les entreprises qui les développent avec l’intention de les utiliser pendant une longue période de temps. La qualité de ces systèmes peut être dégradée avec le temps en raison des modifications complexes qui leur sont incorporées. Pour faire face à une telle dégradation lorsque elle dépasse un seuil critique, plusieurs stratégies peuvent être utilisées. Ces stratégies peuvent se résumer en: 1) remplaçant le système par un autre développé à partir de zéro, 2) poursuivant la maintenance(massive) du système malgré son coût ou 3) en faisant une réingénierie du système. Le remplacement et la maintenance massive ne sont pas des solutions adaptées lorsque le coût et le temps doivent être pris en compte, car elles nécessitent un effort considérable et du personnel pour assurer la mise en œuvre du système dans un délai raisonnable. Dans cette thèse, nous nous intéressons à la solution de réingénierie. En général, la réingénierie d’un système logiciel inclut toutes les activités après la livraison à l’utilisateur pour améliorer sa qualité. Cette dernière est souvent caractérisé par un ensemble d’attributs de qualité. Nous proposons trois contributions pour améliorer les attributs de qualité spécifiques, que soient:la maintenabilité, la compréhensibilité et la modularité. Afin d’améliorer la maintenabilité, nous proposons de migrer les systèmes logiciels orientés objets vers des systèmes orientés composants. Contrairement aux approches existantes qui considèrent un descripteur de composant comme un cluster des classes, chaque classe du système existant sera migré en un descripteur de composant. Afin d’améliorer la compréhensibilité, nous proposons une approche pour la reconstruction de modèles d’architecture d’exécution des systèmes orientés objet et de gérer la complexité des modèles résultants. Les modèles, graphes, générés avec notre approche ont les caractéristiques suivantes: les nœuds sont étiquetés avec des durées de vie et des probabilités d’existence permettant 1) une visualisation des modèles avec un niveau de détail. 2) de cacher/montrer la structure interne des nœuds. Afin d’améliorer la modularité des systèmes logiciels orientés objets, nous proposons une approche d’identification des modules et des services dans le code source de ces systèmes.Dans cette approche, nous croyons que la structure composite est la structure principale du système qui doit être conservée lors du processus de modularisation, le composant et ses composites doivent être dans le même module. Les travaux de modularisation existants qui ont cette même vision, supposent que les relations de composition entre les éléments du code source sont déjà disponibles ce qui n’est pas toujours évident. Dans notre approche, l’identification des modules commence par une étape de reconstruction de modèles d’architecture d’exécution du système étudié. Ces modèles sont exploités pour d’identification de relations de composition entre les éléments du code source du système étudié. Une fois ces relations ont été identifiées, un algorithme génétique conservatif aux relations de composition est appliqué sur le système pour identifier des modules. En dernier, les services fournis par les modules sont identifiés à l’aide des modèles de l’architecture d’exécution du système logiciel analysé. Quelques expérimentations et études de cas ont été réalisées pour montrer la faisabilité et le gain en maintenabilité, compréhensibilité et modularité des logiciels traités avec nos propositions.