La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Outils d’analyse statique

Présentations similaires


Présentation au sujet: "Outils d’analyse statique"— Transcription de la présentation:

1 Outils d’analyse statique
Année : 2006/2007 GLG101 : Test et Validation du logiciel Nom du fichier : OUTILS_ANALYSE_STATIQUE.PPT Rédacteur : Jean-Yves Bouttery Présentation: le 15 mai 2007 Auditoire : Mr ANDRZEJAK Willy et Auditeurs CNAM Outils d’analyse statique

2 INTRODUCTION Augmentation puissance des ordinateurs.
Augmentation complexité des programmes. Risque de catastrophes . *Airbus 88. *Ariane V en 96. *Pb de tous les jours.

3 Comment éviter cela? En effectuant des tests Boite noire Boite blanche

4 Différences Tests boîtes noires Tests boîtes blanches
Tests fonctionnels Méconnaissance de l’implémentation technique du besoin fonctionnel Les jeux d’essai dépendent des spécification du besoin Tests boîtes blanches Tests structurels Les jeux d’essai dépendent de l’analyse du code source

5 Plan de l’exposé Différentes utilisations des outils.
Informations produites. Méthodes d’analyse. Les outils.

6 Différentes utilisations.
1. La recherche de métriques. -La proportion de code à l’intérieur de boucles. -Le taux de commentaires. -Le nombre de lignes plus lisibles et faciles à maintenir.

7 Différentes utilisations.
2. Erreurs pouvant survenir à l’exécution. -Etendre le travail du compilateur. -ex: l’accès à un tableau à l’extérieur de ses bornes gain de temps pour régler les pb

8 Différentes utilisations.
3. Le découpage ou slicing. -Réutilisation d’une partie de code. -Faciliter la compréhension. Faire ressortir certaines instructions d’un programme en relation avec une propriété. Possibilité de réduire le problème de l’indécidabilité de l’analyse statique.

9 Différentes utilisations.
4. Politique de sécurité. Recherche de codes malicieux .

10 Plan de l’exposé Différentes utilisations des outils.
Informations produites. Méthodes d’analyse. Les outils.

11 Informations produites.
1. l’ arbre syntaxique. -La syntaxe d’un langage étant représentée par une grammaire, il est possible de faire un arbre syntaxique du programme. -départ pour acquérir les informations

12 Informations produites.
2. Le graphe de flot de contrôle. -les noeuds = instructions. -arc vers nœuds=instruction suivante -Il met en évidence les boucles, instructions conditionnelles Un chemin = scénario d’exécution.

13 Informations produites.
void main() { int x = 0; int y = 1; while (y < 10) y = 2 * y; x = x + 1; } printf ("%d",x); printf ("%d",y);

14 Informations produites.
3. Le graphe de dépendance de contrôle. -montre quelles instructions seront exécutées en fonction de la valeur d’une expression dans le programme. -Pour deux noeuds p et q, un arc va de p vers q si la valeur de l’expression p a un impact sur le fait que l’instruction q soit exécutée ou non.

15 Informations produites.

16 Informations produites.
4. L’analyse du flot de données. -informe sur le déplacement des données dans le programme. Une information de base qui peut être très utile est l’ensemble des variables utilisées et celui des variables modifiées pour chaque instruction du programme.

17 Informations produites.
void main() { int x = 0; Utilise={} Définit={x} int y = 1; Utilise={} Définit={y} while (y < 10) Utilise={y} Définit={} y = 2 * y; Utilise={y} Définit={y} x = x + 1; Utilise={x} Définit={x} } printf ("%d",x); Utilise={x} Définit={} printf ("%d",y); Utilise={y} Définit={}

18 Informations produites.
5. Le graphe de dépendance de données. -Dans ce graphe, un arc va de p vers q s’il est possible que la valeur d’une des variables modifiées à l’instruction p soit utilisée à l’instruction q sans qu’elle ne soit modifiée entre temps.

19 Informations produites.

20 Informations produites.
5. Graphe de dépendance du programme. -l’union du graphe de dépendance de contrôle et du graphe de dépendance de données.

21 Informations produites.

22 Informations produites.
6. Il existe toute une série de graphes qui peuvent être créer en fonction des besoins.(dépendance système)

23 Informations produites.
7. Le découpage. -Le découpage arrière: Les noeuds qui peuvent atteindre le nœud choisi en suivant les arcs à contresens. -Le découpage avant: Les noeuds que l’on peut atteindre à partir du noeud choisi en suivant les arcs.

24 Informations produites.

25 Informations produites.

26 Informations produites.
int somme(int a,int b) { int c; c = a + b; return c; } void main() int x;int y; x =somme(2,3); printf("%d",x); y = somme(x,3); printf("%d",y);

27 Informations produites.
La figure 2.5 montre un exemple de graphe de dépendance du système pour le programme suivant. Dans ce graphe, les arcs inter procéduraux sont en pointillés. Parmi ces arcs, ceux en lignes courbes sont des arcs de contrôle, les autres sont des arcs de données. La figure 2.8 montre un découpage avant sur le deuxième appel de la fonction somme fait à partir du graphe de dépendance du système à la figure 2.5 en mettant les arcs et les noeuds en gras. A la sortie de la fonction somme, une croix est dessinée sur une des flèches pour montrer qu’il ne faut pas l’emprunter, car elle ne retourne pas dans la fonction main à l’endroit où la fonction somme a été appelée.

28 Plan de l’exposé Différentes utilisations des outils.
Informations produites. Méthodes d’analyse. Les outils.

29 Les méthodes 1. analyse lexicale et syntaxique.
-L’analyse lexicale consiste à découper le programme en petites entités appelées ’’tokens’’  (opérateurs, mots réservés, variables, constantes numériques, alphabétiques…).

30 Les méthodes 1. analyse lexicale et syntaxique.
-L’analyse lexicale consiste à découper le programme en petites entités appelées ’’tokens’’  (opérateurs, mots réservés, variables, constantes numériques, alphabétiques…).

31 Les méthodes Lors de l'analyse syntaxique, on vérifie que
l'ordre des tokens correspond à l'ordre défini pour le langage. On dit que l'on vérifie la syntaxe du langage à partir de la définition de sa grammaire. arbre de la suite des tokens obtenus lors de la phase récédente

32 Les méthodes. La figure 2.5 montre un exemple de graphe de dépendance du système pour le programme suivant. Dans ce graphe, les arcs inter procéduraux sont en pointillés. Parmi ces arcs, ceux en lignes courbes sont des arcs de contrôle, les autres sont des arcs de données. La figure 2.8 montre un découpage avant sur le deuxième appel de la fonction somme fait à partir du graphe de dépendance du système à la figure 2.5 en mettant les arcs et les noeuds en gras. A la sortie de la fonction somme, une croix est dessinée sur une des flèches pour montrer qu’il ne faut pas l’emprunter, car elle ne retourne pas dans la fonction main à l’endroit où la fonction somme a été appelée.

33 Les méthodes Les métriques de Halstead sont basées sur
l'interprétation du code comme une séquence de marqueurs, classifiés chacun comme étant un opérateur ou une opérande. nombre d'opérateurs uniques (distints)(n1) nombre d'opérandes uniques (distinctes)(n2) nombre total d'opérateurs (N1) nombre total d'opérandes (N2)

34 Les méthodes On peut obtenir: Longueur du programme (N) :N1+N2
Taille du vocabulaire (n) : n1+n2 Volume du programme (V) : V=N* Log2(n) Nbre de lignes de programme et de commentaire… Le niveau de difficulté (D) /de programme (L)…

35 Les méthodes Le nombre cyclomatique de McCabe v(G).
Il mesure le nombre de chemins linéaires indépendants dans un module de programme. La complexité McCabe est l'un des métriques de software les plus largement acceptées, elle est conçue pour être indépendante du langage et du format de langage.

36 Les méthodes 2. Par interprétation abstraite.
Les chercheurs ont développé des méthodes de preuve de la correction des programmes. Ceci consiste à fournir une sémantique décrivant formellement les exécutions d'un programme, puis démontrer un théorème exprimant que ces exécutions ont une certaine propriété = impossible

37 Les méthodes L'interprétation abstraite procède par
approximation correcte de la sémantique. Si l'approximation est suffisamment grossière, elle est calculable par un ordinateur. Si elle est suffisamment fine, elle permet d'obtenir une preuve formelle de correction. L'objectif est donc de rechercher des approximations suffisamment précises et peu coûteuses à calculer.

38 Les méthodes L'interprétation abstraite procède par
approximation correcte de la sémantique. Si l'approximation est suffisamment grossière, elle est calculable par un ordinateur. Si elle est suffisamment fine, elle permet d'obtenir une preuve formelle de correction. L'objectif est donc de rechercher des approximations suffisamment précises et peu coûteuses à calculer.

39 Les méthodes Avec cette description, il est possible de
vérifier statiquement (sans exécution du programme) des propriétés dynamiques, c'est-à-dire dépendantes de l'exécution (code mort, débordement de tableau, flot de données, etc.).

40 Plan de l’exposé Différentes utilisations des outils.
Informations produites. Méthodes d’analyse. Les outils.

41 Les outils La figure 2.5 montre un exemple de graphe de dépendance du système pour le programme suivant. Dans ce graphe, les arcs inter procéduraux sont en pointillés. Parmi ces arcs, ceux en lignes courbes sont des arcs de contrôle, les autres sont des arcs de données. La figure 2.8 montre un découpage avant sur le deuxième appel de la fonction somme fait à partir du graphe de dépendance du système à la figure 2.5 en mettant les arcs et les noeuds en gras. A la sortie de la fonction somme, une croix est dessinée sur une des flèches pour montrer qu’il ne faut pas l’emprunter, car elle ne retourne pas dans la fonction main à l’endroit où la fonction somme a été appelée.

42 Les outils La figure 2.5 montre un exemple de graphe de dépendance du système pour le programme suivant. Dans ce graphe, les arcs inter procéduraux sont en pointillés. Parmi ces arcs, ceux en lignes courbes sont des arcs de contrôle, les autres sont des arcs de données. La figure 2.8 montre un découpage avant sur le deuxième appel de la fonction somme fait à partir du graphe de dépendance du système à la figure 2.5 en mettant les arcs et les noeuds en gras. A la sortie de la fonction somme, une croix est dessinée sur une des flèches pour montrer qu’il ne faut pas l’emprunter, car elle ne retourne pas dans la fonction main à l’endroit où la fonction somme a été appelée.

43

44 Conclusion. Réponse à beaucoup de questions Mais l’analyse
statique n’est pas suffisante pour garantir le bon fonctionnement d’un programme. En effet il y a toujours le problème de l’indécidabilité De certaines actions, c’est pour cela que l’analyse statique doit être couplée à l’analyse fonctionnelle. La figure 2.5 montre un exemple de graphe de dépendance du système pour le programme suivant. Dans ce graphe, les arcs inter procéduraux sont en pointillés. Parmi ces arcs, ceux en lignes courbes sont des arcs de contrôle, les autres sont des arcs de données. La figure 2.8 montre un découpage avant sur le deuxième appel de la fonction somme fait à partir du graphe de dépendance du système à la figure 2.5 en mettant les arcs et les noeuds en gras. A la sortie de la fonction somme, une croix est dessinée sur une des flèches pour montrer qu’il ne faut pas l’emprunter, car elle ne retourne pas dans la fonction main à l’endroit où la fonction somme a été appelée.

45 Conclusion. Questions??? Examen: différence boites noires et blanches.
Qu’est ce que l’indécidabilité en analyse statique. La figure 2.5 montre un exemple de graphe de dépendance du système pour le programme suivant. Dans ce graphe, les arcs inter procéduraux sont en pointillés. Parmi ces arcs, ceux en lignes courbes sont des arcs de contrôle, les autres sont des arcs de données. La figure 2.8 montre un découpage avant sur le deuxième appel de la fonction somme fait à partir du graphe de dépendance du système à la figure 2.5 en mettant les arcs et les noeuds en gras. A la sortie de la fonction somme, une croix est dessinée sur une des flèches pour montrer qu’il ne faut pas l’emprunter, car elle ne retourne pas dans la fonction main à l’endroit où la fonction somme a été appelée.


Télécharger ppt "Outils d’analyse statique"

Présentations similaires


Annonces Google