METHODE B Formation niveau 1. juin 2005

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

Download "METHODE B Formation niveau 1. juin 2005"

Transcription

1 METHODE B Formation niveau 1 juin 2005

2 Table des matières introduction à B méthode formelle avec preuve utilisation de B fondements apports notions de B modules B composants B machines abstraites raffinements implantations projets B le langage B logique des prédicats théorie des ensembles substitutions typage des données clauses des composants décomposition modulaire 2 / 104

3 Présentation de B Une méthode formelle méthode de spécification fondée sur un formalisme mathématique avec preuve la preuve garantit que le modèle est cohérent (dans tous les cas possibles d utilisation) Utilisée pour modéliser un système développer un logiciel 3 / 104

4 B et l Atelier B : une méthode formelle pour B pour modéliser des Systèmes but : aider à comprendre, spécifier, concevoir, vérifier un système une méthode pour aider à créer ou vérifier un système nécessité d accéder aux connaissances métier des concepteurs du système pour comprendre en détails le fonctionnement du système un modèle B système formalise le système (matériel et logiciel) son environnement (d autres systèmes, les infrastructures, des procédures gérées par des opérateurs) couvre les aspects fonctionnels logiques du système, pas les calculs numériques, (a priori) pas les exigences temps réel 4 / 104

5 B et l Atelier B : une méthode formelle pour B pour développer des logiciels (critiques de sécurité) but : produire un code source conforme à ses spécifications par construction (savoir exactement ce qui est prouvé) un modèle B-Logiciel formalise le logiciel lui-même, à travers une décomposition modulaire de procédures couvre une sous partie du logiciel complet : le cœur fonctionnel logique, pour 1 tâche/1 thread, (a priori) pas pour le logiciel de bas niveau (OS), pas d entrée/sortie directe 5 / 104

6 B-Logiciel : Références Industrielles KVB: Alstom Automatic Train Protection pour la SNCF, installé sur trains depuis lignes de B; lemmes; lignes d Ada SAET METEOR: Siemens Transportation Systems Automatic Train Control: ligne 14 du métro, sans conducteur, à Paris (RATP), logiciels de sécurité: bord, sol, ligne lignes de B; lemmes; lignes d Ada Roissy VAL: ClearSy (pour STS) Pilote Automatique Double Sens : pour le VAL de Roissy (ADP), lignes de B; lemmes; lignes d Ada 6 / 104

7 B-Système : Références Industrielles Peugeot Principes Formels de Fonctionnement des sous-systèmes (éclairage, airbags, moteur, ) sur 3 modèles de voiture (307, 206, 407) pour l après-vente de Peugeot But : comprendre précisément le fonctionnement du véhicule, afin de construire des outils d aide au diagnostique RATP Modélisation du système de portes palières automatiques devant équiper une ligne de métro déjà existante But : vérifier la cohérence des Spécifications Système 7 / 104

8 B-Système : Références EADS Modélisation de l ordonnancement des tâches du logiciel contrôlant la séparation des étages d une fusée Ariane Étude d un protocole de communication Preuve que l algorithme d un protocole de communication respecte ses exigences INRS (Institut National de Recherche sur la Sécurité) Modélisation d une presse mécanique respectant les exigences de sécurité (protection des mains de l opérateur de la presse) Construction des spécifications logicielles du contrôleur de la presse 8 / 104

9 Notions de base B est une méthode de spécification (et éventuellement de programmation) B permet de modéliser les propriétés d un système, (description statique, description dynamique) B est basé sur un langage mathématique prédicats, booléens, ensembles, relations, fonctions B est structuré notion de module notion de refinement B est une méthode de création de modèles, validés par la preuve validation par la preuve : debug systématique 9 / 104

10 Structuration la notion de modules pour décomposer un système ou un logiciel en sous parties un module a une spécification, où formaliser : les propriétés système les exigences statiques les exigences dynamiques 10 / 104

11 Structuration la notion de raffinement la spécification d un module est raffinée : elle est ré-exprimée avec plus d information : ajout d exigences raffinement de notions générales par des notions plus détaillées (choix de conception) en B-Logiciel, terminer par du code implémentable un raffinement doit être cohérent avec ses spécifications (ceci doit être prouvé) un raffinement peut à son tour être raffiné (colonne de raffinement) en B-Logiciel, le dernier raffinement est appelé l implémentation 11 / 104

12 Structuration spécification du module 1 er raffinement du module 2 ème raffinement du module 3 ème raffinement du module module B spécification B Implémentation ou raffinement 12 / 104

13 Validation par la preuve Source B Génération automatique de lemmes 100% Preuve Automatique jusqu à 97% des lemmes justes lemme faux BUG 10% Examen des lemmes Preuve Interactive 16 lemmes / jour 13 / 104

14 Développement B modèle B Spécifications logicielles Modélisation Modèle abstrait Preuve de propriétés Relecture Implémentation Preuve de bonne implémentation Modèle concret Traduction Code (ADA, C, ) 14 / 104

15 B-Système Spécifications système Modélisation Modèle B Preuve de cohérence Conception système Remarques sur les doc système Réexpression en langage naturel 15 / 104

16 Structuration B-Logiciel Modèle Abstrait Modèle Concret module B spécification B implémentation ou raffinement lien de décomposition 16 / 104

17 Avantages de B-Logiciel Le Modèle Abstrait Les exigences sont exprimées en B module par module Les spécifications informelles et formelles sont très proches (elles expriment toutes ce que le logiciel doit faire) pour minimiser les risques d erreur Certaines propriétés du logiciel sont modélisées en B Elles renforcent le modèle B, puisqu il faut prouver qu elles sont préservées lorsque les modules sont assemblés Le Modèle Concret Il faut prouver que le modèle concret implémente correctement sa spécification (le modèle abstrait) 17 / 104

18 Avantages de B-Logiciel L ensemble du Modèle PAS d erreur classique de programmation dans le code (débordement, division par 0, indice hors limite, boucle infinie, alias) Une architecture logiciel saine Inutilité des Tests Unitaires Les erreurs sont détectées plus tôt Ces avantages perdurent même après quelques modifications/évolutions 18 / 104

19 Cycle de développement traditionnel Analyse système Tests Validation Spécification Tests Intégration Conception Tests Unitaires Code 19 / 104

20 Cycle de développement B Analyse système Tests Validation Preuve Spécification Tests Intégration Preuve Conception Tests Unitaires Preuve Code 20 / 104

21 Comparaison avec d autres langages assembleur C Ada pas de contrôle contrôles statiques limités (i.e. taille du type des données) contrôles statiques étendus (i.e. typage fort) Méthode B contrôles statiques + contrôle du sens du programme (en prouvant que les propriétés sont respectées par le modèle abstrait et en prouvant que le modèle concret implémente correctement le modèle abstrait) 21 / 104

22 Avantages de B-Système Le Modèle B-Système Le principe fondamental est de comprendre de manière fine le système à travers la modélisation B Un travail en coopération avec les experts métier liés au système Détecter plus tôt les erreurs, lors de la conception système, produire de meilleures Spécifications Logicielles Remarques sur le système la plupart des questions sur le système apparaît lors de la création du modèle quelques incohérences peuvent également être détectées grâce à la preuve du modèle B (puisque le modèle doit être cohérent dans tous les cas possibles qu il décrit) Produit des remarques intéressantes sur le système une ré-expression du modèle en langage naturel qui décrit le système de manière précise, concise et fortement structurée 22 / 104

23 Atelier B (ClearSy) Les Outils créé pour supporter le développement de projets B-Logiciel industriels un ensemble d outils intégrés dans un outil de gestion de projets B vérificateurs statiques génération automatique des obligations de preuve (lemmes) prouveurs automatique et interactif traducteurs de code : Ada, C, est également utilisé pour B-Système B4free ( gratuit pour les universitaires/chercheurs et les détenteurs de l Atelier B le noyau de l Atelier B + une nouvelle interface x-emacs La plateforme Rodin (Septembre 2007) une plateforme logicielle libre dédiée à B-System (en construction) 23 / 104

24 ClearSy : Activités liées à B utilise B-Système de manière interne pour aider à comprendre, spécifier, vérifier un développement système utilise B-Logiciel pour développer des logiciels critiques de sécurité (et aussi pour finir la preuve ou valider la preuve d un logiciel B) fait partie de la communauté B et s emploie à créer des processus utiles basés sur B formations à la Méthode B et à l Atelier B maintenance, distribution et support de l Atelier B 24 / 104

25 Enseignement B 30 Universités/Laboratoires équipés 300 jeunes diplômés formés par an 25 / 104

26 Conclusion B est un langage B est une méthode de développement B permet la modélisation cohérente de systèmes et la construction correcte de logiciels B est utilisé dans l'industrie B est supporté par l'atelier B B apporte des bénéfices à ses utilisateurs 26 / 104

27 Notions de B : modules un module B correspond à la modélisation d un sous système (éventuellement logiciel) chaque module B gère son propre espace de données (encapsulation) cf. classe (langages orienté objet) type abstrait de données paquetage (ADA) un module B développé est constitué de plusieurs composants B : une machine abstraite (la spécification du module) d éventuels raffinements (de cette spécification) et une implantation (raffinement final : code) ces composants sont organisés dans un projet B 27 / 104

28 Notions de B : composants aspect statique définition de l espace d état : ensembles, constantes, variables définition des propriétés statiques des variables d état : invariant aspect dynamique définition de la phase d initialisation des données (variables d état) définition des opérations de consultation ou de modification de l état obligations de preuve les propriétés statiques doivent être cohérentes l initialisation doit établir ces propriétés les opérations doivent les préserver 28 / 104

29 Notions de B : machines abstraites une machine abstraite constitue la spécification d un module logiciel elle définit un modèle mathématique de ce sous système : description abstraite de son espace d état et de ses états initiaux possibles description abstraite des opérations pour consulter ou modifier l état ce modèle établit l interface externe du module concerné : propriétés respectées par toute implantation éventuelle cette garantie est assurée par les preuves au cours du développement formel 29 / 104

30 Notions de B : une machine abstraite forme générale MACHINE NomMachine SETS noms d ensembles CONSTANTS noms de constantes PROPERTIES prédicat ABSTRACT_VARIABLES noms de variables INVARIANT prédicat INITIALISATION substitution OPERATIONS définitions d opérations END aspect statique aspect dynamique 30 / 104

31 Notions de B : raffinements composants qui raffinent une machine abstraite (ou l un de ses raffinements) il permettent d enrichir et de concrétiser le modèle mathématique précédent ils sont plus déterministes et plus concrets raffinement des données : introduction de nouvelles variables avec invariant de liaison (changement de variables) raffinement des opérations : transformation des opérations du composant raffiné correction de développement : chaque raffinement doit préserver les propriétés du modèle précédent 31 / 104

32 Notions de B : raffinements forme générale REFINEMENT NomMachine_n REFINES NomMachine... ABSTRACT_VARIABLES noms de variables INVARIANT prédicat INITIALISATION raffinement d initialisation OPERATIONS raffinements d opérations END les données du composant raffiné (ensembles, constantes et variables) sont conservées nouvelles variables avec leurs propriétés + invariant de liaison il n est pas possible d introduire de nouvelles opérations 32 / 104

33 Notions de B : implantation un raffinement final, qui contient le programme informatique du module IMPLEMENTATION NomMachine_n REFINES forme générale NomMachine VALUES valuations CONCRETE_VARIABLES noms de variables INVARIANT prédicat INITIALISATION implantation d initialisation OPERATIONS implantations d opérations END valuation des ensembles fixes et constantes variables d implantation avec leurs structures de données + invariant de liaison 33 / 104

34 Notions de B : projets un projet B est composé de modules B reliés entre eux chaque module est formé de composants : une machine abstraite (sa spécification) avec éventuellement des raffinements et une implantation les principaux liens entre modules sont : les liens IMPORTS (l arbre de décomposition modulaire) les liens SEES (consultations transversales dans cet arbre) des sous projets peuvent être regroupés en librairies, et réutilisés dans différents projets un projet B permet de développer un logiciel (traduction en Ada, C, C++) ce logiciel peut être utilisé par un logiciel développé de manière classique il peut également utiliser des logiciels classiques 34 / 104

35 Notions de B : que prouve-t-on? l invariant n est pas établi Spécification Spécification Spécification Appel de l initialisation l invariant est établi Appel 1 Opération l invariant est établi Appel n Opération l invariant est établi est consistant avec est consistant avec est consistant avec Appel de l initialisation Appel 1 Opération Appel n Opération Implantation Implantation Implantation 35 / 104

36 Le Langage B ordre de présentation logique des prédicats théorie des ensembles substitutions typage des données forme des composants décomposition modulaire 36 / 104

37 Le Langage B : logique des prédicats prédicats ce sont les constructions de base pour exprimer des propriétés un prédicat est une formule logique qui peut être vraie ou fausse les équations, inéquations et tests d appartenance sont des prédicats ex. : x = 3 5 < 2 x : {1, 2, 3} leurs négations, conjonctions ou disjonctions sont également les prédicats ex. : x + y = 0 & x < y 37 / 104

38 Le Langage B : logique des prédicats propositions n P P & Q P o Q P y Q négation de P (NON logique) conjonction de P et Q (ET logique) disjonction de P et Q (OU logique) implication : n P o Q utilisation : si P est vrai, alors Q doit être vrai P e Q équivalence : P y Q & Q y P sur le papier n & o y e! # sur les claviers not & or => <=>! # prédicats quantifiés! x. ( P x y Q x ) universel # x. ( P x ) existentiel : n! x. (n P x ) 38 / 104

39 Le Langage B : logique des prédicats prédicats d'égalité soient x et y deux expressions x = y x égal à y x y non égalité n ( x = y ) prédicats d inégalité soient x et y deux entiers x < y x strictement inférieur à y x < y x inférieur ou égal à y x > y x > y x strictement supérieur à y x supérieur ou égal à y sur le papier = d < < > > sur les claviers = /= < <= > >= 39 / 104

40 Le Langage B : logique des prédicats prédicats ensemblistes soient x une expression, X et Y deux expressions d ensembles x : X appartenance : x est un élément de X sur le papier : / ( - è _ sur les claviers : /: <: /<: <<: /<<: x / X X ( Y X - Y non appartenance inclusion : X est un sous ensemble de Y non inclusion X è Y inclusion stricte : X è Y e X ( Y & X d Y 40 / 104

41 Le Langage B Les expressions décrivent les valeurs des données Le prédicat x+1 = 0 correspond à l égalité de 2 expressions Elles sont basées sur la théorie des ensembles ensembles sous ensembles ensemble booléen ensembles numériques ensembles de couples relations fonctions suites 41 / 104

42 Le Langage B : théorie des ensembles ensembles explicites ensemble vide : 0 ensemble fini, défini en extension : {x 1,, x n } ex. : {a, b, c} {1, x + 1, y - 2} intervalle d entiers : x.. y ensemble fini d entiers compris entre x et y : z : x..y e z > x & z < y ex. : 1..3 = 3..2 =... ensembles définis en compréhension { x P x } ensemble des valeurs de x vérifiant le prédicat P ex. : { x x : 1..5 & x mod 2 = 0 } =... sur le papier 0 sur les claviers {} 42 / 104

43 Le Langage B : théorie des ensembles expressions d ensemble soient X et Y deux expressions d ensembles union de X et de Y : X u Y z : (X u Y) e z : X o z : Y ex. : {1, 3, 5} u 1..3 =... intersection de X et de Y : X i Y z : (X i Y) e z : X & z : Y ex. : {1, 3, 5} i 1..3 =... différence de X et de Y : X - Y z : (X - Y) e z : X & z / Y ex. : {1, 3, 5} = {1, 3, 5} =... sur le papier u i sur les claviers \/ /\ 43 / 104

44 Le Langage B : théorie des ensembles Ensemble des parties soit X un ensemble P (X ) ensemble des parties (ou des sous ensembles) de X x : P(X ) e x ( X P 1 (X ) ensemble des parties non vides de X P 1 (X ) = P(X ) - {0} ex. : P ({a, b, c}) =... P 1 ({a, b, c}) =... sur le papier P P 1 F F 1 sur les claviers POW POW1 FIN FIN1 F (X ) ensemble des parties finies de X F 1 (X ) ensemble des parties finies et non vides de X F 1 (X ) = F(X ) - {0} 44 / 104

45 Le Langage B : théorie des ensembles constantes booléennes TRUE, FALSE constantes prédéfinies ensemble des booléens BOOL ensemble fini prédéfini : expressions booléennes soit P un prédicat BOOL = {FALSE, TRUE} bool(p ) vaut TRUE si P est vrai, FALSE sinon ex. : bool(p) = bool(q) e / 104

46 Le Langage B : expressions numériques sur le papier * x n sur les claviers * x ** n cardinal d un ensemble fini (nombre d éléments) : card (X ) ex. : card ({1,3,5}) =... card (3..2) =... maximum, minimum d un ensemble fini non vide d entiers : max (X ), min (X ) ex. : max ({1,3,5}) =... min ({1,3,5}) =... opérateurs arithmétiques (sur les entiers relatifs) pred (x ), succ (x ) prédécesseur, successeur x + y, x - y x * y, x / m x mod m x n addition, soustraction multiplication, division entière modulo puissance 46 / 104

47 Le Langage B : expressions numériques ensembles d entiers Z ensemble des entiers relatifs (> 0 et < 0) N ensemble des entiers naturels (> 0) N 1 ensemble des entiers naturels positifs (> 0) constantes numériques MAXINT MININT INT NAT NAT 1 plus grand entier relatif implémentable plus petit entier relatif implémentable = MININT.. MAXINT = 0.. MAXINT = 1.. MAXINT sur le papier Z N N 1 sur les claviers INTEGER NATURAL NATURAL1 47 / 104

48 Le Langage B : couples expressions de couple soient x et y deux éléments x, y couple ordonné x m y «maplet» (x est associé à y) x m y = x, y produit cartésien produit cartésien de 2 ensembles X et Y : X * Y ensemble des couples x m y tels que x : X et y : Y ex. : {0, 1} * {a, b, c} =... sur le papier m * sur les claviers -> * 48 / 104

49 Le Langage B : relations relations une relation d un ensemble de départ X dans un ensemble d arrivé Y est un sous ensemble du produit cartésien X * Y, c est a dire un ensemble de couples (x m y) dont le premier élément appartient à X et le second à Y conséquence : les opérations sur les ensembles s appliquent également aux relations ensemble de relations ensemble des relations de X dans Y : X 1 Y X 1 Y = P (X * Y ) sur le papier 1 sur les claviers <-> 49 / 104

50 Le Langage B : relations relations explicites ex. : 0 (relation vide) {2 m a, 2 m c, 3 m d, 4 m b, 4 m d} a b c d e 50 / 104

51 Le Langage B : opérations sur des relations soient R une relation de X dans Y dom (R) domaine de la relation R (sous ensemble de X ) x : dom (R) e # y. ( y : Y & x m y : R ) ex. : dom ({2 m a, 2 m c, 3 m d, 4 m b, 4 m d}) =... ran (R) range de la relation R (sous ensemble de Y ) : y : ran (R) e # x. ( x : X & x m y : R ) ex. : ran ({2 ma, 2 m c, 3 m d, 4 m b, 4 m d}) = soient R une relation de X dans Y, et S un sous ensemble de X R [S] image par la relation R (sous ensemble de Y ) de l ensemble S y : R [S] e # s. ( s : S & s m y : R ) ex. : {2 m a, 2 m c, 3 m d, 4 m b, 4 m d} [ {1,2,3} ] = / 104

52 Le Langage B : expressions relationnelles sur le papier R -1 sur les claviers R ~ soit X un ensemble id (X ) identité sur X x m x : id (X ) e x : X ex. : id ({a, b, c}) =... soient R une relation de X dans Y R -1 relation inverse, de Y dans X y m x : R -1 e x m y : R ex. : {2 m a, 2 m c, 3 m d, 4 m b, 4 m d} -1 = / 104

53 Le Langage B : expressions relationnelles composition des relations R 1 et R 2 : R 1 ; R 2 x m z : (R 1 ; R 2 ) e # y. (y : Y & x m y : R 1 & y m z : R 2 ) ex. : { 0 m 0, 1 m 0, 1 m 1 } ; {2 m0, 2 m1, 2 m2} = a b c d e / 104

54 Le Langage B : expressions relationnelles sur le papier r R sur les claviers < > restriction sur l ensemble de départ : S r R conservation des couples dont le premier élément appartient à S S r R = id (S ) ; R ex. : {1, 2, 3} r {2 m a, 2 m c, 3 m d, 4 m b, 4 m d} =... restriction sur l ensemble d arrivée : R R S conservation des couples dont le second élément appartient à S R R S = R ; id ( S ) ex. : {2 m a, 2 m c, 3 m d, 4 m b, 4 m d} R {b, c, d} = / 104

55 Le Langage B : expressions relationnelles sur le papier a A sur les claviers << >> suppression sur l ensemble de départ : S a R suppression des couples dont le premier élément appartient à S S a R = id (dom(r) - S) ; R ex. : {1, 2, 3} a {2 m a, 2 m c, 3 m d, 4 m b, 4 m d} =... suppression sur l ensemble d arrivée : R A S suppression des couples dont le second élément appartient à S R A S = R ; id (ran(r) - S) ex. : {2 m a, 2 m c, 3 m d, 4 m b, 4 m d} A {b, c, d} = / 104

56 Le Langage B : expressions relationnelles soient R 1 et R 2 deux relations de X dans Y R 1 + R 2 surcharge de la relation R 1 par la relation R 2, relation dont les éléments sont les couples de R 1 tels que le premier élément n appartient pas à dom(r 2 ), ainsi que tous les couples de R 2 : R 1 + R 2 = (dom(r 2 ) a R 1 ) u R 2 sur le papier + sur les claviers <+ ex : {0 m 1, 1 m 1} + {0 m 0} =... {2 m a, 2 m c, 3 m d, 4 m b, 4 m d} + {1 ma, 2 m b, 2 m c, 3 m e} = / 104

57 Le Langage B : fonctions rappel définition : une relation d un ensemble de départ X dans un ensemble d arrivé Y est un sous ensemble du produit cartésien X * Y, c est-à-dire un ensemble de couples dont le premier élément appartient à X et le second à Y conséquence : les opérations sur les ensembles s appliquent également aux relations cas spécial définition : une fonction d un ensemble de départ X dans un ensemble d arrivé Y est une relation de X dans Y, où chaque élément de X est associé à au plus un élément de Y conséquence : les opérations sur les relations s appliquent également aux fonctions 57 / 104

58 Le Langage B : fonctions applications de fonctions valeur de la fonction F en x (un élément de dom(f)) : F (x) sur le papier % sur les claviers % c est l unique élément associé à x par F : x mf (x) : F ex : f = { 0 m a, 1 m b, 2 m a } f (1) =... fonctions définies par expressions soient x un nom, X un ensemble et E une expression (en x) % x. ( x : X E x ) définition explicite en forme de %-expression : fonction constituée des couples x m E x, où x : X ex. : plus2 = % z. ( z : Z z + 2 ) plus2 (1) = / 104

59 Le Langage B : ensembles de fonctions sur le papier 2 3 sur les claviers +-> --> définition : une fonction de l ensemble X dans l ensemble Y s appelle une fonction partielle ensemble des fonctions partielles de X dans Y : X 2 Y F : X 2 Y e F : X 1 Y & (F -1 ; F) ( id(y) définition : une fonction totale de X dans Y est une fonction partielle de X dans Y dont le domaine est égal à X ensemble des fonctions totales de X dans Y : X 3 Y F : X 3 Y e F : X 2 Y & dom(f) = X 59 / 104

60 Le Langage B : ensembles de fonctions sur le papier 4 5 sur les claviers >+> >-> fonctions injectives définition : une injection partielle est une fonction partielle de X dans Y tel que chaque élément du range a un et un seul antécédent ensemble des injections partielles de X dans Y : X 4 Y F : X 4 Y e F : X 2 Y & F -1 : Y 2 X définition : une injection totale est une injection de X dans Y dont le domaine est égal à X ensemble des injections totales de X dans Y : X 5 Y X 5 Y = X 4 Y i X 3 Y 60 / 104

61 Le Langage B : ensembles de fonctions sur le papier 6 7 sur les claviers +->> -->> fonctions surjectives définition : une surjection partielle est une fonction de X dans Y dont le range est égal à Y ensemble des surjections partielles de X dans Y : X 6 Y F : X 6 Y e F : X 2 Y & ran(f) = Y définition : une surjection totale est une surjection de X dans Y dont le domaine est égal à X ensemble des surjections totales de X dans Y : X 7 Y X 7 Y = X 6 Y i X 3 Y 61 / 104

62 Le Langage B : ensembles de fonctions fonctions bijectives définition : une bijection partielle est une fonction de X dans Y qui est injective et surjective ensemble des bijections partielles de X dans Y : X 6 Y X 8 Y = X 4 Y i X 6 Y sur le papier 8 9 sur les claviers >+>> >->> définition : une bijection totale est une fonction totale de X dans Y qui est injective et surjective ensemble des bijections totales de X dans Y : X 9 Y X 9 Y = X 5 Y i X 7 Y L inverse d une bijection partielle est une / 104

63 Le Langage B : suites suites définitions une suite dont les «éléments» appartiennent à un ensemble X est une fonction totale d un intervalle 1..n dans X, où n : N les éléments de la suite correspondent aux seconds éléments des couples de cette fonction, et ils sont ordonnés par les premiers ex. : {1 m a, 2 m b, 3 m c} conséquence : les opérations sur les fonctions s appliquent également aux suites suites explicites suite vide : [] suite en énumération ex. : [a, b, c] = {1 m a, 2 m b, 3 m c} 63 / 104

64 Le Langage B : opérations sur les suites taille de la suite S : size (S ) ex. : size ([]) = 0 size ([a, b, c]) = 3 premier élément d une suite non vide S : first (S) = S (1) ex. : first ([a, b, c]) = a dernier élément d une suite non vide S : last (S) = S (size(s)) ex. : last ([a, b, c]) = c inversion de la suite S : rev (S) ex : rev ([a, b, c]) = [c, b, a] insertion de l élément x en tête de la suite S : x k S ex : a k [b, c] = [a, b, c] insertion de l élément x en queue de la suite S : S j x ex : [a, b] j c = [a, b, c] sur le papier j k sur les claviers <- -> 64 / 104

65 Le Langage B : opérations sur les suites concaténation des suites S 1 et S 2 : S 1 ) S 2 ex : [a, b, c] ) [c, b, a] = [a, b, c, c, b, a] restriction aux n éléments en tête de la suite S : S q n ex. : [a, b, c] q 2 = [a, b] suppression des n éléments en tête de la suite S : S w n ex. : [a, b, c] w 2 = [c] suppression du premier élément en tête de la suite S : tail (S) ex. : tail ([a, b, c]) = [b, c] suppression du dernier élément de la suite S : front (S) ex. : front([a, b, c]) = [a, b] sur le papier ) q w sur les claviers ^ / \ \ / 65 / 104

66 Le Langage B : ensembles de suites ensemble des suites de X : seq (X ) ensemble des suites non vides de X : seq 1 (X ) ensemble des suites injectives de X : iseq (X ) ensemble des suites injectives non vides de X : iseq 1 (X ) ensemble des suites bijectives de X : perm (X ) (ensemble des permutations de X) ex. : perm ({a,b,c}) = {[a,b,c], [a,c,b], [b,a,c], [b,c,a], [c,a,b], [c,b,a] } 66 / 104

67 Le Langage B : substitutions les substitutions permettent de représenter les transformations qu opèrent les programmes sur les données donc elles permettent de transformer l état d un système elles concernent une certaine liste de variables on définit mathématiquement comment un prédicat P est transformé par l application d une substitution S, que l on note : [S] P ex. : [x := 2] (x > 1) e (2 > 1) 67 / 104

68 Le Langage B : substitutions les substitutions servent à décrire à la fois la dynamique des spécifications (machine abstraite) et du code B0 (implantation) spécifications [Spec] elles décrivent les propriétés d un programme elles peuvent être non déterministes ex. : substitutions «devient tel que» implantation [Code B0] instructions classiques d un langage de programmation (":=", ";", IF, CASE, WHILE, appel d opération, instruction nulle, variable locale, bloc d instructions) 68 / 104

69 Le Langage B : substitutions substitution nulle [Spec, Code B0] skip aucune variable n est modifiée (quelle liste de variables?) substitution «devient égal» [Spec, Code B0] on remplace une variable par une expression ex. : v := 0 x := y + 1 f(i) := m substitution «devient élément de» [Spec] on remplace une variable par un élément d un ensemble ex. : v :: (1..3) 69 / 104

70 Le Langage B : substitutions substitution «devient tel que» [Spec] v : (P v ) la variable v est remplacée par une valeur qui établis le prédicat P x ex. : x :(x : NAT & x mod 3 = 1) résultats de la division de n par m, où n : N et m : N 1 (q, r) : (q : N & r : N & n = (m * q)+ r & r < m) la valeur précédente de v peut être référencée dans P v par v$0 ex. : x :(x : INT & x > x$0) 70 / 104

71 Le Langage B : substitutions substitution simultanée [Spec] S 1 S 2 accomplissement simultané des substitutions S 1 et S 2, où les variables modifiées doivent être distinctes ex. : x := 1 y := 2 x := y y := x séquencement de substitutions [Code B0] S 1 ; S 2 accomplit la substitution S 1 et puis la substitution S 2 ex. : x := 1 ; y := 2 x := y ; y := x / 104

72 Le Langage B : substitutions substitution bloc [Spec, Code B0] BEGIN S END parenthèse des substitutions ex. : BEGIN x := y y := x END BEGIN x := y ; y := x +1 END substitution variables locales [Code B0] VAR v 1,,v n IN S END introduction de variables locales v 1,,v n dans la substitution S ex. : VAR t IN t := x ; x := y ; y := t END 72 / 104

73 Le Langage B : substitutions substitutions qui nécessitent qu une propriété soit vraie ces substitutions ne peuvent être utilisées que dans un contexte où le prédicat P est vrai précondition [Spec] PRE P THEN S END utilisation : en début de la spécification d une opération, pour contrôler que l opération est appelée dans son cadre d utilisation ex. : PRE x : NAT 1 THEN x := x - 1 END assertion [Spec, Code] ASSERT P THEN S END utilisation : aider à la preuve de l opération qui contient l assertion (cf. formation niveau 3) 73 / 104

74 Le Langage B : substitutions substitution ANY [Spec] ANY x WHERE P x THEN S END substitution S dans laquelle on accède (en lecture seulement) à des variables x qui vérifient P ex. : ANY x WHERE x : 1..5 THEN y := y + x END rq : la substitution ANY est très générale skip y := a y :: E y :(P y ) ANY x WHERE x = y THEN y := x END ANY x WHERE x = a THEN y := x END ANY x WHERE x : E THEN y := x END ANY x WHERE P x THEN y := x END 74 / 104

75 Le Langage B : substitutions substitution choix [Spec] CHOICE S 1 OR S 2 OR S n END la substitution appliquée est l une des substitutions S 1 à S N ex. : CHOICE x := x + 1 OR x := x - 1 OR x := x + 2 OR skip END substitution sélection [Spec] SELECT P 1 THEN S 1 WHEN P 2 THEN S 2 ELSE S n END définit plusieurs branches de substitutions S i gardées par des prédicats P i pour qu une substitution S i s applique, il faut que la garde P i soit vraie si toutes les gardes sont fausses, c est la substitution S n de la branche ELSE qui s applique ex. : SELECT x > 10 THEN x := x - 10 WHEN x < 10 & x > 0 THEN x := 2 * (x 10) ELSE x := x - 1 END 75 / 104

76 Le Langage B : substitutions substitution conditionnelle IF [Spec, Code B0] IF P 1 THEN S 1 ELSIF P 2 THEN S 2 ELSE S n END la substitution appliquée est soit S i si la condition P i est vraie et si les conditions précédentes sont toutes fausses, soit S n si les conditions précédentes sont toutes fausses par défaut, S n vaut skip ex. : IF x > 10 THEN x := x - 10 ELSIF x = 0 THEN x := x + 1 ELSE x := 1 END 76 / 104

77 Le Langage B : substitutions substitution conditionnelle par cas [Spec, Code B0] CASE v OF EITHER V 1 THEN S 1 OR V 2 THEN S 2 ELSE S n END END la substitution appliquée est S i si v appartient à l une des valeurs littérales de la liste V i, ou bien S n sinon par défaut, S n vaut skip ex. : CASE x OF EITHER 0, 1, 2 THEN x := x + 1 OR 3, 4 THEN x := x - 1 OR 10 THEN skip ELSE x := x + 10 END END 77 / 104

78 Le Langage B : substitutions boucle «tant que» [Code B0] WHILE P DO S INVARIANT I VARIANT V END boucle «tant que» : tant que la condition P est valide, on applique la substitution S la négation de P est donc la condition de sortie de la boucle la clause INVARIANT définit les propriétés des variables transformées à l entrée dans la boucle, à la i ème itération et à la sortie de la boucle la clause VARIANT doit définir (à partir des indices de boucles) une expression entière, positive et strictement décroissante entre 2 itérations, de façon à prouver que le nombre d'itérations de boucle est fini, donc que la boucle est convergente 78 / 104

79 Le Langage B : substitutions appels d opération [Spec, Code B0] Si le corps de la spécification de l opération op est la substitution S, un appel à op consiste à appliquer S en remplaçant les paramètres formels par les paramètres effectifs (passage par valeur) ex. : op1 op2 (y - 1) x c op3 x, y c op4 (x + 1, TRUE) sur le papier c sur les claviers <-- 79 / 104

80 Le Langage B : typage des données principes du typage toute donnée doit être typée avant d être utilisée les types en B reposent sur la théorie des ensembles chaque prédicat, expression ou substitution doit respecter une certaine règle de typage, vérifiée statiquement ces règles servent à éviter des énoncés trivialement dénués de sens (ne pas mélanger les choux et les carottes) définition ex. : 2 = TRUE le type d une donnée est le plus grand ensemble B auquel elle appartient 80 / 104

81 Le Langage B : typage des données les types B sont décrits à partir des types de bases et des constructeurs de type les types de base sont : BOOL Z les SETS fixes ou les ensembles énumérés ex. : TRUE : BOOL 2 : Z les constructeurs de types sont : ensemble des parties, P (T ) produit cartésien, T 1 * T 2 ex : {1, 3, 5} : P ( Z ) (0 m FALSE) : Z * BOOL 81 / 104

82 Le Langage B : typage des données comment typer les données? en général les données sont typées au moyen de prédicats de typage, qui sont des prédicats particuliers de la forme : donnée non typée opérateur typant ( =, : ou ( ) expression déjà typée ex. : x : & y : BOOL 3 INT & z = x + 1 & S ( INT ces prédicats de typage doivent être situés au plus haut niveau d analyse syntaxique dans une liste de conjonctions (ET logiques) les variables locales et les paramètres de retour d opération sont typés par des substitutions typantes ex. : VAR t IN t := x + 1 ; END r c op( p ) = PRE p : NAT 1 THEN r := p - 1 END 82 / 104

83 Le Langage B composants B (rappel) aspect statique définition de l espace d état : ensembles, constantes, variables définition des propriétés statiques des variables d état : invariant aspect dynamique définition de la phase d initialisation des donnés (variables d état) définition des opérations de consultation ou de modification de l état obligations de preuve les propriétés statiques doivent être cohérentes l initialisation doit établir ces propriétés les opérations doivent les préserver 83 / 104

84 Le Langage B : les composants aspect statique définition d ensembles constants (clause SETS) définition de constantes (clauses CONSTANTS, PROPERTIES) définition de variables (clauses VARIABLES, INVARIANT) valuation des ensembles et constantes (clause VALUES) abréviations textuelles (clause DEFINITIONS) assertions supplémentaires (clause ASSERTIONS) aspect dynamique phase d initialisation (clause INITIALISATION) définition des opérations (clause OPERATIONS) 84 / 104

85 Composants B : aspect statique ensembles fixes et ensembles énumérés SETS S 1 ; ;S n déclaration des ensembles fixes et énumérés dans un composant un ensemble fixe est défini par son nom S i ex : SETS ETUDIANTS un ensemble fixe est supposé fini et non vide sa valeur sera fournie dans l implantation (clause VALUES) c est un intervalle d entiers implémentables, non vide, dont on veut cacher la valeur en spécification pour réaliser du typage fort un ensemble énuméré est défini par son nom suivi de la liste de ses éléments S i = {x 1,, x n }, ex. : SETS COULEURS = {Rouge, Vert, Bleu} 85 / 104

86 Composants B : aspect statique définition de constantes soit x 1, x n une liste de noms (CONCRETE_)CONSTANTS x 1,,x n ABSTRACT_CONSTANTS x 1,,x n clauses servant à introduire les noms de constantes (données non modifiables) dans un composant une constante concrète est une donnée directement implémentable (scalaire, tableau), qui n a pas à être raffinée et qui devra être valuées en implantation une constante abstraite est une donnée du type quelconque qui pourra être raffinée au cours du développement, la définition de constantes abstraites est interdite en implantation 86 / 104

87 Composants B : aspect statique définition de constantes soit P un prédicat (en x 1,, x n ) PROPERTIES P x1,,xn la clause PROPERTIES contient un prédicat qui définit les propriétés des constantes du composant ex : CONSTANTS c1, c2 PROPERTIES c1 : & c2 : & c1 + c2 < / 104

88 Composants B : aspect statique définition de variables soit v 1,,v n une liste de noms (ABSTRACT_)VARIABLES v 1,,v n CONCRETE_VARIABLES v 1,,v n clauses servants à introduire les noms de variables (données modifiables) dans un composant une variable abstraite est une donnée de type quelconque, qui pourra être raffinée au cours du développement, la définition de variables abstraites est interdite en implantation une variable concrète est une donnée directement implémentable (scalaire, tableau), qui n a pas à être raffinée 88 / 104

89 Composants B : aspect statique définition de variables soit P un prédicat (en v 1, v n ) ex : VARIABLES A, B INVARIANT A ( T & B ( T & card (A i B) = 1 la clause INVARIANT contient un prédicat qui définit les propriétés des variables il s agit de propriétés invariantes, quelque soit l évolution des variables du système (cf. aspect dynamique) 89 / 104

90 Composants B : aspect statique exemple MACHINE Registre SETS ETUDIANTS CONCRETE_CONSTANTS max_étudiants PROPERTIES max_étudiants : NAT ABSTRACT_VARIABLES Inscrits INVARIANT Inscrits ( ETUDIANTS & card (Inscrits) < max_étudiants... END } nom de la machine } ensemble fixe } type de constante } type de variable } et contrainte 90 / 104

91 Composants B : aspect statique valuation des ensembles fixes et constantes ex. : VALUES max_etudiants = 255 ; ETUDIANTS = 0.. max_etudiants ; transfert = { 0 m FALSE, 1 m TRUE, 2 m FALSE} ; note = (0.. max_etudiants) * {0} la clause VALUES n existe qu en implantation elle sert à préciser les valeurs effectives des SETS fixes du module B des constantes concrètes du module B les ensembles fixes seront en définitive des intervalles entiers, non vides et implémentables 91 / 104

92 Composants B : aspect statique abréviations textuelles la clause DEFINITIONS sert à définir des abréviations textuelles, qui peuvent être utilisées dans le composant (cf. #define du C) les définitions peuvent être paramétrées et peuvent être factorisées dans des fichiers de définition (attention aux parenthèses) ex. : DEFINITIONS NMAX == 255 ; NMAXm1 == NMAX - 1 ; non(b) == bool(b = FALSE) ; "mesdef.def" assertions supplémentaires ASSERTIONS P cette clause définit des corollaires sur les variables du composant les assertions servent à factoriser la preuve de propriétés qui se déduisent de l invariant (cf. formation niveau 3) 92 / 104

93 Composants B : aspect dynamique clause d initialisation soit S une substitution INITIALISATION S cette clause sert à définir les valeurs initiales des variables du composant l initialisation de l état doit établir l invariant ex. : ABSTRACT_VARIABLES Inscrits INVARIANT Inscrits ( ETUDIANTS INITIALISATION Inscrits := 0 93 / 104

94 Composants B : aspect dynamique définition d opérations la clause OPERATIONS introduit les opérations du composant toute opération définie dans une machine abstraite doit être raffinée il n est pas possible d introduire de nouvelles opérations dans les raffinements les opérations peuvent avoir des paramètres d entrée et de retour, définis dans l en tête de l opération (passage par valeur), les paramètres d entrée sont définis en précondition les paramètres de retour sont modifiés comme des variables le corps de l opération est une substitution qui définit comment sont transformées toutes les variables du composant 94 / 104

95 Composants B : aspect dynamique définition d opérations (suite) syntaxe des opérations op = S op ( p 1, p n ) = S r 1, r m c op = S r 1, r m c op ( p 1, p n ) = S sur le papier c sur les claviers <-- les définitions qui changent des variables d état sont les opérations de modification ; les opérations doivent préserver l invariant les opérations qui ne modifient aucune variable d état sont les opérations de consultation le raffinement ou l implantation d une opération doit satisfaire sa spécification 95 / 104

96 Composants B : aspect dynamique exemple MACHINE Registre SETS ETUDIANTS DEFINITIONS max_etudiants == card (ETUDIANTS) ABSTRACT_VARIABLES Inscrits INVARIANT Inscrits ( ETUDIANTS ASSERTIONS card (Inscrits) < max_etudiants /* aspect dynamique */ INITIALISATION Inscrits := OPERATIONS n c nb_inscrits = n := card (Inscrits) ; b c etudiant _inscrit ( e ) = PRE e : ETUDIANTS THEN b := bool (e : Inscrits) END ; inscrire_etudiant ( e ) = END PRE e : ETUDIANTS - Inscrits THEN Inscrits := Inscrits u {e} END ; rayer_etudiant ( e ) = PRE e : Inscrits THEN Inscrits := Inscrits - {e} END 96 / 104

97 Composants B : aspect dynamique opérations locales pour éviter un nombre excessif de niveaux de modules dans un projet elles ne sont utilisables que dans une implantation elles peuvent être appelées dans l implantation d opérations (globales or locales) elles sont spécifiées dans la clause LOCAL_OPERATIONS (spécification abstraite sur les variables visibles en implantation) leur invariant est constitué du typage des variables concrètes elles sont implantées dans la clause OPERATIONS (comme les opérations globales) 97 / 104

98 Composants B : aspect dynamique opérations locales : exemple IMPLEMENTATION... LOCAL_OPERATIONS r c GetMax(x, y) = PRE x : INT & y : INT THEN r := max ({x, y}) END OPERATIONS r c GetMax(x, y) = IF x < y THEN r := y ELSE r := x END ; op = v c GetMax(z, 10); END 98 / 104

99 Le Langage B décomposition modulaire le langage B supporte la (dé)composition des spécifications de façon modulaire mécanismes de décomposition importation d autres machines (clause IMPORTS) visibilité d autres machines (clause SEES) 99 / 104

100 Le Langage B : décomposition modulaire importation d autres machines ex : IMPLEMENTATION A_i REFINES A IMPORTS B, C la clause IMPORTS ne s applique qu aux implantations une implantation importe des machines afin d implémenter ses données et ses services, à l aide de ceux de machines de plus bas niveaux : c est la décomposition de la Méthode B les variables d une machine importée M sont modifiables dans l implantation par appel des opérations de M 100 / 104

101 Le Langage B : décomposition modulaire visibilité d autres machines ex : MACHINE A SEES B, C lorsqu un composant voit une machine M, les données de M sont accessibles en lecture, mais elle ne peuvent pas être modifiées par le composant 101 / 104

102 Liens B-Logiciel Modèle Abstrait Modèle Concret module B spécification B implémentation ou raffinement lien de décomposition (IMPORTS) lien en lecture seule (SEES) 102 / 104

103 Le Langage B : le B0 C est le langage de programmation intégré au langage B Il est composé nom de la spécification et liens de l implantation données de l implantation : ensemble fixes et énumérés, constantes (concrètes), variables concrètes et valuation de l implantation initialisation et opérations de l implantation : paramètres des opérations et parties implémentables des substitutions Les données doivent être concrètes INT, BOOL, ensemble abstrait ou énuméré intervalle de INT tableau implémentable 103 / 104

104 Formations B Niveau 1 : présentation de la Méthode B présentation de la Méthode B et du Langage B TD et TP avec l Atelier B : spécification, écrire un programme simple cohérent avec ses spécifications, notions de preuve Niveau 2 : notions avancées de B notions avancées de B : décomposition modulaire, raffinement, homonymie, théorie des Obligations de Preuve, les boucles TD et TP avec l Atelier B : décomposition modulaire d un gros projet, introduction à B système, Obligations de Preuve Niveau 3 : prouver comment prouver les lemmes avec l Atelier B TP : preuve automatique et interactive, outils de preuve, règles utilisateur 104 / 104

Université de Sherbrooke, Département d informatique

Université de Sherbrooke, Département d informatique Université de Sherbrooke, Département d informatique IGL501 : Méthodes formelles en génie logiciel, Examen périodique Professeur : Marc Frappier, mardi 7 octobre 2013, 15h30 à 18h20, local D4-2022 Documentation

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

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

Expression des contraintes. OCL : Object C o n t r a i n t L a n g u a g e

Expression des contraintes. OCL : Object C o n t r a i n t L a n g u a g e P r o b l é m a t i q u e OCL : O b j e c t C o n s t r a i n t L a n g u a g e Le langage de contraintes d UML Les différents diagrammes d UML permettent d exprimer certaines contraintes graphiquement

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

Génie Logiciel avec Ada. 4 février 2013

Génie Logiciel avec Ada. 4 février 2013 Génie Logiciel 4 février 2013 Plan I. Généralités II. Structures linéaires III. Exceptions IV. Structures arborescentes V. Dictionnaires I. Principes II. Notions propres à la POO I. Principes Chapitre

Plus en détail

Sub CalculAnnuite() Const TITRE As String = "Calcul d'annuité de remboursement d'un emprunt"

Sub CalculAnnuite() Const TITRE As String = Calcul d'annuité de remboursement d'un emprunt TD1 : traduction en Visual BASIC des exemples du cours sur les structures de contrôle de l'exécution page 1 'TRADUCTION EN VBA DES EXEMPLES ALGORITHMIQUES SUR LES STRUCTURES 'DE CONTROLE DE L'EXECUTION

Plus en détail

Université Paris-Dauphine DUMI2E 1ère année, 2009-2010. Applications

Université Paris-Dauphine DUMI2E 1ère année, 2009-2010. Applications Université Paris-Dauphine DUMI2E 1ère année, 2009-2010 Applications 1 Introduction Une fonction f (plus précisément, une fonction réelle d une variable réelle) est une règle qui associe à tout réel x au

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

La Certification de la Sécurité des Automatismes de METEOR

La Certification de la Sécurité des Automatismes de METEOR 1 La Certification de la Sécurité des Automatismes de METEOR 2 un mot sur METEOR 3 Le projet METEOR, c'est... un système automatique complexe fortement intégré matériel roulant, équipements électriques,

Plus en détail

Classes et Objets en Ocaml.

Classes et Objets en Ocaml. Classes et Objets en Ocaml. Didier Rémy 2001-2002 http://cristal.inria.fr/ remy/mot/2/ http://www.enseignement.polytechnique.fr/profs/informatique/didier.remy/mot/2/ Cours Exercices Slide 1 1. Objets 2.

Plus en détail

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

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

Plus en détail

Génération de code à partir d une spécification B : Application aux bases de données

Génération de code à partir d une spécification B : Application aux bases de données Génération de code à partir d une spécification B : Application aux bases de données Amel Mammar * Régine Laleau ** Université du Luxembourg, LACL, Université Paris 12 SE2C, 6 rue Richard Courdenhove-Kalergi

Plus en détail

MEMOIRE. Présenté à. L École Nationale d Ingénieurs de Sfax. en vue de l obtention du MASTERE

MEMOIRE. Présenté à. L École Nationale d Ingénieurs de Sfax. en vue de l obtention du MASTERE République Tunisienne Ministère de l Enseignement Supérieur, De la Recherche Scientifique et de la Technologie Université de Sfax École Nationale d Ingénieurs de Sfax Ecole Doctorale Sciences et Technologies

Plus en détail

LES TYPES DE DONNÉES DU LANGAGE PASCAL

LES TYPES DE DONNÉES DU LANGAGE PASCAL LES TYPES DE DONNÉES DU LANGAGE PASCAL 75 LES TYPES DE DONNÉES DU LANGAGE PASCAL CHAPITRE 4 OBJECTIFS PRÉSENTER LES NOTIONS D ÉTIQUETTE, DE CONS- TANTE ET DE IABLE DANS LE CONTEXTE DU LAN- GAGE PASCAL.

Plus en détail

STAGE IREM 0- Premiers pas en Python

STAGE IREM 0- Premiers pas en Python Université de Bordeaux 16-18 Février 2014/2015 STAGE IREM 0- Premiers pas en Python IREM de Bordeaux Affectation et expressions Le langage python permet tout d abord de faire des calculs. On peut évaluer

Plus en détail

Langage SQL : créer et interroger une base

Langage SQL : créer et interroger une base Langage SQL : créer et interroger une base Dans ce chapitre, nous revenons sur les principales requêtes de création de table et d accès aux données. Nous verrons aussi quelques fonctions d agrégation (MAX,

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

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

Vérification formelle de la plate-forme Java Card

Vérification formelle de la plate-forme Java Card Vérification formelle de la plate-forme Java Card Thèse de doctorat Guillaume Dufay INRIA Sophia Antipolis Cartes à puce intelligentes Java Card : Environnement de programmation dédié. Dernières générations

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

OCL - Object Constraint Language

OCL - Object Constraint Language OCL - Object Constraint Language Laëtitia Matignon laetitia.matignon@univ-lyon1.fr Département Informatique - Polytech Lyon Université Claude Bernard Lyon 1 2012-2013 Laëtitia Matignon SIMA - OCL - Object

Plus en détail

Le produit semi-direct

Le produit semi-direct Le produit semi-direct Préparation à l agrégation de mathématiques Université de Nice - Sophia Antipolis Antoine Ducros Octobre 2007 Ce texte est consacré, comme son titre l indique, au produit semi-direct.

Plus en détail

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions Cours d introduction à l informatique Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions Qu est-ce qu un Une recette de cuisine algorithme? Protocole expérimental

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

Manuel d utilisation 26 juin 2011. 1 Tâche à effectuer : écrire un algorithme 2

Manuel d utilisation 26 juin 2011. 1 Tâche à effectuer : écrire un algorithme 2 éducalgo Manuel d utilisation 26 juin 2011 Table des matières 1 Tâche à effectuer : écrire un algorithme 2 2 Comment écrire un algorithme? 3 2.1 Avec quoi écrit-on? Avec les boutons d écriture........

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

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

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

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

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

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

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL Cours PL/SQL Langage propre à Oracle basé sur ADA Offre une extension procédurale à SQL PL/SQL permet d utiliser un sous-ensemble du langage SQL des variables, des boucles, des alternatives, des gestions

Plus en détail

Théorie de la Programmation

Théorie de la Programmation Théorie de la Programmation http://perso.ens-lyon.fr/daniel.hirschkoff/thpr hop Programmation, Théorie de la programmation Langages de programmation I il existe de nombreux langages de programmation I

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

Machines virtuelles Cours 1 : Introduction

Machines virtuelles Cours 1 : Introduction Machines virtuelles Cours 1 : Introduction Pierre Letouzey 1 pierre.letouzey@inria.fr PPS - Université Denis Diderot Paris 7 janvier 2012 1. Merci à Y. Régis-Gianas pour les transparents Qu est-ce qu une

Plus en détail

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if Pierre Boudes 28 septembre 2011 This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike

Plus en détail

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS 1. Introduction Nous allons aborder la notion de surcouche procédurale au sein des SGBDS relationnels tels que Oracle (PLSQL)

Plus en détail

Chapitre 2. Eléments pour comprendre un énoncé

Chapitre 2. Eléments pour comprendre un énoncé Chapitre 2 Eléments pour comprendre un énoncé Ce chapitre est consacré à la compréhension d un énoncé. Pour démontrer un énoncé donné, il faut se reporter au chapitre suivant. Les tables de vérité données

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

Algorithmique des Systèmes Répartis Protocoles de Communications

Algorithmique des Systèmes Répartis Protocoles de Communications Algorithmique des Systèmes Répartis Protocoles de Communications Master Informatique Dominique Méry Université de Lorraine 1 er avril 2014 1 / 70 Plan Communications entre processus Observation et modélisation

Plus en détail

Déroulement. Evaluation. Préambule. Définition. Définition. Algorithmes et structures de données 28/09/2009

Déroulement. Evaluation. Préambule. Définition. Définition. Algorithmes et structures de données 28/09/2009 Déroulement Algorithmes et structures de données Cours 1 et 2 Patrick Reuter http://www.labri.fr/~preuter/asd2009 CM mercredi de 8h00 à 9h00 (Amphi Bât. E, 3 ème étage) ED - Groupe 3 : mercredi, 10h30

Plus en détail

Cours de Programmation 2

Cours de Programmation 2 Cours de Programmation 2 Programmation à moyenne et large échelle 1. Programmation modulaire 2. Programmation orientée objet 3. Programmation concurrente, distribuée 4. Programmation monadique 5. Les programmes

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

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

Certification de l assemblage de composants dans le développement de logiciels critiques

Certification de l assemblage de composants dans le développement de logiciels critiques Certification de l assemblage de composants dans le développement de logiciels critiques Philippe Baufreton 1, Emmanuel Chailloux 2, Jean-Louis Dufour 1, Grégoire Henry 3, Pascal Manoury 3, Etienne Millon

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

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

Problèmes de Mathématiques Filtres et ultrafiltres

Problèmes de Mathématiques Filtres et ultrafiltres Énoncé Soit E un ensemble non vide. On dit qu un sous-ensemble F de P(E) est un filtre sur E si (P 0 ) F. (P 1 ) (X, Y ) F 2, X Y F. (P 2 ) X F, Y P(E) : X Y Y F. (P 3 ) / F. Première Partie 1. Que dire

Plus en détail

Examen Médian - 1 heure 30

Examen Médian - 1 heure 30 NF01 - Automne 2014 Examen Médian - 1 heure 30 Polycopié papier autorisé, autres documents interdits Calculatrices, téléphones, traducteurs et ordinateurs interdits! Utilisez trois copies séparées, une

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

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

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

Plus en détail

Introduction à la programmation concurrente

Introduction à la programmation concurrente Introduction à la programmation concurrente Moniteurs Yann Thoma Reconfigurable and Embedded Digital Systems Institute Haute Ecole d Ingénierie et de Gestion du Canton de Vaud This work is licensed under

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

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

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

I4 : Bases de Données

I4 : Bases de Données I4 : Bases de Données Passage de UML au modèle relationnel Georges LOUIS Département Réseaux et Télécommunications Université de La Rochelle Module I4 2008-2009 1 G.Louis Sommaire 1 Des classes aux tables

Plus en détail

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris : Développement d un client REST, l application Vélib 1. Présentation L application présentée permet de visualiser les disponibilités des vélos et des emplacements de parking à la disposition des parisiens

Plus en détail

Corrigé des TD 1 à 5

Corrigé des TD 1 à 5 Corrigé des TD 1 à 5 1 Premier Contact 1.1 Somme des n premiers entiers 1 (* Somme des n premiers entiers *) 2 program somme_entiers; n, i, somme: integer; 8 (* saisie du nombre n *) write( Saisissez un

Plus en détail

Algorithmique et Programmation Fonctionnelle

Algorithmique et Programmation Fonctionnelle Algorithmique et Programmation Fonctionnelle RICM3 Cours 9 : Lambda-calcul Benjamin Wack Polytech 2014-2015 1 / 35 La dernière fois Typage Polymorphisme Inférence de type 2 / 35 Plan Contexte λ-termes

Plus en détail

Programmation avec des objets : Cours 7. Menu du jour

Programmation avec des objets : Cours 7. Menu du jour 1 Programmation avec des objets : Cours 7 Menu du jour 1. Retour sur la classe Liste 2. Précisions sur l interface 3. Difficultés dans le cas d erreurs 4. Soulever des exceptions 5. Utilisation des Listes

Plus en détail

Cours de C++ François Laroussinie. 2 novembre 2005. Dept. d Informatique, ENS de Cachan

Cours de C++ François Laroussinie. 2 novembre 2005. Dept. d Informatique, ENS de Cachan Cours de C++ François Laroussinie Dept. d Informatique, ENS de Cachan 2 novembre 2005 Première partie I Introduction Introduction Introduction Algorithme et programmation Algorithme: méthode pour résoudre

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

Théorème du point fixe - Théorème de l inversion locale

Théorème du point fixe - Théorème de l inversion locale Chapitre 7 Théorème du point fixe - Théorème de l inversion locale Dans ce chapitre et le suivant, on montre deux applications importantes de la notion de différentiabilité : le théorème de l inversion

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

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

Initiation à la Programmation en Logique avec SISCtus Prolog

Initiation à la Programmation en Logique avec SISCtus Prolog Initiation à la Programmation en Logique avec SISCtus Prolog Identificateurs Ils sont représentés par une suite de caractères alphanumériques commençant par une lettre minuscule (les lettres accentuées

Plus en détail

Algorithmique et programmation : les bases (VBA) Corrigé

Algorithmique et programmation : les bases (VBA) Corrigé PAD INPT ALGORITHMIQUE ET PROGRAMMATION 1 Cours VBA, Semaine 1 mai juin 2006 Corrigé Résumé Ce document décrit l écriture dans le langage VBA des éléments vus en algorithmique. Table des matières 1 Pourquoi

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

De même, le périmètre P d un cercle de rayon 1 vaut P = 2π (par définition de π). Mais, on peut démontrer (difficilement!) que

De même, le périmètre P d un cercle de rayon 1 vaut P = 2π (par définition de π). Mais, on peut démontrer (difficilement!) que Introduction. On suppose connus les ensembles N (des entiers naturels), Z des entiers relatifs et Q (des nombres rationnels). On s est rendu compte, depuis l antiquité, que l on ne peut pas tout mesurer

Plus en détail

Paginer les données côté serveur, mettre en cache côté client

Paginer les données côté serveur, mettre en cache côté client Paginer les données côté serveur, mettre en cache côté client Vous voulez sélectionner des lignes dans une table, mais celle-ci comporte trop de lignes pour qu il soit réaliste de les ramener en une seule

Plus en détail

Présentation du langage et premières fonctions

Présentation du langage et premières fonctions 1 Présentation de l interface logicielle Si les langages de haut niveau sont nombreux, nous allons travaillé cette année avec le langage Python, un langage de programmation très en vue sur internet en

Plus en détail

Qu est-ce qu une probabilité?

Qu est-ce qu une probabilité? Chapitre 1 Qu est-ce qu une probabilité? 1 Modéliser une expérience dont on ne peut prédire le résultat 1.1 Ensemble fondamental d une expérience aléatoire Une expérience aléatoire est une expérience dont

Plus en détail

Gestion mémoire et Représentation intermédiaire

Gestion mémoire et Représentation intermédiaire Gestion mémoire et Représentation intermédiaire Pablo de Oliveira March 23, 2015 I Gestion Memoire Variables locales Les variables locales sont stockées: Soit dans un registre,

Plus en détail

Groupe symétrique. Chapitre II. 1 Définitions et généralités

Groupe symétrique. Chapitre II. 1 Définitions et généralités Chapitre II Groupe symétrique 1 Définitions et généralités Définition. Soient n et X l ensemble 1,..., n. On appelle permutation de X toute application bijective f : X X. On note S n l ensemble des permutations

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

Partie I : Créer la base de données. Année universitaire 2008/2009 Master 1 SIIO Projet Introduction au Décisionnel, Oracle

Partie I : Créer la base de données. Année universitaire 2008/2009 Master 1 SIIO Projet Introduction au Décisionnel, Oracle Année universitaire 2008/2009 Master 1 SIIO Projet Introduction au Décisionnel, Oracle Ce projet comporte trois parties sur les thèmes suivants : création de base de donnée, requêtes SQL, mise en œuvre

Plus en détail

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE ARDUINO DOSSIER RESSOURCE POUR LA CLASSE Sommaire 1. Présentation 2. Exemple d apprentissage 3. Lexique de termes anglais 4. Reconnaître les composants 5. Rendre Arduino autonome 6. Les signaux d entrée

Plus en détail

Structures algébriques

Structures algébriques Structures algébriques 1. Lois de composition s Soit E un ensemble. Une loi de composition interne sur E est une application de E E dans E. Soient E et F deux ensembles. Une loi de composition externe

Plus en détail

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

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

Plus en détail

Cours d algorithmique pour la classe de 2nde

Cours d algorithmique pour la classe de 2nde Cours d algorithmique pour la classe de 2nde F.Gaudon 10 août 2009 Table des matières 1 Avant la programmation 2 1.1 Qu est ce qu un algorithme?................................. 2 1.2 Qu est ce qu un langage

Plus en détail

La mesure de Lebesgue sur la droite réelle

La mesure de Lebesgue sur la droite réelle Chapitre 1 La mesure de Lebesgue sur la droite réelle 1.1 Ensemble mesurable au sens de Lebesgue 1.1.1 Mesure extérieure Définition 1.1.1. Un intervalle est une partie convexe de R. L ensemble vide et

Plus en détail

OpenPaaS Le réseau social d'entreprise

OpenPaaS Le réseau social d'entreprise OpenPaaS Le réseau social d'entreprise Spécification des API datastore SP L2.3.1 Diffusion : Institut MinesTélécom, Télécom SudParis 1 / 12 1OpenPaaS DataBase API : ODBAPI...3 1.1Comparaison des concepts...3

Plus en détail

Langage SQL (1) 4 septembre 2007. IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

Langage SQL (1) 4 septembre 2007. IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes Langage SQL (1) Sébastien Limet Denys Duchier IUT Orléans 4 septembre 2007 Notions de base qu est-ce qu une base de données? SGBD différents type de bases de données quelques systèmes existants Définition

Plus en détail

Compilation (INF 564)

Compilation (INF 564) Présentation du cours Le processeur MIPS Programmation du MIPS 1 Compilation (INF 564) Introduction & architecture MIPS François Pottier 10 décembre 2014 Présentation du cours Le processeur MIPS Programmation

Plus en détail

Projet Active Object

Projet Active Object Projet Active Object TAO Livrable de conception et validation Romain GAIDIER Enseignant : M. Noël PLOUZEAU, ISTIC / IRISA Pierre-François LEFRANC Master 2 Informatique parcours MIAGE Méthodes Informatiques

Plus en détail

Ordonnancement temps réel

Ordonnancement temps réel Ordonnancement temps réel Laurent.Pautet@enst.fr Version 1.5 Problématique de l ordonnancement temps réel En fonctionnement normal, respecter les contraintes temporelles spécifiées par toutes les tâches

Plus en détail

Représentation des Nombres

Représentation des Nombres Chapitre 5 Représentation des Nombres 5. Representation des entiers 5.. Principe des représentations en base b Base L entier écrit 344 correspond a 3 mille + 4 cent + dix + 4. Plus généralement a n a n...

Plus en détail

ACTIVITÉ DE PROGRAMMATION

ACTIVITÉ DE PROGRAMMATION ACTIVITÉ DE PROGRAMMATION The purpose of the Implementation Process is to realize a specified system element. ISO/IEC 12207 Sébastien Adam Une introduction 2 Introduction Ø Contenu Utilité de l ordinateur,

Plus en détail

Rappels sur les suites - Algorithme

Rappels sur les suites - Algorithme DERNIÈRE IMPRESSION LE 14 septembre 2015 à 12:36 Rappels sur les suites - Algorithme Table des matières 1 Suite : généralités 2 1.1 Déition................................. 2 1.2 Exemples de suites............................

Plus en détail

Définitions. Numéro à préciser. (Durée : )

Définitions. Numéro à préciser. (Durée : ) Numéro à préciser (Durée : ) On étudie dans ce problème l ordre lexicographique pour les mots sur un alphabet fini et plusieurs constructions des cycles de De Bruijn. Les trois parties sont largement indépendantes.

Plus en détail

Application 1- VBA : Test de comportements d'investissements

Application 1- VBA : Test de comportements d'investissements Application 1- VBA : Test de comportements d'investissements Notions mobilisées Chapitres 1 à 5 du cours - Exemple de récupération de cours en ligne 1ère approche des objets (feuilles et classeurs). Corps

Plus en détail

TP 1. Prise en main du langage Python

TP 1. Prise en main du langage Python TP. Prise en main du langage Python Cette année nous travaillerons avec le langage Python version 3. ; nous utiliserons l environnement de développement IDLE. Étape 0. Dans votre espace personnel, créer

Plus en détail

UML et les Bases de Données

UML et les Bases de Données CNAM UML et les Bases de Données UML et les Bases de Données. Diagramme de classes / diagramme d objets (UML)...2.. Premier niveau de modélisation des données d une application...2.2. Les éléments de modélisation...2.2..

Plus en détail

Un ordonnanceur stupide

Un ordonnanceur stupide Un ordonnanceur simple Université Paris Sud L objet des exercices qui suivent est de créer un ordonanceur implantant l algorithme du tourniquet ( round-robin scheduler ). La technique utilisée pour élire

Plus en détail

Cours No 3 : Identificateurs, Fonctions, Premières Structures de contrôle.

Cours No 3 : Identificateurs, Fonctions, Premières Structures de contrôle. Université Montpellier-II UFR des Sciences - Département Informatique - Licence Informatique UE GLIN302 - Programmation Applicative et Récursive Cours No 3 : Identificateurs, Fonctions, Premières Structures

Plus en détail

Programmation Objet - Cours II

Programmation Objet - Cours II Programmation Objet - Cours II - Exercices - Page 1 Programmation Objet - Cours II Exercices Auteur : E.Thirion - Dernière mise à jour : 05/07/2015 Les exercices suivants sont en majorité des projets à

Plus en détail

Calculabilité Cours 3 : Problèmes non-calculables. http://www.irisa.fr/lande/pichardie/l3/log/

Calculabilité Cours 3 : Problèmes non-calculables. http://www.irisa.fr/lande/pichardie/l3/log/ Calculabilité Cours 3 : Problèmes non-calculables http://www.irisa.fr/lande/pichardie/l3/log/ Problèmes et classes de décidabilité Problèmes et classes de décidabilité Nous nous intéressons aux problèmes

Plus en détail

Atelier B. Prouveur interactif. Manuel Utilisateur. version 3.7

Atelier B. Prouveur interactif. Manuel Utilisateur. version 3.7 Atelier B Prouveur interactif Manuel Utilisateur version 3.7 ATELIER B Prouveur interactif Manuel Utilisateur version 3.7 Document établi par CLEARSY. Ce document est la propriété de CLEARSY et ne doit

Plus en détail

Algorithmique & programmation

Algorithmique & programmation Algorithmique & programmation Type structuré Article, Enregistrement, Structure Définition de nouveaux types!! On a vu les types simples "! entier, booléen, caractère, chaîne de caractères!! Comment gérer

Plus en détail