4.3.2. Critères de choix

Après avoir présenté le modèle d’agent JADE et la notion de comportement, nous répondons dans cette section à la question : pourquoi nous avons choisi la plateforme JADE ?

Nous avons déjà présenté dans le chapitre 2 (cf. section 2.6) quelques caractéristiques da la plateforme JADE qui nous ont conduits à la choisir pour la phase d’implémentation. Par rapport à notre problème, JADE possède des caractéristiques d’ordre technique qui ont renforcé notre choix. L’une des caractéristiques principales est l’abstraction Comportement (Behaviour) présentée dans la section précédente. Elle permet d’implémenter les tâches qu'un agent peut exécuter. La notion de Comportement se révèle très importante au moins pour deux raisons :

  1. Elle permet d’implémenter de manière efficace les protocoles d’interaction entre les agents. Ceci est très important dans notre cas pour implémenter les différents protocoles de négociation modélisés par AUML dans le chapitre 3 (cf. section 3.5). A titre d’exemple, les classes prédéfinies ProposeInitiator et ProposeResponder de JADE permettent d’instancier des objets behaviours qui implémentent le protocole d’interaction FIPA-Propose modélisé par le diagramme de séquence AUML de la figure 4.4. JADE fournit d’autres classes de comportements prêts pour implémenter les protocoles d’interactions FIPA comme FIPA Propose Protocol, FIPA Request Protocol, FIPA Contract Net Protocol, FIPA English Auction Protocol [FIPA, 2003]. Ces classes se trouvent dans le package jade.proto.
F
Fig. 4.4 - Protocole d’interaction FIPA Propose

La notion de comportement nous permet de générer rapidement le squelette de code d’un agent JADE à partir du diagramme d’états-transitions qui modélise son comportement (cf. chapitre 3, section 3.6). Comme nous montrerons dans la section suivante de ce chapitre, nous avons élaboré quelques règles informelles qui facilitent le travail d’implémentation d’un agent (héritant de la classe Agent de la plateforme JADE) à partir de son comportement sous la forme d’un statechart. Il s’agit donc de faciliter le passage de la spécification à l’implémentation.