Outils d’analyse statique

Slides:



Advertisements
Présentations similaires
Premier programme en C :
Advertisements

EVALUER UNE ACTION.
Tests et Validation du logiciel
Projet ORI-OAI Outil de Référencement et dIndexation Réseau de portails OAI Strasbourg, 21 novembre 2007.
LIège, Le rôle du jeune enfant dans les coalitions familiales Cf alliances et coalitions Minuchin 1974.
Spécification et qualité du logiciel
Introduction à l’Algorithmique
Calculs de complexité d'algorithmes
Apprentissage des mathématiques Résolution de problèmes
Algorithmique Résume.
Présentation du Projet CAUSA
Mathématiques au cycle 2
Système formel Nous avons introduit : signes de variables (x, y, z, …), de constantes (0, 1), d’opérations (+, ), de relations (=, ) Axiomes : ce sont.
Chap 1 Grammaires et dérivations.
INTRODUCTION.
ESIEE Paris © Denis BUREAU I N Initiation à la programmation avec le langage Java.
OpenSTA INTRODUCTION Logiciel libre OpenSTA Mise en application.
Tests et Validation du logiciel
5. Les structures répétitives
8. Les tableaux P. Costamagna – ISEN N1.
Points importants de la semaine Les commentaires. Les variables. Les instructions conditionnelles. Les instructions itératives (les boucles).
Les exigences de la norme ISO 14001
Récursivité.
Points importants de la semaine Les boucles. Les types arithmétiques. Les opérateurs.
Démarche de résolution de problèmes
Algorithmique et Programmation
Points importants de la semaine Le paramétrage. La portée. Le passage par copie. Le passage par référence.
RESUMES Module II1 SOMMAIRE CYCLE 1 : Saisir – Afficher – Données
Système de distribution d’eau
IFT-2000: Structures de Données Introduction à lanalyse dalgorithmes Dominic Genest, 2009.
Algorithmique et Programmation
Introduction à la programmation (Java)
Systeme de Combat Commun Barracuda SNLE-NG4
1 Exercice : longueur d’un mot est-elle paire ?  Test fonctionnel  Quel ensemble de valeur choisir / spécification  Test structurel  Soit le code d’un.
Introduction à la vision artificielle Deuxième partie Étalonnage géométrique de la caméra et du système Patrick Hébert Génie électrique et génie informatique.
L’enseignement de la chimie au 21ème siècle
Techniques de test Boulanger Jean-Louis.
Les pointeurs Modes d’adressage de variables. Définition d’un pointeur. Opérateurs de base. Opérations élémentaires. Pointeurs et tableaux. Pointeurs et.
Les Fonctions. Définir une fonction Sections de code indépendantes que lon peut appeler à nimporte quel moment et dans nimporte quel ordre. Bout de code.
IFT Complexité et NP-complétude
1 CSI3525: Concepts des Languages de Programmation Notes # 4: Description Semantique des Languages.
1 CSI3525: Concepts des Languages de Programmation Notes # 3: Description Syntaxique des Languages.
CSI3525: Concepts des Languages de Programmation
LIFI-Java 2004 Séance du Jeudi 9 sept. Cours 1. La notion de langage Décrire une tâche à effectuer –programme Écrire à un haut niveau –facile pour lutilisateur.
Chapitre 3 Syntaxe et sémantique.
Partie II Sémantique.
27 juin Formation à lutilisation dun client Subversion Vincent Carpier Florent Guilleux Paris, 27 Juin 2007.
Création du site Internet du Centre des Ressources Informatiques
Programmation non procédurale Le projet ECOLE 2000
Procédures et fonctions
Michèle Bodino - 24/03/20071 Approche de l’écriture D’après le fichier De la trace à l’écriture – CRDP Académie de Créteil
La librairie assert.h.
1 Notations Asymptotiques Et Complexité Notations asymptotiques : 0 et  Complexité des algorithmes Exemples de calcul de complexité.
Paradigmes des Langages de Programmation
Les exigences de la norme ISO 9001:2000
Paradigmes des Langages de Programmation
Paradigmes des Langages de Programmation
O-notation 1. Introduction 2. O-notation 3. Opérations 3.1 Somme 3.2 Produit 4. Règles générales 5. Exemple 6.Analyse des algorithmes récursifs 6.1 Dilatation.
INTRODUCTION.
Un survol du language C.
Tutorat en bio-informatique
D.E ZEGOUR Ecole Supérieure d’Informatique. Problèmes de décision Concepts de base Expressions régulières Notation particulière pour exprimer certaines.
Introduction au langage C Fonctions et Procédures
1 École des Mines de Saint-Etienne. 158, cours Fauriel Saint-Etienne Cedex 2. Tél Fax Jean-Jacques Girardot
Introduction au langage C : Structures de contrôle 1 ère année Génie Informatique Dr Daouda Traoré Université de Ségou
Conception de Programmes - IUT de Paris - 1ère année Conception de Programmes Objectifs et organisation du cours Introduction à la P.O.O.
2005/2006 Structures de Données Introduction à la complexité des algorithmes.
Scripts et fonctions Instructions de contrôle
Philippe Gandy – 10 novembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
Java Réalisé par: Mouna POKORA. PLAN: Définition : Historique: Caractéristiques: un langage orienté objet: un langage interprété : un langage portable:
Transcription de la présentation:

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 2006-2007

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

Comment éviter cela? En effectuant des tests Boite noire Boite blanche 2006-2007

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 2006-2007

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

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

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

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

Différentes utilisations. 4. Politique de sécurité. Recherche de codes malicieux . 2006-2007

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

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

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

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

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

Informations produites. 2006-2007

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. 2006-2007

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

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

Informations produites. 2006-2007

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

Informations produites. 2006-2007

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

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

Informations produites. 2006-2007

Informations produites. 2006-2007

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

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. 2006-2007

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

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

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

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 2006-2007

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. 2006-2007

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) 2006-2007

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

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. 2006-2007

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 2006-2007

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. 2006-2007

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. 2006-2007

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.). 2006-2007

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

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. 2006-2007

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. 2006-2007

2006-2007

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. 2006-2007

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. 2006-2007