Chapitre 5 Le Langage LOTOS 5 LOTOS 1

  • Slides: 72
Download presentation
Chapitre 5. Le Langage LOTOS 5. LOTOS… -1 Ingénierie des protocoles - 2ème année

Chapitre 5. Le Langage LOTOS 5. LOTOS… -1 Ingénierie des protocoles - 2ème année N 7 Télécom et Réseaux Language Of Temporal Ordering Specification

5. 1. Introduction 5. LOTOS… -2 Ingénierie des protocoles - 2ème année N 7

5. 1. Introduction 5. LOTOS… -2 Ingénierie des protocoles - 2ème année N 7 Télécom et Réseaux - LOTOS en bref… - Les versions du langage - Le plan du chapitre

5. 1. LOTOS : introduction En bref… LOTOS = Process Algebra (CCS & CSP)

5. 1. LOTOS : introduction En bref… LOTOS = Process Algebra (CCS & CSP) + Abstract Data Type Algebra (ACT-ONE) => ISO Standard: IS 8807 (1987) => véhicule des données => permet la synchronisation (rendez-vous) 5. LOTOS… -3 Ingénierie des protocoles - 2ème année N 7 Télécom et Réseaux – En LOTOS, un système distribué est représenté par un ensemble de processus communiquant – Un processus = une boîte noire capable d'interagir avec son environnement (e. g. d'autres processus) et d'effectuer des actions internes – Interactions atomiques = événements – Atomique = instantané et un seul par instant – Les événements sont produits b c par des « points d'interaction » appelés « portes » – Un événement = support de l'interaction a

5. 1. LOTOS : introduction En bref… Algèbre de processus = un cadre mathématique

5. 1. LOTOS : introduction En bref… Algèbre de processus = un cadre mathématique (algèbre) qui permet de décrire et d'analyser des processus communicants => algèbre = règles de construction des processus + lois de composition internes définies par des axiomes => possibilité de raisonner sur les termes de l'algèbre (i. e. , les processus) => analysibilité des processus • Théorie des automates • Théorie des réseaux de PETRI • Algèbre de processus CSP (Communicating Sequential Processes) : C. A. R. Hoare (1978) => occam + Transputer => source d'inspiration du langage ADA • Algèbre de processus CCS ( Calculus of Communicating Systems) : R. Milner (1981) => LOTOS 5. LOTOS… -4 Ingénierie des protocoles - 2ème année N 7 Télécom et Réseaux Historique :

5. 1. LOTOS : introduction En bref… Types Abstraits de Données = un cadre

5. 1. LOTOS : introduction En bref… Types Abstraits de Données = un cadre mathématique (algèbre) qui permet de décrire et d'analyser des formats de données => algèbre = règles de construction des données + lois de composition internes définies par des axiomes => possibilité de raisonner sur les termes de l'algèbre (i. e. , les données) => analysibilité des données Historique : => la logique formelle => la théorie axiomatique des ensembles => le -calcul => la théorie des types • Théorie des types => les langages de programmation typés (Pascal, ADA…) => les types abstraits de données (ACT-ONE… ) => Programmation objet 5. LOTOS… -5 Ingénierie des protocoles - 2ème année N 7 Télécom et Réseaux • La crise des fondements mathématiques (début XXème siècle)

5. 1. LOTOS : introduction LOTOS : trois versions principales – Basic LOTOS :

5. 1. LOTOS : introduction LOTOS : trois versions principales – Basic LOTOS : processus sans données – Full LOTOS : processus avec données – Enhancement of LOTOS (E-LOTOS) : normalisé ISO/IEC 15437, 2001 Ingénierie des protocoles - 2ème année N 7 Télécom et Réseaux 5. LOTOS… -6

5. 1. LOTOS : introduction Plan du chapitre – 5. 1. Introduction – 5.

5. 1. LOTOS : introduction Plan du chapitre – 5. 1. Introduction – 5. 2. Algèbre de processus : aspects principaux – 5. 3. Basic LOTOS => sans les données – 5. 4. Exemple (Basic LOTOS) – 5. 5. Full LOTOS – 5. 6. Les données dans LOTOS : => types abstraits de données (ADT) – 5. 7. Exemple (Full LOTOS) – 5. 8. Résumé et conclusion sur LOTOS 5. LOTOS… -7 Ingénierie des protocoles - 2ème année N 7 Télécom et Réseaux => avec les données

5. 2. Algèbre de processus : aspects principaux 5. LOTOS… -8 Ingénierie des protocoles

5. 2. Algèbre de processus : aspects principaux 5. LOTOS… -8 Ingénierie des protocoles - 2ème année N 7 Télécom et Réseaux - Les concepts principaux… - Les principales lois de compositions… - Le coté algébrique : l'axiomatisation…

5. 2. Algèbre de processus : aspects principaux Concepts fondamentaux… – Objet : spécification

5. 2. Algèbre de processus : aspects principaux Concepts fondamentaux… – Objet : spécification des systèmes concurrents en insistant sur les aspects communication et synchronisation => Un alphabet d'actions l'évolution d'un processus est décrite à l'aide des noms des actions qu'il entreprend un processus = une expression régulière obtenue par la combinaison de noms d'action (alphabet) à l'aide d'opérateurs prédéfinis => Des constantes des processus élémentaires : – STOP : processus qui ne termine pas 5. LOTOS… -9 Ingénierie des protocoles - 2ème année N 7 Télécom et Réseaux => Des lois de compositions

5. 2. Algèbre de processus : aspects principaux lire Les principaux opérateurs des algèbres

5. 2. Algèbre de processus : aspects principaux lire Les principaux opérateurs des algèbres de processus… traiter – la séquence (préfixage) notée « ; » lire ; traiter ; ecrire ; STOP ecrire stop – le choix non déterministe noté « [] » lire – le parallélisme avec communication synchrone noté « | […] | » (a ; b ; c ; STOP) | [a, b] | (a ; d ; b ; STOP) 5. LOTOS… -10 a ouvrir stop a d b b stop c stop Ingénierie des protocoles - 2ème année N 7 Télécom et Réseaux (lire ; STOP) stop [] (ecrire ; ((traiter ; STOP) traiter [] (ouvrir ; STOP))) ecrire

5. 2. Algèbre de processus : aspects principaux Les caractéristiques des algèbres de processus…

5. 2. Algèbre de processus : aspects principaux Les caractéristiques des algèbres de processus… – axiomatisation des opérateurs : • • • P [] Q = Q [] P P [] (Q [] R) = (P [] Q) [] R P |[L]| Q = Q |[L]| P (a; P) |[L]| (b; Q) = (a; (P |[L]| (b; Q))) [] (b; ((a; P)|[L]|Q)) si a, b L … => Un cadre mathématique support de LOTOS. 5. LOTOS… -11 Ingénierie des protocoles - 2ème année N 7 Télécom et Réseaux => possibilité de manipulations formelles symboliques sur les termes de l'algèbre => méthodes d'analyses formelles.

5. 3. Basic LOTOS => seuls les comportements sont spécifiés => pas de spécification

5. 3. Basic LOTOS => seuls les comportements sont spécifiés => pas de spécification de données 5. LOTOS… -12 Ingénierie des protocoles - 2ème année N 7 Télécom et Réseaux Basic LOTOS = sous-ensemble de LOTOS sans les données

5. 3. Basic LOTOS Pour commencer… – Le comportement d'un processus détermine, à tout

5. 3. Basic LOTOS Pour commencer… – Le comportement d'un processus détermine, à tout moment, quelles actions sont possibles comme action suivante du processus => une action représente l'identification d'une porte. L'environnement d'un processus est composé des autres processus LOTOS, de l'utilisateur, ou d'autres systèmes externes à LOTOS 5. LOTOS… -13 Ingénierie des protocoles - 2ème année N 7 Télécom et Réseaux On distingue – des actions qu'un processus peut effectuer de façon interne et indépendante (par souci d'abstraction) : i appelée action interne ou silencieuse – des actions qui nécessitent une synchronisation avec l'environnement pour être effectuées : elles sont alors offertes sur des points de synchronisation appelées portes (gates)

5. 3. Basic LOTOS Pour continuer… – La structure du langage : Nom du

5. 3. Basic LOTOS Pour continuer… – La structure du langage : Nom du processus Liste des portes du processus process <process_id> <parameter_part> : = Expression régulière définissant le comportement du processus a Exemple : process P [a, b, c] : = … endproc 5. LOTOS… -14 b P c Ingénierie des protocoles - 2ème année N 7 Télécom et Réseaux <behaviour_expression> endproc

5. 3. Basic LOTOS Les opérateurs et constructions du langage – Le processus élémentaire

5. 3. Basic LOTOS Les opérateurs et constructions du langage – Le processus élémentaire stop Processus qui ne peut rien faire process inaction [a, b] : = stop endproc 5. LOTOS… -15 b inaction Ingénierie des protocoles - 2ème année N 7 Télécom et Réseaux => stop est assimilé à un deadlock a

5. 3. Basic LOTOS Les opérateurs et constructions du langage – préfixage : a

5. 3. Basic LOTOS Les opérateurs et constructions du langage – préfixage : a ; B • a est une action atomique • B est une expression de comportement out_data Exemple : process Q [in_data, out_data] : = in_data ; out_data ; stop endproc stop in_data out_data in_data P out_data stop 5. LOTOS… -16 P out_data Ingénierie des protocoles - 2ème année N 7 Télécom et Réseaux process P [out_data] : = out_data ; stop endproc

5. 3. Basic LOTOS Les opérateurs et constructions du langage – Choix non déterminste

5. 3. Basic LOTOS Les opérateurs et constructions du langage – Choix non déterminste : B 1 [] B 2 • B 1 et B 2 sont des expressions de comportement • B 1 [] B 2 se comporte comme B 1 ou comme B 2 selon le comportement de l'environnement du processus ou de façon non-déterministe – si l'environnement offre l'action initiale de B 1, alors B 1 est sélectionné – si l'environnement offre l'action initiale de B 2, alors B 2 est sélectionné • Axiomes : B 1 [] B 2 = B 2 [] B 1 B [] B = B B 1 [] (B 2 [] B 3) = (B 1 [] B 2) [] B 3 … (commutativité) (idempotence) (associativité) Exemple : process choix [a, b] : = a ; stop [] a b ; stop endproc 5. LOTOS… -17 a b stop b choix Ingénierie des protocoles - 2ème année N 7 Télécom et Réseaux – –

5. 3. Basic LOTOS Les opérateurs et constructions du langage Exemple : process duplex

5. 3. Basic LOTOS Les opérateurs et constructions du langage Exemple : process duplex [in_a, in_b, out_a, out_b] : = in_a ; (in_b ; (out_a ; out_b ; stop [] out_b ; out_a ; stop) [] out_a ; in_b ; out_b ; stop) [] in_b ; (in_a ; (out_b ; out_a ; stop [] out_a ; out_b ; stop) [] out_b ; in_a ; ou_a ; stop) endproc in_b out_a duplex in_b out_b in_b out_a in_a Ingénierie des protocoles - 2ème année N 7 Télécom et Réseaux in_a out_a out_b in_b out_a out_b out_a stop 5. LOTOS… -18 stop

5. 3. Basic LOTOS Les opérateurs et constructions du langage – Instanciation de processus

5. 3. Basic LOTOS Les opérateurs et constructions du langage – Instanciation de processus : Instanciation du processus P en séquence de l'action in_data Exemple : process Q' [in_data, out_data] : = in_data ; P[out_data] where process P [a] : = a ; stop endproc in_data P[out_data] équivalent à out_data stop 5. LOTOS… -19 out_data stop Ingénierie des protocoles - 2ème année N 7 Télécom et Réseaux in_data

5. 3. Basic LOTOS Les opérateurs et constructions du langage – Instanciation de processus

5. 3. Basic LOTOS Les opérateurs et constructions du langage – Instanciation de processus : Exemple : process generator [in_data, out_data] : = in_data ; out_data ; generator[in_data, out_data] endproc 5. LOTOS… -20 a out_data b b a Ingénierie des protocoles - 2ème année N 7 Télécom et Réseaux process abba [a, b] : = a ; b ; abba[b, a] endproc in_data

5. 3. Basic LOTOS Les opérateurs et constructions du langage – Parallélisme sans interaction

5. 3. Basic LOTOS Les opérateurs et constructions du langage – Parallélisme sans interaction : B 1 ||| B 2 • B 1 et B 2 sont des expressions de comportement • B 1 ||| B 2 se comporte comme B 1 et comme B 2 sans interactions • Axiomes : – – – B 1 ||| B 2 = B 2 ||| B 1 ||| (B 2 ||| B 3) = (B 1 ||| B 2) ||| B 3 B ||| stop = B (a; B 1) ||| (b; B 2) = a; (B 1 ||| (b; B 2)) [] b; ((a; B 1) ||| B 2) … process parallel [a, b] : = a ; stop ||| endproc b ; stop a stop équivalent à 5. LOTOS… -21 b stop a b b stop a stop Ingénierie des protocoles - 2ème année N 7 Télécom et Réseaux Exemple :

5. 3. Basic LOTOS Les opérateurs et constructions du langage Exemple : process duplex

5. 3. Basic LOTOS Les opérateurs et constructions du langage Exemple : process duplex [in_a, in_b, out_a, out_b] : = line[in_a, out_a] ||| line[in_b, out_b] 5. LOTOS… -22 out_a line[in_a, ou_a] duplex line[in_b, out_b] in_b out_b Ingénierie des protocoles - 2ème année N 7 Télécom et Réseaux where process line[in, out] : = in ; out ; stop endproc in_a

5. 3. Basic LOTOS Les opérateurs et constructions du langage – Parallélisme avec interaction

5. 3. Basic LOTOS Les opérateurs et constructions du langage – Parallélisme avec interaction : B 1 |[a 1, …, an]| B 2 • B 1 et B 2 sont des expressions de comportement • B 1 |[a 1, …, an]| B 2 se comporte comme B 1 et comme B 2 en synchronisant chaque action ai de B 1 avec l'action ai de B 2 => chaque ai de B 1 est exécutée simultanément avec l'action ai de B 2 (et inversement) • Axiomes : B 1 |[ ]| B 2 = B 1 ||| B 2 B 1 |[L]| B 2 = B 2 |[L]| B 1 (a; B 1) |[L]| (b; B 2) = a; (B 1 |[L]| (b; B 2)) [] b; ((a; B 1) |[L]| B 2) si a, b L (a; B 1) |[L]| (b; B 2) = a; (B 1 |[L]| B 2) si a L (a; B 1) |[L]| (b; B 2) = stop a, b L … Exemple : b process parallel [a, b] : = a ; stop |[a]| endproc 5. LOTOS… -23 b ; a ; stop a a stop Ingénierie des protocoles - 2ème année N 7 Télécom et Réseaux – – –

5. 3. Basic LOTOS Les opérateurs et constructions du langage Exemple : process two_buffers

5. 3. Basic LOTOS Les opérateurs et constructions du langage Exemple : process two_buffers [in, out] : = in buff[in, middle] |[middle]| buff[middle, out] middle buff[middle, out] out in middle stop 5. LOTOS… -24 middle out stop Ingénierie des protocoles - 2ème année N 7 Télécom et Réseaux where process buff[in, out] : = in ; out ; stop endproc buff[in, middle]

5. 3. Basic LOTOS Les opérateurs et constructions du langage Exemple : int 1

5. 3. Basic LOTOS Les opérateurs et constructions du langage Exemple : int 1 int 2 entity 1 entity 2 int 3 int 4 service entity 1[int 1, int 3] |[int 3]| service[int 3, int 4] |[int 4]| entity 1[int 2, int 4] where. . . endproc 5. LOTOS… -25 Ingénierie des protocoles - 2ème année N 7 Télécom et Réseaux process protocol-v 1 [int 1, int 2, int 3] : =

5. 3. Basic LOTOS Les opérateurs et constructions du langage Exemple : (autre modélisation

5. 3. Basic LOTOS Les opérateurs et constructions du langage Exemple : (autre modélisation équivalente) int 1 int 2 entity 1 entity 2 int 4 int 3 service (entity 1[int 1, int 3] |[int 3, int 4]| service[int 3, int 4] where. . . endproc 5. LOTOS… -26 ||| entity 1[int 2, int 4]) Ingénierie des protocoles - 2ème année N 7 Télécom et Réseaux process protocol-v 2 [int 1, int 2, int 3] : =

5. 3. Basic LOTOS Les opérateurs et constructions du langage – Hiding : hide

5. 3. Basic LOTOS Les opérateurs et constructions du langage – Hiding : hide a 1, …, an in B • B est une expression de comportement • a 1, …, an sont des actions offertes par B et cachées à l'environnement de B => ces actions ne peuvent pas se synchroniser avec des actions de l'environnement => a 1, …, an sont internes à B • Axiomes : – hide a, b in B = hide a in (hide b in B) – hide a in a ; B = i ; hide a in B int 1 – … entity 1 int 2 int 3 int 4 service process protocol-v 3 [int 1, int 2] : = hide int 3, int 4 in (entity 1[int 1, int 3] |[int 3, int 4]| service[int 3, int 4] where. . . endproc 5. LOTOS… -27 ||| entity 1[int 2, int 4]) Ingénierie des protocoles - 2ème année N 7 Télécom et Réseaux entity 2

5. 3. Basic LOTOS Les opérateurs et constructions du langage – Terminaison avec succès

5. 3. Basic LOTOS Les opérateurs et constructions du langage – Terminaison avec succès : le processus élémentaire exit • processus qui ne fait rien et qui retourne une terminaison avec succès • (=> similaire respectivement à « return(1) » en C) – Terminaison sans succès : le processus élémentaire stop • processus deadlock • (=> similaire respectivement à « return(0) » en C) Ingénierie des protocoles - 2ème année N 7 Télécom et Réseaux 5. LOTOS… -28

5. 3. Basic LOTOS Les opérateurs et constructions du langage – Séquence de processus

5. 3. Basic LOTOS Les opérateurs et constructions du langage – Séquence de processus : B 1 >> B 2 • B 2 est exécuté si et seulement si B 1 termine avec succès (en exécutant exit) • Remarque : si B 1 est composé de plusieurs sous-processus en parallèle, B 1 termine avec succès si et seulement si tous ses sous-processus terminent avec succès. • Axiomes : B 1 >> (B 2 >> B 3) = (B 1 >> B 2) >> B 3 stop >> B = stop exit >> B = i; B (a ; B 1) >> B 2 = a ; (B 1 >> B 2) … Exemple : process sender [Con. Req, Conf, Data] : = connection_phase[COn. Req, Conf] >> data_phase[Data] where process connection_phase[CR, CC] : = CR; CC; exit endprocess data_phase[D] : = D; data_phase[D] endproc 5. LOTOS… -29 Ingénierie des protocoles - 2ème année N 7 Télécom et Réseaux – – –

5. 3. Basic LOTOS Les opérateurs et constructions du langage – Préemption de processus

5. 3. Basic LOTOS Les opérateurs et constructions du langage – Préemption de processus : B 1 [> B 2 • B 1 peut être interrompue à tout moment par B 2. Alors B 2 continue à s'exécuter sans reprise de B 1. • Axiomes : – – – B 1 [> (B 2 [> B 3) = (B 1 [> B 2) [> B 3 stop [> B = B B [> stop = B (a; B 1) [> (b; B 2) = (a ; B 1 [> (b; B 2)) [] (b; B 2) … process data_transfer [Dat. Req, Dat. Conf, Dis. Req] : = normal_transfer[Dat. Req, Dat. Conf] [> disconnect_phase[Dis. Req] where process normal_transfer[DR, DC] : = CR; CC; normal_transfert[DR, DC] endprocess disconnect_phase[DR] : = DR; stop endproc 5. LOTOS… -30 Ingénierie des protocoles - 2ème année N 7 Télécom et Réseaux Exemple :

5. 4. Basic LOTOS : exemple 5. LOTOS… -31 Ingénierie des protocoles - 2ème

5. 4. Basic LOTOS : exemple 5. LOTOS… -31 Ingénierie des protocoles - 2ème année N 7 Télécom et Réseaux - Les trois philosophes en LOTOS

5. 4. Basic LOTOS : exemple Un exemple… : les 3 philosophes revisités =>

5. 4. Basic LOTOS : exemple Un exemple… : les 3 philosophes revisités => système = • • • 3 philosophes 3 fourchettes synchronisation entre les philosophes et les fourchettes pas de synchronisation entre philosophes pas de synchronisation entre fourchettes philo 3 philo 2 ? fourchette 1 fourchette 2 philo 1 5. LOTOS… -32 Ingénierie des protocoles - 2ème année N 7 Télécom et Réseaux fourchette 3

5. 4. Basic LOTOS : exemple Un exemple… : les 3 philosophes revisités 1.

5. 4. Basic LOTOS : exemple Un exemple… : les 3 philosophes revisités 1. Modélisation d'un philosophe • alphabet : – – – pense prd-fdroite prd-fgauche mange pose-fdroite pose-fgauche pense mange prd-fgauche prd-fdroite philo pose-fgauche pose-fdroite 5. LOTOS… -33 Ingénierie des protocoles - 2ème année N 7 Télécom et Réseaux process philo [pense, mange, prd-fdroite, prd-fgauche, pose-fdroite, pose-fgauche] : = pense; (prd-fdroite; exit ||| prd-fgauche; exit) >> mange; (pose-fdroite; exit ||| pose-fgauche; exit) >> philo[pense, mange, prd-fdroite, prd-fgauche, pose-fdroite, pose-fgauche] endproc

5. 4. Basic LOTOS : exemple Un exemple… : les 3 philosophes revisités 2.

5. 4. Basic LOTOS : exemple Un exemple… : les 3 philosophes revisités 2. Modélisation d'une fourchette • alphabet : – prise-droite, prise-gauche – rendue-droite, rendue-gauche prise-droite prise-gauche fourchette rendue-droite process fourche [prise-droite, rendue-droite, prise-gauche, rendue-gauche] : = (prise-droite ; rendu-droite ; exit [] prise-gauche ; rendue-gauche ; exit) >> fourche [prise-droite, rendue-droite, prise-gauche, rendue-gauche] endproc 5. LOTOS… -34 Ingénierie des protocoles - 2ème année N 7 Télécom et Réseaux rendue-gauche

5. 4. Basic LOTOS : exemple Un exemple… : les 3 philosophes revisités 3.

5. 4. Basic LOTOS : exemple Un exemple… : les 3 philosophes revisités 3. Modélisation des interactions • alphabet global 5. LOTOS… -35 Ingénierie des protocoles - 2ème année N 7 Télécom et Réseaux – philo 1 -pense, philo 1 - mange, philo 1 -prd-fdroite, philo 1 -pose-fdroite, philo 1 -prdfgauche, philo 1 -pose-fgauche, – philo 2 -pense, philo 2 - mange, philo 2 -prd-fdroite, philo 2 -pose-fdroite, philo 2 -prdfgauche, philo 2 -pose-fgauche, – philo 3 -pense, philo 3 - mange, philo 3 -prd-fdroite, philo 3 -pose-fdroite, philo 3 -prdfgauche, philo 3 -pose-fgauche, – fourchette 1 -prise-droite, fouchette 1 -rendue-droite, fourchette 1 -prise-gauche, fourchette 1 -rendue-gauche – fourchette 2 -prise-droite, fouchette 2 -rendue-droite, fourchette 2 -prise-gauche, fourchette 2 -rendue-gauche – fourchette 3 -prise-droite, fouchette 3 -rendue-droite, fourchette 3 -prise-gauche, fourchette 3 -rendue-gauche

5. 4. Basic LOTOS : exemple Un exemple… : les 3 philosophes revisités 3.

5. 4. Basic LOTOS : exemple Un exemple… : les 3 philosophes revisités 3. Modélisation des interactions • synchronisation : philo 1 -prd-fdroite avec fourchette 2 -prise-gauche philo 1 -pose-fdroite avec fourchette 2 -rendue-gauche philo 1 -prd-fgauche avec fourchette 1 -prise-droite philo 1 -pose-fgauche avec fourchette 1 -rendue-droite = fourche 2 -prise-gauche = fourche 2 -rendue-gauche = fourche 1 -prise-droite = fourche 1 -rendue-droite – – philo 2 -prd-fdroite avec fourchette 3 -prise-gauche philo 2 -pose-fdroite avec fourchette 3 -rendue-gauche philo 2 -prd-fgauche avec fourchette 2 -prise-droite philo 2 -pose-fgauche avec fourchette 2 -rendue-droite = fourche 3 -prise-gauche = fourche 3 -rendue-gauche = fourche 2 -prise-droite = fourche 2 -rendue-droite – – philo 3 -prd-fdroite avec fourchette 1 -prise-gauche philo 3 -pose-fdroite avec fourchette 1 -rendue-gauche philo 3 -prd-fgauche avec fourchette 3 -prise-droite philo 3 -pose-fgauche avec fourchette 3 -rendue-droite = fourche 1 -prise-gauche = fourche 1 -rendue-gauche = fourche 3 -prise-droite = fourche 3 -rendue-droite Ingénierie des protocoles - 2ème année N 7 Télécom et Réseaux 5. LOTOS… -36 – –

5. 4. Basic LOTOS : exemple Un exemple… : les 3 philosophes revisités 4.

5. 4. Basic LOTOS : exemple Un exemple… : les 3 philosophes revisités 4. Modélisation du système global process trois-philo [philo 1 -pense, philo 1 -mange, philo 2 -pense, philo 2 -mange, philo 3 -pense, philo 3 -mange] : = (suite page suivante) 5. LOTOS… -37 …/… Ingénierie des protocoles - 2ème année N 7 Télécom et Réseaux hide fourche 1 -prise-gauche, fourche 1 -rendue-gauche, fourche 1 -prise-droite, fourche 1 -rendue-droite, fourche 2 -prise-gauche, fourche 2 -rendue-gauche, fourche 2 -prise-droite, fourche 2 -rendue-droite, fourche 3 -prise-gauche, fourche 3 -rendue-gauche, fourche 3 -prise-droite, fourche 3 -rendue-droite in

5. 4. Basic LOTOS : exemple (philo[philo 1 -pense, philo 1 -mange, fourche 2

5. 4. Basic LOTOS : exemple (philo[philo 1 -pense, philo 1 -mange, fourche 2 -prise-gauche, fourche 1 -prise-droite, fourche 2 -rendue-gauche, fourche 1 -rendue-droite] ||| philo[philo 2 -pense, philo 2 -mange, fourche 3 -prise-gauche, fourche 2 -prise-droite, fourche 3 -rendue-gauche, fourche 2 -rendue-droite] ||| philo[philo 3 -pense, philo 3 -mange, fourche 1 -prise-gauche, fourche 3 -prise-droite, fourche 1 -rendue-gauche, fourche 3 -rendue-droite] (fourche[fourche 1 -prise-droite, fourche 2 -rendue-gauche, fourche 3 -prise-gauche, fourche 3 -rendue-droite ]| fourche 1 -rendue-droite, fourche 1 -prise-gauche, fourche 1 -rendue-gauche] ||| fourche[fourche 2 -prise-droite, fourche 2 -rendue-droite, fourche 2 -prise-gauche, fourche 2 -rendue-gauche] ||| fourche[fourche 3 -prise-droite, fourche 3 -rendue-droite, fourche 3 -prise-gauche, fourche 3 -rendue-gauche] ) where … endproc 5. LOTOS… -38 Ingénierie des protocoles - 2ème année N 7 Télécom et Réseaux |[fourche 1 -prise-gauche, fourche 1 -rendue-droite, fourche 2 -prise-gauche, fourche 2 -prise-droite, fourche 2 -rendue-droite, fourche 3 -rendue-gauche, fourche 3 -prise-droite, )

5. 4. Full LOTOS – échange de valeurs à travers des portes – synchronisation

5. 4. Full LOTOS – échange de valeurs à travers des portes – synchronisation par • "value passing" • "value matching" • "value génération" – prédicats et expressions gardées 5. LOTOS… -39 Ingénierie des protocoles - 2ème année N 7 Télécom et Réseaux - Les idées … - Les enrichissements par rapport à Basic LOTOS

5. 5. Full LOTOS = Basic LOTOS + les données => Augmentation de Basic

5. 5. Full LOTOS = Basic LOTOS + les données => Augmentation de Basic LOTOS avec • la spécification des données • leur utilisation dans les comportements => Enrichissement de la notion d'action : Une action = Les processus se synchronisent sur deux actions ssi – ils utilisent le même identificateur de porte – ils ont des listes de données en correspondance de même type – les contraintes sur les données sont satisfaites 5. LOTOS… -40 Ingénierie des protocoles - 2ème année N 7 Télécom et Réseaux – l'identification d'une porte – une liste de valeurs » requises (avec éventuellement des contraintes) » soumises aux autres processus – éventuellement une garde

5. 5. Full LOTOS Exemple d'actions en Full LOTOS – p ? x: nat

5. 5. Full LOTOS Exemple d'actions en Full LOTOS – p ? x: nat !1 [x>=0] • attend de l'environnement sur la porte p un entier positif ou nul, placé dans la variable x, puis émet la valeur 1. – p ? x: nat !0 [x<0] => Types de données : – Les valeurs de données et les expressions de données sont définies dans un langage de types de données abstraits : ACT-ONE 5. LOTOS… -41 Ingénierie des protocoles - 2ème année N 7 Télécom et Réseaux • attend de l'environnement sur la porte p un entier négatif, placé dans la variable x, puis émet la valeur 0.

5. 5. Full LOTOS Les opérateurs et constructions du langage – préfixage : a

5. 5. Full LOTOS Les opérateurs et constructions du langage – préfixage : a !E ; B • a est un identificateur de porte • E une valeur ou une expression de valeur • B est une expression de comportement => offre la valeur de E sur la porte a, puis exécute B a ? x: t ; B • a est un identificateur de porte • x est un nom de variable • t est un identificateur de sort (le domaine de valeurs de x) • B est une expression de comportement => place dans x une valeur de type t compatible avec les messages reçus sur la porte a 5. LOTOS… -42 Ingénierie des protocoles - 2ème année N 7 Télécom et Réseaux – préfixage :

5. 5. Full LOTOS Les opérateurs et constructions du langage • Synchronisation : value

5. 5. Full LOTOS Les opérateurs et constructions du langage • Synchronisation : value matching process g !E 1 • process g !E 2 Synchron. condition Type of interaction value(E 1) = value(E 2) value matching Effect synchronisation Synchronisation : value passing process g !E Synchron. condition Type of interaction value(E) t value passing Effect synchronisation et x=value(E) • Synchronisation : value generation process g ? x: t g ? y: u 5. LOTOS… -43 Synchron. condition Type of interaction t=u value generation Effect synchronisation et x=y=v où v est une valeur quelconque de la sort t Ingénierie des protocoles - 2ème année N 7 Télécom et Réseaux g ? x: t process

5. 5. Full LOTOS Les opérateurs et constructions du langage => généralisation aux échanges

5. 5. Full LOTOS Les opérateurs et constructions du langage => généralisation aux échanges multiples Exemple : A : = g !3 ? x : primitive ; B A' : = g !3 !connect_request ; B' A'' : = g !3 !true ; B'' => A'' ne peut pas se synchroniser avec A (car true n'est pas de type primitive) A''' : = g !4 !connect_request ; B''' => A''' ne peut pas se synchroniser avec A (car 3 4) 5. LOTOS… -44 Ingénierie des protocoles - 2ème année N 7 Télécom et Réseaux => A' peut se synchroniser avec A (si connect_request de type primitive)

5. 5. Full LOTOS Les opérateurs et constructions du langage => prédicat et expression

5. 5. Full LOTOS Les opérateurs et constructions du langage => prédicat et expression gardée Un prédicat P peut être associé à une action g ? x: t [P(x)] P(x) impose une restriction sur les valeurs possibles de x g 1(x: =0) g 1(x: =1) g 2(x) 5. LOTOS… -45 g 1(x: =2) stop Ingénierie des protocoles - 2ème année N 7 Télécom et Réseaux Exemple : g 1 ? x: nat [x<3] ; g 2 !x; stop

5. 5. Full LOTOS Les opérateurs et constructions du langage => mécanisme de négociation

5. 5. Full LOTOS Les opérateurs et constructions du langage => mécanisme de négociation de valeurs entre processus Exemple : g ? qos: nat [qos < max] ; B 1 |[g]| g ? qos: nat [qos > min] ; B 2 => équivalent à g ? qos: nat [qos < max and qos > min] ; (B 1 |[g]| B 2) => ~ Programmation par contraintes 5. LOTOS… -46 Ingénierie des protocoles - 2ème année N 7 Télécom et Réseaux => synchronisation possible uniquement sur une valeur de qos comprise en min et max

5. 5. Full LOTOS Les opérateurs et constructions du langage => prédicat et expression

5. 5. Full LOTOS Les opérateurs et constructions du langage => prédicat et expression gardée Une expression de comportement peut être précédée par une garde (i. e. , un prédicat et une flèche) [P(x)] -> B; B ne peut être exécuté que si P(x) est vrai. ([x>0] -> g !x ; exit [] [x<0] -> g!-x ; exit [] [x=0] -> erreur ; exit) >> B 5. LOTOS… -47 équivalent à (en pseudo code C) if x>0 then g(x); else if x<0 then g(-x) else erreur(); endif; B(); Ingénierie des protocoles - 2ème année N 7 Télécom et Réseaux Exemple :

5. 5. Full LOTOS Les opérateurs et constructions du langage => instanciation de processus

5. 5. Full LOTOS Les opérateurs et constructions du langage => instanciation de processus et passage de paramètres Un processus peut être paramétré par des variables typées et instancié par des valeurs Exemple : => exemple d'instanciation : compare[input, output](5, 10) 5. LOTOS… -48 Ingénierie des protocoles - 2ème année N 7 Télécom et Réseaux process compare [in, out](min, max: nat) : = in ? x: nat; ( [min<x<max] -> out !x; compare[in, out](min, max) [] [x<min] -> out !min; compare[in, out](x, max) [] [x>max] -> out !max; compare[in, out](min, x) ) endproc

5. 5. Full LOTOS Les opérateurs et constructions du langage => instanciation de processus

5. 5. Full LOTOS Les opérateurs et constructions du langage => instanciation de processus et passage de paramètres Exemple : g ? qos: nat [qos < max] ; B 1[a, b](qos) |[g]| g ? qos: nat [qos > min] ; B 2[c, d, e](qos) process B 1 [in, out](q: nat) : = … endprocess B 2 [toto, titi, tata](truc: nat) : = … endproc 5. LOTOS… -49 Ingénierie des protocoles - 2ème année N 7 Télécom et Réseaux où B 1 et B 2 sont des processus prenant en paramètre un nat

5. 6. Les Abstract Data Types dans LOTOS Ingénierie des protocoles - 2ème année

5. 6. Les Abstract Data Types dans LOTOS Ingénierie des protocoles - 2ème année N 7 Télécom et Réseaux 5. LOTOS… -50

5. 6. Les Abstract Data Types dans LOTOS Les Types abstraits de données –

5. 6. Les Abstract Data Types dans LOTOS Les Types abstraits de données – cadre formel (mathématique) pour la définition des types, leur ensemble de données, et leurs opérations => pas d'ambiguïté – pas de référence à l'implantation => abstrait (niveau modèle) => tout doit être écrit => ce qui n'est pas écrit est faux 5. LOTOS… -51 Ingénierie des protocoles - 2ème année N 7 Télécom et Réseaux – pas de propriétés implicites

5. 6. Les Abstract Data Types dans LOTOS Les Types abstraits de données dans

5. 6. Les Abstract Data Types dans LOTOS Les Types abstraits de données dans LOTOS (ACT-ONE) => Trois parties • déclaration des ensembles de valeurs (appelés "sort") sorts nat • déclaration des opérations manipulant les objets des sorts déclarées ! => permet de construire l'ensemble des termes de l'algèbre, c'est-à-dire des valeurs de la sort nat 0, succ(0), 0+0, 0+succ(0), succ(0))… => mais : à priori, rien n'indique 0+0 = 0, ni que succ(0)+succ(0)) = succ(succ(0))) => il manque les équations ! 5. LOTOS… -52 Ingénierie des protocoles - 2ème année N 7 Télécom et Réseaux opns succ : nat -> nat 0 : -> nat _+_: nat -> nat

5. 6. Les Abstract Data Types dans LOTOS Les Types abstraits de données dans

5. 6. Les Abstract Data Types dans LOTOS Les Types abstraits de données dans LOTOS (ACT-ONE) => Trois parties (suite) • définition des opérations par un ensemble d'axiomes Remarque : la commutativité et la distributivité de + découlent de ces deux équations eqns forall x, y : nat x+0 = x x+succ(y) = succ(x+y) (pour tout terme x, y nat) (x+0 et x représentent la même valeur) … valeur) • Les équations définissent une relation d'équivalence entre les termes de nat => chaque classe d'équivalence correspond à une valeur unique Ex. : la valeur 1 correspond à la classe {succ(0), succ(0)+0, 0+succ(0), succ(0+0), (succ(0)+0)+0, … } 5. LOTOS… -53 Ingénierie des protocoles - 2ème année N 7 Télécom et Réseaux Remarque : on peut écrire des axiomes conditionnels y=0 => x+y=x (si y=0, alors x+y et x représentent la même

5. 6. Les Abstract Data Types dans LOTOS Les Types abstraits de données dans

5. 6. Les Abstract Data Types dans LOTOS Les Types abstraits de données dans LOTOS (ACT-ONE) => Le type complet => définit les valeurs 0 = {0, 0+0, (0+0)+0, …} 1 = {succ(0), succ(0+0), …} 2 = {succ(0)), succ(0+0)), succ(0)+succ(0), …} … 5. LOTOS… -54 Ingénierie des protocoles - 2ème année N 7 Télécom et Réseaux type Nat_Number is sorts nat opns succ : nat -> nat 0 : -> nat _+_: nat -> nat eqns forall x, y : nat x+0 = x x+succ(y) = succ(x+y)

5. 6. Les Abstract Data Types dans LOTOS Les Types abstraits de données dans

5. 6. Les Abstract Data Types dans LOTOS Les Types abstraits de données dans LOTOS (ACT-ONE) => Héritage de type Nat_Number_with_multiplication is Nat_Number opns _*_: nat -> nat eqns forall x, y : nat 0*x = 0 succ(x)*y = (x*y) + y => structuration hiérarchique des types 5. LOTOS… -55 Ingénierie des protocoles - 2ème année N 7 Télécom et Réseaux => nat_number_with_multiplication hérite des sorts, opérations et équation de nat_number

5. 6. Les Abstract Data Types dans LOTOS En bref… : intérêt des Types

5. 6. Les Abstract Data Types dans LOTOS En bref… : intérêt des Types abstraits de données dans LOTOS – déclaratifs => indépendantes de l'implémentation => plus grande abstraction – modulaires et structurés => possibilité de manipulations automatiques (et symboliques) sur les données => possibilité d'effectuer des preuves de consistance sur les définitions de opérations 5. LOTOS… -56 Ingénierie des protocoles - 2ème année N 7 Télécom et Réseaux – formels

5. 7. Full LOTOS : exemples 5. LOTOS… -57 Ingénierie des protocoles - 2ème

5. 7. Full LOTOS : exemples 5. LOTOS… -57 Ingénierie des protocoles - 2ème année N 7 Télécom et Réseaux - Un routeur simple - Une FIFO avec mécanisme de gestion du trop plein

5. 7. Full LOTOS : exemple 1 Un routeur simple paquet inp data Router

5. 7. Full LOTOS : exemple 1 Un routeur simple paquet inp data Router left right aiguille le contenu des paquets vers la droite ou la gauche en fonction de la destination du paquet 5. LOTOS… -58 Ingénierie des protocoles - 2ème année N 7 Télécom et Réseaux – Fonction :

5. 7. Full LOTOS : exemple 1 Un routeur simple p(de, da): paquet inp

5. 7. Full LOTOS : exemple 1 Un routeur simple p(de, da): paquet inp da: data Router left right – Structure des données => il y a deux destinations : – L (left) – R (right) => domaine des valeurs du champ destination ={L, R} 5. LOTOS… -59 Ingénierie des protocoles - 2ème année N 7 Télécom et Réseaux Les paquets sont composés d'un champ destination et d'un champ donnée => gestdest(p) retourne la destination de p => getdata(p) retourne la donnée de p

5. 7. Full LOTOS : exemple 1 Un routeur simple => La spécification du

5. 7. Full LOTOS : exemple 1 Un routeur simple => La spécification du type abstrait "Packet" héritage de type Data sorts data opns … eqns … endtype défini ailleurs (en bibliothèque) trois opérations sur les sorts packet, data et dest définies par leur signature les axiomes définissant les trois opérations 5. LOTOS… -60 Ingénierie des protocoles - 2ème année N 7 Télécom et Réseaux type Packet is Data sorts packet, dest opns mkpacket: dest, data -> packet getdest: packet -> dest deux constantes getdata: packet -> data de sorts dest L: -> dest R: -> dest eqns forall p: packet, de: dest, da: data mkpacket (getdest(p), getdata(p)) = p getdest (mkpacket(de, da)) = de getdata (mkpacket(de, da)) = da endtype

5. 7. Full LOTOS : exemple 1 Un routeur simple p(de, da) inp da

5. 7. Full LOTOS : exemple 1 Un routeur simple p(de, da) inp da da Router left right – Dynamique : Se remettre ensuite en attente d'un nouveau paquet 5. LOTOS… -61 Ingénierie des protocoles - 2ème année N 7 Télécom et Réseaux Lorsque le routeur reçoit des paquets sur son port inp • Si l'adresse du paquet est L, alors envoyer la donnée transportée par le paquet sur le port left • Si l'adresse du paquet est R, alors envoyer la donnée transportée par le paquet sur le port right

5. 7. Full LOTOS : exemple 1 Un routeur simple => La spécification du

5. 7. Full LOTOS : exemple 1 Un routeur simple => La spécification du comportement du routeur process Router [inp, left, right] : = inp ? p: packet; Emit[left, right](p) >> Router[inp, left, right] 5. LOTOS… -62 Ingénierie des protocoles - 2ème année N 7 Télécom et Réseaux where process Emit[r, l](pack: packet) : = [getdest(p) = L] -> l !getdata(p); exit [] [getdest(p) = R] -> r !getdata(p); exit endproc

5. 7. Full LOTOS : exemple 1 Un routeur simple … ou encore sous

5. 7. Full LOTOS : exemple 1 Un routeur simple … ou encore sous une forme équivalente plus simple : 5. LOTOS… -63 Ingénierie des protocoles - 2ème année N 7 Télécom et Réseaux process Router [inp, left, right] : = inp ? p: packet; ( [getdest(p) = L] -> left !getdata(p); exit [] [getdest(p) = R] -> right !getdata(p); exit ) >> Router[inp, left, right] endproc

5. 7. Full LOTOS : exemple 2 Mécanisme de gestion de trop plein d'une

5. 7. Full LOTOS : exemple 2 Mécanisme de gestion de trop plein d'une FIFO Drop_Tail_Queue input Drop_Tail forward FIFO_Queue output • si le message peut entrer dans la FIFO, il est envoyé vers la FIFO (forward) • si le message n'entre pas dans la FIFO, le message est perdu 5. LOTOS… -64 Ingénierie des protocoles - 2ème année N 7 Télécom et Réseaux – Le processus Drop_Tail, lorsqu'il reçoit un message (input) teste la longueur de la FIFO :

5. 7. Full LOTOS : exemple 2 Mécanisme de gestion de trop plein d'une

5. 7. Full LOTOS : exemple 2 Mécanisme de gestion de trop plein d'une FIFO => La spécification des données : On parle de : • FIFO => il se faut se donner : une constante empty_queue (une FIFO vide) une opération d'empilage : enqueue une opération de dépilage : dequeue une opération qui retourne le premier élément de la file : first une opération de test d'une file : isempty • paquets => il faut se donner : – une opérations retournant la taille su paquet : getsize – une opération retournant le champ donnée d'un paquet : getdata 5. LOTOS… -65 Ingénierie des protocoles - 2ème année N 7 Télécom et Réseaux – – –

5. 7. Full LOTOS : exemple 2 Mécanisme de gestion de trop plein d'une

5. 7. Full LOTOS : exemple 2 Mécanisme de gestion de trop plein d'une FIFO => La spécification des données 5. LOTOS… -66 Ingénierie des protocoles - 2ème année N 7 Télécom et Réseaux type Packet_Queue is Data, Bool, Nat_Number sorts packet, fifo opns mkpacket: nat, data -> packet getsize: packet -> nat getdata: packet -> data empty_queue: -> fifo isempty: fifo -> bool enqueue: fifo, packet -> fifo dequeue: fifo, packet -> fifo first: fifo -> packet eqns forall x: packet, q: fifo isempty(empty) = true getsize(empty_queue) = 0 first(empty_queue) = error_data getsize(enqueue(x, q)) = getsize(q) + 1. . . endtype

5. 7. Full LOTOS : exemple 2 Mécanisme de gestion de trop plein d'une

5. 7. Full LOTOS : exemple 2 Mécanisme de gestion de trop plein d'une FIFO => La spécification de l'architecture de Drop_Tail_Queue process Drop_Tail_Queue [input, output, right](maxqlen: nat) : = hide forward in Drop_Tail[input, forward, output](maxqlen, 0) |[forward, output]| FIFO_Queue[forward, output](empty_queue) endhide . . . endproc Drop_Tail_Queue input Drop_Tail forward FIFO_Queue output 5. LOTOS… -67 Ingénierie des protocoles - 2ème année N 7 Télécom et Réseaux where

5. 7. Full LOTOS : exemple 2 Mécanisme de gestion de trop plein d'une

5. 7. Full LOTOS : exemple 2 Mécanisme de gestion de trop plein d'une FIFO => La spécification du comportement de FIFO_Queue process FIFO_Queue [input, output](q: fifo) : = input ? x: packet; FIFO_Queue[input, output](enqueue(q, x)) [] output !first(q) [not isempty(q)] ; FIFO_Queue(dequeue(q)) endproc Ingénierie des protocoles - 2ème année N 7 Télécom et Réseaux 5. LOTOS… -68

5. 7. Full LOTOS : exemple 2 Mécanisme de gestion de trop plein d'une

5. 7. Full LOTOS : exemple 2 Mécanisme de gestion de trop plein d'une FIFO => La spécification du comportement de Drop_Tail 5. LOTOS… -69 Ingénierie des protocoles - 2ème année N 7 Télécom et Réseaux process Drop_Tail [input, forward, output](maxqlen, qlen: nat) : = input ? x: packet [qlen + getsize(x) <= maxqlen]; forward !x Drop_Tail[input, forward, output](maxqlen, qlen + getsize(x)) [] input ? x [qlen + getsize(x) > maxqlen]; Drop_Tail[input, forward, output](maxqlen, qlen) [] output ? x; Drop_Tail[input, forward, output](maxqlen, qlen - getsize(x)) endproc

5. 8. Résumé et conclusion Ingénierie des protocoles - 2ème année N 7 Télécom

5. 8. Résumé et conclusion Ingénierie des protocoles - 2ème année N 7 Télécom et Réseaux 5. LOTOS… -70

5. 8. Résumé et conclusion LOTOS : une base formelle bien établie : –

5. 8. Résumé et conclusion LOTOS : une base formelle bien établie : – développé à partir d'une base théorique solide (les algèbres de processus et les algèbres de types de données) => manipulations symboliques formelles Expressivité • concurrence, non déterminisme, communication synchrone et asynchrone – permet la représentation de structures de données avec leurs opérations ! – Mais, pas de représentation du temps, de priorités… => Extensions : – RT-LOTOS, UML-LOTOS… 5. LOTOS… -71 Ingénierie des protocoles - 2ème année N 7 Télécom et Réseaux – permet la description d'architectures (système = assemblage de blocs) – permet l'expression de comportements dynamiques

5. 8. Résumé et conclusion Mais ! LOTOS = Lots Of Terribly Obscure Symbols

5. 8. Résumé et conclusion Mais ! LOTOS = Lots Of Terribly Obscure Symbols LOTOS = Language Of Thousands of Styles … => Besoins d'une méthodologie => Besoin d'une simplification syntaxique et d'un enrichissement conceptuel – E-LOTOS (normalisé en 2001). 5. LOTOS… -72 Ingénierie des protocoles - 2ème année N 7 Télécom et Réseaux – de modélisation pour les niveaux abstraits – de conception pour les niveaux concrets…