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.
Chapitre 5 - Description technique du travail réalisé<br />
Ainsi comme on peut le voir à la figure 20, créer un graphe <strong>de</strong> dépendance avec l outil Dot<br />
nécessite d écrire au préalable les relations entre les n uds que l ont veut afficher dans un format<br />
propre à l outil (n ud 1 -> noeud2). On qu on doit ainsi créer un fichier (en format .dot)<br />
contenant toutes les définitions <strong>de</strong>s n uds et <strong>de</strong>s liens entre ces n uds, puis l exécuter avec la<br />
comman<strong>de</strong> dot suivante : dot -Tps -o fichier.ps fichier.dot<br />
C est donc dans ce format Dot que nous allons formater notre base <strong>de</strong> données.<br />
5.2.2. Formatage <strong>de</strong> la base <strong>de</strong> données au format dot<br />
Dans cette section, nous présentons comment la base <strong>de</strong> donnée générée grâce à la version<br />
modifiée <strong>de</strong> EiC est exploitée pour avoir une représentation graphique claire <strong>de</strong> nos dépendances<br />
entre les données. Pour cela, nous avons utilisé les possibilités <strong>de</strong> l outil Dot pour représenter<br />
chaque type d information <strong>de</strong> la base <strong>de</strong> données sous forme d un n ud ou d un lien dans le<br />
graphe. Ainsi, chaque fonction (Call, main, Return) est représentée par un rectangle, rouge<br />
pour la fontion main() et noir pour les autres, les définitions <strong>de</strong> variables (Def) sont<br />
représentées par un n ud vert en forme d ellipse, l utilisation d une variable est représentée par<br />
un line allant <strong>de</strong> la l igne d origine <strong>de</strong> sa valeur vers la ligne où elle est appellée. Les lignes<br />
d instructions sont alors représentées par leur i<strong>de</strong>ntifiant <strong>de</strong> ligne unique (numéro <strong>de</strong><br />
ligne:numero d appel) et alignées verticalement à gauche du graphe <strong>de</strong> dépendance, tel un<br />
axe <strong>de</strong> mesure, par ordre d appel dans le programme. Nous pouvons visualiser cette<br />
représentation graphique sur la figure 21, qui définit une variable x (i<strong>de</strong>ntifiée par 1-0) puis<br />
retourne sa valeur avec la fonction return.<br />
var2.c<br />
1 int main()<br />
2 {<br />
3 int x;<br />
4 x = 12;<br />
5 return x;<br />
6 }<br />
Figure 21. Graphe <strong>de</strong> dépendances <strong>dynamique</strong>s <strong>de</strong> données pour "var2.c"<br />
Nous pouvons voir sur cette représentation graphique, que les n uds du graphe son positionnés<br />
au même niveau que les i<strong>de</strong>ntifiants <strong>de</strong> leurs ligne d appel sur l échelle d appel <strong>de</strong>s instructions (à<br />
gauche du graphe), sauf pour la fonction main qui est i<strong>de</strong>ntifiée par son nom et son compteur<br />
d appel. Ainsi, l échelle <strong>de</strong> gauche indique que le fichier analysé commence par la fonction main<br />
et que la <strong>de</strong>rnière ligne <strong>de</strong> co<strong>de</strong> exécutée est la ligne 5:1 (end). Le graphe <strong>de</strong> dépendances à droite<br />
<strong>de</strong> cette échelle nous indique que la fonction main (rectangle rouge) définit une variable en ligne<br />
4:1 (ellipse verte), dont la valeur est renvoyée (fonction return) par l instruction <strong>de</strong> la ligne 5:1.<br />
Les conditions <strong>de</strong>s structures <strong>de</strong> controle telles que if et while, sont représentées par un noed<br />
dans le graphe <strong>de</strong> dépendances en forme <strong>de</strong> losange, définit <strong>de</strong> sorte que si la condition est vraie,<br />
56