METHODE B Formation niveau 1. juin 2005
|
|
- Joseph Lapierre
- il y a 8 ans
- Total affichages :
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 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étailRappel. 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étailRecherche 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étailExpression 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étailTP 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étailGé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étailSub 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étailUniversité 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étailIN 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étailLa 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étailClasses 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étailGrandes 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étailGé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étailMEMOIRE. 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étailLES 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étailSTAGE 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étailLangage 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étailPré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étailCours 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étailVé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étailLicence 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étailOCL - 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étailLe 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étailCours 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étailCours 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étailManuel 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étailJava 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étail1/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étailAlgorithmique 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étailExclusion 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étailINITIATION 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étailProgrammer 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étailLangage 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étailThé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étailIntroduction à 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étailMachines 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 Pierre Boudes 28 septembre 2011 This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike
Plus en détailModule 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étailChapitre 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étailUEO11 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étailAlgorithmique 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étailDé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étailCours 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étailLangage 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étailConventions 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étailCertification 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étailObjets 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étailQualité 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étailProblè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étailExamen 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étailCours 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étailInfo0101 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étailIntroduction à 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étailET 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étailIntroduction 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étailTable 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étailI4 : 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étailCette 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étailCorrigé 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étailAlgorithmique 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étailProgrammation 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étailCours 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étailCours 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étailThé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étailConception 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étailChapitre 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étailInitiation à 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étailAlgorithmique 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étailPlan 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étailDe 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étailPaginer 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étailPré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étailQu 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étailGestion 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étailGroupe 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étailEPREUVE 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étailPartie 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étailARDUINO 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étailStructures 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étailProgrammation 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étailCours 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étailLa 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étailOpenPaaS 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étailLangage 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étailCompilation (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étailProjet 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étailOrdonnancement 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étailRepré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étailACTIVITÉ 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étailRappels 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étailDé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étailApplication 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étailTP 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étailUML 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étailUn 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étailCours 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étailProgrammation 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étailCalculabilité 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étailAtelier 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étailAlgorithmique & 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