2006-2007 1
Outils d’analyse statique
Année : 2006/2007GLG101 : 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
2006-2007 2
INTRODUCTION
Augmentation puissance des ordinateurs.
Augmentation complexité des programmes.
Risque de catastrophes .*Airbus 88.*Ariane V en 96.*Pb de tous les jours.
2006-2007 3
Comment éviter cela?
En effectuant des tests
Boite noire Boite blanche
2006-2007 4
Différences
Tests boîtes noires• 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
2006-2007 5
Plan de l’exposé
I. Différentes utilisations des outils.
II. Informations produites.III. Méthodes d’analyse.IV. Les outils.
2006-2007 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.
2006-2007 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
2006-2007 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.
2006-2007 9
Différentes utilisations.
4. Politique de sécurité.
Recherche de codes malicieux .
2006-2007 10
Plan de l’exposé
I. Différentes utilisations des outils.
II. Informations produites.III. Méthodes d’analyse.IV. Les outils.
2006-2007 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
2006-2007 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.
2006-2007 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); }
2006-2007 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.
2006-2007 15
Informations produites.
2006-2007 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 duprogramme.
2006-2007 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={} }
2006-2007 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.
2006-2007 19
Informations produites.
2006-2007 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.
2006-2007 21
Informations produites.
2006-2007 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)
2006-2007 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.
2006-2007 24
Informations produites.
2006-2007 25
Informations produites.
2006-2007 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);
}
2006-2007 27
Informations produites.
2006-2007 28
Plan de l’exposé
I. Différentes utilisations des outils.
II. Informations produites.III. Méthodes d’analyse.IV. Les outils.
2006-2007 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…).
2006-2007 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…).
2006-2007 31
Les méthodes
Lors de l'analyse syntaxique, on vérifie quel'ordre des tokens correspond à l'ordre définipour le langage. On dit que l'on vérifie lasyntaxe du langage à partir de la définitionde sa grammaire.
arbre de la suite des tokens obtenus lors de la phase récédente
2006-2007 32
Les méthodes.
2006-2007 33
Les méthodes
Les métriques de Halstead sont basées surl'interprétation du code comme une séquence demarqueurs, classifiés chacun comme étant unopé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)
2006-2007 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)…
2006-2007 35
Les méthodes
Le nombre cyclomatique de McCabe v(G).Il mesure le nombre de chemins linéairesindépendants dans un module de programme.La complexité McCabe est l'un des métriquesde software les plus largement acceptées, elleest conçue pour être indépendante dulangage et du format de langage.
2006-2007 36
Les méthodes
2. Par interprétation abstraite.Les chercheurs ont développé desméthodes de preuve de la correction desprogrammes. Ceci consiste à fournir unesémantique décrivant formellement lesexécutions d'un programme, puis
démontrerun théorème exprimant que ces exécutionsont une certaine propriété = impossible
2006-2007 37
Les méthodes
L'interprétation abstraite procède parapproximation correcte de la sémantique. Sil'approximation est suffisamment grossière, elle
estcalculable par un ordinateur. Si elle estsuffisamment fine, elle permet d'obtenir unepreuve formelle de correction. L'objectif est
doncde rechercher des approximations suffisammentprécises et peu coûteuses à calculer.
2006-2007 38
Les méthodes
L'interprétation abstraite procède parapproximation correcte de la sémantique. Sil'approximation est suffisamment grossière, elle
estcalculable par un ordinateur. Si elle estsuffisamment fine, elle permet d'obtenir unepreuve formelle de correction. L'objectif est
doncde rechercher des approximations suffisammentprécises et peu coûteuses à calculer.
2006-2007 39
Les méthodes
Avec cette description, il est possible de vérifier statiquement (sans exécution duprogramme) des propriétés dynamiques,c'est-à-dire dépendantes de l'exécution
(codemort, débordement de tableau, flot dedonnées, etc.).
2006-2007 40
Plan de l’exposé
I. Différentes utilisations des outils.
II. Informations produites.III. Méthodes d’analyse.IV. Les outils.
2006-2007 41
Les outils
2006-2007 42
Les outils
2006-2007 43
2006-2007 44
Conclusion.
Réponse à beaucoup de questions Mais l’analysestatique n’est pas suffisante pourgarantir le bon fonctionnement d’un programme.
Eneffet il y a toujours le problème de l’indécidabilitéDe certaines actions, c’est pour cela que l’analysestatique doit être couplée à l’analyse
fonctionnelle.
2006-2007 45
Conclusion.
Questions???
Examen: différence boites noires et blanches. Qu’est ce que l’indécidabilité en
analyse statique.