19.06.2014 Views

Rim Chaabane. Analyse dynamique de ... - Université Paris 8

Rim Chaabane. Analyse dynamique de ... - Université Paris 8

Rim Chaabane. Analyse dynamique de ... - Université Paris 8

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!