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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Génie Logiciel LA QUALITE 1/5 LA QUALITE 3/5 LA QUALITE 2/5 LA QUALITE 4/5 LA QUALITE 5/5

Génie Logiciel LA QUALITE 1/5 LA QUALITE 3/5 LA QUALITE 2/5 LA QUALITE 4/5 LA QUALITE 5/5 Noël NOVELLI ; Université d Aix-Marseille; LIF et Département d Informatique Case 901 ; 163 avenue de Luminy 13 288 MARSEILLE cedex 9 Génie Logiciel LA QUALITE 1/5 La gestion de la qualité Enjeux de la

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

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

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

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

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

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

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

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

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

Cours de compilation

Cours de compilation Cours de compilation 1 Introduction Un compilateur est un logiciel de traduction d un langage source vers un langage cible. D ordinaire le langage source est un langage de programmation évolué, comme C++

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

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

Conception. Génie Logiciel. Renaud Marlet. LaBRI / INRIA http://www.labri.fr/~marlet. (d'après A.-M. Hugues) màj 17/04/2007 1 Génie Logiciel (d'après A.-M. Hugues) Conception Renaud Marlet LaBRI / INRIA http://www.labri.fr/~marlet màj 17/04/2007 2 Position dans le cycle de vie Contexte : étant donnée une spécification (ce que

Plus en détail

Les structures de données. Rajae El Ouazzani

Les structures de données. Rajae El Ouazzani Les structures de données Rajae El Ouazzani Les arbres 2 1- Définition de l arborescence Une arborescence est une collection de nœuds reliés entre eux par des arcs. La collection peut être vide, cad l

Plus en détail

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation : Algorithmique et programmation : STRUCTURES DE DONNÉES A. Structure et enregistrement 1) Définition et rôle des structures de données en programmation 1.1) Définition : En informatique, une structure de

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

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

Langage C/C++ TD 3-4 : Création dynamique d objets. Hubert Godfroy. 27 novembre 2014

Langage C/C++ TD 3-4 : Création dynamique d objets. Hubert Godfroy. 27 novembre 2014 Langage C/C++ TD 3-4 : Création dynamique d objets Hubert Godfroy 7 novembre 014 1 Tableaux Question 1 : Écrire une fonction prenant un paramètre n et créant un tableau de taille n (contenant des entiers).

Plus en détail

Automatisation en génie logiciel

Automatisation en génie logiciel Automatisation en génie logiciel Plan: Pourquoi et quoi automatiser? Gestion de configuration logicielle. Intégration continue. Traçabilité des changements. Tests unitaires automatisés. 1 Automatisation

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

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 initiation à la programmation en C++ Johann Cuenin

Cours d initiation à la programmation en C++ Johann Cuenin Cours d initiation à la programmation en C++ Johann Cuenin 11 octobre 2014 2 Table des matières 1 Introduction 5 2 Bases de la programmation en C++ 7 3 Les types composés 9 3.1 Les tableaux.............................

Plus en détail

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs) Modularité Extensions Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs) généricité modules de première classe : peuvent être

Plus en détail

Bernard HAMM, Évelyne LAVOISIER

Bernard HAMM, Évelyne LAVOISIER 92 MAÎTRISE DE PROGICIELS DE GESTION DE BASES DE DONNÉES ET DE TRAITEMENT DE TEXTE Compte rendu d'un stage à l'usage des professeurs de sciences sociales. Ce stage a été programmé A la demande et avec

Plus en détail

Java Licence Professionnelle CISII, 2009-10

Java Licence Professionnelle CISII, 2009-10 Java Licence Professionnelle CISII, 2009-10 Cours 4 : Programmation structurée (c) http://www.loria.fr/~tabbone/cours.html 1 Principe - Les méthodes sont structurées en blocs par les structures de 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

Figure 1. Structure répartie

Figure 1. Structure répartie Chapitre I: Applications Réparties et Middleware 1. Définition d une application répartie Une application répartie est constituée d un ensemble de processus (d objets, d agents, d acteurs) s exécutant

Plus en détail

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP COURS PROGRAMMATION INITIATION AU LANGAGE C SUR MICROCONTROLEUR PIC page 1 / 7 INITIATION AU LANGAGE C SUR PIC DE MICROSHIP I. Historique du langage C 1972 : naissance du C dans les laboratoires BELL par

Plus en détail

Julien Rosener (julien.rosener@digital-scratch.org) Le contrôle CRC. 17/05/2004 : Rajout des références

Julien Rosener (julien.rosener@digital-scratch.org) Le contrôle CRC. 17/05/2004 : Rajout des références Historique des versions Le contrôle CRC 03/05/2004 : Création du document 17/05/2004 : Rajout des références Sommaire 1 Introduction... 1 2 Rappel sur l'arithmétique sur les nombres binaire...2 2.1 L'opérateur

Plus en détail

Quatrième partie IV. Test. Test 15 février 2008 1 / 71

Quatrième partie IV. Test. Test 15 février 2008 1 / 71 Quatrième partie IV Test Test 15 février 2008 1 / 71 Outline Introduction 1 Introduction 2 Analyse statique 3 Test dynamique Test fonctionnel et structurel Test structurel Test fonctionnel 4 Conclusion

Plus en détail

Sécurité des logiciels et analyse statique

Sécurité des logiciels et analyse statique Sécurité des logiciels et analyse statique David Pichardie Projet Lande, INRIA Rennes - Bretagne Atlantique Introduction générale à l analyse statique Analyse de programme Objet : déduire mécaniquement

Plus en détail

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles) 1/4 Objectif de ce cours /4 Objectifs de ce cours Introduction au langage C - Cours Girardot/Roelens Septembre 013 Du problème au programme I passer d un problème exprimé en français à la réalisation d

Plus en détail

Gestion de projets logiciels. Xavier Dubuc

Gestion de projets logiciels. Xavier Dubuc Gestion de projets logiciels Résumé blocus Xavier Dubuc 16 janvier 2011 1 Table des matières 1 Planification (PERT-GANTT) 3 1.1 Définitions............................................. 3 1.2 Analyse un

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

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java Langages objets Introduction M2 Pro CCI, Informatique Emmanuel Waller, LRI, Orsay présentation du module logistique 12 blocs de 4h + 1 bloc 2h = 50h 1h15 cours, 45mn exercices table, 2h TD machine page

Plus en détail

Normalisation et sûreté de fonctionnement : Panorama, tendances et diversité. Patrice KAHN (KSdF-Conseil / SECTOR)

Normalisation et sûreté de fonctionnement : Panorama, tendances et diversité. Patrice KAHN (KSdF-Conseil / SECTOR) Normalisation et sûreté de fonctionnement : Panorama, tendances et diversité Patrice KAHN (KSdF-Conseil / SECTOR) Systèmes & Logiciels pour les NTIC dans le Transport Transports & Sûreté de Fonctionnement

Plus en détail

Gé nié Logiciél Livré Blanc

Gé nié Logiciél Livré Blanc Gé nié Logiciél Livré Blanc Version 0.2 26 Octobre 2011 Xavier Blanc Xavier.Blanc@labri.fr Partie I : Les Bases Sans donner des définitions trop rigoureuses, il faut bien commencer ce livre par énoncer

Plus en détail

Algorithmique et Programmation, IMA

Algorithmique et Programmation, IMA Algorithmique et Programmation, IMA Cours 2 : C Premier Niveau / Algorithmique Université Lille 1 - Polytech Lille Notations, identificateurs Variables et Types de base Expressions Constantes Instructions

Plus en détail

Chapitre 1 : Introduction aux bases de données

Chapitre 1 : Introduction aux bases de données Chapitre 1 : Introduction aux bases de données Les Bases de Données occupent aujourd'hui une place de plus en plus importante dans les systèmes informatiques. Les Systèmes de Gestion de Bases de Données

Plus en détail

Plan du cours. Historique du langage http://www.oracle.com/technetwork/java/index.html. Nouveautés de Java 7

Plan du cours. Historique du langage http://www.oracle.com/technetwork/java/index.html. Nouveautés de Java 7 Université Lumière Lyon 2 Faculté de Sciences Economiques et Gestion KHARKIV National University of Economic Introduction au Langage Java Master Informatique 1 ère année Julien Velcin http://mediamining.univ-lyon2.fr/velcin

Plus en détail

Rapport d'audit. «Librairie Informatique»

Rapport d'audit. «Librairie Informatique» GL51 Rapport d'audit «Librairie Informatique» Code : BATSPETA-000 Maîtrise d'oeuvre Maîtrise d'ouvrage Responsables de l'audit M. Fischer M. Petrequin Melle Bats, M. Petazzoni Date rédaction : 05/01/04

Plus en détail

Claude Delannoy. 3 e édition C++

Claude Delannoy. 3 e édition C++ Claude Delannoy 3 e édition Exercices Exercices C++ en en langage langage delc++ titre 4/07/07 15:19 Page 2 Exercices en langage C++ AUX EDITIONS EYROLLES Du même auteur C. Delannoy. Apprendre le C++.

Plus en détail

Chapitre VI- La validation de la composition.

Chapitre VI- La validation de la composition. Chapitre VI- La validation de la composition. Objectifs du chapitre : Expliquer les conséquences de l utilisation de règles de typage souples dans SEP. Présenter le mécanisme de validation des connexions

Plus en détail

Complexité. Licence Informatique - Semestre 2 - Algorithmique et Programmation

Complexité. Licence Informatique - Semestre 2 - Algorithmique et Programmation Complexité Objectifs des calculs de complexité : - pouvoir prévoir le temps d'exécution d'un algorithme - pouvoir comparer deux algorithmes réalisant le même traitement Exemples : - si on lance le calcul

Plus en détail

Gestion de Projet Informatique

Gestion de Projet Informatique Gestion de Projet Informatique Partie 3 : Cycles de vie de projet Licence d'informatique 3 ième Année Tianxiao Liu Université de Cergy-Pontoise 1 GPI T. LIU The earliest moment is when you think it is

Plus en détail

La chasse aux bugs : pourquoi? Les bugs en informatique. La chasse aux bugs : pourquoi? Des bugs logiciels aux conséquences désastreuses (1)

La chasse aux bugs : pourquoi? Les bugs en informatique. La chasse aux bugs : pourquoi? Des bugs logiciels aux conséquences désastreuses (1) La chasse aux bugs : pourquoi? Les bugs en informatique où pourquoi faire un peu de maths quand c est utile Les bugs sont partie intégrante de l informatique. Mais en fait... les bugs, est-ce si grave?

Plus en détail

Cours Composant 2. Qualité logicielle et spécications algébriques

Cours Composant 2. Qualité logicielle et spécications algébriques UPMC Paris Universitas Master Informatique STL Cours Composant 2. Qualité logicielle et spécications algébriques c 2005-2008 Frédéric Peschanski UPMC Paris Universitas 24 février 2008 c 2005-2008 Frédéric

Plus en détail

Analyse de programmes par interprétation abstraite

Analyse de programmes par interprétation abstraite Analyse de programmes par interprétation abstraite Marc PEGON marc.pegon@ensimag.imag.fr Ensimag - Grenoble INP Encadrants David MONNIAUX Matthieu MOY 1 / 21 Analyse statique : obtenir automatiquement

Plus en détail

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre 2009. Enrica.Duchi@liafa.jussieu.fr

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre 2009. Enrica.Duchi@liafa.jussieu.fr . Cours intensif Java 1er cours: de C à Java Septembre 2009 Enrica DUCHI LIAFA, Paris 7 Enrica.Duchi@liafa.jussieu.fr LANGAGES DE PROGRAMMATION Pour exécuter un algorithme sur un ordinateur il faut le

Plus en détail

Chapitre 3 Structures de données linéaires : listes, piles et files

Chapitre 3 Structures de données linéaires : listes, piles et files Chapitre 3 Structures de données linéaires : listes, piles et files 1. Introduction Le but de ce chapitre est de décrire des représentations des structures de données de base telles les listes en général

Plus en détail

Cours 7 : fonctions recursives, arithmétique binaire, flottants 1

Cours 7 : fonctions recursives, arithmétique binaire, flottants 1 Cours 7 : fonctions recursives, arithmétique binaire, flottants 1 Les types énumérés On peut aussi définir des types qui ont un nombre fini de valeurs (ex: jours de la semaine, couleurs primaires, etc.)

Plus en détail

GL - 2 2.1 Le Génie Logiciel

GL - 2 2.1 Le Génie Logiciel GL - 2 2.1 Le Génie Logiciel Lydie du Bousquet Lydie.du-bousquet@imag.fr En collaboration avec J.-M. Favre, I. Parissis, Ph. Lalanda 1 Rappels La production logicielle est une activité complexe de façon

Plus en détail

Licence d'informatique 2004-2005 Examen Programmation orientée objet Juin 2005

Licence d'informatique 2004-2005 Examen Programmation orientée objet Juin 2005 Licence d'informatique 2004-2005 Examen Programmation orientée objet Juin 2005 Durée de l'épreuve : 2 heures TRÈS IMPORTANT : respectez l'ordre des questions. La lisibilité sera un critère important pour

Plus en détail

Annexe sur la maîtrise de la qualité

Annexe sur la maîtrise de la qualité Version du 09/07/08 Annexe sur la maîtrise de la qualité La présente annexe précise les modalités d'application, en matière de maîtrise de la qualité, de la circulaire du 7 janvier 2008 fixant les modalités

Plus en détail

Programmation en Java IUT GEII (MC-II1) 1

Programmation en Java IUT GEII (MC-II1) 1 Programmation en Java IUT GEII (MC-II1) 1 Christophe BLANC - Paul CHECCHIN IUT Montluçon Université Blaise Pascal Novembre 2009 Christophe BLANC - Paul CHECCHIN Programmation en Java IUT GEII (MC-II1)

Plus en détail

I. Introduction aux fonctions : les fonctions standards

I. Introduction aux fonctions : les fonctions standards Chapitre 3 : Les fonctions en C++ I. Introduction aux fonctions : les fonctions standards A. Notion de Fonction Imaginons que dans un programme, vous ayez besoin de calculer une racine carrée. Rappelons

Plus en détail

Optimisation de code

Optimisation de code Optimisation de code Brique ASC Samuel Tardieu sam@rfc1149.net École Nationale Supérieure des Télécommunications Samuel Tardieu (ENST) Optimisation de code 1 / 77 But L optimisation cherche à améliorer

Plus en détail

6. Des objets bien conçus

6. Des objets bien conçus Conception objet en Java avec BlueJ une approche interactive 6. Des objets bien conçus David J. Barnes, Michael Kölling version française: Patrice Moreaux Rédigé avec 1.0 Conception objet en Java avec

Plus en détail

Introduction au génie logiciel

Introduction au génie logiciel Introduction au génie logiciel Guillaume Laurent ENSMM 2007 G. Laurent (ENSMM) Introduction au génie logiciel 2007 1 / 36 Plan du cours 1 Problématique du génie logiciel 2 Méthodes de développement logiciel

Plus en détail

C++ COURS N 2 : CLASSES, DONNÉES ET FONCTIONS MEMBRES Classes et objets en C++ Membres d'une classe Spécification d'une classe Codage du comportement

C++ COURS N 2 : CLASSES, DONNÉES ET FONCTIONS MEMBRES Classes et objets en C++ Membres d'une classe Spécification d'une classe Codage du comportement C++ COURS N 2 : CLASSES, DONNÉES ET FONCTIONS MEMBRES Classes et objets en C++ Membres d'une classe Spécification d'une classe Codage du comportement des objets d'une classe Utilisation d'une classe Droit

Plus en détail

IN 102 - Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

IN 102 - Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C IN 102 - Cours 1 Qu on le veuille ou non, les systèmes informatisés sont désormais omniprésents. Même si ne vous destinez pas à l informatique, vous avez de très grandes chances d y être confrontés en

Plus en détail

Qualité du logiciel: éléments normatifs

Qualité du logiciel: éléments normatifs Qualité du logiciel: éléments normatifs Matthieu Amiguet 2004 2005 Critères et facteurs de qualité La qualité Définition AFNOR NF x50-120 Aptitude d un produit ou d un service à satisfaire les besoins

Plus en détail

Instructions assembleur

Instructions assembleur Instructions assembleur 0001011011110110 0001011101101101 10001001 Instruction vue par le programmeur assembleur ou instruction élémentaire cible d'un compilateur Réalise une modification de l'état interne

Plus en détail

Logiciel Libre Cours 3 Fondements: Génie Logiciel

Logiciel Libre Cours 3 Fondements: Génie Logiciel Logiciel Libre Cours 3 Fondements: Génie Logiciel Stefano Zacchiroli zack@pps.univ-paris-diderot.fr Laboratoire PPS, Université Paris Diderot 2013 2014 URL http://upsilon.cc/zack/teaching/1314/freesoftware/

Plus en détail

Principes de V&V. Vérification & Validation. Techniques statiques. V&V et cycle de vie. Deux aspects de la notion de qualité :

Principes de V&V. Vérification & Validation. Techniques statiques. V&V et cycle de vie. Deux aspects de la notion de qualité : Principes de V&V Deux aspects de la notion de qualité : Vérification & Validation Principes Techniques de tests Tests en boîte noire L outil check Philippe Collet 2007-2008 P. Collet 1 Conformité avec

Plus en détail

Code_Aster. Méthodes Python d'accès aux objets Aster

Code_Aster. Méthodes Python d'accès aux objets Aster Titre : Méthodes Python d'accès aux objets Aster Date : 23/07/2015 Page : 1/11 Méthodes Python d'accès aux objets Aster Résumé : Ce document présente les méthodes Python permettant d accéder aux informations

Plus en détail

C12. Les structures arborescentes. Août 2006

C12. Les structures arborescentes. Août 2006 Les structures arborescentes Août 2006 Objectifs du C12 Connaître le principe de la structure d arbre binaire Connaître les détails d implémentation de la structure d arbre binaire de recherche Les structures

Plus en détail

Notes de cours. Introduction

Notes de cours. Introduction Notes de cours GEI 44 : STRUCTURES DE DONNÉES ET ALGORITHMES Chapitre 5 Application des piles Introduction Piles très utilisées dans les compilateurs Voici deux exemples de composants d un compilateur

Plus en détail

Représentation des nombres entiers et réels. en binaire en mémoire

Représentation des nombres entiers et réels. en binaire en mémoire L3 Mag1 Phys. fond., cours C 15-16 Rep. des nbs. en binaire 25-09-05 23 :06 :02 page 1 1 Nombres entiers 1.1 Représentation binaire Représentation des nombres entiers et réels Tout entier positif n peut

Plus en détail

Daniel DOLLE, Siemens TS

Daniel DOLLE, Siemens TS La Canarsie Line à New York, une application du Trainguard CBTC Siemens TS Daniel DOLLE, Siemens TS Cet article présente de manière synthétique les technologies qu utilise STS pour garantir le fonctionnement

Plus en détail

Programmer en JAVA. par Tama (tama@via.ecp.fr( tama@via.ecp.fr)

Programmer en JAVA. par Tama (tama@via.ecp.fr( tama@via.ecp.fr) Programmer en JAVA par Tama (tama@via.ecp.fr( tama@via.ecp.fr) Plan 1. Présentation de Java 2. Les bases du langage 3. Concepts avancés 4. Documentation 5. Index des mots-clés 6. Les erreurs fréquentes

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

Mini-Projet : Tournoi de Dames

Mini-Projet : Tournoi de Dames Mini-Projet : Tournoi de Dames L objectif du projet est de programmer un jeu de dames de façon à ce que votre programme puisse jouer une partie de dames avec les programmes des autres étudiants. 1 Organisation

Plus en détail

1 / 9. Méthodes de développement. Introduction

1 / 9. Méthodes de développement. Introduction 1 / 9 Méthodes de développement Introduction 1 - Objectifs... 2 2 - Risques d'un projet logiciel... 2 3 - Préparation et conduite de projet... 3 4 - Caractères particuliers du logiciel et conséquences...

Plus en détail

INF601 : Algorithme et Structure de données

INF601 : Algorithme et Structure de données Cours 2 : TDA Liste B. Jacob IC2/LIUM 15 février 2010 Plan 1 Définition du TDA Liste 2 Réalisation du TDA Liste 3 Type de stockage des éléments 4 Recherche d un élément Dans une liste non triée Dans une

Plus en détail

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004 Questionnaire d'examen final INF1101 Sigle du cours Nom : Signature : Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004 Professeur(s)

Plus en détail

LES TESTS. Les tests. Organisation d un projet de recette Les types de tests Les outils

LES TESTS. Les tests. Organisation d un projet de recette Les types de tests Les outils Les tests Organisation d un projet de recette Les types de tests Les outils Organiser le déroulement des tests Spécifier Exécuter les Cahiers de tests les Cahiers de tests Analyser les résultats Correction

Plus en détail

RAPPORT DE STAGE GENERATION DE TESTS POUR AMELIORER DES OUTILS DE CALCUL DE TEMPS D'EXECUTION PIRE CAS

RAPPORT DE STAGE GENERATION DE TESTS POUR AMELIORER DES OUTILS DE CALCUL DE TEMPS D'EXECUTION PIRE CAS Université Joseph Fourier Département Licence Sciences & Technologie RAPPORT DE STAGE GENERATION DE TESTS POUR AMELIORER DES OUTILS DE CALCUL DE TEMPS D'EXECUTION PIRE CAS Laboratoire d'accueil : Verimag

Plus en détail

Les moteurs de progrès

Les moteurs de progrès MANAGEMENT PILOTAGE Les moteurs de progrès Si le management par les processus connaît une certaine réussite, le pilotage et les processus qui lui sont liés restent précaires. Pourtant là aussi, appliquer

Plus en détail