Rim Chaabane. Analyse dynamique de ... - Université Paris 8
Rim Chaabane. Analyse dynamique de ... - Université Paris 8
Rim Chaabane. Analyse dynamique de ... - Université Paris 8
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
<strong>Analyse</strong> <strong>dynamique</strong> <strong>de</strong> programmes C<br />
Chapitre 8 - Conclusion et perspectives<br />
Pour conclure, nous résumons dans un premier temps ce qui a été vu tout au long <strong>de</strong> ce<br />
mémoire, puis nous présentons les perspectives pour notre projet d analyse <strong>dynamique</strong> <strong>de</strong><br />
données, avec toutes les améliorations pouvant à terme faire que cet outil soit une réelle ai<strong>de</strong> pour<br />
les développeurs du langage C.<br />
Nous avons présenté dans les premiers chapitres l intérêt <strong>de</strong> ce projet, à savoir permettre aux<br />
programmeurs <strong>de</strong> connaître la trace <strong>de</strong>s programmes C qu ils développent ou qui ont été<br />
développés par un tiers et dont la taille en lignes <strong>de</strong> co<strong>de</strong>s est trop importante pour en<br />
comprendre aisément le fonctionnement. Ainsi, exploiter le programme source pendant son<br />
exécution pour en générer une représentation graphique <strong>de</strong>s dépendances <strong>de</strong>s données qui y sont<br />
manipulées, permet d apporter <strong>de</strong>s informations précises sur le comportement du programme.<br />
Ceci peut également ai<strong>de</strong>r le programmeur à détecter <strong>de</strong>s disfonctionnements dans le<br />
déroulement <strong>de</strong> son exécution, notamment lorsque le programme se comporte <strong>de</strong> manière<br />
différente <strong>de</strong> celle recherchée par son concepteur tout en donnant un résultat correct. La<br />
représentation graphique <strong>de</strong>s dépendances entre les données d un programme peut également<br />
ai<strong>de</strong>r les développeurs dans leur travail d optimisation <strong>de</strong> co<strong>de</strong>.<br />
Pour réaliser notre programme d analyse <strong>dynamique</strong> <strong>de</strong> programmes C, nous nous sommes basés<br />
sur le prototype DDFgraph qui génère <strong>de</strong>s graphes <strong>dynamique</strong>s <strong>de</strong> dépendances pour <strong>de</strong>s<br />
programmes Lisp et qui a été réalisé en modifiant un interprète Lisp. Modifie un compilateur C<br />
représentant un travail considérable, difficile à envisager dans le cadre <strong>de</strong> ce projet. Nous avons<br />
alors cherché un interprète du langage C dont la modification était plus abordable. Puis nous<br />
avons testé les différents interprètes C existant dans le domaine public, EiC qui s est alors avéré le<br />
plus conforme à nos attentes.<br />
Nous avons alors entrepris d en comprendre le fonctionnement, pour ensuite modifier son<br />
option <strong>de</strong> trace afin qu elle génère plus d informations que dans sa version initiale. Nous avons<br />
alors pu obtenir grâce à cette technique <strong>de</strong>s informations telles que les dépendances entre<br />
variables entières, les appels <strong>de</strong> fonctions, les conditions et les boucles. Nous avons enregistré ces<br />
informations dans une base <strong>de</strong> données que nous avons ensuite exploitée à l ai<strong>de</strong> d un script awk.<br />
Puis nous avons utilisé certaines fonctionnalités <strong>de</strong> l outil Dot pour obtenir un affichage<br />
graphique <strong>de</strong>s dépendances entres les données, avec une échelle d enchaînement <strong>de</strong>s instruction<br />
et quelques règles d affichage. Nous avons également automatisé la génération <strong>de</strong> base <strong>de</strong> donnée<br />
ainsi que du graphe grâce à un script Shell.<br />
Notre technique d extraction <strong>dynamique</strong> <strong>de</strong> données basée sur l interprète EiC, présente <strong>de</strong>s<br />
avantages tels qu une possibilité <strong>de</strong> gestion <strong>de</strong> l ensemble du langage C, et la possibilité <strong>de</strong><br />
portabilité <strong>de</strong> notre outil sur un bon nombre <strong>de</strong> systèmes. De plus, l automatisation <strong>de</strong> la<br />
génération <strong>de</strong>s graphes, avec le script Shell, rend notre outil simple d utilisation. La représentation<br />
graphique suivant une échelle d exécution <strong>de</strong>s instructions, permet au développeur <strong>de</strong> tracer<br />
visuellement son co<strong>de</strong> source <strong>de</strong> manière très précise.<br />
Bien que notre outil soit fonctionnel pour <strong>de</strong>s cas simples <strong>de</strong> programmes C, il présente <strong>de</strong>s<br />
limites que nous voyons en section 8.1. Nous voyons également à la section 8.2 quelques<br />
améliorations possibles à notre outil, puis nous concluons en présentant les perspectives pour ce<br />
projet.<br />
76