Langage de nouvelle génération pour la modélisation et la vérification formelle de systèmes parallèles asynchrones

Save this PDF as:
 WORD  PNG  TXT  JPG

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

Download "Langage de nouvelle génération pour la modélisation et la vérification formelle de systèmes parallèles asynchrones"

Transcription

1 Langage de nouvelle génération pour la modélisation et la vérification formelle de systèmes parallèles asynchrones Frédéric Lang LIG et Inria/CONVECS

2 CADP (Construction and Analysis of Distributed Processes) Boîte à outils logiciels développée à l Inria Développement initié au milieu des années 80 Nombreuses fonctionnalités (> 50 outils) Modélisation formelle des systèmes parallèles asynchrones Simulation, prototypage rapide, test, vérification, évaluation de performance Diffusion large 441 contrats de licence académiques (gratuits) signés CADP installé sur 1227 machines en 2012 Disponible sur de multiples architectures (processeurs, OS, compilateurs) 2

3 Modélisation formelle Exprimer mathématiquement le comportement des programmes parallèles critiques (pour en vérifier la correction) Les langages usuels (C, Java) ne conviennent pas Bonne nouvelle : on sait le faire (algèbres de processus, CSP, CCS, LOTOS) expression correcte du parallélisme, non-déterminisme sémantique mathématique Mauvaise nouvelle : les industriels n'en veulent pas et inventent leurs propres langages Défi : combiner concepts mathématiques et notations usuelles 3

4 Systèmes parallèles asynchrones P2 P1 P4 P5 P3 Différents processus (tâches, activités, agents, ) Qui s exécutent en parallèle A des vitesses différentes (pas d horloge centrale) Sans forcément de mémoire commune Communication par messages avec des délais variables 4

5 Domaines d application Le parallélisme asynchrone ne se restreint pas à un domaine particulier 155 études de cas publiées dans les domaines suivants : avionics, bioinformatics, business processes, cognitive systems, communication protocols, component-based systems, constraint programming, control systems, coordination architectures, critical infrastructures, cryptography, database protocols, distributed algorithms, distributed systems, e-commerce, e-democracy, embedded software, grid services, hardware design, hardware/software co-design, healthcare, human-computer interaction, industrial manufacturing systems, middleware, mobile agents, model-driven engineering, networks, objectoriented languages, performance evaluation, planning, radiotherapy equipments, real-time systems, security, sensor networks, service-oriented computing, software adaptation, software architectures, stochastic systems, systems on chip, telephony, transport safety, Web services liste des études de cas : 5

6 Modèle sémantique Le comportement d un processus est caractérisé par un graphe : son STE (Système de Transitions Etiquetées) Etats sans contenu visible, état initial Transitions étiquetées par les événements observables (e.g., actions de communication) et internes (i) Non-déterminisme (branchement) Evénement interne Evénement observable Etat initial 6

7 Sémantique du parallélisme asynchrone Possibilité de synchroniser des événements (rendez-vous) Sémantique de la composition parallèle = STE produit Evénements synchronisés : exécution simultanée s t A A = A s t Evénements non-synchronisés : entrelacement (ne peuvent pas être observés simultanément) s, t s t A s, t s, t B A B = s t s, t s, t B A s, t 7

8 Vérification formelle Objectif : rechercher les erreurs éventuelles dans le STE Le test et la simulation sont utiles mais ne permettent pas de détecter certaines erreurs Utilisation de méthodes énumératives : exploration du STE Pour vérifier une propriété de logique temporelle (e.g., l évt X est obligatoirement suivi de l évt Y) : model checking Pour vérifier l équivalence avec un STE de référence : equivalence checking Nécessité de lutter contre l explosion d états (mais c est une autre histoire) 8

9 Langages formels pour la description du parallélisme asynchrone STE sont suffisamment expressifs pour décrire la plupart des systèmes et des modes de communication Buffers, variables partagées,... Mais de trop bas niveau pour décrire des systèmes de taille «réaliste» Besoin d un langage combinant plusieurs caractéristiques Non-ambigü : sémantique formelle sous forme de STE Riche : données simples et complexes, non-déterminisme, parallélisme Structuré : structures de contrôle, fonctions, processus, modules Accessible sans trop d effort à un programmeur non-spécialiste Le langage LOTOS NT (abrégé en LNT) 9

10 Les racines : algèbres de processus Formalismes théoriques (concurrency theory) proposés à partir des années 80 Initialement limitées aux concepts de base récursion, parallélisme, synchronisation, non-déterminisme pas de représentation des données Exemple (CCS) : P = a.p ; Q = `a.b.q ; R = P Q Puis LOTOS (norme internationale ISO 8807, 1989) Combine algèbre de processus et types abstraits algébriques (ActOne) pour la représentation des données Support dans CADP Avancée importante mais langage ardu (2 en 1), apprentissage lent... 10

11 Exemple LOTOS : type énuméré type AgId is Boolean sorts AgId opns agent1 (*! constructor *), agent2 (*! constructor *), agent3 (*! constructor *): -> AgId _eq_, _ne_, _lt_ : AgId, AgId -> Bool eqns forall P1, P2 : AgId ofsort Bool P1 eq P1 = true; P1 eq P2 = false; ofsort Bool P1 ne P2 = not (P1 eq P2); ofsort Bool agent1 lt agent2 = true; agent1 lt agent3 = true; agent2 lt agent3 = true; P1 lt P2 = false; endtype Types abstraits algébriques 11

12 Exemple LOTOS : type tableau type AgArr is AgId, Natural sorts AgArr opns AgArr (*! constructor *) : AgId, AgId, AgId -> AgArr get : AgArr, Nat -> AgId set : AgArr, Nat, AgId -> AgArr Types abstraits algébriques eqns forall a, a1, a2, a3 : AgArr ofsort AgId get (AgArr (a1, a2, a3), 1) = a1; get (AgArr (a1, a2, a3), 2) = a2; get (AgArr (a1, a2, a3), 3) = a3; ofsort AgArr set (AgArr (a1, a2, a3), 1, a) = AgArr (a, a2, a3); set (AgArr (a1, a2, a3), 2, a) = AgArr (a1, a, a3); set (AgArr (a1, a2, a3), 3, a) = AgArr (a1, a2, a); endtype 12

13 Exemple LOTOS : type ensemble type AgSet is AgId, Boolean sorts AgSet opns nil (*! constructor *) : -> AgSet cons (*! constructor *) : AgId, AgSet -> AgSet insert : AgId, AgSet -> AgSet remove : AgId, AgSet -> AgSet eqns forall a1, a2 : AgId, s : AgSet ofsort AgSet Types abstraits algébriques insert (a1, nil) = cons (a1, nil); a1 lt a2 => insert (a1, cons (a2, s)) = cons (a1, cons (a2, s)); a1 eq a2 => insert (a1, cons (a2, s)) = cons (a2, s); insert (a1, cons (a2, s)) = cons (a2, insert (a1, s)); remove (a1, nil) = nil; a1 lt a2 => remove (a1, cons (a2, s)) = cons (a2, s); a1 eq a2 => insert (a1, cons (a2, s)) = s; remove (a1, cons (a2, s)) = cons (a2, remove (a1, s)); 13

14 Exemple LOTOS : fonction opns eqns Max_Ag : AgArr -> AgId Loop : AgId, Nat, AgArr forall a : AgArr, n : Nat, result : AgId ofsort AgId Max_Ag (a) = Loop (agent1, 1, a); ofsort AgId n <= 3, get (a, n) > result => Loop (result, n, a) = Loop (get (a, n), n+1, a); n <= 3 => Loop (result, n, a) = Loop (result, n+1, a); Loop (result, n, a) = result; Types abstraits algébriques 14

15 Exemple LOTOS : processus séquentiel process Server [Req, Acq] : noexit := Server_Aux [Req, Acq] (nil) endproc process Server_Aux [Req, Acq] (w : AgSet) : noexit := Req (?a : AgId); Server_Aux [Req, Acq] (insert (a, w)) [] Acq (?a : AgId) [member (a, w)]; Server_Aux [Req, Acq] (remove (a, w)) endproc Algèbre de processus 15

16 Exemple LOTOS : parallélisme process Sys [Req, Acq] : noexit := ( Client [Req, Acq] (agent1) Client [Req, Acq] (agent2) Client [Req, Acq] (agent3) ) [Req, Acq] Server [Req, Acq] endproc Algèbre de processus Client 1 Client 2 Client 3 Req, Acq Req, Acq Req, Acq Server 16

17 Le langage LNT Principe : reprendre les (bonnes) idées de LOTOS Mais En adoptant pour les concepts standards (types, fonctions,...) une syntaxe et une sémantique compréhensibles et usuelles En intégrant de façon homogène les concepts qui n ont pas d équivalent dans les langages algorithmiques : non-déterminisme parallélisme synchronisation,... 17

18 Types LNT Types prédéfinis : booléens, entiers, caractères, chaînes Types définis par l utilisateur : Types définis par un ensemble de constructeurs avec paramètres typés et nommés (types inductifs) Cas particuliers : types énumérés, enregistrements, unions, listes, arbres, etc. Notations abrégées pour les tableaux, les listes et les ensembles (triés ou non) Sous-types : intervalles et types à prédicats Définition automatique de fonctions standard : "==", "<=", "<", ">=", ">", sélecteurs de champs, etc. 18

19 Exemple : type énuméré type AgId is agent1, agent2, agent3 with "==", "!=", "<", ">" end type 19

20 Exemple : type tableau type AgArr is array [1..3] of AgId end type 20

21 Exemple LNT : type ensemble type AgSet is set of AgId with "remove", "member", "==", "!=" end type 21

22 Exemple : type arbre binaire type Tree is leaf, node (left : Tree, right : Tree) end type 22

23 Fonctions LNT Fonctions sans effets de bord en syntaxe impérative Exécution sûre : typage fort, analyse d initialisation Définition par des instructions algorithmiques classiques Déclarations de variables locales : var Affectations : := Composition séquentielle : ; Boucles interuptibles : while, for Conditionnelles: if-then-else Filtrage de motifs : case Exceptions (non-rattrappables) : raise Trois modes de passage de paramètres : in (appel par valeur) out et inout (appel par référence) 23

24 Exemple : fonction function Max_Ag (a : AgArr) : AgId is var result : AgId, n : Nat in n := 1; result := agent1; while n <= 3 loop if a[n] > result then result := a[n] end if; n := n+1 end loop; return result end var end function 24

25 Processus LNT Les processus sont un (quasi) sur-ensemble des fonctions tous les opérateurs sauf return Opérateurs supplémentaires : événements (rendez-vous avec passage de valeurs) composition parallèle : par masquage d événements : hide choix non-déterministe : select disrupt, affectation non-déterministe, etc. 25

26 Exemple : processus séquentiel channel ClId is (AgId) end channel process Server [Req, Acq : ClId] is var w : AgSet, a : AgId in w := nil; loop select Req (?a); w := insert (a, w) [] Acq (?a) where member (a, w); w := remove (a, w) end select end loop end var end process 26

27 Exemple : composition parallèle process Sys [Req, Acq : ClId] is par Req, Acq in par Client [Req, Acq] (agent1) Client [Req, Acq] (agent2) Client [Req, Acq] (agent3) end par Server [Req, Acq] end par end process Client 1 Client 2 Client 3 Req, Acq Req, Acq Req, Acq Server 27

28 Conclusion LNT : un langage non-ambigü, riche, structuré, accessible pour modéliser les systèmes parallèles asynchrones Un héritage de 30 ans de recherche en théorie de la concurrence Intégré à CADP ( Simulation, test, prototypage rapide et vérification Traduction vers LOTOS, dont les compilateurs sont développés et optimisés depuis 20 ans Des utilisateurs et des retours positifs Etudiants (Ensimag,...) et utilisateurs académiques Utilisateurs industriels (financement initial) 28

Génie logiciel avancé

Génie logiciel avancé Génie logiciel avancé Mihaela Sighireanu UFR d Informatique Paris Diderot, LIAFA, 175 rue Chevaleret, Bureau 6A7 http://www.liafa.jussieu.fr/ sighirea/cours/genielog/ Spécification formelle: Types de données

Plus en détail

Algorithmique - Programmation 1. Cours 1

Algorithmique - Programmation 1. Cours 1 Algorithmique - Programmation 1 Cours 1 Université Henri Poincaré CESS Epinal Automne 2008 1/ 24 Plan Introduction Introduction A propos d AP1 Quelques concepts de base Premiers pas avec Caml Le branchement

Plus en détail

LotosNT : modélisation et vérification

LotosNT : modélisation et vérification LotosNT : modélisation et vérification Construction Formelle de Logiciels Christian Attiogbé, Meriem Ouederni Janvier 2012 Christian Attiogbé, Meriem Ouederni (Janvier 2012) LotosNT : modélisation et vérification

Plus en détail

CHAP. 5 : PROTOCOLE TWO PHASE COMMIT exécution en deux phases. exemple de description en LOTOS d un protocole complexe

CHAP. 5 : PROTOCOLE TWO PHASE COMMIT exécution en deux phases. exemple de description en LOTOS d un protocole complexe M2PRO 2007 1 M. C. Gaudel CHAP. 5 : PROTOCOLE TWO PHASE COMMIT exécution en deux phases exemple de description en LOTOS d un protocole complexe 2PC = protocole pour la communication de groupe utilisé pour

Plus en détail

Analyse et vérification automatique de systèmes asynchrones. Hubert Garavel INRIA / VASY http://www.inrialpes.fr/vasy

Analyse et vérification automatique de systèmes asynchrones. Hubert Garavel INRIA / VASY http://www.inrialpes.fr/vasy 1 Analyse et vérification automatique de systèmes asynchrones Hubert Garavel INRIA / VASY http://www.inrialpes.fr/vasy 2 Systèmes asynchrones P2 P1 P4 P5 P3 Caractéristiques : différents processus / tâches

Plus en détail

introduction à la conception Orientée Objet

introduction à la conception Orientée Objet 1 introduction à la conception Orientée Objet IUP GEII 2ème année marcel@univ-tours.fr http://www.blois.univ-tours.fr/ marcel 2 plan cours 1. motivations génie logiciel 2. concepts et techniques orientés

Plus en détail

C.P.G.E - Meknès Langage Python 3 Haouati Abdelali

C.P.G.E - Meknès Langage Python 3 Haouati Abdelali 3. Langage Python 3 2 a. Introduction Présentation du langage Python : Python est un langage portable, dynamique, extensible, gratuit, qui permet (sans l imposer) une approche modulaire et orientée objet

Plus en détail

Python langage de programmation

Python langage de programmation Initiation à la programmation avec Python langage de programmation Valérie Bellynck (2009), d après un diaporama d Alain Bozzi (2008), lui-même venant de celui de Bob Cordeau (2008) 1 Langage de Programmation

Plus en détail

Introduction au langage Ada

Introduction au langage Ada Séance 2 Introduction au langage Ada Objectifs : Pourquoi Ada? Évolution des langages de programmation Particularités d'ada Structure d un programme Ada. 2008 Ingénierie du logiciel avec Ada N.KERZAZI

Plus en détail

Vérification par model-checking, extension aux systèmes infinis

Vérification par model-checking, extension aux systèmes infinis Vérification par model-checking, extension aux systèmes infinis Sébastien Bardin LSV - CNRS & ENS de Cachan Des programmes fiables? L informatique se répand très vite dans tous les domaines : téléphones,

Plus en détail

Programmation objet en Java.

Programmation objet en Java. Programmation objet en Java. Didier Rémy 2001-2002 http://cristal.inria.fr/ remy/mot/7/ http://www.enseignement.polytechnique.fr/profs/informatique/didier.remy/mot/7/ Cours Exercices Slide 1 1. Classes,

Plus en détail

METHODE B Formation niveau 1. juin 2005

METHODE B Formation niveau 1. juin 2005 METHODE B Formation niveau 1 juin 2005 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

Plus en détail

Cours n 1 : Affectation, fonctions, booléens, branchements conditionnels

Cours n 1 : Affectation, fonctions, booléens, branchements conditionnels Lycée Jules Ferry 2015-2016 PTSI 1&2 Informatique Cours n 1 : Affectation, fonctions, booléens, branchements conditionnels Instructions introduites dans ce cours : ¹» ÔÖÒØ Ð ÖØÙÖÒ Ò ÓÖ ÒÓØ Ð Ðº 1 Introduction

Plus en détail

Introduction à l'informatique

Introduction à l'informatique Introduction à l'informatique DEUG Sciences et Technologie Première année Autour de la programmation Catherine Mongenet Pierre Gancarski (supports réalisés par Catherine Mongenet et Pascal Schreck) Rappels

Plus en détail

Construction formelle de logiciels

Construction formelle de logiciels Construction formelle de logiciels La méthode B J. Christian Attiogbé Novembre 2008, maj 11/2009, 10/2010 J. Christian Attiogbé (Novembre 2008, maj 11/2009, Construction 10/2010) formelle de logiciels

Plus en détail

Java : Programmation Impérative

Java : Programmation Impérative 1 Java : Programmation Impérative Résumé du cours précédent (I11) Paradigme impératif Algorithmique simple Découpage fonctionnel Qu est-ce qu un programme informatique? / un langage de programmation? /

Plus en détail

Langage fonctionnel et Récursivité

Langage fonctionnel et Récursivité Langage fonctionnel et Récursivité Programmation Fonctionnelle Master 2 I2L apprentissage Sébastien Verel verel@lisic.univ-littoral.fr http://www-lisic.univ-littoral.fr/~verel Université du Littoral Côte

Plus en détail

Langages de programmation et compilation

Langages de programmation et compilation École Normale Supérieure Langages de programmation et compilation Jean-Christophe Filliâtre Cours 1 / 25 septembre 2008 Jean-Christophe Filliâtre Langages de programmation et compilation 2008 2009 / cours

Plus en détail

développement de serveurs Internet

développement de serveurs Internet Un modèle génératif pour le développement de serveurs Internet Soutenance de thèse de l Université Paris-Est Gautier LOYAUTÉ Gautier.Loyaute@univ-mlv.fr 5 Septembre 2008 Laboratoire d Informatique Institut

Plus en détail

USTL - Licence ST-A 1ère année 2005-2006 Initiation à la programmation. CTD : Variables et types de données

USTL - Licence ST-A 1ère année 2005-2006 Initiation à la programmation. CTD : Variables et types de données USTL - Licence ST-A 1ère année 2005-2006 Initiation à la programmation 1 Motivation 1.1 Un problème CTD : Variables et types de données État initial : Tas 1 un nombre quelconque de cartes, les autres tas

Plus en détail

Validation de systèmes interactifs centrée sur l usager

Validation de systèmes interactifs centrée sur l usager Validation de systèmes interactifs centrée sur l usager C. Ailleres Mardi 6 Janvier 2004 Problématique Avènement de l informatique : besoin de qualité et de fiabilité des systèmes Génie Logiciel Importance

Plus en détail

Ioannis Parissis UFR IMA Laboratoire LIG. Test logiciel

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

Plus en détail

Système et Programmation (en C)

Système et Programmation (en C) Système et Programmation (en C) ENSTA - TC 1ère année François Pessaux U2IS 2015-2016 francois.pessaux @ ensta-paristech.fr Introduction François Pessaux IN102 Système et Programmation (en C) 2/31 But

Plus en détail

Informatique Répartie

Informatique Répartie INSA - ASI InfoRep : Client-Serveur 1/36 Informatique Répartie Architectures Client-Serveur Alexandre Pauchet INSA Rouen - Département ASI BO.B.RC.18, pauchet@insa-rouen.fr INSA - ASI InfoRep : Client-Serveur

Plus en détail

Présentation du programme d informatique

Présentation du programme d informatique Présentation du programme d informatique UPS 31 mai 2015 Table des matières 1 Introduction 2 1.1 Présentation.................................. 2 1.2 Représentation des nombres.........................

Plus en détail

Plan. Synchronisation des processus

Plan. Synchronisation des processus Plan Synchronisation des processus N. Hameurlain Spécification du problème par un exemple; Synchro à l aide d événements; Synchro à l aide des sémaphores; Synchro par les données : la boîte aux lettres;

Plus en détail

Chap. 2. Langages et automates

Chap. 2. Langages et automates Chapitre 2. Langages et automates 1. Quelques définitions et description d un langage. 2. Les expressions régulières. 3. Les automates fini déterministes et non-déterministes. 4. Construction automatique

Plus en détail

Ecole Nationale des Sciences de l Informatique Université de la Manouba Janvier 2012 Programmes d enseignement

Ecole Nationale des Sciences de l Informatique Université de la Manouba Janvier 2012 Programmes d enseignement Ecole Nationale des Sciences de l Informatique Université de la Manouba Janvier 2012 Programmes d enseignement II1 - Premier semestre de la première année (S1) Module Crédits Nombre d heures Cours intégrés

Plus en détail

Premiers exemples de traitements

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

Plus en détail

Les tableaux (ou vecteurs) (1/3) Cours numéro 3: Programmation impérative LI213 Types et Structures de données. Les tableaux (3/3) Les tableaux (2/3)

Les tableaux (ou vecteurs) (1/3) Cours numéro 3: Programmation impérative LI213 Types et Structures de données. Les tableaux (3/3) Les tableaux (2/3) Les tableaux (ou vecteurs) (1/3) Le type tableau est une des réponses à la question : LI213 Types et Structures de données Licence d Informatique Université Paris 6 comment agréger un très grand nombre

Plus en détail

Hiver 2002 Petko Valtchev

Hiver 2002 Petko Valtchev Hiver 2002 Petko Valtchev 1 # Le processus de production # Concepts de base # Nature du processus et phases # Modèles de processus # Modèle en cascade # Modèle par prototypage # «Rapid Application Development»

Plus en détail

Conclusions et Perspectives

Conclusions et Perspectives 8 Conclusions et Perspectives Ce chapitre conclut la thèse en donnant un bilan du travail effectué et les perspectives envisageables au terme de cette recherche. Nous rappelons tout d abord les principales

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

Apprendre à programmer

Apprendre à programmer Christophe Dabancourt Apprendre à programmer Algorithmes et conception objet 2 e édition Groupe Eyrolles, 2008, ISBN : 978-2-212-12350-0 Table des matières Avant-propos.................................................

Plus en détail

Javascript : les bases du langage

Javascript : les bases du langage Javascript : les bases du langage Technologies du Web 1 Jean-Christophe Routier Licence 1 SESI Université Lille 1 Université Lille 1 - Licence 1 SESI Technologies du Web 1 1 Javascript présentation partielle,

Plus en détail

Langages de haut niveau

Langages de haut niveau Langages de haut niveau Introduction Un assembleur est un programme traduisant en code machine un programme écrit à l'aide des mnémoniques Les langages d'assemblage représentent une deuxième génération

Plus en détail

Conférence d introduction à la programmation et aux langages de programmation. C. Dubois

Conférence d introduction à la programmation et aux langages de programmation. C. Dubois Conférence d introduction à la programmation et aux langages de programmation C. Dubois Pl an - Pro g ram m ati o n et D év el o p p em en t d e l o g i ci el - L es l an g ag es (u n p eti t h i sto ri

Plus en détail

Sou s-p r o g r a m m e s. Pr océ d u r e s

Sou s-p r o g r a m m e s. Pr océ d u r e s Sou s-p r o g r a m m e s Les sous-programmes permettent de déclarer et d'implémenter des traitements réutilisables. Les sous-programmes travaillent sur des objets (instances de types) mais pas sur des

Plus en détail

Fiche de révisions - Algorithmique

Fiche de révisions - Algorithmique Fiche de révisions - Algorithmique Rédigé par : Jimmy Paquereau 1. Généralités Algorithme : un algorithme est la description d une procédure à suivre afin de résoudre un problème donné. Il n est pas nécessairement

Plus en détail

Abstraction: introduction. Abstraction et liaison dans les langages de programmation. Abstraction: principe. Abstraction: terminologie. N.

Abstraction: introduction. Abstraction et liaison dans les langages de programmation. Abstraction: principe. Abstraction: terminologie. N. Abstraction et liaison dans les langages de programmation LIN2: Paradigmes de programmation N. Hameurlain Abstraction: introduction L'importance de l abstraction découle de sa capacité de cacher les détails

Plus en détail

Projet de Programmation Fonctionnelle

Projet de Programmation Fonctionnelle Projet de Programmation Fonctionnelle L objectif de ce projet est de concevoir, en Objective Caml, un évaluateur pour le langage mini-ml (un sous ensemble du langage Objective Caml). Votre programme devra

Plus en détail

Bertrand Meyer. UConception et programmation orientées objet. T r a d u i t d e l a n g l a i s p a r P i e r r e J o u v e l o t

Bertrand Meyer. UConception et programmation orientées objet. T r a d u i t d e l a n g l a i s p a r P i e r r e J o u v e l o t UConception et programmation orientées objet Bertrand Meyer T r a d u i t d e l a n g l a i s p a r P i e r r e J o u v e l o t Groupe Eyrolles, 2000, pour le texte de la présente édition en langue française.

Plus en détail

XQuery Dan VODISLAV Université de Cergy-Pontoise Licence Informatique L3 Plan

XQuery Dan VODISLAV Université de Cergy-Pontoise Licence Informatique L3 Plan XQuery Dan VODISLAV Université de Cergy-Pontoise Licence Informatique L3 Plan Principes, historique Modèle de données Expressions XQuery Expressions simples Expressions complexes Expressions FLOWR Fonctions

Plus en détail

CEG4561/CSI4541 Conception de systèmes temps réel

CEG4561/CSI4541 Conception de systèmes temps réel CEG4561/CSI4541 Conception de systèmes temps réel Chapitre 4 Outils de spécification et de validation des systèmes en temps réel 4.1 Introduction Question : Pourquoi des outils de spécifications et de

Plus en détail

ACI Sécurité ALIDECS:

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

Plus en détail

Claude Kaiser Machine virtuelle et environnement utilisateur SRI_B CHAPITRE 1

Claude Kaiser Machine virtuelle et environnement utilisateur SRI_B CHAPITRE 1 CHAPITRE 1 FOURNIR À L'UTILISATEUR UNE MACHINE VIRTUELLE ET UN ENVIRONNEMENT D'EXÉCUTION DE PROGRAMMES Plan ENVIRONNEMENT DE TRAVAIL ADAPTÉ AU BESOIN DE L'UTILISATEUR Fonctions de l'environnement d'exécution

Plus en détail

Ecole des Mines de Nantes. Rappels. Rappels : Portes logiques. Rappels : Simplifications d équations. FI3a : module 12E électronique numérique

Ecole des Mines de Nantes. Rappels. Rappels : Portes logiques. Rappels : Simplifications d équations. FI3a : module 12E électronique numérique Ecole des Mines de Nantes FI3a : module 12E électronique numérique Rappels 06/09/2004 R. Berny - Subatech 1 Rappels : Portes logiques 06/09/2004 R. Berny - Subatech 2 Rappels : Simplifications d équations

Plus en détail

Introduction au langage

Introduction au langage Introduction au langage Un langage de programmation : de haut niveau interprété orienté objet si on le souhaite rapide à écrire et proche du pseudo-code simple tant qu on fait des choses simples Un programme

Plus en détail

FSAB 1402 - Suggestions de lecture

FSAB 1402 - Suggestions de lecture FSAB 1402 - Suggestions de lecture 2006 Concepts, techniques and models of computer programming Cours 1 - Intro Chapitre 1 (sections 1.1, 1.2, 1.3, pages 1-3) Introduction aux concepts de base Chapitre

Plus en détail

AVATAR. Un profil SysML temps réel outillé

AVATAR. Un profil SysML temps réel outillé AVATAR Un profil SysML temps réel outillé Ludovic Apvrille, Pierre de Saqui-Sannes ludovic.apvrille@telecom-paristech.fr pdss@isae.fr SysML France, 6 décembre 2010 Agenda De TURTLE à AVATAR Le langage

Plus en détail

Les procédures. Chapitre 7

Les procédures. Chapitre 7 Les procédures Chapitre 7 1 Intérêt Créer une instruction nouvelle qui deviendra une primitive pour le programmeur Structurer le texte source du programme et améliorer sa lisibilité Factoriser l'écriture

Plus en détail

Chapitre 1 Introduction

Chapitre 1 Introduction Chapitre 1 Introduction Jean Privat Université du Québec à Montréal INF7330 Construction de logiciels Diplôme d études supérieures spécialisées en systèmes embarqués Automne 2012 Jean Privat (UQAM) 01

Plus en détail

Spécification par la modélisation

Spécification par la modélisation Spécification par la modélisation Objectifs : Être en mesure de spécifier par les modèles UML. Comprendre l importance des cas d utilisation (UC). Comprendre les méthodes d'identification des UCs. Comprendre

Plus en détail

Évaluation et implémentation des langages

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

Plus en détail

FORTAS : Framework for Real-Time Analysis and Simulation

FORTAS : Framework for Real-Time Analysis and Simulation FORTAS : Framework for Real-Time Analysis and Simulation Pierre Courbin (courbin@ece.fr) LACSC - ECE Paris 12/03/2012 Pierre Courbin (courbin@ece.fr) FORTAS : Framework for Real-Time Analysis and Simulation

Plus en détail

SLPC 0809 : Devoir de maison. Exercice I : Sémantique opérationnelle : extension du langage while avec des exceptions

SLPC 0809 : Devoir de maison. Exercice I : Sémantique opérationnelle : extension du langage while avec des exceptions SLPC 0809 : Devoir de maison Exercice I : Sémantique opérationnelle : extension du langage while avec des exceptions On considère dans cet exercice la liaison dynamique pour les variables. Introduction

Plus en détail

Génie logiciel Test logiciel A.U. 2013/2014 (Support de cours) R. MAHMOUDI (mahmoudr@esiee.fr) 1 Plan du chapitre - Définition du test logiciel - Principe de base du test logiciel - Les différentes étapes

Plus en détail

Application au protocole POTS

Application au protocole POTS Présentation de la boîte à outils CADP: Application au protocole POTS Benoît Fraikin et Jacob Tchoumtchoua Groupe de Recherche en Génie Logiciel Département de Mathématiques et d Informatique Université

Plus en détail

Oracle Database 10g: Les fondamentaux des langages SQL et PL/SQL

Oracle Database 10g: Les fondamentaux des langages SQL et PL/SQL Oracle University Appelez-nous: +33 (0) 1 57 60 20 81 Oracle Database 10g: Les fondamentaux des langages SQL et PL/SQL Durée: 5 Jours Description Ce cours s'adresse aux utilisateurs d'oracle8i, Oracle9i

Plus en détail

Défense et illustration des algèbres de processus

Défense et illustration des algèbres de processus Défense et illustration des algèbres de processus Hubert Garavel INRIA Rhône-Alpes / VASY 655, avenue de l Europe F-38330 Montbonnot Saint-Martin RÉSUMÉ. Les algèbres de processus sont un formalisme mathématique

Plus en détail

Synthèse PL SQL ORACLE. Declaration des variables, des constants, des exceptions et des curseurs.

Synthèse PL SQL ORACLE. Declaration des variables, des constants, des exceptions et des curseurs. Synthèse PL SQL ORACLE Bloc PL-SQL DECLARE Declaration des types, des variables, des constantes, des exceptions et des curseurs. BEGIN [nom du bloc] EXCEPTION Traitement des erreurs END [nom du bloc] Declaration

Plus en détail

Types de données et objets

Types de données et objets Types de données et objets VL A D Y RA V E L O M A N A N A Licence 1 S2 Université Denis Diderot (P7). vlad@liafa.jussieu.fr LIAFA Bureau 6A13. 175, rue Chevaleret Ravelomanana Vlady Types de données et

Plus en détail

Janvier 2015. Licence 3 info Université de Lille 1. Vers C++ venant de C et de Java. Adrien Poteaux et Alexandre Sedoglavic.

Janvier 2015. Licence 3 info Université de Lille 1. Vers C++ venant de C et de Java. Adrien Poteaux et Alexandre Sedoglavic. Vers C++ venant Licence 3 info Université de Lille 1 Janvier 2015 Généralités Le C++ est un langage de programmation développé à partir de 1980 par Bjarne Stroustrup. Nous utiliserons la normalisation

Plus en détail

Modélisation Principe Autre principe

Modélisation Principe Autre principe Modélisation Principe : un modèle est une abstraction permettant de mieux comprendre un objet complexe (bâtiment, économie, atmosphère, cellule, logiciel, ). Autre principe : un petit dessin vaut mieux

Plus en détail

Génie logiciel avancé

Génie logiciel avancé Université Paris-Sud L3 MIAGE apprentissage Année 2014-2015 Génie logiciel avancé Conception (suite) Delphine Longuet delphine.longuet@lri.fr Objectifs Objectifs de la conception Préparer l'implémentation

Plus en détail

Programmation orientée objet TP 1 Prise en main de l environnement Java

Programmation orientée objet TP 1 Prise en main de l environnement Java Programmation orientée objet TP 1 L2 MPCIE Prise en main de l environnement Java Exercice 1 Nous désirons développer un programme pour la gestion (très simplifiée) d'un parc de véhicules destinés à la

Plus en détail

Devoir Surveillé informatique MP, PC, PSI

Devoir Surveillé informatique MP, PC, PSI NOM : Classe : Devoir Surveillé informatique MP, PC, PSI L utilisation des calculatrices n est pas autorisée pour cette épreuve. Le langage de programmation choisi est Python. L espace laissé pour les

Plus en détail

Une introduction aux méthodes formelles

Une introduction aux méthodes formelles Une introduction aux méthodes formelles Slide 1 Guy Tremblay Dépt. d informatique, UQAM Montréal, Qué. MGL7260 Exigences et spécifications de systèmes logiciels UQAM 20 mars 2002 Plan de la présentation

Plus en détail

Les Fichiers en Pascal

Les Fichiers en Pascal Les Fichiers en Pascal Université de Toulouse II DEUG MASS Année 2004-2005 Patricia PASCAL < ppascal@laas.fr > - Page 1 / 31 - Plan du cours sur les fichiers les fichiers, pourquoi, comment? (p3) les différents

Plus en détail

Introduction à la programmation avec Java

Introduction à la programmation avec Java Introduction à la programmation avec Java UFR Sciences de Nice Licence Math-Info 2006-2007 Module L1I1 Frédéric MALLET Jean-Paul ROY Ressources sur le langage Java Conception objet en Java avec BlueJ :

Plus en détail

Traduction de programmes Lustre V6 en Scade

Traduction de programmes Lustre V6 en Scade Université Joseph Fourier Département Licence Sciences & Technologie RAPPORT DE STAGE Traduction de programmes Lustre V6 en Scade Mamadou NDIAYE Juillet 2015 Laboratoire d accueil : Verimag Directeur du

Plus en détail

Le but de cet article est de présenter de façon non-exhaustive le langage SysML.

Le but de cet article est de présenter de façon non-exhaustive le langage SysML. Date : 30 septembre 2010 Auteur : Guillaume FINANCE UML, langage de modélisation très répandu pour les développements logiciels, a été utilisé et adapté pour définir un langage de modélisation des systèmes

Plus en détail

En 2000 l OMG propose une approche nommée MDA Model Driven Architecture, S appuyant sur le standard UML pour

En 2000 l OMG propose une approche nommée MDA Model Driven Architecture, S appuyant sur le standard UML pour MDA (Model Driven Architecture) Ingénierie logicielle guidée par les modèles S.N Historique: En 2000 l OMG propose une approche nommée MDA Model Driven Architecture, S appuyant sur le standard UML pour

Plus en détail

Simulation et validation

Simulation et validation 1 Une bonne maîtrise de la conception passe par la validation de chaque étape Ce que fait le système (cahier des charges) Spécification de niveau N SIMULATIONS simulation comportementale : REFERENCE simulation

Plus en détail

ISBN : 2-212-11407-9

ISBN : 2-212-11407-9 Groupe Eyrolles, 2005, ISBN : 2-212-11407-9 Table des matières Avant-propos................................................ XV CHAPITRE 1 Introduction..................................................

Plus en détail

Les méthodes formelles dans le cycle de vie. Virginie Wiels ONERA/DTIM Virginie.Wiels@onera.fr

Les méthodes formelles dans le cycle de vie. Virginie Wiels ONERA/DTIM Virginie.Wiels@onera.fr Les méthodes formelles dans le cycle de vie Virginie Wiels ONERA/DTIM Virginie.Wiels@onera.fr Plan Introduction Différentes utilisations possibles Différentes techniques pour différentes propriétés à différents

Plus en détail

Introduction à l algorithmique et à la. de programmation.

Introduction à l algorithmique et à la. de programmation. Introduction 2006/4/16 11:53 page 1 #1 Introduction à l algorithmique et à la programmation Jean-Éric Pin Cette section de l encyclopédie est consacrée à trois outils fondamentaux de l informatique : l

Plus en détail

Collections d objets (de taille variable)

Collections d objets (de taille variable) Introduction à la programmation en Java Frédéric MALLET Jean-Paul ROY UFR Sciences de Nice Licence Math-Info 2006-2007 Module L1I1 10-1 Où en sommes-nous? Nous savons rédiger le texte d une classe d objets,

Plus en détail

Filière ISI Ingénierie des Systèmes d Information

Filière ISI Ingénierie des Systèmes d Information Filière ISI Ingénierie des Systèmes d Information Claudia Roncancio Gwen Salaün Laboratoire d Informatique de Grenoble Prenom.Nom@imag.fr 1 Filière ISI Ingénierie des Systèmes d Information Exemples de

Plus en détail

Vérification Statique de Programmes Répartis

Vérification Statique de Programmes Répartis Vérification Statique de Programmes Répartis Fabien Dagnat Lundi 28 mai 2001 Contexte Typage des acteurs Modélisation par un calcul de processus (Cap) Systèmes de type pour Cap Problème : Cap centré sur

Plus en détail

M3301-2: Méthodologie de la production de logiciels Modélisation et construction des logiciels (C. Attiogbé) Travaux dirigés/pratiques - 2015/2016

M3301-2: Méthodologie de la production de logiciels Modélisation et construction des logiciels (C. Attiogbé) Travaux dirigés/pratiques - 2015/2016 M3301-2: Méthodologie de la production de logiciels Modélisation et construction des logiciels (C. Attiogbé) Travaux dirigés/pratiques - 2015/2016 encadrés par Christian Attiogbé, Amine Aouadhi Cahier

Plus en détail

Terminologie informatique. Fonctions AXIOMES. Spécification algébrique

Terminologie informatique. Fonctions AXIOMES. Spécification algébrique Fonctions Une fonction partielle F d un ensemble A de départ ou domaine (domain en anglais) dans un ensemble d arrivée B ou co-domaine (range en anglais) associe à chaque élément a de A au plus un élément

Plus en détail

Sommaire. Introduction à la compilation. Notion de compilation. Notion de compilation. Notion de compilation. Notion de compilation

Sommaire. Introduction à la compilation. Notion de compilation. Notion de compilation. Notion de compilation. Notion de compilation Introduction à la compilation A. DARGHAM Faculté des Sciences Oujda Sommaire Environnement d un compilateur Schéma global d un compilateur Caractéristiques d un bon compilateur Définition Un compilateur

Plus en détail

Master Informatique Fondamentale - M1 Compilation

Master Informatique Fondamentale - M1 Compilation Master Informatique Fondamentale - M1 Compilation Systèmes de types Paul Feautrier ENS de Lyon Paul.Feautrier@ens-lyon.fr perso.ens-lyon.fr/paul.feautrier 8 février 2007 1 / 20 Système de types Un type

Plus en détail

18 h CM (F. Maurel) + 16 h TD/TP (F. Maurel / T. Roy)

18 h CM (F. Maurel) + 16 h TD/TP (F. Maurel / T. Roy) Présentation cours 18 h CM (F. Maurel) + 16 h TD/TP (F. Maurel / T. Roy) 5/6 h Python 2,5/2 h Introduction à l'ihm (démarche participative centrée utilisateur) + Mise en place des groupes 2,5/2 h : Méthodes

Plus en détail

Bases de données - Introduction

Bases de données - Introduction Bases de données - Introduction Serge Abiteboul INRIA April 3, 2009 Serge Abiteboul (INRIA) Bases de données - Introduction April 3, 2009 1 / 29 Contact Serge Abiteboul I.N.R.I.A., Saclay, Ile de France

Plus en détail

Cours PL/SQL. Cours PL/SQL. E.Coquery. emmanuel.coquery@liris.cnrs.fr

Cours PL/SQL. Cours PL/SQL. E.Coquery. emmanuel.coquery@liris.cnrs.fr Cours PL/SQL E.Coquery emmanuel.coquery@liris.cnrs.fr Programmation au sein du SGBD Pourquoi? Les contraintes prédéfinies ne sont pas toujours suffisantes. Exemple : tout nouveau prix pour un CD doit avoir

Plus en détail

Cours Bases de données 2ème année IUT

Cours Bases de données 2ème année IUT Cours Bases de données 2ème année IUT Cours 5 : PL/SQL : ou comment faire plus avec ORACLE 3ème partie Anne Vilnat http://www.limsi.fr/individu/anne/cours Plan 1 Curseurs et mise à jour 2 Paquetages Definition

Plus en détail

Un Survol des Méthodes Formelles pour Java Card TM

Un Survol des Méthodes Formelles pour Java Card TM Réunion PROGSI : Sécurité Java Card TM Un Survol des Méthodes Formelles pour Java Card TM d.rouillardserma.com sauveronlabri.fr http://dept-info.labri.u-bordeaux.fr/~sauveron 21 novembre 2002 Plan L architecture

Plus en détail

Introduction à la Programmation 1

Introduction à la Programmation 1 Introduction à la Programmation 1 Séance 7 de cours/td Université Paris-Diderot Objectifs: Savoir écrire un programme en entier (structure du programme avec une procédure main et des déclarations de fonctions,

Plus en détail

Concepts des langages de. Introduction à Clojure

Concepts des langages de. Introduction à Clojure Concepts des langages de programmation Introduction à Clojure Plan C'est quoi clojure? Types et structures de données Fonctions et expressions dans Clojure Commentaires en Clojure Définition de variables

Plus en détail

Chapitre 1 Installer MySQL 5 21

Chapitre 1 Installer MySQL 5 21 Chapitre 1 Installer MySQL 5 21 1.1. Les outils nécessaires... 22 1.2. Télécharger et installer le serveur MySQL... 22 Télécharger la dernière version... 22 Lancer l installation sous Windows... 23 Lancer

Plus en détail

Cours d Analyse, Algorithmique Elements de programmation

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

Plus en détail

Analyse de la complexité algorithmique (1)

Analyse de la complexité algorithmique (1) Analyse de la complexité algorithmique (1) L analyse de la complexité telle que nous l avons vue jusqu à présent nous a essentiellement servi à déterminer si un problème est ou non facile (i.e. soluble

Plus en détail

Licence Fondamentale Informatique de Gestion

Licence Fondamentale Informatique de Gestion Licence Fondamentale Informatique de Gestion Domaine : Science et Technologie d Information Mention : Informatique de Gestion Parcours : Informatique de Gestion NB : Parcours National pour tous les niveaux

Plus en détail

Framework à but pédagogique sous Linux

Framework à but pédagogique sous Linux Travail de diplôme Framework à but pédagogique sous Linux Plan de la présentation Introduction Environnements Techniques développées Implémentation Résultat Conclusion 1 Introduction Framework Outil de

Plus en détail

1 Les arbres binaires en Java

1 Les arbres binaires en Java Université de Nice-Sophia Antipolis Deug MIAS-MI 1 Algorithmique & Programmation 2002 2003 TP N 10 Arbres binaires Buts : structuration des arbres binaires en Java. classes internes. objets de parcours.

Plus en détail

Introduction au langage python

Introduction au langage python Introduction au langage python Gauthier Picard SMA/G2I/ENS Mines Saint-Etienne gauthierpicard@emsefr Introduction au langage python Gauthier Picard 1 / 36 Sommaire 1 Les bases de Python 2 Fonctions et

Plus en détail

EXPRESSION DES BESOINS

EXPRESSION DES BESOINS PLAN CYCLE DE VIE D'UN LOGICIEL EXPRESSION DES BESOINS SPÉCIFICATIONS DU LOGICIEL CONCEPTION DU LOGICIEL LA PROGRAMMATION TESTS ET MISE AU POINT DOCUMENTATION CONCLUSION C.Crochepeyre Génie Logiciel Diapason

Plus en détail

Algorithmique avancée en Python

Algorithmique avancée en Python Algorithmique avancée en Python... et non pas Python avancé Denis Robilliard sept. 2014 1 Introduction Objectifs du cours connaître un panel d algorithmes standards : énumération, tris, backtracking, listes,

Plus en détail