Rim Chaabane. Analyse dynamique de ... - Université Paris 8
Rim Chaabane. Analyse dynamique de ... - Université Paris 8
Rim Chaabane. Analyse dynamique de ... - Université Paris 8
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
<strong>Analyse</strong> <strong>dynamique</strong> <strong>de</strong> programmes C<br />
Chapitre 1 - Introduction<br />
Ce projet d analyse <strong>dynamique</strong> <strong>de</strong> programmes C, se place dans le cadre <strong>de</strong> travaux <strong>de</strong> recherches<br />
sur l analyse <strong>de</strong> programmes. Ces travaux ont pour but <strong>de</strong> faciliter la compréhension <strong>de</strong><br />
programmes, d ai<strong>de</strong>r les développeurs tenus <strong>de</strong> maintenir <strong>de</strong>s programmes à cerner plus<br />
facilement les actions effectuées par ces <strong>de</strong>rniers et <strong>de</strong> leur éviter la lecture exhaustive <strong>de</strong>s très<br />
nombreuses lignes <strong>de</strong> co<strong>de</strong>s pouvant composer un programme.<br />
Avant <strong>de</strong> détailler les objectifs <strong>de</strong> ce projet, nous commençons par expliquer qu est ce que<br />
l analyse <strong>de</strong> programmes, et les différentes techniques d analyses existant à l heure actuelle. Dans<br />
la <strong>de</strong>uxième section, nous définissons les objectifs du projet d analyse <strong>dynamique</strong> <strong>de</strong> programmes<br />
C. La <strong>de</strong>rnière section donne un aperçu rapi<strong>de</strong> <strong>de</strong>s capacités <strong>de</strong> notre outil d analyse <strong>dynamique</strong><br />
<strong>de</strong> programmes C.<br />
1.1. Qu est-ce que l analyse <strong>de</strong> programmes ?<br />
L analyse <strong>de</strong> programmes est un domaine <strong>de</strong> recherche qui s est développé dans le but <strong>de</strong><br />
comprendre assez rapi<strong>de</strong>ment les propriétés <strong>de</strong>s programmes <strong>de</strong> plus en plus complexes, et dont<br />
la maintenance <strong>de</strong>vient fastidieuse. En effet, il <strong>de</strong>vient nécessaire <strong>de</strong> mécaniser la procédure <strong>de</strong><br />
maintenance d un programme ou du moins d en faciliter la tâche, d autant plus que cette tâche est<br />
la plus coûteuse dans le cycle <strong>de</strong> production d un logiciel. Des étu<strong>de</strong>s ont d ailleurs montré que<br />
20% du coût <strong>de</strong> production est généré lors <strong>de</strong> la phase <strong>de</strong> développement, 40% lors <strong>de</strong> la phase<br />
<strong>de</strong> débuggage et 40% lors <strong>de</strong> la phase d ajout <strong>de</strong> nouvelles fonctionnalités [HAT 97, JAH 00]. Il<br />
est donc évi<strong>de</strong>nt que 80% <strong>de</strong>s dépenses se font lors <strong>de</strong> la phase <strong>de</strong> correction-maintenance d un<br />
logiciel. Ceci explique l importance pour les industries <strong>de</strong> réduire leurs dépenses pour la<br />
maintenance d un programme.<br />
Un analyseur <strong>de</strong> programmes est alors une ai<strong>de</strong> précieuse pour le développeur, car il lui permet <strong>de</strong><br />
comprendre plus facilement ce que fait un programme, en particulier dans le cas où ce <strong>de</strong>rnier fut<br />
développé plusieurs années en arrière et/ ou par différents programmeurs. Un analyseur permet<br />
également <strong>de</strong> détecter plus facilement <strong>de</strong>s erreurs ou <strong>de</strong>s instructions consommatrices en<br />
ressources systèmes, ce qui favorise alors un débuggage et une optimisation <strong>de</strong> co<strong>de</strong> plus rapi<strong>de</strong>s.<br />
Voici une liste possible d utilisation <strong>de</strong>s résultats d outils d analyse [LAN 05] :<br />
Les analyses <strong>de</strong> flots <strong>de</strong> données permettent <strong>de</strong> détecter notamment les variables inutiles<br />
ou les expressions calculées à un point <strong>de</strong> programme donné.<br />
Les analyses d'alias produisent <strong>de</strong>s informations sur le partage entre variables dans les<br />
langages à manipulation explicite <strong>de</strong> pointeurs.<br />
Le filtrage <strong>de</strong> programmes (slicing) consiste à i<strong>de</strong>ntifier les instructions d'un programme<br />
nécessaires au calcul <strong>de</strong> variables données.<br />
Le débuggage est une analyse <strong>dynamique</strong> <strong>de</strong> programmes interactive, qui permet à<br />
l utilisateur <strong>de</strong> spécifier «à la volée » les informations et propriétés qu il désire voir sur<br />
l exécution en cours.<br />
9