“doc” (Col. : Science Sup 17x24) — 2007/7/19 — 18:18 — page 257 — #267
i
i
i
i
i
i
i
i
5.6 La programmation à grande échelle
257
dans le langage Erlang, qui a des boîtes à lettres FIFO. Les boîtes à lettres sans
ordre sont possibles aussi.
6. Le modèle de coordination : les composants peuvent communiquer sans que
les expéditeurs et les destinataires connaissent les identités des autres. Une
abstraction qui s’appelle un espace de tuples (« tuple space ») est placée à
l’interface. Les composants sont concurrents et chacun interagit uniquement
avec l’espace de tuples qui est commun entre tous. Un composant peut insérer
un message asynchrone et un autre peut extraire le message.
Le principe d’indépendance des modèles
Chaque composant du système est écrit dans un modèle de calcul qui lui est propre.
Pendant le développement, la structure interne d’un composant peut changer radicalement. Il n’est pas rare pour le composant de changer de modèle de calcul. Un
composant sans état peut acquérir un état (ou devenir concurrent, ou réparti, etc.),
ou vice versa. Si un tel changement survient à l’intérieur d’un composant, il ne sera
pas nécessaire de changer son interface. L’interface doit changer seulement si la fonctionnalité visible de l’extérieur change. C’est une propriété de modularité importante
des modèles de calcul. Aussi longtemps que l’interface reste la même, cette propriété
garantit qu’il n’est pas nécessaire de changer quoi que ce soit dans le reste du système.
Nous considérons cette propriété comme un principe de conception fondamental des
modèles de calcul :
Le principe d’indépendance des modèles
L’interface d’un composant est indépendante du modèle de calcul
utilisé pour implémenter le composant. L’interface dépend uniquement de la fonctionnalité visible de l’extérieur du composant.
Un bon exemple de ce principe est la mémoisation. Supposons que le composant
est une fonction d’un argument. Si le calcul est long, on pourra réduire le temps
d’exécution avec une mémoire cache qui contient des paires (argument, résultat).
Quand la fonction est appelée, on vérifie d’abord si l’argument est dans la mémoire
cache. Si oui, on renvoie le résultat directement sans faire le calcul. Si non, on fait
le calcul et on ajoute une nouvelle paire (argument, résultat) à la mémoire cache. La
mémoire cache est un état explicite ; ajouter la mémoisation à un composant signifie
que le composant change du modèle déclaratif au modèle avec état. Le principe
d’indépendance des modèles implique que l’on peut faire cela sans changer autre
chose dans le programme.
© Dunod – La photocopie non autorisée est un délit
Précédent

- 272/370

Suivant