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

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

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

vendredi 8 février 2008 QUALITÉ DU LOGICIEL

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

Plus en détail

9. VALIDATION ET VERIFICATION

9. VALIDATION ET VERIFICATION 9. VALIDATION ET VERIFICATION La garantie de la qualité est assurée par les étapes de validation et de vérification. Ces activités se déroulent tout au long du cycle de vie lors de l'approbation des documents

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

Méthodes de test. Mihaela Sighireanu

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

Plus en détail

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

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

Plus en détail

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

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

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

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

Plus en détail

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

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

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

Plus en détail

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

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

Eléments de syntaxe du langage Java

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

Plus en détail

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

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

Plus en détail

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

Recommendations de codage

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

Plus en détail

Description et illustration du processus unifié

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

Plus en détail

Mesure de la qualité du code source ALGORITHMES ET OUTILS

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

Plus en détail

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

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

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

Plus en détail

Algorithmique et Analyse d Algorithmes

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

Plus en détail

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

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

Plus en détail

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

Suivi des risques Projet ERP Info 2000

Suivi des risques Projet ERP Info 2000 Suivi des s Projet ERP Info 1 Inflation Description du Impacts Type de Evolution des coûts matière première, composants ou soustraitance Augmentation du budget économique/ Augmentation du budget économique/

Plus en détail

Evaluation et tests d une interface graphique

Evaluation et tests d une interface graphique Evaluation et tests d une interface graphique Tâcheconsidérée considérée Utilisateurs Poste de travail Domaine d activité Analyse de la tâche Contexte de travail Stéréotype d utilisateur Critères d utilité

Plus en détail

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

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

Plus en détail

Définition des Besoins

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

Plus en détail

IFT3913 Qualité du logiciel et métriques. Chapitre 5 Mesure de la qualité du logiciel

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

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

Cours d Analyse, Algorithmique Elements de programmation

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

Plus en détail

Ioannis Parissis UFR IMA Laboratoire LIG. Test logiciel

Ioannis Parissis UFR IMA Laboratoire LIG. Test logiciel Test logiciel Objectif et plan du du cours Présenter les concepts de base sur le test logiciel Introduire des techniques simples pour construire des tests A partir de la spécification informelle du programme

Plus en détail

GESTION DES PROCESSUS

GESTION DES PROCESSUS CHAPITRE 2 : GESTION DES PROCESSUS Objectifs spécifiques Connaître la notion de processus, Connaître les caractéristiques d un processus ainsi que son contexte Connaître la notion d interruptions et de

Plus en détail

ISMIN 1A Programmation 1 : Examen de programmation C. Réponses. Partie 1. Questions ouvertes

ISMIN 1A Programmation 1 : Examen de programmation C. Réponses. Partie 1. Questions ouvertes ISMIN 1A Programmation 1 : Examen de programmation C Réponses Partie 1. Questions ouvertes 1. Soit la déclaration suivante, char tab[] = "". Que contient le tableau tab? Réponse : tab[0] = \0. tab est

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

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

Modélisation des Systèmes d Information Jean-Yves Antoine

Modélisation des Systèmes d Information Jean-Yves Antoine Modélisation des Systèmes d Information Jean-Yves Antoine http://www.info.univ-tours.fr/~antoine Processus de développement logiciel Jean-Yves Antoine U. Bretagne Sud - UFR SSI - IUP Vannes année 2001-2002

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

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

Systèmes temps réel Concepts de base. Richard Grisel Professeur des Universités Université de Rouen

Systèmes temps réel Concepts de base. Richard Grisel Professeur des Universités Université de Rouen Systèmes temps réel Concepts de base Richard Grisel Professeur des Universités Université de Rouen 1 Systèmes temps réel - Choix Gestion des ressources Ordonnancement ( Scheduling ), Tolérance aux fautes

Plus en détail

Algorithmique et programmation. Cours d'algorithmique illustré par des exemples pour le picbasic

Algorithmique et programmation. Cours d'algorithmique illustré par des exemples pour le picbasic Algorithmique et programmation Cours d'algorithmique illustré par des exemples pour le picbasic Même s'il est possible d'écrire un programme petit à petit par touches successives, le résultat est souvent

Plus en détail

Compte rendu TP No1 : «Analyse statique de programme»

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

Plus en détail

LA DEMARCHE DE PROJET

LA DEMARCHE DE PROJET LA DEMARCHE DE PROJET Baccalauréat STI2D-SIN SIN 1.1 : La démarche de projet Objectifs o Utiliser les outils adaptés pour planifier un projet (Revue de projet, Cartes mentales, Gantt, chemin critique...

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

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

Nb de Pages : 11 Taille : 250 368 octets Version : 1.0. Référence : oepa_ieee730_20050120. Auteurs : Pierre Gallice

Nb de Pages : 11 Taille : 250 368 octets Version : 1.0. Référence : oepa_ieee730_20050120. Auteurs : Pierre Gallice OEPA Traduction de la norme IEEE 730 Nb de Pages : 11 Taille : 250 368 octets Version : 1.0 Référence : oepa_ieee730_20050120 Auteurs : Pierre Gallice Validé par : Antoine Tallon, chef de projet Destinataires

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

Paradigme de programmation Impératif

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

Plus en détail

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

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

nulles dans un langage à objets

nulles dans un langage à objets Prévention de déréférencement de références nulles dans un langage à objets Jean-Sébastien Gélinas, Étienne M. Gagnon, Jean Privat Université du Québec à Montréal Langages et Modèles à Objets Nancy 27

Plus en détail

Importance des cas tests. Qualification de code

Importance des cas tests. Qualification de code Comment s assurer de la qualité? Revue de code Règles d intégration Importance des cas tests Qualification de code 1 Comment s assurer de la qualité? Validation élémentaire - revue de code : En continu

Plus en détail

Modélisation objet Le langage UML

Modélisation objet Le langage UML Modélisation objet Le langage UML Brahim HAMID La base de contrôle Robot Zone à explorer brahim.hamid@irit.fr brahim.hamid@univ-tlse2.fr http://mass-cara.univ-tlse2.fr/~brahimou/ens/uml 1 Les méthodes

Plus en détail

Qualité logicielle, tests, débogage

Qualité logicielle, tests, débogage Qualité logicielle, tests, débogage A. Accro aux tests? Une introduction au test logiciel................ 4 Pourquoi le test logiciel? Des tests, pour gagner du temps! Pour aller plus loin Les objectifs

Plus en détail

Programmation récursive

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

Plus en détail

Service d Audit des logiciels Qualité et Conformité Cobol/Cics/IMS

Service d Audit des logiciels Qualité et Conformité Cobol/Cics/IMS GT-8 Service d Audit des logiciels Qualité et Conformité Cobol/Cics/IMS IMS-DC DC/SQL/ /SQL/IMS (disponible aussi pour Java/J2EE) IMS-DLI 03/12/2007 1 Prestation de service : Audit Qualimétrique I. Description

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

LES OUTILS DE LA GESTION DE PROJET

LES OUTILS DE LA GESTION DE PROJET LES OUTILS DE LA GESTION DE PROJET PROJET : «ensemble des actions à entreprendre afin de répondre à un besoin défini dans des délais fixés». Délimité dans le temps avec un début et une fin, mobilisant

Plus en détail

Introduction au langage C - types et variables

Introduction au langage C - types et variables Chapitre 2 Introduction au langage C - types et variables 1 Le Langage C Le langage C est un langage de bas niveau dans le sens où il permet l accès à des données que manipulent les ordinateurs (bits,

Plus en détail

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

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

Plus en détail

Bienvenue dans le monde de la construction logicielle

Bienvenue dans le monde de la construction logicielle Chapitre 1 Bienvenue dans le monde de la construction logicielle Sommaire : 1.1 La construction logicielle, qu est-ce que c est? : page 3 1.2 Pourquoi la construction logicielle est-elle importante? :

Plus en détail

DOCUMENTATION ASSOCIEE A UN PROJET LOGICIEL

DOCUMENTATION ASSOCIEE A UN PROJET LOGICIEL DOCUMENTATION ASSOCIEE A UN PROJET LOGICIEL 31 août 2004 Plate-Forme Opérationnelle de modélisation INRA ACTA ICTA http://www.modelia.org FICHE DU DOCUMENT 10 mai 04 N.Rousse - : Création : version de

Plus en détail

Brique BDL Gestion de Projet Logiciel

Brique BDL Gestion de Projet Logiciel Brique BDL Gestion de Projet Logiciel Processus de développement pratiqué à l'enst Sylvie.Vignes@enst.fr url:http://www.infres.enst.fr/~vignes/bdl Poly: Computer elective project F.Gasperoni Brique BDL

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

Processus Unifié de développement de logiciel

Processus Unifié de développement de logiciel Processus Unifié de développement de logiciel Plan 1. SUP : une simplification de RUP 2. Les éléments de modélisation de SUP 3. Description de la dynamique de SUP 4. SUP sur une étude de cas 2 SUP : une

Plus en détail

Les forges logicielles et leurs outils. Avec SourceSup en exemple

Les forges logicielles et leurs outils. Avec SourceSup en exemple Les forges logicielles et leurs outils Avec SourceSup en exemple 1 Naissance des forges Avant Chacun installait les outils dont il avait besoin Peu de mutualisation des outils et technologies Collaboration

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

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

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

Plus en détail

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

Principes de la programmation impérative

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

Plus en détail

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

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

Plus en détail

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

COMPLIANCE Consulting. Gardez la Maîtrise de vos Exigences. 18 mai 2011

COMPLIANCE Consulting. Gardez la Maîtrise de vos Exigences. 18 mai 2011 COMPLIANCE Consulting Gardez la Maîtrise de vos Exigences 18 mai 2011 Présentation Société Société Société de conseil spécialisée dans le transfert de technologies en matière de processus, de méthodes

Plus en détail

Programmation avancée

Programmation avancée Programmation avancée Chapitre 1 : Complexité et les ABR (arbres binaires de recherche) 1 1 IFSIC Université de Rennes-1 M2Crypto, octobre 2011 Plan du cours 1 2 3 4 5 6 7 8 9 10 Algorithmes Définition

Plus en détail

les outils de la gestion de projet

les outils de la gestion de projet les outils de la gestion de projet Sommaire Objectifs de la gestion de projet Les étapes du projet Les outils de gestion de projets Paramétrage de l outil PROJET : «ensemble des actions à entreprendre

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

TD 5 LES POINTEURS. Définition: Pointeur

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

Plus en détail

Statique / Dynamique

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

Plus en détail

Premiers exemples de traitements

Premiers exemples de traitements #include #include Premiers exemples de traitements void main() float b(0.0); float c(0.0); float delta(0.0); cin >> b >> c; delta = b*b - 4*c; if (delta < 0.0) cout

Plus en détail

1. Les fondements de l informatique 13

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

Plus en détail

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

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

CCI Génie Logiciel UFR - IMA. Objectifs du cours d'aujourd'hui. Génie Logiciel Validation par le test. Qu est-ce que tester un programme?

CCI Génie Logiciel UFR - IMA. Objectifs du cours d'aujourd'hui. Génie Logiciel Validation par le test. Qu est-ce que tester un programme? Validation par le test Objectifs du cours d'aujourd'hui Donner des réponses aux questions suivantes : Lydie du Bousquet 2 Qu est-ce que tester un programme? Exercice 1 : Inscrivez sur une feuille ce que

Plus en détail

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

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

Plus en détail

FICHE JANVIER 2009 THÉMATIQUE. Direction de projets et programmes

FICHE JANVIER 2009 THÉMATIQUE. Direction de projets et programmes FICHE JANVIER 2009 THÉMATIQUE Direction de projets et programmes La représentation par les processus pour les projets Système d Information (SI) La modélisation de l'entreprise par les processus devient

Plus en détail

Cours de Gestion de projet

Cours de Gestion de projet Cours de Gestion de projet Plan des cours Cours 1 : Vision Générale Cours 2 : Les différents types de projets Informatiques/Urbanisation d un SI Cours 2 : Les cycles de vie Cours 3 : Focus sur «Le suivi

Plus en détail

Présentation du PL/SQL

Présentation du PL/SQL I Présentation du PL/ Copyright Oracle Corporation, 1998. All rights reserved. Objectifs du Cours A la fin de ce chapitre, vous saurez : Décrire l intéret du PL/ Décrire l utilisation du PL/ pour le développeur

Plus en détail

INF121: Algorithmique et Programmation Fonctionnelle

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

Plus en détail

Notions de Gestion de Projet (Partie 2)

Notions de Gestion de Projet (Partie 2) Notions de Gestion de Projet (Partie 2) QCM Sommaire 1ère 1 Partie Sommaire 2ème 2 Partie - Problématique de départ Structure et Pilotage d un projet - Qu est ce qu un projet? - Vocabulaire spécifique

Plus en détail

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

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

Plus en détail

ACI Sécurité ALIDECS:

ACI Sécurité ALIDECS: ACI Sécurité ALIDECS: Langages et Atelier Integrés pour le Développement de Composants Embarqués Sûrs Réunion de démarrage LIP6, 21 et 22 octobre 2004 Marc Pouzet 1 Page web http://www-verimag.imag.fr/synchrone/alidecs/

Plus en détail

6.1 Une classe simple pour représenter des comptes bancaires

6.1 Une classe simple pour représenter des comptes bancaires Chapitre 6 Héritage Ce chapitre du cours traite de concepts relatifs à la programmation objet (hiérarchie de classe, héritage, extension, masquage) et sera illustré par un exemple de représentation de

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

Évaluation et implémentation des langages

Évaluation et implémentation des langages Évaluation et implémentation des langages Les langages de programmation et le processus de programmation Critères de conception et d évaluation des langages de programmation Les fondations de l implémentation

Plus en détail

ITIL V3. Exploitation des services : Les processus

ITIL V3. Exploitation des services : Les processus ITIL V3 Exploitation des services : Les processus Création : juin 2013 Mise à jour : juin 2013 A propos A propos du document Ce document de référence sur le référentiel ITIL V3 a été réalisé en se basant

Plus en détail

CH.1 COMPLEXITÉ. 1.1 Les ordres de grandeur 1.2 Les récurrences linéaires 1.3 Des exemples

CH.1 COMPLEXITÉ. 1.1 Les ordres de grandeur 1.2 Les récurrences linéaires 1.3 Des exemples CH.1 COMPLEXITÉ 1.1 Les ordres de grandeur 1.2 Les récurrences linéaires 1.3 Des exemples L2-2 ch1 1 1.1 Les ordres de grandeur Chaque problème peut être résolu de différentes manières par des algorithmes

Plus en détail

Algorithmique, C++ Recollement d'images

Algorithmique, C++ Recollement d'images Algorithmique, C++ Recollement d'images Introduction à C++ Quatrième partie Quelques outils pour améliorer le code ou vous simplifier la vie Plan de la séance Compilation : optimisation Profiling et débogage

Plus en détail

LI5a : Développement de programmes (A. Slissenko)

LI5a : Développement de programmes (A. Slissenko) 1 Licence 3 Info LI5a : Développement de programmes (A. Slissenko) Corrigé 1. (1a). Expliquez brièvement à quoi sert la spécification des requis, comment elle peut être décrite et comment elle peut être

Plus en détail

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

Documentation. Génie Logiciel. Renaud Marlet. LaBRI / INRIA. http://www.labri.fr/~marlet. (d'après A.-M. Hugues) màj 21/03/2007 1 Génie Logiciel (d'après A.-M. Hugues) Documentation Renaud Marlet LaBRI / INRIA http://www.labri.fr/~marlet màj 21/03/2007 2 Pourquoi c'est important Documentation interne (conception,...) reflet de

Plus en détail