Haddaji, Mohamed Amine
(2021).
« Validation de dépendances de programme par traces d'exécution » Mémoire.
Montréal (Québec), Université du Québec à Montréal, Maîtrise en informatique.
Fichier(s) associé(s) à ce document :
Résumé
Une étape importante de la ré-ingénierie consiste à identifier des regroupements d’éléments de code qui implantent une fonctionnalité relativement cohésive et fréquemment utilisée, c’est à dire, des ’services’ potentiels. Pour l’identification de services, Mili et al. ont choisi de se contenter de l’analyse du code source de l’application. Pour ce faire, ils ont besoin de construire un graphe de dépendances du programme. La construction du graphe d’appels est lui-même problématique car les applications légataires Java utilisent un certain nombre de mécanismes (e.g. introspection, utilisation de fichiers de configurations) et de technologies (divers services offerts par les « conteneurs » ou serveurs d’applications J2EE) qui cachent certaines relations d’appel entre différentes parties du code de l’application, ce qui peut être en échec l’analyse statique du code, menant à des « graphes d’appels disjoints ». (Hecht et al., 2018) ont développé une technique pour spécifier ces dépendances cachées sous forme de règles, et d’appliquer ces règles sur le graphe d’appel généré par l’analyse statique, pour ajouter les dépendances cachées. Dans ce mémoire, notre objectif est de valider ces dépendances cachées (relations d’appel implicites) en s’appuyant sur des traces d’exécution de ces mêmes applications. Pour y parvenir, nous devons construire des graphes d’appels statiques et dynamiques et les comparer. Nous présentons les outils que nous avons créés pour construire des graphes d’appels. Nous avons également résolu certains problèmes afin d’avoir des graphes plus précis tels que le polymorphisme, les appels qui se trouvent dans les blocs statiques et d’initialisation, les modifications apportées par le compilateur ce qui peut rendre la comparaison plus difficile.
_____________________________________________________________________________
MOTS-CLÉS DE L’AUTEUR : graphe d’appels, comparaison des graphes d’appels, validation des dépendances cachées