“doc” (Col. : Science Sup 17x24) — 2007/7/19 — 18:18 — page 144 — #154
i
i
i
i
i
i
i
i
144
3
• Techniques de programmation déclarative
exécution. Que se passe-t-il si l’autre programme est malicieux et veut perturber l’exécution du programme ouvert ? À cause de l’évolution de l’Internet, le
nombre de programmes ouverts est en train d’augmenter.
7
Pour résoudre ces problèmes, nous allons protéger la représentation interne des valeurs
de l’ADT contre toute interférence non autorisée. Dans les sections suivantes, nous
construisons un ADT sécurisé. Nous utilisons une sorte de « clé » pour protéger les
représentations internes quand elles sont en dehors de la frontière de l’ADT. Nous
ajoutons cette clé comme un nouveau concept au modèle déclaratif et nous l’appelons
un « nom ». Cette clé est un exemple d’un concept général de sécurité qui s’appelle
une capacité. Plus loin, dans le chapitre 5, la section 5.4 continuera l’étude des ADT
sécurisés en expliquant l’effet de l’état explicite sur la sécurité.
3.5.2 Le modèle déclaratif avec types sécurisés
Le modèle déclaratif ne nous permet pas de protéger la représentation interne des
types. Pour y parvenir, nous devons étendre le modèle. Une manière de protéger les
valeurs est d’ajouter une opération d’« emballage » avec une « clé ». La représentation
interne est placée à l’intérieur d’une structure de données qui est inaccessible sauf pour
ceux qui connaissent une valeur spéciale, la clé. Une abstraction qui connaît la clé peut
créer de nouveaux emballages et regarder à l’intérieur des emballages existants faits
avec la même clé. Le tableau 3.2 montre le nouveau langage noyau avec sa nouvelle
opération.
s : :=
skip
Instruction vide
| |s 1 s 2
Séquence d’instructions
| local x in s end
Création de variable
| |x 1 =x 2
Lien variable-variable
| |x=v
Création de valeur
| if x then s 1 else s 2 end
Instruction conditionnelle
| case x of pattern
Correspondance de formes
then s 1 else s 2 end
| {x y 1 · · · ·y n }
Application de procédure
| try s 1 catch x then s 2 end Contexte d’exception
| raise x end
Lève exception
| {NewName x}
Création de nom
Tableau 3.2 Le langage noyau déclaratif avec types sécurisés.
7. Le système Mozart soutient les programmes ouverts avec une couche qui implémente la programmation répartie transparente [97].
Précédent

- 159/370

Suivant