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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Introduction à MATLAB R

Introduction à MATLAB R Introduction à MATLAB R Romain Tavenard 10 septembre 2009 MATLAB R est un environnement de calcul numérique propriétaire orienté vers le calcul matriciel. Il se compose d un langage de programmation, d

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

Analyse et Conception objet du logiciel Analyse et conception objet du logiciel : Méthode de conception objet et notation UML.

Analyse et Conception objet du logiciel Analyse et conception objet du logiciel : Méthode de conception objet et notation UML. Analyse et conception objet du logiciel : Méthode de conception objet et notation UML Rémy Courdier Email : Remy.Courdier@univ-reunion.fr Rémy Courdier V2.1 1 Plan du cours Introduction au Génie Logiciel

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

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40 Déroulement du cours Introduction Concepts Java Remarques Langage et Concepts de Programmation Orientée-Objet Gauthier Picard École Nationale Supérieure des Mines de Saint-Étienne gauthier.picard@emse.fr

Plus en détail

as Architecture des Systèmes d Information

as Architecture des Systèmes d Information Plan Plan Programmation - Introduction - Nicolas Malandain March 14, 2005 Introduction à Java 1 Introduction Présentation Caractéristiques Le langage Java 2 Types et Variables Types simples Types complexes

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

SYSTÈME DE GESTION DE FICHIERS

SYSTÈME DE GESTION DE FICHIERS SYSTÈME DE GESTION DE FICHIERS - DISQUE 1 Les couches logiciels réponse requête Requêtes E/S Système E/S Pilote E/S Interruptions utilisateur traitement S.E. commandes S.E. S.E. matériel Contrôleur E/S

Plus en détail

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview.

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview. ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview. Sciences et Technologies de l Industrie et du Développement Durable Formation des enseignants parcours : ET24 Modèle de

Plus en détail

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère L'héritage et le polymorphisme en Java Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère En java, toutes les classes sont dérivée de la

Plus en détail

Conditions Particulières de Maintenance. Table des matières. Ref : CPM-1.2 du 08/06/2011

Conditions Particulières de Maintenance. Table des matières. Ref : CPM-1.2 du 08/06/2011 Conditions Particulières de Maintenance Ref : Table des matières 1 CONDITIONS PARTICULIÈRES APPLICABLES AUX CONTRATS DE MAINTENANCE...2 1.1 Préambule...2 1.2 Obligations d'atreal et services rendus...2

Plus en détail

Formation projet informatique. Expression de besoins, définir un besoin informatique

Formation projet informatique. Expression de besoins, définir un besoin informatique Formation projet informatique Expression de besoins, définir un besoin informatique Enjeux L'expression de besoins est le premier document produit, avant même le commencement du projet Détermine le lancement

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

GESTION DE PROJET SÉANCE 2 : LES CYCLE DE VIE D'UN PROJET

GESTION DE PROJET SÉANCE 2 : LES CYCLE DE VIE D'UN PROJET GESTION DE PROJET SÉANCE 2 : LES CYCLE DE VIE D'UN PROJET 1 Tianxiao LIU Licence Professionnelle Réseaux & Sécurité Université de Cergy-Pontoise http://depinfo.u-cergy.fr/~tliu/lpg.php PLAN Objectif et

Plus en détail

Généralités sur le Langage Java et éléments syntaxiques.

Généralités sur le Langage Java et éléments syntaxiques. Généralités sur le Langage Java et éléments syntaxiques. Généralités sur le Langage Java et éléments syntaxiques....1 Introduction...1 Genéralité sur le langage Java....1 Syntaxe de base du Langage...

Plus en détail

SOUTIEN INFORMATIQUE DEP 5229

SOUTIEN INFORMATIQUE DEP 5229 SOUTIEN INFORMATIQUE DEP 5229 Le Diplôme d études professionnelles D.E.P. en soutien informatique a une durée totale de 1800 heures à temps plein. Le programme permet de développer les compétences nécessaires

Plus en détail

INITIATION A LA PROGRAMMATION

INITIATION A LA PROGRAMMATION 2004-2005 Université Paris Dauphine IUP Génie Mathématique et Informatique INITIATION A LA PROGRAMMATION PROCEDURALE, A L'ALGORITHMIQUE ET AUX STRUCTURES DE DONNEES PAR LE LANGAGE C Maude Manouvrier La

Plus en détail

Cours Informatique Master STEP

Cours Informatique Master STEP Cours Informatique Master STEP Bases de la programmation: Compilateurs/logiciels Algorithmique et structure d'un programme Programmation en langage structuré (Fortran 90) Variables, expressions, instructions

Plus en détail

Cours d Algorithmique et de Langage C 2005 - v 3.0

Cours d Algorithmique et de Langage C 2005 - v 3.0 Cours d Algorithmique et de Langage C 2005 - v 3.0 Bob CORDEAU cordeau@onera.fr Mesures Physiques IUT d Orsay 15 mai 2006 Avant-propos Avant-propos Ce cours en libre accès repose sur trois partis pris

Plus en détail

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS Depuis SAS 9.2 TS2M3, SAS propose un nouveau langage de programmation permettant de créer et gérer des tables SAS : le DS2 («Data Step 2»). Ces nouveautés

Plus en détail

Gestion Projet. Cours 3. Le cycle de vie

Gestion Projet. Cours 3. Le cycle de vie Gestion Projet Cours 3 Le cycle de vie Sommaire Généralités 3 Séquentiel 7 Itératif/Incrémental 17 Extreme Programming 22 Que choisir? 29 Etats Transverse 33 Cours 3 2006-2007 2 Généralités Cours 3 2006-2007

Plus en détail

Utilisation de l analyse statique comme outil d aide au développement. par. Yves Gauthier

Utilisation de l analyse statique comme outil d aide au développement. par. Yves Gauthier Utilisation de l analyse statique comme outil d aide au développement par Yves Gauthier essai présenté au Département d'informatique en vue de l'obtention du grade de maître en technologies de l information

Plus en détail

Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr

Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr Table des matières 1 Les bases 3 2 Variables et constantes 5 3 Quelques fonctions indispensables

Plus en détail

UE Programmation Impérative Licence 2ème Année 2014 2015

UE Programmation Impérative Licence 2ème Année 2014 2015 UE Programmation Impérative Licence 2 ème Année 2014 2015 Informations pratiques Équipe Pédagogique Florence Cloppet Neilze Dorta Nicolas Loménie prenom.nom@mi.parisdescartes.fr 2 Programmation Impérative

Plus en détail

Nom-Projet MODELE PLAN DE MANAGEMENT DE PROJET

Nom-Projet MODELE PLAN DE MANAGEMENT DE PROJET Nom-Projet MODELE PLAN DE MANAGEMENT DE PROJET Glossaire La terminologie propre au projet, ainsi que les abréviations et sigles utilisés sont définis dans le Glossaire. Approbation Décision formelle, donnée

Plus en détail

Objets et Programmation. origine des langages orientés-objet

Objets et Programmation. origine des langages orientés-objet Objets et Programmation origine des langages orientés-objet modularité, encapsulation objets, classes, messages exemples en Java héritage, liaison dynamique G. Falquet, Th. Estier CUI Université de Genève

Plus en détail

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux. UEO11 COURS/TD 1 Contenu du semestre Cours et TDs sont intégrés L objectif de ce cours équivalent a 6h de cours, 10h de TD et 8h de TP est le suivant : - initiation à l algorithmique - notions de bases

Plus en détail

Conseils pour l évaluation et l attribution de la note

Conseils pour l évaluation et l attribution de la note Entreprise formatrice Candidat/-e Téléphone: Téléphone: Ce document ne doit en aucun cas être montré au candidat après l attribution des points. Conseils pour l évaluation et l attribution de la note Documentation

Plus en détail

Les arbres binaires de recherche

Les arbres binaires de recherche Institut Galilée Année 2010-2011 Algorithmique et arbres L2 TD 6 Les arbres binaires de recherche Type en C des arbres binaires (également utilisé pour les ABR) : typedef struct noeud_s { struct noeud_s

Plus en détail

3. SPÉCIFICATIONS DU LOGICIEL. de l'expression des besoins à la conception. Spécifications fonctionnelles Analyse fonctionnelle et méthodes

3. SPÉCIFICATIONS DU LOGICIEL. de l'expression des besoins à la conception. Spécifications fonctionnelles Analyse fonctionnelle et méthodes PLAN CYCLE DE VIE D'UN LOGICIEL EXPRESSION DES BESOINS SPÉCIFICATIONS DU LOGICIEL CONCEPTION DU LOGICIEL LA PROGRAMMATION TESTS ET MISE AU POINT DOCUMENTATION CONCLUSION C.Crochepeyre Génie Logiciel Diapason

Plus en détail

Initiation. àl algorithmique et à la programmation. en C

Initiation. àl algorithmique et à la programmation. en C Initiation àl algorithmique et à la programmation en C Initiation àl algorithmique et à la programmation en C Cours avec 129 exercices corrigés Illustration de couverture : alwyncooper - istock.com Dunod,

Plus en détail

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski cegielski@u-pec.fr

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski cegielski@u-pec.fr Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski cegielski@u-pec.fr Mars 2002 Pour Irène et Marie Legal Notice Copyright c 2002 Patrick Cégielski Université

Plus en détail

Service de réplication des données HP pour la gamme de disques Continuous Access P9000 XP

Service de réplication des données HP pour la gamme de disques Continuous Access P9000 XP Service de réplication des données HP pour la gamme de disques Continuous Access P9000 XP Services HP Care Pack Données techniques Le service de réplication des données HP pour Continuous Access offre

Plus en détail

Cours de Systèmes d Exploitation

Cours de Systèmes d Exploitation Licence d informatique Synchronisation et Communication inter-processus Hafid Bourzoufi Université de Valenciennes - ISTV Introduction Les processus concurrents s exécutant dans le système d exploitation

Plus en détail

Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie

Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie Chapitre I : Les bases du C++ Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie du logiciel, et ce depuis

Plus en détail

Cours 1 : La compilation

Cours 1 : La compilation /38 Interprétation des programmes Cours 1 : La compilation Yann Régis-Gianas yrg@pps.univ-paris-diderot.fr PPS - Université Denis Diderot Paris 7 2/38 Qu est-ce que la compilation? Vous avez tous déjà

Plus en détail

La correction des erreurs d'enregistrement et de traitement comptables

La correction des erreurs d'enregistrement et de traitement comptables La correction des erreurs d'enregistrement et de traitement comptables Après l'étude des différents types d'erreurs en comptabilité (Section 1) nous étudierons la cause des erreurs (Section 2) et les techniques

Plus en détail

Service d'installation et de démarrage de la solution de stockage réseau HP StoreEasy 1000/3000

Service d'installation et de démarrage de la solution de stockage réseau HP StoreEasy 1000/3000 Service d'installation et de démarrage de la solution de stockage réseau Services HP Données techniques Le service d'installation et de démarrage de la solution de stockage réseau offre l'installation

Plus en détail

SYSTÈME DE GESTION DE FICHIERS SGF - DISQUE

SYSTÈME DE GESTION DE FICHIERS SGF - DISQUE SYSTÈME DE GESTION DE FICHIERS SGF - DISQUE C.Crochepeyre MPS_SGF 2000-20001 Diapason 1 Les couches logiciels réponse SGF requête matériel matériel Requêtes E/S Système E/S Pilote E/S Interruptions Contrôleur

Plus en détail

Exclusion Mutuelle. Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 9 février 2011

Exclusion Mutuelle. Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 9 février 2011 Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr Université de Provence 9 février 2011 Arnaud Labourel (Université de Provence) Exclusion Mutuelle 9 février 2011 1 / 53 Contexte Epistémologique

Plus en détail

Analyse de sécurité de logiciels système par typage statique

Analyse de sécurité de logiciels système par typage statique Contexte Modélisation Expérimentation Conclusion Analyse de sécurité de logiciels système par typage statique Application au noyau Linux Étienne Millon UPMC/LIP6 Airbus Group Innovations Sous la direction

Plus en détail

Travaux pratiques. Compression en codage de Huffman. 1.3. Organisation d un projet de programmation

Travaux pratiques. Compression en codage de Huffman. 1.3. Organisation d un projet de programmation Université de Savoie Module ETRS711 Travaux pratiques Compression en codage de Huffman 1. Organisation du projet 1.1. Objectifs Le but de ce projet est d'écrire un programme permettant de compresser des

Plus en détail

4. Groupement d objets

4. Groupement d objets Conception objet en Java avec BlueJ une approche interactive 4. Groupement d objets Collections et itérateurs David J. Barnes, Michael Kölling version française: Patrice Moreaux Rédigé avec 1.0 Principaux

Plus en détail

LES INTERFACES HOMME-MACHINE

LES INTERFACES HOMME-MACHINE LES INTERFACES HOMME-MACHINE 1 ère Partie : Introduction aux Interfaces Homme-Machine 2 ème Partie : Notions de base sur les Sciences Cognitives 3 ème Partie : Recommandations ergonomiques 4 ème Partie

Plus en détail

Analyse des Besoins (Spécifications)

Analyse des Besoins (Spécifications) 1 Génie Logiciel (d'après A.-M. Hugues) Analyse des Besoins (Spécifications) Renaud Marlet LaBRI / INRIA http://www.labri.fr/~marlet màj 17/04/2007 Analyse des besoins : 2 Contexte : Position dans le cycle

Plus en détail

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE QCM Remarque : - A une question correspond au moins 1 réponse juste - Cocher la ou les bonnes réponses Barème : - Une bonne réponse = +1 - Pas de réponse = 0

Plus en détail