Interactions entre Composants pour des Systèmes Multi

Transcription

Interactions entre Composants pour des Systèmes Multi
Interactions entre Composants pour des Systèmes Multi-Agents :
Application au Trafic Routier
Sami KHALFAOUI – Wided LEJOUAD CHAARI
Pôle GRIFT Laboratoire CRISTAL
Ecole Nationale des Sciences de l’Informatique
Campus universitaire La Manouba
2010 La Manouba - Tunisie
[email protected] - [email protected]
Résumé
Actuellement les systèmes informatiques sont de plus en
plus complexes, souvent répartis sur plusieurs sites et
constitués de logiciels en interaction entre eux ou avec
des êtres humains. Le besoin d’utiliser la technologie
agents s’est fait ressentir et les évolutions dans ce
domaine sont remarquables. Dans ce contexte, les
applications à base d’agents doivent aussi bien s’adapter
aux modifications de l’environnement et à l’évolution des
interactions qu’aux retrait et ajout de nouveaux
composants. Dans ce papier, nous décrivons certains
travaux sur les interactions logicielles et la
programmation par composants et leur utilisation dans
un environnement agent dynamique. Nous illustrons notre
approche par une application de trafic routier.
1. Introduction
Ces dernières années, les applications à base d’agents
sont utilisées dans de multiples domaines et sont devenues
de plus en plus complexes et distribuées. Les Systèmes
Multi-Agents (SMA) actuels doivent fournir des
environnements très dynamiques qui s’adaptent aux
fréquents changements pouvant se produire au cours d’une
exécution comme dans le cas d’un simulateur de trafic
routier.
La dynamicité est un élément indispensable pour
répondre aux besoins des nouvelles applications. Grâce
aux progrès technologiques autour des communications
réseaux (sans fil ; ATM), les besoins applicatifs se
recentrent autour d’une prise en compte rapide du
contexte d’exécution afin d’adapter les fonctionnalités
offertes par les applications à la situation en cours. Si on
prend l’exemple d’une application de trafic routier, le
contexte d’exécution peut impliquer la mise en place
d’interactions spécifiques (délestage, mise en place de
secours…), en cas d’accidents, de catastrophes naturelles
qui ne devraient pas nécessiter l’arrêt de l’application.
Nous retrouvons aussi dans ce même esprit, les
applications de simulation qui nécessitent de tester
différentes situations d’interactions sans arrêter
l’application. Cependant ce besoin n’a pas fait l’objet de
beaucoup de travaux, et les travaux qui se sont intéressés à
la dynamicité dans les systèmes multi-agents comme [1],
[2], [3] et [4] n’offrent pas la possibilité de gérer
dynamiquement les interactions entre agents.
Vu la maturité qu’a pu atteindre le monde objet et
composant, le besoin de dynamicité et d’évolutivité a été
déjà soulevé et plusieurs travaux ont été menés en ce sens
[5]. Dans cet article, nous allons montrer comment les
résultats obtenus dans le domaine des applications
réparties construites à base de composants peuvent être un
atout dans la réalisation de SMA dynamiques et
hétérogènes. En particulier, nous nous focalisons sur les
résultats de l’équipe RAINBOW qui consistent en
l’utilisation d’un
serveur
d’interactions appelé
« NOAH » et un langage « ISL » pour la définition, la
pose et la destruction des interactions entre composants en
cours d’exécution.
L’organisation de l’article se présente comme suit :
dans la section 2, nous faisons le tour des travaux sur les
SMA ainsi que les travaux sur les composants qui
présentent un intérêt pour notre travail et nous montrons
comment les composants et leurs interactions apportent
des réponses aux systèmes multi-agents actuels. Dans la
section 3, nous présentons la simulation du trafic routier.
La section 4 montre l’illustration de notre approche par la
simulation. Enfin, nous concluons en reprenant les
principales idées exposées tout au long de cet article et en
présentant les perspectives de nos travaux.
2. Travaux sur les SMA et les Composants
Dans cette section, nous décrivons les travaux effectués
pour l’adaptabilité des environnements agents. Puis, nous
passons en revue les travaux sur les composants qui
présentent un intérêt pour notre travail.
2.1. Principaux travaux sur la dynamicité des
SMA
Les auteurs dans [1] proposent un modèle dynamique
d’interactions pour les SMA. Le principe est de soulager
l’agent de certaines tâches d’interaction et de les
transférer à une sorte de messager. Ce messager peut
manipuler, dynamiquement, le message de différentes
manières : trouver le bon destinataire dans le cas où
l’adresse est incorrecte, donner une meilleure présentation
du message, s’assurer que le message sera bien interprété
par le destinataire (ajouter des informations
supplémentaires au message d’origine). Aussi, l’utilisation
du messager facilite-t-elle l’interaction entre agents
hétérogènes. Ce travail se place dans le même contexte
que [6] qui propose l’utilisation d’un agent spécialisé pour
prendre en charge la communication entre les autres
agents.
Le travail présenté dans [2] résout dynamiquement le
problème d’interopérabilité des protocoles en utilisant un
agent intermédiaire appelé proxy qui s’intercale entre les
agents participant à une conversation. Le proxy doit
implémenter un protocole assez générique pouvant être
adapté aux autres protocoles.
En ce qui concerne l’évolutivité des SMA, [4] propose
une plate-forme générique de simulation SIMENV
permettant de construire des simulations à base d’agents
hétérogènes communicants via des canaux de
communications et de faire évoluer dynamiquement le
système par l’ajout et la suppression d’agents et de canaux
de communication entre agents en cours d’exécution. Ces
agents et ces canaux de communication doivent être
prévus à l’avance.
Nous remarquons que peu de travaux se sont intéressés
à l’ajout, la modification et la suppression d’interactions
en cours d’exécution, ou encore, l’ajout, dynamiquement,
d’un agent non prévu à l’avance. Ainsi, l’idée de la
dynamicité dans les SMA mérite d’être creusé davantage.
C’est pourquoi nous nous sommes tournés vers le monde
objet et composant qui, quant à lui, a su donner des
éléments de réponse dans ce domaine.
Dans le paragraphe suivant nous présentons brièvement
des travaux sur les interactions entre composants qui
pourraient être appliqués aux SMA pour améliorer
l’évolutivité des applications.
2.2. Composants – Interactions et dynamicité
Les interactions étant omniprésentes dans le monde
réel, différents travaux ont pris en charge leur
spécification et leur mise en oeuvre dans la communauté
des développements d’applications à base de composants.
Leur présence permet essentiellement de mieux décrire les
assemblages au déploiement d’une application ou
dynamiquement à l’exécution lorsque l’on souhaite
adapter une application.
Les principaux concepts sous-jacents aux ADLs
(Architecture Description Language) sont les composants
et les connecteurs assemblés à l’aide de configurations
[7]. Une configuration architecturale définit la structure de
l'architecture d'une application au travers d'un graphe de
composants et de connecteurs. Les langages de
configuration visent par exemple à exploiter les
descriptions d'architectures pour produire en partie
l'implantation des composants ou pour supporter, au
moins partiellement, le déploiement des applications. Le
dernier-né de ces langages est le Component Assembly
Descriptors du CORBA Component Model, qui permet
une automatisation du déploiement. Certains de ces
langages ont intégré une dimension dynamique permettant
de préciser les évolutions possibles d’une application
comme, par exemple, l'ajout ou le remplacement de
composants et de connexions à l'exécution [8].
Le développement d’applications sur des plates-formes
à composants « standards » tels que EJB [9], CCM [10]
ou .Net [11], force à prévoir a priori les interactions au
niveau des interfaces et du code métier des composants.
Par le modèle de composants, CORBA permet d’intégrer
au composant la réactivité aux perturbations du système.
Néanmoins, celles-ci doivent être prévues statiquement, et
la connectique (comment réagir à la présence d’un
événement dans une source, quel événement produire dans
un puits, etc.) reste à la charge du programmeur des
composants [12]. Certains services (événements,
notifications), l’utilisation de scripts, d’intercepteurs
CORBA [13] ou les conteneurs ouverts [14] se présentent
également comme des technologies permettant
d’implémenter les interactions. Aussi, la part de
connectique et de contrôle induite par les interactions
(synchronisation, conditionnelle, etc.) est-elle toujours à la
charge du programmeur et dépend donc des plates-formes
cibles. La programmation par aspects ([15], [16], [17])
propose également d’expliciter les interactions.
Néanmoins leur mise en œuvre en terme de réception et
émission de requêtes rend non « naturelle » l’écriture de
ces interactions.
Ces techniques sont essentielles à la réalisation d’une
adaptation dynamique des composants, mais il est
nécessaire de les abstraire pour faciliter leur
programmation et aller vers des systèmes plus sûrs. Les
travaux de l’équipe RAINBOW (http://rainbow.essi.fr)
autour de NOAH [5], quant à eux, considèrent les
interactions comme des entités de première classe. Les
interactions sont ainsi décrites dans des schémas
d’interactions. Ces schémas d’interaction, écrits en ISL
(Interaction Specification Language), sont définis
indépendamment des implémentations en se basant sur les
interfaces des composants.
Aussi est-ce sur la base de ces travaux que nous allons
proposer de rendre les SMA dynamiques et évolutifs. La
démarche que nous proposons permet une gestion
dynamique des interactions par l’ajout, la modification et
la suppression des interactions entre agents sans arrêter
l’application. Cette démarche permet aussi d’ajouter des
agents, qui n’ont pas été prévus lors de la conception, en
cours d’exécution.
3. La simulation du trafic routier
Pour mettre en œuvre et valider notre approche, nous
nous sommes basés sur une simulation de trafic routier.
Cette application est développée sous la plate-forme
agents JADE [20]. Dans ce qui suit, nous mettons l’accent
sur le caractère dynamique de la simulation. Par la suite,
nous proposons une description des agents puis nous
dégageons les besoins d’une telle application en terme de
dynamicité.
3.1. Pourquoi une simulation de trafic routier
Le trafic routier est caractérisé par des changements
très fréquents de situations qui peuvent être simples,
complexes voire difficiles à gérer et à contrôler. De plus,
plusieurs événements peuvent se produire comme des
accidents, des travaux, le passage des secours, le passage
de personnalités, … Ces événements peuvent dégrader les
conditions de la circulation et même la bloquer.
L’objectif d’une telle simulation est de contrôler le
trafic routier dans la mesure où la prise de décision
dépend des résultats de la simulation, d’assurer la fluidité
du trafic en anticipant sur les situations de congestion et
de blocage, de trouver des solutions à des situations
complexes du trafic routier, d’avoir un rôle explicatif des
raisons de certaines situations comme les accidents et de
faire des statistiques sur les périodes et les zones délicates
pour des solutions à plus long terme. Le choix d’une
simulation de trafic est justifié par le fait qu’une telle
application se caractérise par :
-
Une forte dynamicité : dans la mesure où les agents
participant à la simulation changent continuellement
d’états. Par exemple, un agent Conducteur peut
avancer, freiner, négocier son passage avec d’autres
agents, des voies peuvent être bloquées ou coupées,
des feux peuvent être hors service, des accidents et des
catastrophes naturelles peuvent se produire, etc. Les
agents sont souvent amenés à interagir pour éviter les
conflits et atteindre leurs buts.
-
De l’évolutivité : dans la mesure où, pour pouvoir
simuler certaines situations, nous devons ajouter ou
supprimer des agents. Par exemple, ajouter un grand
nombre d’agents Conducteur pour simuler une
situation de congestion. Les interactions entre agents
sont aussi amenées à évoluer. Par exemple, ajouter un
nouveau type d’interactions entre agents Conducteurs
en référence à une nouvelle loi du code de la route.
De plus, l’évolutivité de l’état des agents dans un
environnement de circulation routière doit être prise en
charge au cours de l’exécution de la simulation. Ceci
permet un gain en temps et une meilleure réactivité aux
utilisateurs de la simulation.
3.2. Description des agents
La simulation de trafic routier fait intervenir au moins
les classes d’agents suivantes : l’agent Conducteur qui est
l’acteur principal de la simulation. Cet agent cherche à
atteindre son point d’arrivée à partir d’un point de départ
tout en évitant les situations de conflit. Plusieurs types
d’agents Conducteurs peuvent exister, par exemple,
Conducteurs non disciplinés, les Conducteurs spéciaux
(ambulances, voitures de police,etc.) , etc. Chaque type de
ces agents Conducteurs présente un comportement
spécifique. L’agent Environnement sert à représenter
graphiquement la simulation et à fournir aux agents
Conducteurs
des
informations
générales
sur
l’environnement. L’agent Carrefour est lié à un carrefour
donné et contrôle les Conducteurs présents au niveau de
ce carrefour. Il existe plusieurs types d’agent Carrefour
selon que le carrefour est contrôlé par des feux, des
panneaux de signalisation, ou bien, il s’agit d’un carrefour
simple. L’agent Voie concerne une voie donnée. De
même, il existe plusieurs types d’agents Voies selon le
type de la voie en question : avec feux, avec panneaux de
signalisation, ou bien, voie simple. Le rôle de cet agent est
de contrôler les Conducteurs se trouvant sur la voie. Et,
l’agent Policier qui a une hiérarchie supérieure et qui
intervient au niveau des carrefours pour gérer le passage
des Conducteurs.
3.3. Besoins d’une nouvelle approche
Notre application présente plusieurs besoins de
dynamicité. Certains de ces besoins peuvent être pris en
charge par la plate-forme agent, d’autres pas. En effet,
lors d’une simulation, nous pouvons avoir besoin de
rajouter de nouveaux agents à la simulation pour la rendre
plus complexe et observer le comportement qui en résulte.
Cette opération est prise en charge par les plates-formes
agent actuelles, à condition que le nouvel agent ajouté soit
prévu à l’avance et développé avec le SMA. Par exemple,
il est possible de rajouter, au cours d’une simulation, des
agents Conducteurs pour tester différentes situations de
trafic. Ceci est aussi valable pour la suppression.
Cependant, il se peut que lors d’une simulation, nous
ayons besoin d’intégrer un nouvel agent qui n’était pas
prévu lors du développement du SMA. Par exemple, nous
voulons intégrer l’agent Piéton dans la simulation. Ce type
d’ajout n’est pas faisable, dynamiquement, avec les platesformes agents actuelles. Ceci est dû principalement au fait
que le code de la communication est intégré dans le code
de l’agent. Il faut donc, arrêter le SMA, développer le
nouvel agent en tenant compte de ses interactions avec les
autres agents et modifier le code des agents qui seront en
interaction avec ce nouvel agent.
Aussi, au cours d’une simulation, il serait opportun, de
pouvoir rajouter, modifier et supprimer des interactions.
Par exemple, nous voulons rajouter une nouvelle
interaction entre des agents Conducteurs qui énonce que
lorsqu’un Conducteur s’arrête trop longtemps, son
poursuivant klaxonne et les deux conducteurs entament
une négociation.
Dans une simulation, la fréquence d’ajout de nouveaux
agents et la fréquence d’ajout, de modification et de
suppression d’interactions entre agents peuvent être
importantes. Le fait de devoir, à chaque fois, arrêter la
simulation, modifier le code des agents, puis relancer
l’application, peut engendrer un surcoût de temps
considérable. Ceci fera perdre à la simulation tout son
intérêt, surtout si elle est utilisée comme un moyen de
décision d’urgence. Ces objectifs ne sont pas encore
atteints par les plates-formes agents actuelles.
Ainsi, l’approche basée sur les interactions introduit :
(1) une nouvelle architecture interne des agents, (2) une
nouvelle manière pour modéliser les SMA. En effet, nous
rappelons que l’architecture interne d’un agent (voir
Figure1) est représentée par:
- Des rôles : que fait un agent.
- Des compétences : ces compétences peuvent être
internes, c’est à dire, comment l’agent assure ses
rôles et des compétences externes (sociales)
concernant ses interactions.
- Des interactions : permettant à un agent de
communiquer.
Figure 1. Architecture interne d’agents
L’approche par interactions que nous proposons (voir
Figure 2) dissocie les interactions de l’architecture interne
de l’agent. Ces interactions, désormais gérées par le
serveur NOAH, définissent aussi le comportement social
des agents. Le comportement social d’un agent correspond
à son comportement par rapport aux autres agents du
SMA. Par exemple, le comportement de l’agent
Conducteur en présence des agents Feu. Dans une
architecture classique, ce comportement est défini à
l’intérieur de l’agent. Dans l’approche par interactions, il
est défini dans l’interaction qui relie un agent Conducteur
à un agent Feu. De plus, une politique d’arbitrage et de
prise de décision peut être définie dans l’agent pour la
gestion de ses propres comportements et ceux définis par
les interactions.
4. Une approche basée sur les interactions
entre composants pour les SMA
Dans cette section, nous présentons une approche à
base d’interactions entre composants et nous montrons
son adaptation au monde des agents.
4.1. Présentation de l’approche
Notre approche consiste à dissocier les interactions
entre agents du code métier des agents et à déléguer la
gestion de ces interactions, désormais exprimées dans le
langage ISL, à un serveur d’interactions appelé NOAH.
Les agents seront gérés par la plate-forme JADE.
Figure 2. Nouvelle architecture d’agents
Dans la modélisation des SMA, les approches sont, en
majorité, orientées agent, c’est à dire que l’agent est au
centre du développement. Par contre, notre approche est
basée sur les interactions, c’est à dire que, l’application
est construite à partir des interactions exprimées en ISL.
Le développement des SMA suit désormais la démarche
suivante :
- Etape 1 : Dans la première étape du développement
nous nous intéressons à la construction des classes
d’agents et la description de leurs compétences sans se
préoccuper des interactions entre eux. En d’autres
termes, nous ne décrivons que ce que l’agent sait faire
sans se préoccuper de sa communication : avec qui,
quand et comment communique-t-il, etc.
-
-
Etape 2 : Dans cette étape, nous développons des
modules de communication permettant de mettre en
interaction
les
différentes
classes
d’agents
précédemment développées. Ces modules de
communication sont des schémas d’interaction
exprimés en ISL. Les schémas d’interaction sont basés
sur les interfaces des agents.
Etape 3 : La dernière étape consiste à poser les
interactions entre les agents en instanciant les schémas
d’interaction. Ces interactions sont gérées par le
serveur d’interactions NOAH.
En utilisant la plate-forme JADE, ces interactions
correspondent à des échanges de messages FIPA-ACL. En
effet, pour le premier scénario, quand C1 s’arrête, il
envoie un message à C2 lui informant de son nouvel état
et ce dernier adaptera son comportement en fonction du
message reçu (s’arrêter ou continuer à rouler). De même
pour le second scénario, si C1 avance (après s’être arrêté),
il informe C2 par un message FIPA-ACL et ce dernier
adaptera son comportement en fonction du message reçu.
Si nous voulons ajouter une autre interaction entre ces
deux Conducteurs telle que, si le premier Conducteur
s’arrête trop longtemps, alors le second klaxonne. Dans ce
cas, il faut arrêter le SMA, modifier le code des deux
agents Conducteurs pour intégrer la nouvelle interaction
puis relancer le SMA.
Reprenons le même exemple avec l’approche basée sur
les interactions. Les interactions entre les deux agents
Conducteurs sont décrites dans le schéma d’interaction
suivant :
interaction
suivreConducteur(Conducteur
cond,
Conducteur poursuivant)
{
cond.arret() cond._call1 ;
if cond.calculDistance(poursuivant.
getPosition()) < distanceSecurite) then
poursuivant.arret()
end if
Nous avons repris l’application de simulation de trafic
routier en utilisant l’approche à base d’interactions pour
montrer la faisabilité ainsi que l’intérêt de cette dernière.
Prenons l’exemple de deux véhicules qui se suivent sur
une même voie (voir figure 3).
poursuivant.avancer()
if (poursuivant.calculDistance(cond.
getPosition()) < distanceSecurite) then
poursuivant.arret ()
else
poursuivant._call
end if
Voie 1
cond.avancer()cond._call;
if (poursuivant.stop ()) then
C2
C1
Figure 3. Situation de deux véhicules qui se suivent
Ces deux agents Conducteurs interagiront selon
différents scénarii :
- Si le premier Conducteur C1 s’arrête et que la distance
qui le sépare du second C2 est inférieure à la distance
de sécurité alors, C2 s’arrête.
- Si C1 avance et que C2 était à l’arrêt alors, ce dernier
avance aussi.
poursuivant.avancer()
end if
}
Une interaction à partir de ce schéma d’interaction est
dynamiquement créée pour relier deux agents
Conducteurs dès que ces agents se suivent sur une même
voie. Cette interaction est dynamiquement supprimée si
ces Conducteurs ne se suivant pas.
Avec l’approche à base d’interactions, il est désormais
possible de rajouter une nouvelle interaction (par
exemple, klaxonner) en cours d’exécution. En effet, il faut
commencer par définir le schéma d’interaction qui sera
1
Dans ISL « _call » sert à exécuter la méthode qui a déclenché la règle
d’interaction.
dynamiquement instancié pour créer l’interaction entre les
deux agents Conducteurs.
La possibilité d’ajouter une interaction en cours
d’exécution rend possible l’ajout dynamique d’agents non
prévus dans le SMA. En effet, pour intégrer un nouvel
agent dans un SMA, il faut développer la classe du nouvel
agent puis la lancer via la plate-forme agent. Par la suite,
il suffit de lier cet agent aux autres agents du SMA à partir
des schémas d’interactions qui auraient été décrits pour
exprimer sa communication avec les agents du système.
Dans ce qui suit nous présentons les principaux apports
de l’approche basées sur les interactions pour les SMA.
4.2. Apports de l’approche basée sur les
interactions
Les apports de l’approche basée sur les interactions
peuvent être résumés en deux points :
- L’expression des interactions à un niveau plus abstrait,
c'est-à-dire qu’on ne manipule plus des interactions mais
plutôt des schémas d’interaction. Ceci permet une
gestion dynamique des interactions entre les agents.
- La réduction de la complexité : cet apport découle de la
fusion des règles d’interaction. Il s’agit de la répartition
d’un comportement donné sur plusieurs règles
d’interaction. Dans l’approche agent, pour décrire un
comportement, nous devons prendre en compte toutes
les conditions et toutes les actions dès le départ. Dans
certains cas, cette opération s’avère délicate et peut
mener à l’erreur et la confusion. De plus, lors de l’ajout
d’une nouvelle condition ou d’une nouvelle action, nous
sommes obligés de modifier le code du comportement,
opération délicate lorsque le comportement est
complexe. Cependant, avec la nouvelle approche, nous
ne sommes plus obligés d’exprimer toutes les conditions
et toutes les actions à l’avance mais celles-ci sont
réparties sur les différentes règles d’interactions, ce qui
réduit la complexité dans la description des
comportements et facilite la mise à jour du code en
localisant la modification. Les règles d’interaction sont
par la suite automatiquement fusionnées pour donner un
comportement global équivalent. Quel que soit l’ordre
dans lequel les règles sont fusionnées, le comportement
résultant est toujours le même. Ceci est dû au fait que la
fusion est associative et commutative. Les principes de
la fusion sont détaillés dans [21].
Soit le schéma d’interaction suivant :
interaction rencontrerFeux(Conducteur cond, Feux
feu)
{
cond.avancer()
if(feu.getCouleur.equals(“rouge”)) then
cond.arret()
else
cond._call
end if
feu.changeCouleur()
if(feu.getCouleur().equals(“vert”)&&
cond.stop()) then
cond.avancer()
end if
}
Ce schéma d’interaction relie un agent Conducteur à un
agent Feu. Selon ce schéma d’interaction, un agent
Conducteur ne peut avancer que si le Feu est au vert. Une
interaction à partir de ce schéma d’interaction est posée
dynamiquement lorsqu’un Conducteur entre dans un
carrefour géré par des Feux. Cette interaction est
supprimée dynamiquement lorsque ce Conducteur quitte
le carrefour.
A partir des deux schémas d’interaction décrits plus
haut (recontrerFeu, suivreConducteur), nous remarquons
que la méthode avancer() se trouve impliquée dans deux
règles d’interaction. Ces règles seront fusionnées pour
donner la règle équivalente suivante :
cond.avancer()
if(feu.getCouleur().equals(“rouge”) then
conducteur_1.arret()
else
cond._call;
if(poursuivant.stop()) then
poursuivant.avancer()
end if
end if
5. Conclusion
Dans ce papier, nous avons souligné un besoin de
rendre les systèmes multi-agents plus dynamiques et plus
évolutifs. Nous avons proposé une approche offrant une
nouvelle architecture interne des agents ainsi qu’une
nouvelle modélisation des SMA. Cette approche permet
de poser, modifier et détruire les interactions entre agents
en cours d’exécution, chose qui nécessitait l’arrêt de
l’application et la modification du code des agents. Elle
offre aussi la possibilité d’intégrer dynamiquement un
nouveau type d’agents non prévu à l’avance. Pour réaliser
ce travail nous avons utilisé le langage ISL pour la
définition des interactions et le serveur d’interaction
NOAH pour les gérer, tous deux issus des travaux de
l’équipe RAINBOW sur les interactions entre les
composants. Nous avons validé notre approche et vérifié
sa faisabilité à travers un exemple d’une simulation de
trafic routier.
Comme perspectives de notre travail, nous pensons
appliquer l’approche par interactions, non plus à des
interactions simples et séparées, mais à des protocoles
d’interactions plus élaborés et plus complexes moyennant
le concept de fusion des règles d’interaction. Nous
projetons aussi d’utiliser cette approche pour définir une
bibliothèque générique d’interactions pour le trafic routier
ou toute autre application du même type (par exemple, le
contrôle du trafic d’un réseau informatique). Nous
songeons aussi à une meilleure intégration de l’approche
par interactions au niveau des plates-formes agents.
L’objectif à plus long terme étant de concevoir et
développer une plate-forme agents basée sur les
interactions logicielles.
6. Bibliographie
[1] A. Ribeiro, Y. Demazeau, « A Dynamic Interaction Model
for Multi-Agent Systems », 1998.
[2] D. Jouvin, S. Hassas, « Architectures dynamiques de
systèmes multi-agents conversationnels », Journée Francophone
des Systèmes Multi-Agents, 2003.
[3] J. Quenum, A. Slodzian, S. Aknine, « Configuration
automatique de modèles d’interaction d’agents », Journée
Francophone des Systèmes Multi-Agents, 2003.
[4] D. Meyer, C. Buchta, « SIMENV: A Dynamic Simulation
Environment for Heterogeneous Agents », 2003.
[5] M. Blay-Fornarino, D. Ensellem, A. Occello, A. Pinna-Dery,
M. Riveill, J. Fierstone, O. Nano, G. Chabert, «Un service
d’interactions : principes et implémentation », Journée des
Composants, 2002.
[6] W. Lejouad-Chaari, F. Mouria-Beji, « High level
commununication protocol in a distributed multiagent system »,
11th Intenational Conference on Indistrial and Engineering
Applications of Artificial Intelligence end Expert Systems,
Spain, June 1998.
[7] N. Medvidovic, R. Taylor, « A Framework for Classifying
and Comparing Architecture Description Languages», European
Software Engineering Conference (ESEC/FSE 97), 1997, pp. 6067.
[8] A. Senart, M. Riveill « Aspects dynamiques des langages de
description d'architecture logicielle », Numéro spécial de la
revue L'OBJET : Coopération dans les systèmes à objets, 2002,
pp. 109-129.
[9] Enterprise Javabeans Specification Version 1.1, Sun
Microsystem Inc, janvier 2000.
[10] R. Marvie, M. Pellignini, « Modèles de composants, un état
de l’art», Numéro spécial de L’Objet, vol. 8, no. 3, Hermès
Sciences, Coopération dans les systèmes à objets, 2002.
[11] R. Jeffrey, Applied Microsoft .Net Framework
Programming, MS Press, ISBN 0735614229, 2002.
[12] L. Berger, « Support des interactions dans les systèmes
objets et componentiels », Numéro spécial de L’OBJET :
Coopération dans les systèmes à objets, vol. 7, 2001-2002.
[13] OMG, CORBA 2.4.2 Interceptors chapter, OMG Document
formal/01-02-57, février 2001.
[14] M. Vadet M., P. Merle, « Les conteneurs ouverts dans les
plates-formes à composants », Journées Composants 2001,
Besançon, 25-26 octobre.
[15] R. Pawlak, L. Seinturier, L. Duchien, G. Florin, « JAC: A
Flexible Framework for AOP in Java », Reflection'01, Kyoto,
Japan.
[16] M. Riveill, E. Bruneton, « JavaPod: An Adaptable and
Extensible Component Platform », RM’2000, Workshop on
Reflective Middleware, New York, USA, April 2000.
[17] F. Sarradin, T. Ledoux, « Adaptabilité dynamique de la
sémantique de communication dans Jonathan », Colloque
Langages et Modèles à Objets (LMO’01), Hermès Science,
L’objet-7/2001, Le Croisic, France, janvier 2001.
[18] F. Bellifemine, G. Caire, T. Trucco, G. Rimassa, Jade
Programmer’s Guide , JADE 2.5, 2002.
[19] The FIPA ACL Message Structure Specifications, 6
décembre 2002.
[20] S. Khalfaoui, « Interactions logicielles pour des SMA
dynamiques et évolutifs », Rapport de Mastère, ENSI-Tunis,
Janvier 2004.
[21] L. BERGER, « Mise en oeuvre des interactions en
environnements distribués, compilés et fortement typés: le
modèle MICADO », PhD thesis, Université de Nice, 2001.

Documents pareils

JMAC04 Actes

JMAC04 Actes interactions entre composants qui pourraient être appliqués aux SMA pour améliorer l’évolutivité des applications. 2.2. Composants – Interactions et dynamicité Les interactions étant omniprésentes ...

Plus en détail