5. lotos… -1 ingénierie des protocoles - 2ème année n7 télécom et réseaux chapitre 5. le...
TRANSCRIPT
5. LOTOS… -1
Ingénierie des protocoles - 2ème année N
7 Télécom
et Réseaux
Chapitre 5. Le Langage LOTOS
Language
Of
Temporal
Ordering
Specification
5. LOTOS… -2
Ingénierie des protocoles - 2ème année N
7 Télécom
et Réseaux
5.1. Introduction
- LOTOS en bref…
- Les versions du langage
- Le plan du chapitre
5. LOTOS… -3
Ingénierie des protocoles - 2ème année N
7 Télécom
et Réseaux
En bref…LOTOS = Process Algebra (CCS & CSP)
+ Abstract Data Type Algebra (ACT-ONE)
=> ISO Standard: IS8807 (1987)
– 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
par des « points d'interaction » appelés « portes »– Un événement = support de l'interaction
=> véhicule des données
=> permet la synchronisation (rendez-vous)
5.1. LOTOS : introduction
a
b c
5. LOTOS… -4
Ingénierie des protocoles - 2ème année N
7 Télécom
et Réseaux
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
Historique :• 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.1. LOTOS : introduction
5. LOTOS… -5
Ingénierie des protocoles - 2ème année N
7 Télécom
et Réseaux
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 crise des fondements mathématiques (début XXème siècle)
=> 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.1. LOTOS : introduction
5. LOTOS… -6
Ingénierie des protocoles - 2ème année N
7 Télécom
et Réseaux
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
5.1. LOTOS : introduction
5. LOTOS… -7
Ingénierie des protocoles - 2ème année N
7 Télécom
et Réseaux
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=> avec les données
– 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.1. LOTOS : introduction
5. LOTOS… -8
Ingénierie des protocoles - 2ème année N
7 Télécom
et Réseaux
5.2. Algèbre de processus : aspects principaux
- Les concepts principaux…
- Les principales lois de compositions…
- Le coté algébrique : l'axiomatisation…
5. LOTOS… -9
Ingénierie des protocoles - 2ème année N
7 Télécom
et Réseaux
Concepts fondamentaux… – Objet : spécification des systèmes concurrents en insistant sur les
aspects communication et synchronisation
=> Un alphabet d'actionsl'évolution d'un processus est décrite à l'aide des noms des actions qu'il
entreprend
=> Des lois de compositionsun processus = une expression régulière obtenue par la combinaison de
noms d'action (alphabet) à l'aide d'opérateurs prédéfinis
=> Des constantesdes processus élémentaires :
– STOP : processus qui ne termine pas
5.2. Algèbre de processus : aspects principaux
5. LOTOS… -10
Ingénierie des protocoles - 2ème année N
7 Télécom
et Réseaux
Les principaux opérateurs des algèbres de processus… – la séquence (préfixage) notée « ; »
lire ; traiter ; ecrire ; STOP
– le choix non déterministe noté « [] »(lire ; STOP)
[]
(ecrire ; ((traiter ; STOP)
[]
(ouvrir ; STOP)))
– le parallélisme avec communication synchrone noté « | […] | »(a ; b ; c ; STOP)
| [a, b] |
(a ; d ; b ; STOP)
5.2. Algèbre de processus : aspects principaux
lire
traiter
ecrire
stop
lire
traiter
ecrire
ouvrir
stopstop
stop
a
b
c
a
d
b
stop
stop
5. LOTOS… -11
Ingénierie des protocoles - 2ème année N
7 Télécom
et Réseaux
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
• …
=> possibilité de manipulations formelles symboliques sur les termes de l'algèbre
=> méthodes d'analyses formelles.
=> Un cadre mathématique support de LOTOS.
5.2. Algèbre de processus : aspects principaux
5. LOTOS… -12
Ingénierie des protocoles - 2ème année N
7 Télécom
et Réseaux
5.3. Basic LOTOS
Basic LOTOS = sous-ensemble de LOTOS sans les données
=> seuls les comportements sont spécifiés
=> pas de spécification de données
5. LOTOS… -13
Ingénierie des protocoles - 2ème année N
7 Télécom
et Réseaux
Pour commencer…– Le comportement d'un processus détermine, à tout moment, quelles
actions sont possibles comme action suivante du processus
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)
=> 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.3. Basic LOTOS
5. LOTOS… -14
Ingénierie des protocoles - 2ème année N
7 Télécom
et Réseaux
Pour continuer…– La structure du langage :
process <process_id> <parameter_part> :=
<behaviour_expression>
endproc
Exemple : process P [a, b, c] := … endproc
5.3. Basic LOTOS
Nom du processus
Liste des portes du processus
Expression régulière définissant le comportement
du processus
P
a b c
5. LOTOS… -15
Ingénierie des protocoles - 2ème année N
7 Télécom
et Réseaux
Les opérateurs et constructions du langage– Le processus élémentaire stop
Processus qui ne peut rien faire
process inaction [a, b] :=
stop
endproc
=> stop est assimilé à un deadlock
5.3. Basic LOTOS
inaction
a b
5. LOTOS… -16
Ingénierie des protocoles - 2ème année N
7 Télécom
et Réseaux
Les opérateurs et constructions du langage– préfixage : a ; B
• a est une action atomique
• B est une expression de comportement
Exemple :process P [out_data] :=
out_data ; stop
endproc
process Q [in_data, out_data] :=
in_data ; out_data ; stop
endproc
5.3. Basic LOTOS
P
out_data
P
out_datain_data
out_data
stop
in_data
out_data
stop
5. LOTOS… -17
Ingénierie des protocoles - 2ème année N
7 Télécom
et Réseaux
Les opérateurs et constructions du langage– Choix non déterminste : B1 [] B2
• B1 et B2 sont des expressions de comportement • B1 [] B2 se comporte comme B1 ou comme B2 selon le comportement de
l'environnement du processus ou de façon non-déterministe– si l'environnement offre l'action initiale de B1, alors B1 est sélectionné– si l'environnement offre l'action initiale de B2, alors B2 est sélectionné
• Axiomes :– B1 [] B2 = B2 [] B1 (commutativité)– B [] B = B (idempotence)– B1 [] (B2 [] B3) = (B1 [] B2) [] B3 (associativité)– …
Exemple :process choix [a, b] :=
a ; stop
[]
b ; stop
endproc
5.3. Basic LOTOS
choix
ba
a
stop
b
stop
5. LOTOS… -18
Ingénierie des protocoles - 2ème année N
7 Télécom
et Réseaux
Les opérateurs et constructions du langageExemple :
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
5.3. Basic LOTOS
duplex
out_ain_a
out_bin_b
in_a
stop
in_b
in_b out_a
out_a out_b
out_b out_a
in_b
out_b
stop stop
in_a
out_a out_b
out_b out_a
out_a
in_b
out_b
stopstop stop
5. LOTOS… -19
Ingénierie des protocoles - 2ème année N
7 Télécom
et Réseaux
Les opérateurs et constructions du langage– Instanciation de processus :
Exemple :process Q' [in_data, out_data] :=
in_data ; P[out_data]
where process P [a] := a ; stop endproc
endproc
5.3. Basic LOTOS
Instanciation du processus P en séquence de l'action in_data
in_data
P[out_data]
out_data
stop
in_data
out_data
stop
équivalent à
5. LOTOS… -20
Ingénierie des protocoles - 2ème année N
7 Télécom
et Réseaux
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
process abba [a, b] :=
a ; b ; abba[b, a]
endproc
5.3. Basic LOTOS
a b b a
in_data
out_data
5. LOTOS… -21
Ingénierie des protocoles - 2ème année N
7 Télécom
et Réseaux
Les opérateurs et constructions du langage– Parallélisme sans interaction : B1 ||| B2
• B1 et B2 sont des expressions de comportement • B1 ||| B2 se comporte comme B1 et comme B2 sans interactions
• Axiomes :– B1 ||| B2 = B2 ||| B1
– B1 ||| (B2 ||| B3) = (B1 ||| B2) ||| B3
– B ||| stop = B
– (a; B1) ||| (b; B2) = a; (B1 ||| (b; B2)) [] b; ((a; B1) ||| B2)
– …
Exemple :process parallel [a, b] :=
a ; stop ||| b ; stop
endproc
5.3. Basic LOTOS
a
stop
b
stop
équivalent à
a
b
b
a
stop stop
5. LOTOS… -22
Ingénierie des protocoles - 2ème année N
7 Télécom
et Réseaux
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]
where process line[in, out] :=
in ; out ; stop
endproc
endproc
5.3. Basic LOTOS
duplex
out_ain_a
line[in_a, ou_a]
line[in_b, out_b]
out_bin_b
5. LOTOS… -23
Ingénierie des protocoles - 2ème année N
7 Télécom
et Réseaux
Les opérateurs et constructions du langage– Parallélisme avec interaction : B1 |[a1, …, an]| B2
• B1 et B2 sont des expressions de comportement
• B1 |[a1, …, an]| B2 se comporte comme B1 et comme B2 en synchronisant chaque action ai de B1 avec l'action ai de B2
=> chaque ai de B1 est exécutée simultanément avec l'action ai de B2 (et inversement)
• Axiomes :– B1 |[]| B2 = B1 ||| B2
– B1 |[L]| B2 = B2 |[L]| B1
– (a; B1) |[L]| (b; B2) = a; (B1 |[L]| (b; B2)) [] b; ((a; B1) |[L]| B2) si a, b L
– (a; B1) |[L]| (b; B2) = a;(B1 |[L]| B2) si a L
– (a; B1) |[L]| (b; B2) = stop a, b L
– …
Exemple :process parallel [a, b] :=
a ; stop |[a]| b ; a ; stop
endproc
5.3. Basic LOTOS
a
stop
b
a
stop
5. LOTOS… -24
Ingénierie des protocoles - 2ème année N
7 Télécom
et Réseaux
Les opérateurs et constructions du langage
Exemple :process two_buffers [in, out] :=
buff[in, middle]
|[middle]|
buff[middle, out]
where process buff[in, out] :=
in ; out ; stop
endproc
endproc
5.3. Basic LOTOS
in
buff[in, middle]
buff[middle, out]
out
middle
in
middle middle
out
stop
stop
5. LOTOS… -25
Ingénierie des protocoles - 2ème année N
7 Télécom
et Réseaux
Les opérateurs et constructions du langageExemple :
process protocol-v1 [int1, int2, int3, int3] :=entity1[int1, int3]
|[int3]|
service[int3, int4]
|[int4]|
entity1[int2, int4]
where ...
endproc
5.3. Basic LOTOS
int3
service
entity1
int1
entity2
int2
int4
5. LOTOS… -26
Ingénierie des protocoles - 2ème année N
7 Télécom
et Réseaux
Les opérateurs et constructions du langageExemple : (autre modélisation équivalente)
process protocol-v2 [int1, int2, int3, int3] :=(entity1[int1, int3] ||| entity1[int2, int4])
|[int3, int4]|
service[int3, int4]
where ...
endproc
5.3. Basic LOTOS
int3
service
entity1
int1
entity2
int2
int4
5. LOTOS… -27
Ingénierie des protocoles - 2ème année N
7 Télécom
et Réseaux
Les opérateurs et constructions du langage– Hiding : hide a1, …, an in B
• B est une expression de comportement
• a1, …, 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
=> a1, …, 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
– …
process protocol-v3 [int1, int2] :=hide int3, int4 in
(entity1[int1, int3] ||| entity1[int2, int4])
|[int3, int4]|
service[int3, int4]
where ...
endproc
5.3. Basic LOTOS
int3
service
entity1
int1
entity2
int2
int4
5. LOTOS… -28
Ingénierie des protocoles - 2ème année N
7 Télécom
et Réseaux
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)
5.3. Basic LOTOS
5. LOTOS… -29
Ingénierie des protocoles - 2ème année N
7 Télécom
et Réseaux
Les opérateurs et constructions du langage– Séquence de processus : B1 >> B2
• B2 est exécuté si et seulement si B1 termine avec succès (en exécutant exit)• Remarque : si B1 est composé de plusieurs sous-processus en parallèle, B1 termine
avec succès si et seulement si tous ses sous-processus terminent avec succès.• Axiomes :
– B1 >> (B2 >> B3) = (B1 >> B2) >> B3– stop >> B = stop– exit >> B = i; B– (a ; B1) >> B2 = a ; (B1 >> B2)– …
Exemple :process sender [ConReq, ConConf, Data] :=
connection_phase[COnReq, ConConf]
>> data_phase[Data]
where process connection_phase[CR, CC] :=
CR; CC; exit endproc
process data_phase[D] := D; data_phase[D] endproc
endproc
5.3. Basic LOTOS
5. LOTOS… -30
Ingénierie des protocoles - 2ème année N
7 Télécom
et Réseaux
Les opérateurs et constructions du langage– Préemption de processus : B1 [> B2
• B1 peut être interrompue à tout moment par B2. Alors B2 continue à s'exécuter sans reprise de B1.
• Axiomes :– B1 [> (B2 [> B3) = (B1 [> B2) [> B3 – stop [> B = B– B [> stop = B– (a; B1) [> (b; B2) = (a ; B1 [> (b; B2)) [] (b; B2)– …
Exemple :process data_transfer [DatReq, DatConf, DisReq] :=
normal_transfer[DatReq, DatConf]
[> disconnect_phase[DisReq]
where process normal_transfer[DR, DC] :=
CR; CC; normal_transfert[DR, DC] endproc
process disconnect_phase[DR] :=
DR; stop endproc
endproc
5.3. Basic LOTOS
5. LOTOS… -31
Ingénierie des protocoles - 2ème année N
7 Télécom
et Réseaux
5.4. Basic LOTOS : exemple
- Les trois philosophes en LOTOS
5. LOTOS… -32
Ingénierie des protocoles - 2ème année N
7 Télécom
et Réseaux
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
5.4. Basic LOTOS : exemple
philo1
philo3 philo2
fourchette2
fourchette3
fourchette1
?
5. LOTOS… -33
Ingénierie des protocoles - 2ème année N
7 Télécom
et Réseaux
Un exemple… : les 3 philosophes revisités1. Modélisation d'un philosophe
• alphabet : – pense
– prd-fdroite
– prd-fgauche
– mange
– pose-fdroite
– pose-fgauche
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
philo
pense mange
prd-fdroite
pose-fdroite
prd-fgauche
pose-fgauche
5. LOTOS… -34
Ingénierie des protocoles - 2ème année N
7 Télécom
et Réseaux
Un exemple… : les 3 philosophes revisités2. Modélisation d'une fourchette
• alphabet : – prise-droite, prise-gauche
– rendue-droite, rendue-gauche
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.4. Basic LOTOS : exemple
fourchette
prise-droiteprise-gauche
rendue-gauche rendue-droite
5. LOTOS… -35
Ingénierie des protocoles - 2ème année N
7 Télécom
et Réseaux
Un exemple… : les 3 philosophes revisités3. Modélisation des interactions
• alphabet global– philo1-pense, philo1- mange, philo1-prd-fdroite, philo1-pose-fdroite, philo1-prd-
fgauche, philo1-pose-fgauche,
– philo2-pense, philo2- mange, philo2-prd-fdroite, philo2-pose-fdroite, philo2-prd-fgauche, philo2-pose-fgauche,
– philo3-pense, philo3- mange, philo3-prd-fdroite, philo3-pose-fdroite, philo3-prd-fgauche, philo3-pose-fgauche,
– fourchette1-prise-droite, fouchette1-rendue-droite, fourchette1-prise-gauche, fourchette1-rendue-gauche
– fourchette2-prise-droite, fouchette2-rendue-droite, fourchette2-prise-gauche, fourchette2-rendue-gauche
– fourchette3-prise-droite, fouchette3-rendue-droite, fourchette3-prise-gauche, fourchette3-rendue-gauche
5.4. Basic LOTOS : exemple
5. LOTOS… -36
Ingénierie des protocoles - 2ème année N
7 Télécom
et Réseaux
Un exemple… : les 3 philosophes revisités3. Modélisation des interactions
• synchronisation :– philo1-prd-fdroite avec fourchette2-prise-gauche = fourche2-prise-gauche
– philo1-pose-fdroite avec fourchette2-rendue-gauche = fourche2-rendue-gauche
– philo1-prd-fgauche avec fourchette1-prise-droite = fourche1-prise-droite
– philo1-pose-fgauche avec fourchette1-rendue-droite = fourche1-rendue-droite
– philo2-prd-fdroite avec fourchette3-prise-gauche = fourche3-prise-gauche
– philo2-pose-fdroite avec fourchette3-rendue-gauche = fourche3-rendue-gauche
– philo2-prd-fgauche avec fourchette2-prise-droite = fourche2-prise-droite
– philo2-pose-fgauche avec fourchette2-rendue-droite = fourche2-rendue-droite
– philo3-prd-fdroite avec fourchette1-prise-gauche = fourche1-prise-gauche
– philo3-pose-fdroite avec fourchette1-rendue-gauche = fourche1-rendue-gauche
– philo3-prd-fgauche avec fourchette3-prise-droite = fourche3-prise-droite
– philo3-pose-fgauche avec fourchette3-rendue-droite = fourche3-rendue-droite
5.4. Basic LOTOS : exemple
5. LOTOS… -37
Ingénierie des protocoles - 2ème année N
7 Télécom
et Réseaux
Un exemple… : les 3 philosophes revisités4. Modélisation du système global
process trois-philo [philo1-pense, philo1-mange,
philo2-pense, philo2-mange,
philo3-pense, philo3-mange] :=
hide fourche1-prise-gauche, fourche1-rendue-gauche, fourche1-prise-droite, fourche1-rendue-droite, fourche2-prise-gauche, fourche2-rendue-gauche, fourche2-prise-droite, fourche2-rendue-droite, fourche3-prise-gauche, fourche3-rendue-gauche, fourche3-prise-droite, fourche3-rendue-droite in
(suite page suivante)
5.4. Basic LOTOS : exemple
…/…
5. LOTOS… -38
Ingénierie des protocoles - 2ème année N
7 Télécom
et Réseaux
(philo[philo1-pense, philo1-mange, fourche2-prise-gauche, fourche1-prise-droite,
fourche2-rendue-gauche, fourche1-rendue-droite]
|||
philo[philo2-pense, philo2-mange,
fourche3-prise-gauche, fourche2-prise-droite,
fourche3-rendue-gauche, fourche2-rendue-droite]
|||
philo[philo3-pense, philo3-mange,
fourche1-prise-gauche, fourche3-prise-droite,
fourche1-rendue-gauche, fourche3-rendue-droite])|[fourche1-prise-gauche, fourche1-rendue-gauche, fourche1-prise-droite,
fourche1-rendue-droite, fourche2-prise-gauche, fourche2-rendue-gauche,
fourche2-prise-droite, fourche2-rendue-droite, fourche3-prise-gauche,
fourche3-rendue-gauche, fourche3-prise-droite, fourche3-rendue-droite ]|
(fourche[fourche1-prise-droite, fourche1-rendue-droite, fourche1-prise-gauche, fourche1-rendue-gauche]
|||
fourche[fourche2-prise-droite, fourche2-rendue-droite,
fourche2-prise-gauche, fourche2-rendue-gauche]
|||
fourche[fourche3-prise-droite, fourche3-rendue-droite,
fourche3-prise-gauche, fourche3-rendue-gauche])where …
endproc
5.4. Basic LOTOS : exemple
5. LOTOS… -39
Ingénierie des protocoles - 2ème année N
7 Télécom
et Réseaux
5.4. Full LOTOS
- Les idées …
- Les enrichissements par rapport à Basic 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… -40
Ingénierie des protocoles - 2ème année N
7 Télécom
et Réseaux
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 =
– l'identification d'une porte
– une liste de valeurs
» requises (avec éventuellement des contraintes)
» soumises aux autres processus
– éventuellement une garde
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.5. Full LOTOS
5. LOTOS… -41
Ingénierie des protocoles - 2ème année N
7 Télécom
et Réseaux
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]• attend de l'environnement sur la porte p un entier négatif, placé dans
la variable x, puis émet la valeur 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.5. Full LOTOS
5. LOTOS… -42
Ingénierie des protocoles - 2ème année N
7 Télécom
et Réseaux
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
– préfixage : 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.5. Full LOTOS
5. LOTOS… -43
Ingénierie des protocoles - 2ème année N
7 Télécom
et Réseaux
Les opérateurs et constructions du langage• Synchronisation : value matching
• Synchronisation : value passing
• Synchronisation : value generation
5.5. Full LOTOS
process Synchron. conditionprocess Type of interaction Effect
g !E1 g !E2 value(E1) = value(E2) value matching synchronisation
process Synchron. conditionprocess Type of interaction Effect
g ?x: t g !E value(E) t value passingsynchronisationet x=value(E)
process Synchron. conditionprocess Type of interaction Effect
g ?x: t g ?y: u t = u value generationsynchronisation
et x=y=voù v est une valeur
quelconque de la sort t
5. LOTOS… -44
Ingénierie des protocoles - 2ème année N
7 Télécom
et Réseaux
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' peut se synchroniser avec A (si connect_request est de type primitive)
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 34)
5.5. Full LOTOS
5. LOTOS… -45
Ingénierie des protocoles - 2ème année N
7 Télécom
et Réseaux
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
Exemple :
g1 ?x: nat [x<3] ; g2 !x; stop
5.5. Full LOTOS
g1(x:=0)
g2(x)stop
g1(x:=1) g1(x:=2)
5. LOTOS… -46
Ingénierie des protocoles - 2ème année N
7 Télécom
et Réseaux
Les opérateurs et constructions du langage=> mécanisme de négociation de valeurs entre processus
Exemple : g ?qos: nat [qos < max] ; B1
|[g]|
g ?qos: nat [qos > min] ; B2
=> synchronisation possible uniquement sur une valeur de qos comprise en min et max
=> équivalent à
g ?qos: nat [qos < max and qos > min] ;
(B1 |[g]| B2)
=> ~ Programmation par contraintes
5.5. Full LOTOS
5. LOTOS… -47
Ingénierie des protocoles - 2ème année N
7 Télécom
et Réseaux
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.
Exemple :([x>0] -> g !x ; exit
[]
[x<0] -> g!-x ; exit
[]
[x=0] -> erreur ; exit)
>> B
5.5. Full LOTOS
équivalent à (en pseudo code C) if x>0 then g(x); else if x<0 then g(-x) else erreur(); endif; endif; B();
5. LOTOS… -48
Ingénierie des protocoles - 2ème année N
7 Télécom
et Réseaux
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 : 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
=> exemple d'instanciation :compare[input, output](5, 10)
5.5. Full LOTOS
5. LOTOS… -49
Ingénierie des protocoles - 2ème année N
7 Télécom
et Réseaux
Les opérateurs et constructions du langage=> instanciation de processus et passage de paramètres
Exemple :
g ?qos: nat [qos < max] ; B1[a,b](qos)
|[g]|
g ?qos: nat [qos > min] ; B2[c,d,e](qos)
où B1 et B2 sont des processus prenant en paramètre un nat
process B1 [in, out](q: nat) := … endproc
process B2 [toto, titi, tata](truc: nat) := … endproc
5.5. Full LOTOS
5. LOTOS… -50
Ingénierie des protocoles - 2ème année N
7 Télécom
et Réseaux
5.6. Les Abstract Data Types dans LOTOS
5. LOTOS… -51
Ingénierie des protocoles - 2ème année N
7 Télécom
et Réseaux
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)
– pas de propriétés implicites => tout doit être écrit
=> ce qui n'est pas écrit est faux
5.6. Les Abstract Data Types dans LOTOS
5. LOTOS… -52
Ingénierie des protocoles - 2ème année N
7 Télécom
et Réseaux
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éesopns
succ : nat -> nat
0 : -> nat
_+_: nat -> nat
=> 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(succ(0))…
=> mais : à priori, rien n'indique que 0+0 = 0, ni que succ(succ(0)+succ(0)) = succ(succ(succ(0)))
=> il manque les équations !
5.6. Les Abstract Data Types dans LOTOS
!
5. LOTOS… -53
Ingénierie des protocoles - 2ème année N
7 Télécom
et Réseaux
Les Types abstraits de données dans LOTOS (ACT-ONE)=> Trois parties (suite)
• définition des opérations par un ensemble d'axiomeseqns forall x, y : nat (pour tout terme x, y nat)
x+0 = x (x+0 et x représentent la même valeur)
x+succ(y) = succ(x+y) …
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 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.6. Les Abstract Data Types dans LOTOS
Remarque : la commutativitéet la distributivité de + découlent de ces deux équations
5. LOTOS… -54
Ingénierie des protocoles - 2ème année N
7 Télécom
et Réseaux
Les Types abstraits de données dans LOTOS (ACT-ONE)=> Le type complet
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)
=> définit les valeurs 0 = {0, 0+0, (0+0)+0, …}
1 = {succ(0), succ(0+0), …}
2 = {succ(succ(0)), succ(succ(0+0)), succ(0)+succ(0), …}
…
5.6. Les Abstract Data Types dans LOTOS
5. LOTOS… -55
Ingénierie des protocoles - 2ème année N
7 Télécom
et Réseaux
Les Types abstraits de données dans LOTOS (ACT-ONE)=> Héritage de type
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
=> nat_number_with_multiplication hérite des sorts, opérations et équation de nat_number
=> structuration hiérarchique des types
5.6. Les Abstract Data Types dans LOTOS
5. LOTOS… -56
Ingénierie des protocoles - 2ème année N
7 Télécom
et Réseaux
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
– formels=> 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.6. Les Abstract Data Types dans LOTOS
5. LOTOS… -57
Ingénierie des protocoles - 2ème année N
7 Télécom
et Réseaux
5.7. Full LOTOS : exemples
- Un routeur simple
- Une FIFO avec mécanisme de gestion du trop plein
5. LOTOS… -58
Ingénierie des protocoles - 2ème année N
7 Télécom
et Réseaux
Un routeur simple
– Fonction : aiguille le contenu des paquets vers la droite ou la gauche en fonction
de la destination du paquet
5.7. Full LOTOS : exemple 1
leftRouter
inp
right
paquet
datadata
5. LOTOS… -59
Ingénierie des protocoles - 2ème année N
7 Télécom
et Réseaux
Un routeur simple
– Structure des donnéesLes 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
=> il y a deux destinations :– L (left)– R (right)
=> domaine des valeurs du champ destination ={L, R}
5.7. Full LOTOS : exemple 1
leftRouter
inp
right
p(de, da): paquet
da: datada: data
5. LOTOS… -60
Ingénierie des protocoles - 2ème année N
7 Télécom
et Réseaux
Un routeur simple=> La spécification du type abstrait "Packet"
type Packet is Data
sorts
packet, dest
opns
mkpacket: dest, data -> packet
getdest: packet -> dest
getdata: packet -> data
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 1héritage de type Data sorts data opns … eqns … endtypedéfini ailleurs (en bibliothèque)
deux constantesde sorts dest
trois opérations sur les sorts packet, data et dest définiespar leur signature
les axiomes définissantles trois opérations
5. LOTOS… -61
Ingénierie des protocoles - 2ème année N
7 Télécom
et Réseaux
Un routeur simple
– Dynamique :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
Se remettre ensuite en attente d'un nouveau paquet
5.7. Full LOTOS : exemple 1
leftRouter
inp
right
p(de, da)
dada
5. LOTOS… -62
Ingénierie des protocoles - 2ème année N
7 Télécom
et Réseaux
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]
where
process Emit[r, l](pack: packet) :=
[getdest(p) = L] -> l !getdata(p); exit
[]
[getdest(p) = R] -> r !getdata(p); exit
endproc
endproc
5.7. Full LOTOS : exemple 1
5. LOTOS… -63
Ingénierie des protocoles - 2ème année N
7 Télécom
et Réseaux
Un routeur simple… ou encore sous une forme équivalente plus simple :
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 1
5. LOTOS… -64
Ingénierie des protocoles - 2ème année N
7 Télécom
et Réseaux
Mécanisme de gestion de trop plein d'une FIFO
– Le processus Drop_Tail, lorsqu'il reçoit un message (input) teste la longueur de la FIFO :
• 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.7. Full LOTOS : exemple 2
input
output
forward
Drop_Tail_Queue
Drop_Tail FIFO_Queue
5. LOTOS… -65
Ingénierie des protocoles - 2ème année N
7 Télécom
et Réseaux
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.7. Full LOTOS : exemple 2
5. LOTOS… -66
Ingénierie des protocoles - 2ème année N
7 Télécom
et Réseaux
Mécanisme de gestion de trop plein d'une FIFO=> La spécification des données
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
5. LOTOS… -67
Ingénierie des protocoles - 2ème année N
7 Télécom
et Réseaux
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
where
...
endproc
5.7. Full LOTOS : exemple 2
input
output
forward
Drop_Tail_Queue
Drop_Tail FIFO_Queue
5. LOTOS… -68
Ingénierie des protocoles - 2ème année N
7 Télécom
et Réseaux
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
5.7. Full LOTOS : exemple 2
5. LOTOS… -69
Ingénierie des protocoles - 2ème année N
7 Télécom
et Réseaux
Mécanisme de gestion de trop plein d'une FIFO=> La spécification du comportement de Drop_Tail
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.7. Full LOTOS : exemple 2
5. LOTOS… -70
Ingénierie des protocoles - 2ème année N
7 Télécom
et Réseaux
5.8. Résumé et conclusion
5. LOTOS… -71
Ingénierie des protocoles - 2ème année N
7 Télécom
et Réseaux
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é– permet la description d'architectures (système = assemblage de blocs)
– permet l'expression de comportements dynamiques• 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.8. Résumé et conclusion
!
5. LOTOS… -72
Ingénierie des protocoles - 2ème année N
7 Télécom
et Réseaux
MaisLOTOS = Lots Of Terribly Obscure Symbols
LOTOS = Language Of Thousands of Styles
…
=> Besoins d'une méthodologie– de modélisation pour les niveaux abstraits
– de conception pour les niveaux concrets…
=> Besoin d'une simplification syntaxique et d'un enrichissement conceptuel– E-LOTOS (normalisé en 2001).
5.8. Résumé et conclusion
!