3.5 Couche N°3 : Le SMA (Moteur de R&D)
3.5.2 Arborescence des composants logiciels
3.5.2.1 Vue global depuis la racine applicative ${SMA_ROOT}
Arborescence Contenu des répertoires
→ → → → → → → → → → → → → →
Racine applicative ${SMA_ROOT} Répertoire spécifique IDE Eclipse
Classes Java compilées dans des packages sous org.cg33.sma.* Fichiers globaux de configuration du moteur, des ACs et des logs Fichiers de messages fichier_xx.properties avec xx code pays (fr, en…) Librairies Java utilisées dont jade.jar
Fichiers de log générés: SMALog.log et SMAErrorLog.log
Racine des plugins comportementaux des ACs selon 2 typologies Racine des effecteurs mis en œuvre par les agents
Racine des capteurs utilisés par les agents
Scripts de démarrage, arrêt, etc. du moteur, par système d’exploitation Programmes de simulation
Fichiers source java du moteur dans des packages sous org.cg33.sma.* Sauvegardes des fichiers XML du modèle comportemental
115
3.5.2.2 Focus sur le répertoire « ${SMA_ROOT}/classes »
Il contient toutes les classes Java compilées, packagées et visibles dans le tableau 6.
Arborescence Contenu des répertoires
→ → → → → → →
Racine des classes Java compilées
Racine du package du moteur
Classes génériques d’agent : compétence, WebRequester, etc.
Classes d’interfaçage DAO avec la base de données. Pour l’illustration, la table agent, se décline à travers les quatre fichiers
dao/AgentDAO.class, exception/Agent_agentException.class, impl/Agent_agentDAOImpl.class et vo/Agent.class. factory contient
des classes globales (DAOFactory*.class) Classe générique SensorEffectorInterface.class
Librairies spécifiques au moteur : SMAAgent, SMADaoInterface, etc. Programmes de démarrage et d’arrêt global du moteur :
StartupAgents.class et StopAgents.class
Tableau 6 : Structure arborescente du répertoire « classes »
Il est important de noter ici que :
Les classes dans core ont bien été conçues et implémentées de manière générique. Cela signifie qu’il n’y a pas autant d’implémentation différente que d’AC mais bien une généricité dans l’implémentation, par typologie d’agent. Pour être tout à fait transparent, core contient les éléments décrits dans le tableau 7.
Fichier compilé Java Commentaire
On voit bien ici que l’on ne dispose que d’une seule et unique classe Java compilée par typologie d’agent logiciel dans notre moteur.
Les classes dont le nom est de la forme xxxx$yyyy.class sont des classes embarquées dans les fichiers xxxx.class. C’est le cas de BroadcastAgent$RequestPerformer.class et
WebRequesterAgent$TreatSignals.class
116
3.5.2.3 Focus sur le répertoire « ${SMA_ROOT}/conf »
Ce répertoire contient tous les fichiers de configuration globaux, c’est-à-dire en dehors de ceux spécifiquement dédiés à chaque plugin capteur ou effecteur.
Fichiers de configuration Commentaire
On voit bien ici que l’on ne dispose que d’un seul et unique fichier de configuration par typologie d’agent. En parallèle du modèle comportemental implémenté en XML, c’est dans ces fichiers que peuvent être paramétrés les déclenchements de certains effecteurs.
Fichiers de configuration globaux hors agents dans le SMA. On y trouve par exemple la configuration des accès à la base de données (DatabaseServer.properties) ou du serveur de mail (MailServer.properties). Le paramétrage global du moteur s’effectue dans le fichier
sma.properties.
Fichiers de configuration des logs Tableau 8 : Structure arborescente du répertoire « conf »
117
3.5.2.4 Focus sur le répertoire « ${SMA_ROOT}/script »
Ce répertoire contient toutes les fichiers de configuration globaux, c’est-à-dire en dehors de ceux spécifiquement dédiés aux plugins capteurs et effecteurs (voir plus loin).
Scripts Commentaire
Sous Unix ou Linux
Fichiers de paramétrage de l’environnement (config.sh), de lancement (startAll.sh) et d’arrêt (stopAll.sh) du moteur de R&D.
Sous Windows
Fichiers de paramétrage de l’environnement (config.bat), de lancement (startAll.bat) et d’arrêt (stopAll.bat) du moteur de R&D.
Tableau 9 : Structure arborescente du répertoire « script »
3.5.2.5 Focus sur le répertoire « ${SMA_ROOT}/src »
Ce répertoire contient toutes les classes Java sources. Selon leur typologie, elles sont réparties dans des packages visibles dans le tableau 10.
Arborescence Contenu des répertoires
→ → → → → → →
Racine des classes Java compilées
Racine du package du moteur
Classes génériques d’agent : compétence, WebRequester, etc. Classes d’interfaçage DAO avec la base de données
Classe générique SensorEffectorInterface.java
Librairies spécifiques au moteur : SMAAgent, SMADaoInterface, etc. Programmes de démarrage et d’arrêt global du moteur :
StartupAgents.java et StopAgents.java
118
Rappel :
Comme nous l’avons déjà décrit au paragraphe « 3.5.2.2 Focus sur le répertoire
${SMA_ROOT}/classes », les classes dans core ont bien été conçues et implémentées de
manière générique. Cela signifie qu’il n’y a pas autant d’implémentation différente que d’AC mais bien une généricité dans l’implémentation, par typologie d’agent. Pour être tout à fait transparent, cette fois en tant que fichiers source, core contient les éléments décrits dans le tableau 11.
Fichier compilé Java Commentaire
On voit bien ici que l’on ne dispose que d’une seule et unique classe Java par typologie d’agent logiciel dans notre moteur.
119
3.5.2.6 Focus sur le répertoire « ${SMA_ROOT}/plugins »
En référence du schéma présenté figure 1 (Modèle multi-agent générique), tout agent agit, induit des comportements, via la mise en œuvre de capteurs et d’effecteurs. Nous avons procédé par analogie dans notre implémentation et décliné chacun de ces éléments sous la forme de plugins comportementaux dans le répertoire ${SMA_ROOT}/plugins du moteur de R&D. Le tableau 12 fournit la liste de ceux disponibles dans la version actuelle de nos développements.
Arborescence Contenu des répertoires
→ → → → → → → → → → → → → → → → → → →
Racine des plugins comportementaux
Racine des effecteurs des Agents
Effecteur de création de lien avec un autre AC Effecteur de recherche de liens avec d’autres AC Effecteur de recherche d’acteur(s) pour un AC Effecteur de recherche d’objectifs
Effecteur de candidature à un projet pour un AC Effecteur de recherche des ACs pour un agent objectif Effecteur générique (squelette pour programmation) Effecteur d’arrêt global du SMA
Effecteur de croissance d’âge pour un AC
Effecteur de génération nouvelle règle comportementale Effecteur de simulation
Racine des capteurs des Agents
Capteur de condition remplie en base de données Capteur de déclenchement de recherche de liens Capteur générique (squelette pour programmation) Capteur de déclenchement de croissance d’âge d’AC Capteur d’analyse globale des règles comportementales Tableau 12 : Structure arborescente du répertoire « plugins »
Tout plugin comportemental peut alors être codé, au sens informatique, selon un framework de développement normalisé que nous décrivons en détail au paragraphe suivant.
120