Assurance Qualité. Cours de génie logiciel. Renaud Marlet. LaBRI / INRIA (d'après A.-M. Hugues) màj 23/04/2007

Dimension: px
Commencer à balayer dès la page:

Download "Assurance Qualité. Cours de génie logiciel. Renaud Marlet. LaBRI / INRIA http://www.labri.fr/~marlet. (d'après A.-M. Hugues) màj 23/04/2007"

Transcription

1 1 Cours de génie logiciel (d'après A.-M. Hugues) Assurance Qualité Renaud Marlet LaBRI / INRIA màj 23/04/2007

2 2 Les deux facettes de la qualité Conformité avec la définition (contrôlable en cours de fabrication ainsi qu'en maintenance) Réponse à l'attente du client (contrôlable à la livraison principale ainsi que lors des livraisons intermédiaires)

3 3 Contrôle qualité Activité tout au long du cycle de vie plus de 50% des erreurs sont découvertes en phase d'exploitation le coût de réparation croît exponentiellement avec l'avancée dans le cycle de vie

4 4 Terminologie Validation Faisons-nous le bon produit? Vérification Faisons-nous le produit correctement? Attention, en pratique souvent confondus, ou pris l'un pour l'autre on parle de «V&V» (validation et vérification)

5 5 Terminologie IEEE Erreur : commise par le développeur conduit à un défaut Défaut : imperfection dans le logiciel conduit ou non à une panne Panne : comportement anormal d'un programme Terme courant mais ambigu : bogue (bug)

6 6 Qualité : Approche de MacCall Caractéristiques «externes» facteurs de qualité Caractéristiques «internes» critères de qualité Caractéristiques mesurables métriques

7 7 Facteurs de qualité Facteurs de qualité classés en 3 catégories : qualités opérationnelles (product operation) facilité à changer ou à corriger (product revision) facilité à faire des transitions d'environnement (product transition)

8 Facteurs de qualité (1) : 8 Qualités opérationnelles Conformité aux besoins : le produit fait-il ce qu'on souhaite? Fiabilité : le fait-il correctement dans tous les cas? Efficacité : utilise-t-il au mieux les ressources matérielles / logicielles? Intégrité : est-il protégé contre les intrusions? Facilité d'emploi :... au niveau de l'apprentissage, de la mise en œuvre, de la fourniture des données, de l'interprétation des résultats, etc.

9 Facteurs de qualité (2) : 9 Facilité à changer ou à corriger Maintenabilité : facilité avec laquelle on peut localiser et corriger les erreurs Flexibilité : facilité de modification et d'évolution Testabilité : effort requis pour tester (après modification)

10 Facteurs de qualité (3) : Facilité à 10 faire des transitions d'environnement Portabilité : peut-on utiliser le logiciel sur une autre machine? Réutilisabilité : peut-on réutiliser des parties du logiciel dans d'autres applications? Interopérabilité : facilité d'interfaçage avec d'autres systèmes

11 Influence des facteurs de qualité 11 les uns sur les autres Ex. facteurs qui diminuent l'efficacité intégrité (nécessité d'introduire des vérifications) maintenabilité (sacrifice de l'efficacité pour la lisibilité) portabilité (moindre efficacité des structures portables) testabilité, flexibilité, réutilisabilité, interopérabilité,... Ex. facteurs qui diminuent l'intégrité flexibilité, réutilisabilité, interopérabilité

12 12 Critères de qualité Opérabilité Communicabilité Apprentissage Volume et taux d'e/s Contrôle d'accès Consommation mémoire Vitesse d'exécution Traçabilité Complétude Précision Cohérence Tolérance aux fautes Simplicité Modularité Concision Auto-description Instrumentation Généralité Evolutivité Indépendance machine Indépendance système Communications banalisés Données banalisées

13 Exercice : trouver les (>40) liens entre 13 facteurs de qualité et critères de qualité Critères de qualité (caractéristiques internes) Opérabilité Communicabilité Apprentissage Volume et taux d'e/s Contrôle d'accès Consommation mémoire Vitesse d'exécution Traçabilité Complétude Précision Cohérence Tolérance aux fautes Simplicité Modularité Concision Auto-description Instrumentation Généralité Évolutivité Indépendance machine Indépendance système Facilité d'emploi Intégrité Efficacité Conformité Fiabilité Maintenabilité Testabilité Flexibilité Portabilité Réutilisabilité Facteurs de qualité (caractéristiques externes) Communications banalisés Données banalisées Interopérabilité

14 Liens entre facteurs de qualité et 14 critères de qualité Critères de qualité (caractéristiques internes) Question Y a-t-il un critère «majeur»? Opérabilité Communicabilité Apprentissage Volume et taux d'e/s Contrôle d'accès Consommation mémoire Vitesse d'exécution Traçabilité Complétude Précision Cohérence Tolérance aux fautes Simplicité Modularité Concision Auto-description Instrumentation Généralité Évolutivité Indépendance machine Indépendance système Communications banalisés Données banalisées Facilité d'emploi Intégrité Efficacité Conformité Fiabilité Maintenabilité Testabilité Flexibilité Portabilité Réutilisabilité Interopérabilité Facteurs de qualité (caractéristiques externes)

15 Liens entre facteurs de qualité et 15 critères de qualité Critères de qualité (caractéristiques internes) Impact fort de la modularité Opérabilité Communicabilité Apprentissage Volume et taux d'e/s Contrôle d'accès Consommation mémoire Vitesse d'exécution Traçabilité Complétude Précision Cohérence Tolérance aux fautes Simplicité Modularité Concision Auto-description Instrumentation Généralité Évolutivité Indépendance machine Indépendance système Facilité d'emploi Intégrité Efficacité Conformité Fiabilité Maintenabilité Testabilité Flexibilité Portabilité Réutilisabilité Facteurs de qualité (caractéristiques externes) Communications banalisés Données banalisées Interopérabilité

16 Métriques associées aux 16 critères de qualité Mesure des caractéristiques «internes» mesures objectives ex. : taille, complexité du flot de contrôle, cohésion modulaire / couplage entre modules,... Mesure des caractéristiques «externes» évaluations stochastiques (statistiques) ex. : délai moyen de réponse à une requête, nombre de requêtes simultanées sans «écrouler» un serveur,... Ce sont des mesures a posteriori arrivent parfois «trop tard»

17 Exemples de mesures de 17 critères de qualité (1) Fiabilité : mesures stochastiques : temps moyen de réparation temps moyen entre deux pannes taux de disponibilité Portabilité : mesure objective : nb d'instructions dépendant de la plate-forme cible

18 Exemples de mesures de 18 critères de qualité (2) Facilité d'utilisation : mesures objectives : nb de paramètres ayant une valeur par défaut (pertinente) nb d'écrans d'aide mesures stochastiques : nb de fausses manipulations par jour nb de jours d'apprentissage temps de lecture / interprétation des résultats affichés

19 19 Métriques Métriques de Halstead, de McCabe, de Henry et Kafura,.. Quantités mesurées concision (taille programme / taille de l'algorithme), complexité textuelle, difficulté, effort, complexité des liaisons inter-modules (ou -classes), encombrement d'une classe, complexité structurelle,... Implémentées par des outils Logiscope,...

20 20 Exemple : Métrique de McCabe Analyse du graphe de contrôle Mesure de la complexité structurelle Nombre cyclomatique = nb de noeuds (blocs d'instructions séquentielles) nb d'arcs (branches de programme) + nb points d'entrée + nb points de sortie Représente le nombre de chemins indépendants ~ nb conditions + 1 (si les décisions sont binaires)

21 21 Métrique de McCabe : exemple C1 C2 X2 nb entrées = 1 nb sorties = 1 nb noeuds (blocs) = 5 nb arcs (branches) = 6 nb cyclomatique = = 3 (nb décisions = 2) X1 X3

22 22 Qualité : comment faire? Un grand nombre de métriques difficile de les connaître toutes, et souvent discutables (vision partielle/artificielle du problème) L'important, c'est la démarche : définir un plan qualité adapté au contexte détailler une mesure des différents critères s'interroger sur la validité des métriques (pertinence) Problème des mesures a posteriori trop tard, mais forge l'expérience ( )

23 23 Assurance qualité et gestion projet (1) Le contrôle qualité aide la gestion projet : mesure de l'avancement meilleure estimation des coûts

24 24 Assurance qualité et gestion projet (2) Mais (écueils) : dilemme : moins cher ou plus sûr? souvent prééminence du planning sur la qualité sous-estimation des ressources qui sont nécessaires à l'assurance qualité par les développeurs (activité jugée marginale) par les managers (réticence à prévoir un budget maintenance)

25 25 Moyens de l'assurance qualité Méthodes statiques a priori (sans exécuter le logiciel) examen critique de documents et de code analyse automatique (ou assistée) de code / spécification analyse statique de programme vérification de modèle (model checking) outils de preuves formelles Méthodes dynamiques a posteriori (en exécutant le logiciel) test

26 26 Moyens de l'assurance qualité Méthodes statiques a priori (sans exécuter le logiciel) examen critique de documents et de code analyse automatique (ou assistée) de code / spécification analyse statique de programme vérification de modèle (model checking) outils de preuves formelles Méthodes dynamiques a posteriori (en exécutant le logiciel) test

27 27 Examen critique de documents (1) Avoir un point de vue différent de l'auteur quelqu'un d'autre Avoir différents points de vue compétences multiples Avoir des points de vue objectifs participants hors de l'équipe de développement

28 28 Examen critique de documents (2) Critiquer les aspects techniques, pas l'auteur (!) Juger la forme format [voir cours sur la documentation], structure, satisfaction des normes du plan qualité... Juger le fond précision, non-ambiguïté, complétude, cohérence (pas de référence imprécise ou inexistante) conformité par rapport aux documents amont, au plan projet

29 29 Coût des inspections (ordres de grandeur) Cahier des charges 5-10 pages/h Spécifications fonctionnelles 10 pages/h Conception globale 5-15 pages/h Conception détaillé 10 pages/h Code lignes/h (Selon moi : effort trop faible dans les phases amont effort difficile et peu productif dans les phases aval)

30 30 Méthodes de relecture (1) Auto-correction (desk-checking) relecture personnelle bilan : efficacité quasi nulle pour les documents amont, faible pour le code Lecture croisée (author-reader cycle) un collègue recherche des ambiguïtés, oublis, imprécisions bilan : efficacité faible pour les documents amont, plus adapté pour la relecture du code

31 31 Méthodes de relecture (2) Revue (walkthrough) discussion informelle au sein d'un groupe un lecteur résume paragraphe par paragraphe bilan : contribution moyenne à l'assurance qualité (évaluation très liée à la prestation du lecteur) Revue structurée constitution pendant le débat d'une liste de défauts, utilisation d'une liste de défauts typiques (checklist) direction des débats par un secrétaire bilan : bonne contribution à l'assurance qualité

32 32 Méthodes de relecture (3) Inspection cadre de relecture plus formel recherche des défauts avant les débats suivi des décisions et corrections bilan : excellente contribution à l'assurance qualité

33 Méthodes de relecture : 33 Inspection (1) Organisation 1. préparation recherche des défauts rédaction d'un rapport de défauts basé sur des fiches type 2. cycle de réunions 3. suivi examen des défauts prise de décision vérification des corrections ou nouvelle inspection

34 Méthodes de relecture : 34 Inspection (2) Planification pour chaque type de document : dates de début et de fin par rapport au plan projet critères de sélection des inspecteurs plan d'inspection (parties à inspecter) types de défauts les plus communs (checklist) formulaires d'inspection (description de défauts) critères de succès de l'inspection (Ce plan figure en partie dans le plan qualité)

35 Méthodes de relecture : 35 Inspection (3) Responsabilités inspecteurs : responsables de la qualité du produit final responsables du respect des principes de qualité auteur :... mise à disposition des documents à la date prévue fournit une opinion sur chaque défaut signalé

36 Méthodes de relecture : 36 Inspection (4) Responsabilités... secrétaire : enregistre les défauts considérés et les décisions prises assiste le modérateur modérateur : responsable du bon déroulement des réunions convocation, tenue, suspension veille au maintien des objectifs et aux facteurs humains préside la prise de décision

37 Méthodes de relecture : 37 Inspection (5) Conséquence la formalisation oblige à planifier et à observer les principes de qualité Bilan excellente contribution à l'assurance qualité amélioration du cycle de vie (contrôle au plus tôt) influence positive sur la communication et la formation dans le projet la meilleure des méthodes de relecture

38 38 Et maintenant... Quelques exercices d'inspection de code... (et de correction)

39 Exercice 1 : trouver 4 erreurs 39 (Elles sont typiques) int factorielle(int n) { int f; while (n >= 0) { n = n-1; f = f*n; } return n; }

40 Exercice 1 : les 4 erreurs 40 (Elles sont typiques) int factorielle(int n) { int f; while (n >= 0) { n = n-1; f = f*n; } return n; } variable f non initialisée (à 1) tour de boucle en trop (n = 0) opération sur un mauvais indice (n-1 et non n) retour d'une mauvaise variable (ici n)

41 41 Exercice 1 (suite) : corriger les erreurs int factorielle(int n) { int f; while (n >= 0) { n = n-1; f = f*n; } return n; } variable f non initialisée (à 1) tour de boucle en trop (n = 0) opération sur un mauvais indice (n-1 et non n) retour d'une mauvaise variable (ici n)

42 42 Exercice 1 (suite) : version corrigée int factorielle(int n) { int f = 1; while (n > 0) { f = f*n; n = n-1; } return f; } variable f initialisée (à 1) pas de tour de boucle en trop opération sur un bon indice (n) retour de la variable correcte (f)

43 Exercice 2 : trouver 5 erreurs 43 (Elles sont typiques)... /* Entrée pt cardinal */ printf("direction : "); scanf("%c", direction); switch (direction) { case 'N' : y++; case 'O' : x--; case 'S' : x++; } deplacer(x,y);...

44 Exercice 2 : les 5 erreurs 44 (Elles sont typiques)... /* Entrée pt cardinal */ printf("direction : "); scanf("%c", direction); switch (direction) { case 'N' : y++; case 'O' : x--; case 'S' : x++; } deplacer(x,y);... variable au lieu de pointeur sur variable case manquant break oubliés copy/paste non ou mal adapté default manquant

45 45 Exercice 2 (suite) : corriger les erreurs... /* Entrée pt cardinal */ printf("direction : "); scanf("%c", direction); switch (direction) { case 'N' : y++; case 'O' : x--; case 'S' : x++; } deplacer(x,y);... variable au lieu de pointeur sur variable case manquant break oubliés copy/paste non ou mal adapté default manquant

46 46 Exercice 2 (suite) : version corrigée... /* Entrée pt cardinal */ printf("direction : "); scanf("%c",&direction); switch (direction) { case 'E' : x++; break; case 'N' : y++; break; case 'O' : x--; break; case 'S' : y--; break; default : error(); } deplacer(x,y); pointeur sur variable tous les case présents et corrects break présents pas d'erreur de copy/paste default présent

47 Exercice 3 : trouver 5 erreurs 47 (Elles sont typiques) int tab[]; /*de taille size*/ int indicetqtabnul(int size){ int i; if (size > 0) for(i=1; i <= size; i++) if (tab[i] = 0) return i; else printf("tab est vide"); error(); return -1; }

48 Exercice 3 : les 5 erreurs 48 (Elles sont typiques) int tab[]; /*de taille size*/ int indicetqtabnul(int size){ int i; if (size > 0) for(i=1; i <= size; i++) if (tab[i] = 0) return i; else printf("tab est vide"); error(); return -1; } oubli d'un cas d'indice cas d'indice hors borne test par = au lieu de == dandling else accolades manquantes

49 49 Exercice 3 (suite) : corriger les erreurs int tab[]; /*de taille size*/ int indicetqtabnul(int size){ int i; if (size > 0) for(i=1; i <= size; i++) if (tab[i] = 0) return i; else printf("tab est vide"); error(); return -1; } oubli d'un cas d'indice cas d'indice hors borne test par = au lieu de == dandling else accolades manquantes

50 50 Exercice 3 (suite) : version corrigée int tab[]; /*de taille size*/ int indicetqtabnul(int size){ int i; if (size > 0) { for(i=0; i < size; i++) if (tab[i] == 0) return i; } else { printf("tab est vide"); error(); } return -1; } pas d'indice oublié pas d'indice hors borne test par '==' et non '=' accolades appropriées

51 Exercice 4 : trouver une erreur 51 (Elle est typique) int compte =...; int decouvert_max = -1000; void transact(int montant) /* débit: montant < 0 * crédit: montant > 0 */ { if (compte + montant < decouvert_max) printf("refusé"); else compte += montant; }

52 Exercice 4 : l'erreur 52 (Elle est typique) int compte =...; int decouvert_max = -1000; void transact(int montant) /* débit: montant < 0 * crédit: montant > 0 */ { if (compte + montant < decouvert_max) printf("refusé"); else compte += montant; } overflow non maîtrisé : compte + montant > 2 31 compte + montant < 0 underflow non maîtrisé : si compte=-500 et montant=-2 31 alors compte + montant > 0! (= )

53 53 Exercice 4 (suite) : corriger l'erreur int compte =...; int decouvert_max = -1000; void transact(int montant) /* débit: montant < 0 * crédit: montant > 0 */ { if (compte + montant < decouvert_max) printf("refusé"); else compte += montant; } overflow non maîtrisé : compte + montant > 2 31 compte + montant < 0 underflow non maîtrisé : si compte=-500 et montant=-2 31 alors compte + montant > 0! (= )

54 54 Exercice 4 (suite) : version corrigée void transact(int montant) { if (montant > 0 && compte > 0 && compte+montant < 0) printf("overflow"); else if (montant<0 && compte<0 && compte+montant>0) printf("underflow"); else if (compte+montant < decouvert_max) printf("refusé"); else compte += montant; }

55 Exercice 5 : trouver 3 erreurs 55 (Elles sont typiques) /* Si p non nul pointe sur * un entier positif */ if (p!= NULL & *p >= 0)... /* Si x est pair et * de valeur absolue >= 5 */ if (x%2 == 0 && x <= -5 5 <= x)... /* Si x et y sont positifs * ou nuls */ if (x && y >= 0)...

56 Exercice 5 : les 3 erreurs 56 (Elles sont typiques) /* Si p non nul pointe sur * un entier positif */ if (p!= NULL & *p >= 0)... /* Si x est pair et * de valeur absolue >= 5 */ if (x%2 == 0 && x <= -5 5 <= x)... /* Si x et y sont positifs * ou nuls */ if (x && y >= 0)... expression évaluée ne devant pas l'être précédence des opérateurs logiques comparaison factorisée

57 57 Exercice 5 (suite) : corriger les erreurs /* Si p non nul pointe sur * un entier positif */ if (p!= NULL & *p >= 0)... /* Si x est pair et * de valeur absolue >= 5 */ if (x%2 == 0 && x <= -5 5 <= x)... /* Si x et y sont positifs * ou nuls */ if (x && y >= 0)... expression évaluée ne devant pas l'être précédence des opérateurs logiques comparaison factorisée

58 58 Exercice 5 : version corrigée /* Si p non nul pointe sur * un entier positif */ if ((p!= NULL) && (*p >= 0)) /* Si x est pair et * de valeur absolue >= 5 */ if (x%2 == 0 && (x <= -5 5 <= x))... /* Si x et y sont positifs * ou nuls */ if (x >= 0 && y >= 0)... expression évaluée que si nécessaire parenthésage des opérateurs logiques comparaison non factorisée

59 Exercice 6 : trouver 3 erreurs 59 (Elles sont typiques) typedef struct lst { int elem; struct lst *reste; } *list; int dernierelem(list l) { do { l = l->reste; } while (l->reste!= NULL); return l->reste->elem; }

60 Exercice 6 : les 3 erreurs 60 (Elles sont typiques) typedef struct lst { int elem; struct lst *reste; } *list; int dernierelem(list l) { do { l = l->reste; } while (l->reste!= NULL); return l->reste->elem; } cas d'un argument pointeur nul (liste vide) non traité premier élément non traité (liste à un élément) déréférence d'un pointeur nul au terme de l'itération

61 61 Exercice 6 (suite) : corriger les erreurs typedef struct lst { int elem; struct lst *reste; } *list; int dernierelem(list l) { do { l = l->reste; } while (l->reste!= NULL); return l->reste->elem; } cas d'un argument pointeur nul (liste vide) non traité premier élément non traité (liste à un élément) déréférence d'un pointeur nul au terme de l'itération

62 62 Exercice 6 : version corrigée typedef struct lst { int elem; struct lst *reste; } *list; int dernierelem(list l) { if (l == NULL) error(); while (l->reste!= NULL) l = l->reste; return l->elem; } cas d'un argument pointeur nul (liste vide) traité premier élément traité correctement déréférence du bon pointeur au terme de l'itération

63 Inspection de code : 63 Défauts typiques à examiner (1) Référence aux données : variables non initialisées savoir si le langage initialise par défaut et quand dans les cas douteux, initialiser explicitement indices de tableaux hors bornes principale source des failles de sécurité (!) accès à des structures/records à champs variables ou à des unions

64 Inspection de code : 64 Défauts typiques à examiner (2) Référence aux données : confusion entre donnée et pointeur vers la donnée déréférence de pointeurs nuls pointeurs sur des données désallouées ou pas encore allouées pointeurs sur des données devenues inutiles mais non libérées

65 Inspection de code : 65 Défauts typiques à examiner (3) Calculs : conversions de type (implicites et explicites) underflow/overflow (dépassement de capacité du type) division par zéro précédence des opérateurs dans le doute (pour la lisibilité), toujours parenthéser

66 Inspection de code : 66 Défauts typiques à examiner (4) Comparaisons : incohérence des types mélanges d'entiers et de booléens inclusion ou non des bornes incorrecte < au lieu de <=, >= au lieu de >,... inversion du test == au lieu de!=, > au lieu de <,... confusion en égalité (==) et affectation (=) if (x = y) {...} au lieu de if (x == y) {...}

67 Inspection de code : 67 Défauts typiques à examiner (5) Comparaisons : confusion entre opérateurs binaires (bits) et logiques et (&, &&, and), ou (,, or), négation (~,!, not) négation incorrecte d'une condition logique!(x ==1 && (y < 2!z)) équiv. x!=1 (y >= 2 && z) précédence des opérateurs booléens x y && z équiv. x (y && z) dans le doute (pour la lisibilité), toujours parenthéser

68 Inspection de code : 68 Défauts typiques à examiner (6) Contrôle : switch ensemble de case incomplet cas default manquant break oublié rattachement du else au if («dandling else») 1. if (a) if (b) x=0; else x=1; 2. if (a) {if (b) x=0;} else x=1; /* diff. de 1. */ 3. if (a) {if (b) x=0; else x=1;} /* idem 1. */

69 Inspection de code : 69 Défauts typiques à examiner (7) Contrôle : terminaison du programme boucles et récursions sans fin boucles conditions initiales (indices,...) incorrectes itérations en plus ou en moins incohérences après une sortie de boucle anticipée incohérences après une sortie de boucles emboîtées procédures et fonctions incohérences après une sortie anticipée exceptions non rattrapées

70 70 Moyens de l'assurance qualité Méthodes statiques a priori (sans exécuter le logiciel) examen critique de documents et de code analyse automatique (ou assistée) de code / spécification analyse statique de programme vérification de modèle (model checking) outils de preuves formelles Méthodes dynamiques a posteriori (en exécutant le logiciel) test

71 71 Analyse statique de code (1) Définition générale : étude d'un programme (généralement source) sans exécution Attention, deux sens pour «analyse statique» : inspection manuelle (humaine) du code outil d'analyse automatique messages d'erreur comme ceux d'un compilateur Dans tous les cas effectuée avant les tests, car élimine des erreurs de «logique», coûteuses à corriger si découvertes tard

72 72 Analyse statique de code (2) Exemples de propriétés vérifiées : typage variables non initialisées déréférence de pointeurs nuls débordement de tableaux fuites mémoire problèmes d'interopérabilité problèmes de sécurité : fuite de secrets,......

73 73 Analyse statique de code (3) Outils très high-tech encore peu répandus Réussites bug d'ariane 5 Difficultés faux positifs (avertissement injustifiés) erreur certaine erreur possible pas d'erreur

74 74 Limites théoriques (1) Notion d'indécidabilité propriété indécidable = qu'on ne pourra jamais prouver dans le cas général (pas de procédé systématique) Exemples de propriétés indécidables l'exécution d'un programme termine deux programmes calculent la même chose un programme n'a pas d'erreur

75 75 Limites théoriques (2) Quand un propriété est indécidable, juste dire que c'est possible et laisser l'humain juger Erreur possible outil pas assez puissant erreur certaine erreur possible pas d'erreur

76 76 Moyens de l'assurance qualité Méthodes statiques a priori (sans exécuter le logiciel) examen critique de documents et de code analyse automatique (ou assistée) de code / spécification analyse statique de programme vérification de modèle (model checking) outils de preuves formelles Méthodes dynamiques a posteriori (en exécutant le logiciel) test

77 77 Vérification de modèle Vérification qu'un état est accessible ou non (vivacité) qu'un état est accessible en un temps fini (équité) Application programmes pas trop gros (< LOC) nécessité de faire des abstractions états avec certaines approches, et même plus

78 78 Moyens de l'assurance qualité Méthodes statiques a priori (sans exécuter le logiciel) examen critique de documents et de code analyse automatique (ou assistée) de code / spécification analyse statique de programme vérification de modèle (model checking) outils de preuves formelles Méthodes dynamiques a posteriori (en exécutant le logiciel) test

79 79 Outils de preuves formelles Preuves de correction (par rapport à une spécification) terminaison de l'exécution propriétés spécifiques (sûreté, sécurité,...) Assistants de preuve (theorem prover) systèmes : Coq, PVS, Isabelle / HOL,... encore difficiles d'usage pour des non spécialistes

80 80 Moyens de l'assurance qualité Méthodes statiques a priori (sans exécuter le logiciel) examen critique de documents et de code analyse automatique (ou assistée) de code / spécification analyse statique de programme vérification de modèle (model checking) outils de preuves formelles Méthodes dynamiques a posteriori (en exécutant le logiciel) test

81 81 Test Vérification (conformité aux spécifications) tests unitaires tests d'intégration Qualification validation par rapport aux contraintes non fonctionnelles tests de performance tests de capacité de charge validation par rapport aux besoins bêta-test (chez l'utilisateur final)

82 82 Test Voir cours spécifique sur le test

83 83 Et au stade de recherche avancée... Génération automatique de programmes à partir des spécifications programmes corrects par construction Mais méthode encore trop mathématique pour le public des développeurs problème d'efficacité du code généré problème de rendement (malgré l'automatisation) beaucoup de choses à spécifier avec soin dilemme bien connu : moins cher ou plus sûr?

84 84 À retenir Contrôle qualité : durant tout le cycle de vie L'important, c'est la démarche définir un plan qualité adapté au contexte détailler les mesures des critères (a posteriori ) s'interroger sur la pertinence des métriques Méthodes statiques (sans exécuter) : inspection : par des extérieurs, checklist de défauts analyse automatique (ou assistée) de programme Méthodes dynamiques (en exécutant) : test

Qualité du logiciel: Méthodes de test

Qualité du logiciel: Méthodes de test Qualité du logiciel: Méthodes de test Matthieu Amiguet 2004 2005 Analyse statique de code Analyse statique de code Étudier le programme source sans exécution Généralement réalisée avant les tests d exécution

Plus en détail

Recommendations de codage

Recommendations de codage 1 Génie logiciel Recommendations de codage (incomplet & encore en travaux) Renaud Marlet LaBRI / INRIA http://www.labri.fr/~marlet màj 23/04/2007 Bonnes pratiques de 2 programmation Indispensable pour

Plus en détail

Tableaux (introduction) et types de base

Tableaux (introduction) et types de base Tableaux (introduction) et types de base A. Motivation..................................................... 4 B. Les tableaux.................................................... 5 C. Construction des tableaux.......................................

Plus en détail

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test Grandes lignes Analyseur Statique de logiciels Temps RÉel Embarqués École Polytechnique École Normale Supérieure Mercredi 18 juillet 2005 1 Présentation d 2 Cadre théorique de l interprétation abstraite

Plus en détail

Génie Logiciel 1. Julie Dugdale. Julie.Dugdale@upmf-grenoble.fr Daniel Bardou@upmf-grenoble.fr

Génie Logiciel 1. Julie Dugdale. Julie.Dugdale@upmf-grenoble.fr Daniel Bardou@upmf-grenoble.fr Génie Logiciel 1 Julie Dugdale Julie.Dugdale@upmf-grenoble.fr Daniel Bardou@upmf-grenoble.fr Tous les cours seront sur le Bureau Virtuel (cours, TDs, Génie Logiciel 1-2 etc.) Introduction et information

Plus en détail

Projet Informatique. Philippe Collet. Licence 3 Informatique S5 2014-2015. http://deptinfo.unice.fr/twiki/bin/view/linfo/projetinfo201415

Projet Informatique. Philippe Collet. Licence 3 Informatique S5 2014-2015. http://deptinfo.unice.fr/twiki/bin/view/linfo/projetinfo201415 Projet Informatique Philippe Collet Licence 3 Informatique S5 2014-2015 http://deptinfo.unice.fr/twiki/bin/view/linfo/projetinfo201415 Réalisation d'un développement de taille conséquente? r Firefox? Ph.

Plus en détail

TP 8 : Arbres binaires de recherche

TP 8 : Arbres binaires de recherche TP 8 : Arbres binaires de recherche Semaine du 17 Mars 2008 Exercice 1 Dénir une structure struct noeud_s permettant de coder un n ud d'un arbre binaire contenant une valeur entière. Ajouter des typedef

Plus en détail

Génie logiciel. Concepts fondamentaux. Bruno MERMET, Université du Havre 1

Génie logiciel. Concepts fondamentaux. Bruno MERMET, Université du Havre 1 Génie logiciel Concepts fondamentaux Bruno MERMET, Université du Havre 1 Nécessité du Génie Logiciel Bruno MERMET, Université du Havre 2 Développement d un logiciel Caractéristiques souhaitées : Adéquation

Plus en détail

Vérification et Validation

Vérification et Validation Vérification et Validation Génie Logiciel Master 1 II Mihaela Sighireanu Objectifs I. Introduire la vérification et la validation (V&V) du logiciel et comprendre leurs différences. II.Définir le plan de

Plus en détail

Gestion de Projet. Génie Logiciel. Renaud Marlet. LaBRI / INRIA. http://www.labri.fr/~marlet. (d'après A.-M. Hugues) màj 19/04/2007

Gestion de Projet. Génie Logiciel. Renaud Marlet. LaBRI / INRIA. http://www.labri.fr/~marlet. (d'après A.-M. Hugues) màj 19/04/2007 1 Génie Logiciel (d'après A.-M. Hugues) Gestion de Projet Renaud Marlet LaBRI / INRIA http://www.labri.fr/~marlet màj 19/0/007 Est-ce bien nécessaire? Principes de gestion = beaucoup d'évidences Pourtant

Plus en détail

Eléments de syntaxe du langage Java

Eléments de syntaxe du langage Java c jan. 2014, v3.0 Java Eléments de syntaxe du langage Java Sébastien Jean Le but de ce document est de présenter es éléments de syntaxe du langage Java : les types primitifs, les opérateurs arithmétiques

Plus en détail

Le processus de développement logiciel : les (bonnes) questions à se poser. 2 février 2010

Le processus de développement logiciel : les (bonnes) questions à se poser. 2 février 2010 1 Le processus de développement logiciel : les (bonnes) questions à se poser 2 février 2010 Le plan 2 Un peu d'institutionnel le SED Le développement logiciel Qu'est ce qu'un bon logiciel? Bonnes pratiques

Plus en détail

Le génie logiciel. maintenance de logiciels.

Le génie logiciel. maintenance de logiciels. Le génie logiciel Définition de l IEEE (IEEE 1990): L application d une approche systématique, disciplinée et quantifiable pour le développement, l opération et la maintenance de logiciels. Introduction

Plus en détail

En informatique et en particulier en génie logiciel, la qualité logicielle est une appréciation globale d'un logiciel, basée sur de nombreux

En informatique et en particulier en génie logiciel, la qualité logicielle est une appréciation globale d'un logiciel, basée sur de nombreux Introduction En informatique et en particulier en génie logiciel, la qualité logicielle est une appréciation globale d'un logiciel, basée sur de nombreux indicateurs 1. La complétude des fonctionnalités,

Plus en détail

vendredi 8 février 2008 QUALITÉ DU LOGICIEL

vendredi 8 février 2008 QUALITÉ DU LOGICIEL QUALITÉ DU LOGICIEL La qualité du logiciel Qualité d'un logiciel? de manière informelle : respect des spécifications. Particularités des logiciels par rapport à des produits matériels : Un logiciel a de

Plus en détail

Bases de programmation. Cours 5. Structurer les données

Bases de programmation. Cours 5. Structurer les données Bases de programmation. Cours 5. Structurer les données Pierre Boudes 1 er décembre 2014 This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License. Types char et

Plus en détail

Analyse de programme

Analyse de programme Analyse de programme À quoi ça sert? Comment ça marche? Bertrand Jeannet et Alain Girault INRIA Rhône-Alpes 25 janvier 2012 A. Girault et B. Jeannet (INRIA) Analyse de programme 25 janvier 2012 1 / 41

Plus en détail

Objectifs du cours d aujourd hui. Informatique I : Cours d introduction à l informatique et à la programmation Structures de Données Abstraites & Tris

Objectifs du cours d aujourd hui. Informatique I : Cours d introduction à l informatique et à la programmation Structures de Données Abstraites & Tris Objectifs du cours d aujourd hui Informatique I : Cours d introduction à l informatique et à la programmation Structures de Données Abstraites & Tris Continuer l approfondissement de la programmation de

Plus en détail

Licence ST Université Claude Bernard Lyon I LIF1 : Algorithmique et Programmation C Bases du langage C 1 Conclusion de la dernière fois Introduction de l algorithmique générale pour permettre de traiter

Plus en détail

Analyse Statique de Programmes

Analyse Statique de Programmes Analyse statique et application. Typage. Analyse de flots de données. Exemples de transformations simples de programmes au niveau source. Prépa Agreg de Maths, option Info - ENS Cachan-Bretagne Thomas

Plus en détail

Analyse et conception des Systèmes d Information. La démarche Merise : La Production Logicielle

Analyse et conception des Systèmes d Information. La démarche Merise : La Production Logicielle Analyse et conception des Systèmes d Information La démarche Merise : La Production Logicielle La production du logiciel Place, objectifs et principes directeurs Christophe.Nicolle@u-bourgogne.fr Introduction

Plus en détail

1 / 6. TD 1 Qualité - le plan qualité logiciel

1 / 6. TD 1 Qualité - le plan qualité logiciel / 6 TD Qualité - le plan qualité logiciel - Définitions Qualité La qualité d'un produit est l'ensemble de ses caractéristiques qui lui confèrent l'aptitude à satisfaire les besoins exprimés ou implicites

Plus en détail

INF2015 Développement de logiciels dans un environnement Agile. Examen final 24 avril 2014 17:30 à 20:30

INF2015 Développement de logiciels dans un environnement Agile. Examen final 24 avril 2014 17:30 à 20:30 Examen final 24 avril 2014 17:30 à 20:30 Nom, prénom : Code permanent : Répondez directement sur le questionnaire. Question #1 5% Qu'est-ce qu'un test de régression? Question #2 5% Selon extreme Programming,

Plus en détail

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3. 1. Structure d un programme C Un programme est un ensemble de fonctions. La fonction "main" constitue le point d entrée pour l exécution. Un exemple simple : #include int main() { printf ( this

Plus en détail

INF2015 Développement de logiciels dans un environnement Agile. Examen intra 20 février 2014 17:30 à 20:30

INF2015 Développement de logiciels dans un environnement Agile. Examen intra 20 février 2014 17:30 à 20:30 Examen intra 20 février 2014 17:30 à 20:30 Nom, prénom : Code permanent : Répondez directement sur le questionnaire. Question #1 5% Quelle influence peut avoir le typage dynamique sur la maintenabilité

Plus en détail

Claude Delannoy. Exercices C++ en langage. 3 e édition. Groupe Eyrolles, 1997, 1999, 2007, ISBN : 978-2-212-12201-5

Claude Delannoy. Exercices C++ en langage. 3 e édition. Groupe Eyrolles, 1997, 1999, 2007, ISBN : 978-2-212-12201-5 Claude Delannoy Exercices en langage C++ 3 e édition Groupe Eyrolles, 1997, 1999, 2007, ISBN : 978-2-212-12201-5 Chapitre 3 Les fonctions Rappels Généralités Une fonction est un bloc d instructions éventuellement

Plus en détail

Méthodes de test. Mihaela Sighireanu

Méthodes de test. Mihaela Sighireanu UFR d Informatique Paris 7, LIAFA, 175 rue Chevaleret, Bureau 6A7 http://www.liafa.jussieu.fr/ sighirea/cours/methtest/ Partie I 1 Propriétés 2 Un peu de génie logiciel de test 3 Eléments Problèmes Point

Plus en détail

C ellules. Gestion et récupération automatique de mémoire. Principes des lang. de progr. INE 11. Allocation dynamique de mémoire.

C ellules. Gestion et récupération automatique de mémoire. Principes des lang. de progr. INE 11. Allocation dynamique de mémoire. Principes des lang. de progr. INE 11 Michel Mauny ENSTA ParisTech Prénom.Nom@ensta.fr Michel Mauny (ENSTA ParisTech) INE 11 Prénom.Nom@ensta.fr 1 / 37 Gestion et récupération automatique de mémoire lanage

Plus en détail

LA QUALITE DU LOGICIEL

LA QUALITE DU LOGICIEL LA QUALITE DU LOGICIEL I INTRODUCTION L'information est aujourd'hui une ressource stratégique pour la plupart des entreprises, dans lesquelles de très nombreuses activités reposent sur l'exploitation d'applications

Plus en détail

Conception des systèmes répartis

Conception des systèmes répartis Conception des systèmes répartis Principes et concepts Gérard Padiou Département Informatique et Mathématiques appliquées ENSEEIHT Octobre 2012 Gérard Padiou Conception des systèmes répartis 1 / 37 plan

Plus en détail

Définition des Besoins

Définition des Besoins 1 Génie Logiciel (d'après A.-M. Hugues) Définition des Besoins Renaud Marlet LaBRI / INRIA http://www.labri.fr/~marlet màj 22/03/2007 2 Position dans le cycle de vie Contexte : un problème posé chez le

Plus en détail

Paradigme de programmation Impératif

Paradigme de programmation Impératif Paradigme de programmation Impératif La programmation impérative est caractérisée par, la programmation avec un état et des commandes qui modifient l état : Programmation impérative Procédurale = Programmation

Plus en détail

1 Notions de base 1.1 Structure d'un programme

1 Notions de base 1.1 Structure d'un programme 1 Notions de base 1.1 Structure d'un programme Le langage C++ contient le langage C : tout programme écrit en C à la norme ANSI doit pouvoir être compilé par un compilateur C++. C++ fait la diérence entre

Plus en détail

Développement de logiciels par objets avec UML (Unified Modeling Language) Pr. Jean-Marc Jézéquel IRISA - Univ. Rennes I

Développement de logiciels par objets avec UML (Unified Modeling Language) Pr. Jean-Marc Jézéquel IRISA - Univ. Rennes I 1 Développement de logiciels par objets avec UML (Unified Modeling Language) Pr. Jean-Marc Jézéquel IRISA - Univ. Rennes I Campus de Beaulieu F-35042 Rennes Cedex Tel : +33 299 847 192 Fax : +33 299 842

Plus en détail

Description et illustration du processus unifié

Description et illustration du processus unifié USDP Description et illustration du processus unifié Définit un enchaînement d activités Est réalisé par un ensemble de travailleurs Avec des rôles, des métiers Avec pour objectifs de passer des besoins

Plus en détail

Tableaux et pointeurs (corrigé)

Tableaux et pointeurs (corrigé) Tableaux et pointeurs (corrigé) Tous les exercices sont à faire. 1 Tableaux Exercice 1. Moyenne (*) Écrivez une fonction qui calcule la moyenne de n nombres stockés dans un tableau de double. Prototype

Plus en détail

Dossier d'étude technique

Dossier d'étude technique Centre national de la recherche scientifique Direction des systèmes d'information REFERENTIEL QUALITE Guide méthodologique Dossier d'étude technique Référence : CNRS/DSI/conduite-projet/developpement/technique/guide-etude-technique

Plus en détail

Résumé du document «Programmes des classes préparatoires aux Grandes Écoles ; Discipline : Informatique ; Première et seconde années - 2013»

Résumé du document «Programmes des classes préparatoires aux Grandes Écoles ; Discipline : Informatique ; Première et seconde années - 2013» Résumé du document «Programmes des classes préparatoires aux Grandes Écoles ; Discipline : Informatique ; Première et seconde années - 2013» I Objectifs Niveau fondamental : «on se fixe pour objectif la

Plus en détail

Mesure de la qualité du code source ALGORITHMES ET OUTILS

Mesure de la qualité du code source ALGORITHMES ET OUTILS Mesure de la qualité du code source ALGORITHMES ET OUTILS Introduction La qualité logicielle dépend de nombreux facteurs : Réactivité de l'équipe, portabilité, fiabilité, ergonomie, performance, sécurité...

Plus en détail

DS Informatique Scientifique

DS Informatique Scientifique DUT Mesures Physiques - semestre S'2 DS Informatique Scientifique 10 décembre 2012 0. Directives Durée : 2h Tout système électronique interdit (calculatrice, téléphone, etc). Téléphone portable éteint

Plus en détail

Analyse statique de programmes et interprétation abstraite. Olivier Bouissou

Analyse statique de programmes et interprétation abstraite. Olivier Bouissou Analyse statique de programmes et interprétation abstraite Olivier Bouissou Organisation du cours. Intervenants : cours et TP assurés par Olivier Bouissou (olivier.bouissou@cea.fr) - CEA LIST. Déroulement

Plus en détail

xkcd Le langage Python La GUI tkinter Christian Nguyen Département d informatique Université de Toulon et du Var 2012-2013

xkcd Le langage Python La GUI tkinter Christian Nguyen Département d informatique Université de Toulon et du Var 2012-2013 La GUI tkinter Département d informatique Université de Toulon et du Var 2012-2013 Présentation Python est né en 1990, son concepteur est De Guido Van Rossum(Pays Bas). Il présente les caractéristiques

Plus en détail

Compilation. Vb. Analyse sémantique statique Analyse de nom et analyse de type

Compilation. Vb. Analyse sémantique statique Analyse de nom et analyse de type Université de Nice - Sophia Antipolis Licence 3 Informatique 2012-2013 1/32 Compilation Vb. Analyse sémantique statique Analyse de nom et analyse de type Jacques Farré Jacques.Farre@unice.fr Université

Plus en détail

INF2015 Développement de logiciels dans un environnement Agile Examen final hiver 2015

INF2015 Développement de logiciels dans un environnement Agile Examen final hiver 2015 INF2015 Développement de logiciels dans un environnement Agile Examen final hiver 2015 Question #1 Quelle technique de mise sous test devons-nous utiliser si nous voulons simuler le comportement d'une

Plus en détail

Ricco Rakotomalala http://eric.univ-lyon2.fr/~ricco/cours/cours_programmation_r.html. R.R. Université Lyon 2

Ricco Rakotomalala http://eric.univ-lyon2.fr/~ricco/cours/cours_programmation_r.html. R.R. Université Lyon 2 Ricco Rakotomalala http://eric.univ-lyon2.fr/~ricco/cours/cours_programmation_r.html 1 Mode de fonctionnement sous R TRAVAILLER SOUS R 2 R est un interpréteur, il permet de programmer avec le langage S

Plus en détail

Principes de la programmation impérative

Principes de la programmation impérative Séquence d instructions Variables et types Types élaborés Procédures, arguments Gestion de la mémoire Langage compilé, interprété Principes de la programmation impérative Séquence d instructions Variables

Plus en détail

Fiche méthodologique Rédiger un cahier des charges

Fiche méthodologique Rédiger un cahier des charges Fiche méthodologique Rédiger un cahier des charges Plan de la fiche : 1 : Présentation de la fiche 2 : Introduction : les grands principes 3 : Contenu, 1 : positionnement et objectifs du projet 4 : Contenu,

Plus en détail

C, seconde séance. le if then else n est pas une expression, mais une instruction ( Caml) se souvenir de:

C, seconde séance. le if then else n est pas une expression, mais une instruction ( Caml) se souvenir de: C, seconde séance le if then else n est pas une expression, mais une instruction ( Caml) se souvenir de: false, c est 0 ( \0 aussi) test d égalité: == pour printf: %d entier, %f flottant, %c caractère,

Plus en détail

Programmation Par Objets et Langage Java

Programmation Par Objets et Langage Java Programmation Par Objets et Langage Java Partie I. Fondement de la POO (Modularité/Abstraction) Najib Tounsi Ecole Mohammadia d'ingénieurs, Rabat Année 2011/2012 1ère année Génie Informatique http://www.emi.ac.ma/ntounsi/cours/java/poojavapart-1.pdf

Plus en détail

Code de haut niveau: Modélisation d'abstraction. Intérêt: notion d'abstraction Dénomination et structure Notion d'encapsulation

Code de haut niveau: Modélisation d'abstraction. Intérêt: notion d'abstraction Dénomination et structure Notion d'encapsulation Code de haut niveau: Modélisation d'abstraction Intérêt: notion d'abstraction Dénomination et structure Notion d'encapsulation 000 Intérêt des structs cacher la complexité Utiliser struct! modéliser un

Plus en détail

Typage et Analyse Statique

Typage et Analyse Statique Typage et Analyse Statique Cours 1 Emmanuel Chailloux Spécialité Science et Technologie du Logiciel Master mention Informatique Université Pierre et Marie Curie année 2015-2016 Cours 1 - Typage et Analyse

Plus en détail

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile Dans ce TP, vous apprendrez à définir le type abstrait Pile, à le programmer en Java à l aide d une interface

Plus en détail

TD 5 LES POINTEURS. Définition: Pointeur

TD 5 LES POINTEURS. Définition: Pointeur TD 5 LES POINTEURS d'après le site de F. Faber http://www.ltam.lu/tutoriel_ansi_c Définition: Pointeur Un pointeur est une variable spéciale qui peut contenir l'adresse d'une autre variable. En C, chaque

Plus en détail

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

INTRODUCTION A JAVA. Fichier en langage machine Exécutable INTRODUCTION A JAVA JAVA est un langage orienté-objet pur. Il ressemble beaucoup à C++ au niveau de la syntaxe. En revanche, ces deux langages sont très différents dans leur structure (organisation du

Plus en détail

Nom: INF5171 Programmation concurrente et parallèle Examen nal (Automne 2012) Code permanent: 1 2 3 4 5 Total /10 /10 /10 /10 /10 /50 XXX XXX XXX

Nom: INF5171 Programmation concurrente et parallèle Examen nal (Automne 2012) Code permanent: 1 2 3 4 5 Total /10 /10 /10 /10 /10 /50 XXX XXX XXX Examen nal 1 INF5171 Programmation concurrente et parallèle Examen nal (Automne 2012) Durée: 13h30 16h30 Documentation : Documentation personnelle (papier) autorisée. Nom: Code permanent: 1 2 3 4 5 Total

Plus en détail

Structures de données

Structures de données 1 de 52 Algorithmique Structures de données Florent Hivert Mél : Florent.Hivert@lri.fr Page personnelle : http://www.lri.fr/ hivert 2 de 52 Algorithmes et structures de données La plupart des bons algorithmes

Plus en détail

Génie logiciel avancé

Génie logiciel avancé Université Paris-Sud L3 MIAGE apprentissage Année 2014-2015 Génie logiciel avancé Introduction Delphine Longuet delphine.longuet@lri.fr Logiciel : définitions Ensemble d'entités nécessaires au fonctionnement

Plus en détail

IFT3902 : (Gestion de projet pour le) développement, (et la) maintenance des logiciels

IFT3902 : (Gestion de projet pour le) développement, (et la) maintenance des logiciels IFT3902 : (Gestion de projet pour le) développement, (et la) maintenance des logiciels Yann-Gaël Guéhéneuc Professeur adjoint guehene@iro.umontreal.ca, local 2345 (Cours inspiré du cours du Pr. François

Plus en détail

Fiche de l'awt Rédiger un cahier des charges

Fiche de l'awt Rédiger un cahier des charges Fiche de l'awt Rédiger un cahier des charges Quels sont les éléments principaux dont il faut tenir compte pour la rédaction d'un cahier des charges dans le cadre d'un projet lié aux TIC (technologies de

Plus en détail

Conventions d écriture et outils de mise au point

Conventions d écriture et outils de mise au point Logiciel de base Première année par alternance Responsable : Christophe Rippert Christophe.Rippert@Grenoble-INP.fr Introduction Conventions d écriture et outils de mise au point On va utiliser dans cette

Plus en détail

1. Les fondements de l informatique 13

1. Les fondements de l informatique 13 Introduction à l'algorithmique 1. Les fondements de l informatique 13 1.1 Architecture de Von Neumann 13 1.2 La machine de Turing 17 1.3 Représentation interne des instructions et des données 19 1.3.1

Plus en détail

Introduction au langage C

Introduction au langage C Introduction au langage C Cours 1: Opérations de base et premier programme Alexis Lechervy Alexis Lechervy (UNICAEN) Introduction au langage C 1 / 23 Les premiers pas Sommaire 1 Les premiers pas 2 Les

Plus en détail

Configuration Interface for MEssage ROuting

Configuration Interface for MEssage ROuting Configuration Interface for MEssage ROuting Plan d'assurance Qualité Logicielle Date : 05/04/07 Version : 1.1 Statut : diffusable Auteurs : BAGNARD Natacha FOROT Julien 1/19 Tables des révisions Version

Plus en détail

Programmation C++ (débutant)/instructions for, while et do...while

Programmation C++ (débutant)/instructions for, while et do...while Programmation C++ (débutant)/instructions for, while et do...while 1 Programmation C++ (débutant)/instructions for, while et do...while Le cours du chapitre 4 : le for, while et do...while La notion de

Plus en détail

Compte rendu TP No1 : «Analyse statique de programme»

Compte rendu TP No1 : «Analyse statique de programme» LO20 : Vérification, validation et sûreté de fonctionnement http://www.genie logiciel.utc.fr/lo20/ Compte rendu TP No1 : «Analyse statique de programme» Le premier TP concerne l'analyse statique de programme.

Plus en détail

Cours 3. La conditionnelle: instructions si et selon Les boucles Comment raisonner sur les boucles: les invariants de boucle

Cours 3. La conditionnelle: instructions si et selon Les boucles Comment raisonner sur les boucles: les invariants de boucle Cours 3 : Instructions qui changent l ordre d exécution séquentiel 1 Cours 3 Instructions qui changent l ordre d exécution séquentiel La conditionnelle: instructions si et selon Les boucles Comment raisonner

Plus en détail

Statique / Dynamique

Statique / Dynamique Statique / Dynamique Analyse dynamique : nécessite l exécution du code binaire Principe : à partir du code source (ou d un modèle) et spécification, produire des DT qui exécuteront un ensemble de comportements,

Plus en détail

Objectifs. Pointeurs et tableaux. Arithmétique des pointeurs et sizeof. sizeof. Exemple : liste chaînées. Cast. Débordement de tampons

Objectifs. Pointeurs et tableaux. Arithmétique des pointeurs et sizeof. sizeof. Exemple : liste chaînées. Cast. Débordement de tampons du cours d aujourd hui Programmation «orientée système» LANGAGE C POINTEURS (5/5) des pointeurs Complément (et mise en garde) sur Exemple pratique : listes Forçage de type (casting) Laboratoire d Intelligence

Plus en détail

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java Info0101 Intro. à l'algorithmique et à la programmation Cours 3 Le langage Java Pierre Delisle, Cyril Rabat et Christophe Jaillet Université de Reims Champagne-Ardenne Département de Mathématiques et Informatique

Plus en détail

Introduction au développement du logiciel

Introduction au développement du logiciel Introduction au développement du logiciel Vers le génie logiciel Université de Nantes Master Miage M1 Plan 1 Introduction 2 Génie logiciel 3 Projet informatique 4 Méthode de développement 5 Qualité Bibliographie

Plus en détail

Outils d analyse statique

Outils d analyse statique Année : 2006/2007 GLG101 : Test et Validation du logiciel Nom du fichier : OUTILS_ANALYSE_STATIQUE.doc Rédacteur : Jean-Yves Bouttery Remis le 15 mai 2007 Destinataires : Mr ANDRZEJAK Willy Outils d analyse

Plus en détail

Algorithmique et Analyse d Algorithmes

Algorithmique et Analyse d Algorithmes Algorithmique et Analyse d Algorithmes L3 Info Cours 5 : Structures de données linéaires Benjamin Wack 2015-2016 1 / 37 La dernière fois Logique de Hoare Dichotomie Aujourd hui Type Abstrait de Données

Plus en détail

IFT3913 Qualité du logiciel et métriques. Chapitre 2

IFT3913 Qualité du logiciel et métriques. Chapitre 2 IFT3913 Qualité du logiciel et métriques Chapitre 2 Qualité du produit logiciel Plan du cours Introduction Qualité du logiciel Théorie de la mesure Mesure de la qualité du logiciel Études empiriques Mesure

Plus en détail

Types de données et objets

Types de données et objets Types de données et objets VL A D Y RA V E L O M A N A N A Licence 1 S2 Université Denis Diderot (P7). vlad@liafa.jussieu.fr LIAFA Bureau 6A13. 175, rue Chevaleret Ravelomanana Vlady Types de données et

Plus en détail

Conception et Développement Orientés Objets Cours 1 : Introduction. 2 Les paradigmes de programmation. 3 Les concepts de la programmation objet

Conception et Développement Orientés Objets Cours 1 : Introduction. 2 Les paradigmes de programmation. 3 Les concepts de la programmation objet CNAM UV 19357 Année 2003-2004 David Delahaye David.Delahaye@cnam.fr Conception et Développement Orientés Objets Cours 1 : Introduction 1 Présentation de la valeur Ce cours s adresse à toute personne ayant

Plus en détail

Projets Logiciels: Processus de développement pratiqué à TELECOM ParisTech

Projets Logiciels: Processus de développement pratiqué à TELECOM ParisTech Projets Logiciels: Processus de développement pratiqué à TELECOM ParisTech INF380-2013! Sylvie.Vignes@telecomParistech.fr Département INFRES, groupe S3 Cadre du processus 2! q Basé sur un processus incrémental:

Plus en détail

Processus d Informatisation

Processus d Informatisation Processus d Informatisation Cheminement de la naissance d un projet jusqu à son terme, deux grandes étapes : Recherche ou étude de faisabilité (en amont) L utilisateur a une idée (plus ou moins) floue

Plus en détail

Cours 1 : Introduction Générale + Objet I

Cours 1 : Introduction Générale + Objet I Organisation du cours Équipe pédagogique DUT Informatique S3 - Programmation Java Jean-Claude MARTIN MARTIN@LIMSI.FR Cours 1 : Introduction Générale + Objet I Jean-Claude MARTIN (Responsable, Cours, TD

Plus en détail

Expérience de la qualité dans nos développements. Rhénatic :Thema-technique 04/12/09 La qualité dans les développements logiciels

Expérience de la qualité dans nos développements. Rhénatic :Thema-technique 04/12/09 La qualité dans les développements logiciels Expérience de la qualité dans nos développements. Qui sommes nous? Sébastien HEITZMANN - Gérant. Développement de logiciels sur mesure. 10 ans d'expérience. 5 personnes. Typologie des projets. Création

Plus en détail

INF121: Algorithmique et Programmation Fonctionnelle

INF121: Algorithmique et Programmation Fonctionnelle INF121: Algorithmique et Programmation Fonctionnelle Cours 1: Identificateurs, types de base et fonctions Année 2013-2014 Identificateurs La notion d identificateur Un concept fondamental dans les langages

Plus en détail

Les métriques (McCabe, Halstead), l index de maintenabilité et leur influence sur la qualité

Les métriques (McCabe, Halstead), l index de maintenabilité et leur influence sur la qualité Les métriques (McCabe, Halstead), l index de maintenabilité et leur influence sur la qualité par Klaus LAMBERTZ, Verifysoft Technology La complexité de code a une influence directe sur la qualité et le

Plus en détail

Programmation récursive

Programmation récursive Année 2004-2005 F. Lévy IUT De Villetaneuse Dép t informatique Cours d'algorithmique 2 éme Année Cours 8 Programmation récursive 1. Qu'est-ce que la programmation récursive Définition : la programmation

Plus en détail

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme Rappel Ralf Treinen Université Paris Diderot UFR Informatique Laboratoire Preuves, Programmes et Systèmes treinen@pps.univ-paris-diderot.fr 6 mai 2015 Jusqu'à maintenant : un petit langage de programmation

Plus en détail

Qualité Logiciel. Sommaire d un Plan Qualité type. 05/09/2007 T. Fricheteau - Plan Qualité type - V1.0

Qualité Logiciel. Sommaire d un Plan Qualité type. 05/09/2007 T. Fricheteau - Plan Qualité type - V1.0 Qualité Logiciel Sommaire d un Plan Qualité type 1.But, domaine d application et responsabilités 1.1.Objet 1.2.Présentation succincte du projet 1.3.Fournitures concernées par le Plan Qualité 1.3.1.Matériels

Plus en détail

pedigree d'un cheval Zoe ; son père est Tonnerre et sa mère Belle ; mère de Belle est Rose et père de Belle est Eclair jean jean marc paul luc

pedigree d'un cheval Zoe ; son père est Tonnerre et sa mère Belle ; mère de Belle est Rose et père de Belle est Eclair jean jean marc paul luc Chap. 3 Les arbres binaires Un arbre est un ensemble de nœuds, organisés de façon hiérarchique, à partir d'un nœud distingué, appelé racine. La structure d'arbre est l'une des plus importantes et des plus

Plus en détail

Recherche dans un tableau

Recherche dans un tableau Chapitre 3 Recherche dans un tableau 3.1 Introduction 3.1.1 Tranche On appelle tranche de tableau, la donnée d'un tableau t et de deux indices a et b. On note cette tranche t.(a..b). Exemple 3.1 : 3 6

Plus en détail

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation impérative et structures de données simples Introduction au langage C Sandrine Blazy - 1ère année 24 octobre 2007 Cours d Algorithmique-Programmation

Plus en détail

Cours d Analyse, Algorithmique Elements de programmation

Cours d Analyse, Algorithmique Elements de programmation 1 de 33 Cours d Analyse, Algorithmique Elements de programmation Florent Hivert Mél : Florent.Hivert@lri.fr Adresse universelle : http://www.lri.fr/ hivert 2 de 33 Données et instructions Un programme

Plus en détail

ÉPREUVE FACULTATIVE D INFORMATIQUE. Codage cyclique

ÉPREUVE FACULTATIVE D INFORMATIQUE. Codage cyclique ÉCOLE POLYTECHNIQUE CONCOURS D ADMISSION 2003 FILIÈRES PSI ET PT ÉPREUVE FACULTATIVE D INFORMATIQUE (Durée : 2 heures) L utilisation des calculatrices n est pas autorisée pour cette épreuve. Avertissements

Plus en détail

Analyse de l ergonomie du site «adsl.free.fr» Selon les critères AFNOR (Scapin et Bastien)

Analyse de l ergonomie du site «adsl.free.fr» Selon les critères AFNOR (Scapin et Bastien) Analyse de l ergonomie du site «adsl.free.fr» Selon les critères AFNOR (Scapin et Bastien) Introduction Free est un des fournisseurs d'accès Internet leader dans son domaine. À travers son site Web, la

Plus en détail

Chap. VII : arbres binaires

Chap. VII : arbres binaires Chap. VII : arbres binaires 1. Introduction Arbre : collection d objets avec une structure hiérarchique Structure intrinsèque descendants d une personne (elle incluse) A ascendant connus d une personne

Plus en détail

Test et Validation du Logiciel

Test et Validation du Logiciel Test et Validation du Logiciel McInfo4_ASR Tests Janvier 2009 Patrick FELIX patrick.felix@labri.fr IUT Bordeaux 1 Plan Introduction : Pourquoi de la VVT? 1 Introduction au test de logiciels 2 Le test fonctionnel

Plus en détail

Correction langage Java

Correction langage Java MINISTÈRE DE L ÉCOLOGIE, DU DÉVELOPPEMENT DURABLE, DES TRANSPORTS ET DU LOGEMENT EXAMEN PROFESSIONNEL DE VÉRIFICATION D APTIDUDE AUX FONCTIONS DE PROGRAMMEUR Session 2010 Correction langage Java Langage:

Plus en détail

Conditions : stage indemnisé, aide au logement possible, transport CEA en Ile-de-France gratuit.

Conditions : stage indemnisé, aide au logement possible, transport CEA en Ile-de-France gratuit. Proposition de stage de BAC+4 ou BAC+5 Pro ou Recherche Etude comparative des outils de vérification d'algorithmes parallèles Logiciels (LSL), localisé à Palaiseau (Essonne), développe les outils d'aide

Plus en détail

Programmation C++ (débutant)/les tableaux statiques

Programmation C++ (débutant)/les tableaux statiques Programmation C++ (débutant)/les tableaux statiques 1 Programmation C++ (débutant)/les tableaux statiques Le cours du chapitre 6 : les tableaux statiques Les tableaux Une variable entière de type int ne

Plus en détail

I Quelques points d'algorithmique

I Quelques points d'algorithmique I Quelques points d'algorithmique 1) Types Type "simple" : Identificateur commençant par une majuscule = Description du type Les principaux types : les entiers naturels (int, long, long long) ou relatifs

Plus en détail

BTS : Service Informatique aux Organisations (Programme SLAM)

BTS : Service Informatique aux Organisations (Programme SLAM) BTS : Service Informatique aux Organisations (Programme SLAM) 1 TRONC COMMUN SOLUTIONS INFORMATIQUES - Support système des accès utilisateurs Solutions techniques d accès et systèmes d'exploitation associés

Plus en détail

Brevet de technicien supérieur Conception et Réalisation en Chaudronnerie Industrielle

Brevet de technicien supérieur Conception et Réalisation en Chaudronnerie Industrielle Brevet de technicien supérieur Conception et Réalisation en Chaudronnerie Industrielle ACTIVITÉS ET TÂCHES PROFESSIONNELLES Les activités professionnelles décrites ci-après, déclinées à partir des fonctions

Plus en détail

Trier des tableaux en C++ : efficacité du std::sort (STL) et tris paramétrés

Trier des tableaux en C++ : efficacité du std::sort (STL) et tris paramétrés Trier des tableaux en C++ : efficacité du std::sort (STL) et tris paramétrés Hélène Toussaint, juillet 2014 Sommaire 1. Efficacité du std::sort... 1 1.1. Conditions expérimentales... 1 1.2. Tableaux de

Plus en détail

Algorithmie ISI301 TP 1 : Python et premiers algorithmes

Algorithmie ISI301 TP 1 : Python et premiers algorithmes Algorithmie ISI301 TP 1 : Python et premiers algorithmes 1 Python : apprentissage Pour avoir une vision plus large des différentes possibilités du langage Python, nous ne pouvons que vous conseiller d

Plus en détail