Chapitre 5 Le Langage LOTOS 5 LOTOS 1
- Slides: 72
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 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) + 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 (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 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 : 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. 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 - 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 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 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… – 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 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 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 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 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 ; 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 : 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 [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 : 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 : 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 : 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 [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 : 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 [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 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 é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 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 : 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 : 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 : 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 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 => 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. 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. 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. 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. 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. 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 -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 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 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 !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 !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 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 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 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 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 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 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 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 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 – 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 et Réseaux 5. LOTOS… -70
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 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…
- Le petit prince résumé simple
- Lecture analytique petit pays chapitre 30
- Résumé chapitre par chapitre tirez pas sur le scarabée
- Petit prince résumé
- Przesyłki całopociągowe
- Lotos tracker
- Lotos tracker
- Etos logos og patos
- Langage
- Langage écrit
- Langage et école maternelle
- Langage soutenu
- Les 6 fonctions du langage
- Language sfc
- Langage z
- Cotation elo orthophonie
- Mathilde mignon
- Langage owl
- W langage
- Ladder elements
- Langage
- Langage scheme
- Apc langage gs
- Langage oral
- Langage modelica
- Unification prolog
- Langage r
- Langage infirmier
- Langage
- Paralexies visuelles
- Langage familier exemple
- Ml (langage)
- Concat prolog
- Langage c
- Langage dax
- Langage c
- La pragmatique
- Repeter en langage c
- Langage r
- Sysml cas d'utilisation
- Boucle for langage c
- Langage fbd
- Tableau go
- Les actes de langage
- Origine du langage
- Langage
- Langage
- Langage
- Langage figuratif
- String em c
- Les éléments du langage visuel
- Vocabulaire chemise
- Chapitre 7 évaluer le risque client
- Le faucon déniché questionnaire
- Situation de passage le dernier jour d'un condamné
- Bilan thermique du corps humain évaluation
- Celui qui recoit un prophete en qualite de prophete
- Jean chapitre 8
- Jean chapitre 7
- Jean chapitre 11
- Le petit prince chapitre 16
- Daniel chapitre 1
- Grammaire 1 chapitre 5
- Maria chapdelaine résumé par chapitre
- Le petit prince chapitre 14
- La périodisation seconde
- Le monde du travail chapitre 2 answers
- Les quartiles en statistique
- Qualiroute chapitre m
- La petite fille au kimono rouge questionnaire
- The pronoun y chapitre 3
- 1 pierre chapitre 5
- Jean chapitre 5