6. Ingénierie logicielle orienté agent
6.2 L'approche orientée agent en ingénierie logicielle
Dans son ouvrage "Analyse et conception orientées objet et
applications" (Booch, 1994), Booch énonce les caractéristiques
nécessaires d'un paradigme d'ingénierie logicielle permettant
de construire des systèmes complexes :
- la décomposition - la capacité
de diviser le problème en sous-problèmes plus simples,
les sous-problèmes étant plus maniables et pouvant être
traités d'une façon relativement autonome ;
- l'abstraction - la capacité
de définir un modèle simplifié du système
qui met en évidence une partie de ses détails et propriétés,
tout en éliminant les autres ; donc l'attention peut se concentrer
sur les aspects saillants du problème, et se dispenser des détails
moins importants ;
- l'organisation - le procédé
consistant à identifier et à gérer les rapports
entre les divers sous-problèmes (composantes) à résoudre.
La possibilité de spécifier et d'établir des relations
organisationnelles entre composantes aide les concepteurs à faire
face à la complexité parce qu'en premier lieu on peut
grouper diverses composantes dans une composante plus complexe qui peut
être alors traitée comme une unité unique d'analyse
et, deuxièmement, parce qu'on a la possibilité de décrire
des relations complexes entre ces unités, par exemple coopération,
fonctionnalités conjointes, etc.
Ces trois caractéristiques peuvent être bien retrouvées
dans le modèle des systèmes multi-agents, comme on va voir
dans ce qui suit.
Décomposition orientée agent :
On s'intéresse ici à la décomposition du problème
en termes d'agents autonomes de haut niveau, qui peuvent s'engager dans
des interactions flexibles.
La décomposition du problème dans des composantes qui s'identifient
avec les agents semble une solution naturelle. L'autonomie des agents
réduit la complexité du contrôle car le contrôle
est localisé dans chaque composante (agent). Les décisions
des agents sont prises en partant de la situation locale à l'agent.
Les agents prennent les décisions sur la nature et l'étendue
des interactions au moment de l'exécution - ceci rend l'ingénierie
des systèmes complexes plus faciles pour deux raisons :
- il est difficile, sinon impossible, de savoir a priori toutes les
interactions potentielles, à quel moment dans le temps elles
auront lieu et la raison de ces interactions ; les agents sont capables
d'initier et de répondre aux interactions dans une manière
flexible, y compris la réponse à des demandes inattendues
;
- la gestion des relations entre les composantes logicielles est significativement
réduite si on modélise ces composantes comme des agents
; n'importe quelle coordination est contrôlée par l'interaction
entre les agents.
Abstraction orientée agent :
Il y a une correspondance évidente entre la notion de sous-système
et celle d'agent.
Comme les sous-systèmes sont représentés par des
agents, les interactions entre ces sous-systèmes sont regardées
en termes d'interactions sociales de haut niveau. Ceci correspond à
ce que dit Booch, notamment : "à n'importe quel niveau d'abstraction,
nous trouvons une collection significative d'entités qui collaborent
pour former une perspective unique à un niveau supérieur."
Les agents coopèrent pour atteindre leurs objectifs communs, coordonnant
leurs actions et négociant pour résoudre les conflits. L'approche
orientée agent fournit un ensemble de structures riches pour représenter
explicitement les rapports organisationnels, par exemple les rôles,
les normes, les lois sociales. De plus, il y a des protocoles d'interaction
pour former de nouveaux groupes, pour réaliser des actions collectives
ou pour former des coalitions (Sandholm et Lesser, 1997, Shehory et Kraus,
1998).
Structures organisationnelles orientées
agent : L'approche orientée agent fournit une représentation
explicite des rapports et structures organisationnelles.
La notion de composante primitive peut varier selon le besoin de l'observateur.
Ainsi, à un niveau, le sous-système entier peut être
regardé comme une composante primitive alors qu' à un autre
niveau, on le considère comme une équipe ou une collection
d'agents. Des structures récursives d'agents peuvent être
définies pour réduire la complexité des rapports
organisationnels. Des telles structures fournissent des formes intermédiaires
stables qui suggèrent que ces groupements d'agents puissent être
développés dans l'isolement relatif et ajoutés au
système d'une façon incrémentale.
Par exemple, dans la figure 6.1 on peut voir une architecture récursive
de système multi-agents. L'entité de base est l'agent, il
y a plusieurs agents dans le système, mais chaque agent peut comprendre
aussi bien ses composantes internes ,par exemple son propre profil, un
profil de la société, des paramètres concernant le
contrôle, la négociation et la communication, que des autres
agents (agents internes). Les agents internes peuvent être structurés
de la même manière, à leur tour.
Figure 6.1 Architecture récursive d'un système multi-agents
De plus, on peut définir différents types d'organisations,
d'interactions et de rapports entre les membres (agents) de l'organisation,
qui varient de totalement coopératif à totalement compétitif,
et où les rapports peuvent être changés dynamiquement.
Donc les approches orientées agent fournissent des modèles
explicites pour représenter les rapports organisationnels dans
un environnement dynamique et complexe.
|