Introduction
La prochaine vague d’innovation technologique doit intégrer des organisations liées et de multiples plateformes applicatives. Les développeurs doivent construire des systèmes de gestion de l’information unifiés qui utilisent le world wide Web et des technologies logicielles avancées. Les agents logiciels, l’un des nouveaux développements les plus passionnants de la technologie des logiciels informatiques, peuvent être utilisés pour créer rapidement et facilement des systèmes d’entreprise intégrés. L’idée d’avoir un agent logiciel capable d’effectuer des tâches complexes en notre nom est intuitivement attrayante. La prochaine étape naturelle consiste à utiliser plusieurs agents logiciels qui communiquent et coopèrent entre eux pour résoudre des problèmes complexes et mettre en œuvre des systèmes complexes. Les agents logiciels fournissent une nouvelle méthode puissante pour la mise en œuvre de ces systèmes d’information de nouvelle génération.
Qu’est-ce qu’un Agent?
Un agent est simplement un autre type d’abstraction logicielle, une abstraction de la même manière que les méthodes, les fonctions et les objets sont des abstractions logicielles. Un objet est une abstraction de haut niveau qui décrit les méthodes et les attributs d’un composant logiciel. Un agent, cependant, est une abstraction logicielle de très haut niveau qui fournit un moyen pratique et puissant de décrire une entité logicielle complexe. Plutôt que d’être défini en termes de méthodes et d’attributs, un agent est défini en termes de comportement. Ceci est important car la programmation d’un système basé sur un agent consiste principalement à spécifier le comportement de l’agent au lieu d’identifier les classes, les méthodes et les attributs. Il est beaucoup plus facile et plus naturel de spécifier un comportement que d’écrire du code.
Il existe un ensemble minimal de fonctionnalités communes qui caractérisent un agent logiciel. Un agent logiciel est autonome ; l’agent est capable de fonctionner comme un processus autonome et d’effectuer des actions sans intervention de l’utilisateur. Un agent logiciel est communicatif ; il communique avec l’utilisateur, d’autres agents logiciels ou d’autres processus logiciels. Un agent logiciel est perceptif; il est capable de percevoir et de réagir aux changements de son environnement.
Les agents logiciels, comme les personnes, peuvent posséder différents niveaux de compétence pour effectuer une tâche particulière. Par exemple, un agent logiciel de messagerie peut être assez stupide et capable de transférer uniquement des e-mails vers quelques emplacements spécifiés. Un second agent de messagerie plus intelligent pourrait avoir la capacité de détecter et de supprimer automatiquement le spam. Alors que les agents logiciels doivent être autonomes, communicatifs et perceptifs, ils peuvent avoir différents niveaux de compétence (intelligence) déterminés par leurs programmes, c’est-à-dire leurs spécifications comportementales.
Qu’est-ce qu’une agence ?
Les agents logiciels, comme les gens, peuvent être plus utiles lorsqu’ils travaillent avec d’autres agents logiciels dans l’exécution d’une tâche. Une collection d’agents logiciels qui communiquent et coopèrent les uns avec les autres s’appelle une agence. Les concepteurs de systèmes utilisant des agents doivent tenir compte des capacités de chaque agent individuel et de la manière dont plusieurs agents peuvent travailler ensemble. L’approche basée sur les agents permet au concepteur de système de mettre en œuvre le système à l’aide de plusieurs agents, chaque agent étant spécialisé pour une tâche particulière. Par exemple, une application de commerce électronique peut avoir des agents acheteurs, des agents vendeurs, des agents de stockage, des agents de base de données, des agents de messagerie, etc. Tous ces agents doivent communiquer entre eux et doivent avoir la capacité de travailler ensemble pour atteindre un ensemble d’objectifs communs.
Pourquoi les agents sont-ils importants?
Les développeurs de logiciels et les concepteurs de systèmes utilisent des abstractions de haut niveau dans la construction de logiciels complexes pour une raison: gérer la complexité. Une abstraction se concentre sur les propriétés importantes et essentielles d’un problème et cache les composantes accessoires de ce problème. Les agents offrent une nouvelle façon de gérer la complexité car ils fournissent une nouvelle façon de décrire un système ou un processus complexe. En utilisant des agents, il est facile de définir un système en termes de processus médiés par l’agent.
Considérez, par exemple, les problèmes de conception du système liés à la création d’une demande d’approbation de prêt qui lie les banques succursales, la banque principale, les sociétés de souscription de prêts et les sociétés d’évaluation du crédit, et automatise une grande partie du processus d’approbation de prêt. La construction de ce système à l’aide de la technologie actuelle est une tâche complexe et difficile car la décomposition du système oblige le développeur à traiter des concepts de niveau relativement bas (par exemple, demandes de prêt, soldes de comptes, notations de crédit) lors de la définition de l’architecture globale du système. De plus, un temps de conception important doit être consacré à la définition du protocole de communication et des interfaces qui permettront à la banque d’échanger des données avec les agences d’évaluation du crédit et les souscripteurs de prêts. Dans une conception de système orientée agent, la solution système peut inclure un agent de service à la clientèle, un agent d’analyse de demande de prêt, un agent de souscripteur, etc. L’accent est mis sur le comportement de chacun de ces agents et la communication entre les agents. Le problème est beaucoup plus facile car le niveau d’abstraction est beaucoup plus élevé et le problème de programmation devient celui de la spécification du comportement de l’agent.

Plusieurs Agents logiciels Pour les Applications d’entreprise
Une solution basée sur un agent est utile et attrayante car les différents agents utilisés dans la solution savent intrinsèquement faire beaucoup de choses. Par exemple, les agents savent comment communiquer avec d’autres agents. Le développeur du système n’a plus à concevoir de protocoles de communication et de formats de messages. L’agent fournit cette fonctionnalité dans le cadre du mécanisme d’agent de base. Les agents ont la capacité inhérente de construire des modèles de leur environnement, de surveiller l’état de cet environnement, de raisonner et de prendre des décisions en fonction de cet état. Tout ce que le développeur de logiciels doit faire est simplement de spécifier ce que les agents doivent faire dans une situation donnée.
Quand dois-je utiliser des Agents ?
Les agents logiciels conviennent à une utilisation dans une grande variété d’applications. Ils peuvent faciliter la construction de nombreux types de systèmes complexes. Cependant, le concepteur du système doit se rappeler que les agents ne sont pas la solution miracle recherchée depuis longtemps par les développeurs. Les agents logiciels sont appropriés pour la mise en œuvre de certains types d’applications; dans d’autres domaines problématiques, d’autres technologies seront plus appropriées. Le développeur doit analyser soigneusement la configuration système requise pour déterminer si les agents constituent un mécanisme de mise en œuvre approprié.
Les agents sont bien adaptés pour une utilisation dans des applications impliquant un calcul distribué ou une communication entre composants. La technologie d’agent est bien adaptée pour une utilisation dans des applications qui raisonnent sur les messages ou les objets reçus sur un réseau. Cela explique pourquoi les approches basées sur les agents sont si populaires dans les applications qui utilisent Internet. Les systèmes multi-agents sont également adaptés aux applications qui nécessitent des capacités de traitement distribuées et simultanées.
Comme les agents conservent une description de leur propre état de traitement et de l’état du monde qui les entoure, ils sont parfaitement adaptés aux applications d’automatisation. Les agents autonomes sont capables de fonctionner sans intervention ou intervention de l’utilisateur. Ces agents peuvent être utilisés dans des applications telles que l’automatisation des usines et des processus, la gestion des flux de travail, la robotique, etc.
Les agents ne sont pas limités à une utilisation dans des applications où les agents individuels communiquent entre eux via un réseau local ou Internet. Dans certaines applications, il est logique d’utiliser plusieurs agents s’exécutant sur une machine et communiquant entre eux en utilisant une forme de communication interprocessus (par exemple, RMI). Par exemple, un contrôleur d’usine intégré peut être constitué d’un agent d’interface utilisateur, d’un agent d’interface de base de données, d’un agent d’interface de machine-outil et d’un agent de surveillance et de contrôle des processus. Tous ces agents pourraient fonctionner simultanément sur le même processeur ou être facilement distribués sur plusieurs processeurs.
Encore une fois, les agents sont les plus adaptés aux applications nécessitant des communications entre composants, la détection ou la surveillance de l’environnement, ou un fonctionnement autonome. Puisque les agents ont la capacité de raisonner (c’est-à-dire de tirer des inférences), ils peuvent facilement effectuer des séquences d’opérations complexes en fonction des messages qu’ils reçoivent, de leurs propres croyances internes et de leurs buts et objectifs généraux.
Quels types de systèmes puis-je construire à l’aide d’agents et de la technologie des agents ?
Les agents sont parfaitement adaptés à une grande variété d’applications. Ils sont particulièrement bien adaptés à:
- automatisation des processus et des flux de travail
- commerce électronique
- résolution de problèmes distribués
- Applications Internet
Si des agents sont appropriés pour la mise en œuvre de mon système, de combien d’agents ai-je besoin ?
Pour paraphraser Albert Einstein – une bonne conception basée sur les agents utilisera autant d’agents que nécessaire et pas plus. Comme les applications traditionnelles, les applications basées sur des agents nécessitent une analyse et une conception minutieuses. Bien qu’il soit tentant de faire exécuter chaque fonction de traitement par un agent, c’est généralement une mauvaise idée. Le concepteur doit prendre en compte des questions telles que les exigences de transfert de données de communication, la bande passante de communication disponible, la puissance de traitement, la mémoire et d’autres contraintes de ressources informatiques lors du développement d’une architecture de système.
À quel point les agents devraient-ils être intelligents?
Les agents peuvent être construits avec un large éventail de capacités. L’un des avantages de l’approche basée sur les agents est qu’une fonction de traitement complexe peut souvent être divisée en plusieurs fonctions plus petites et plus simples. Étant donné que chaque agent individuel peut être conçu pour être un expert dans la résolution d’un problème spécifique ou l’exécution d’une tâche particulière, vous pouvez créer des systèmes présentant des comportements complexes en utilisant une collection d’agents relativement simples.
Parfois, cependant, nous avons besoin de créer des agents assez intelligents. Avec l’approche basée sur les agents, vous pouvez implémenter des agents dotés de capacités intellectuelles sophistiquées telles que la capacité de raisonner, d’apprendre ou de planifier. De plus, les agents logiciels intelligents peuvent utiliser de vastes connaissances sur leur domaine problématique. Cela signifie que l’architecture d’agent sous-jacente doit prendre en charge un raisonnement, un apprentissage, une planification et une représentation des connaissances sophistiqués.
Puis-je utiliser des agents avec des systèmes hérités ou du code hérité ?
Les agents logiciels fournissent un mécanisme idéal pour intégrer les systèmes hérités aux nouveaux systèmes de données. Les agents sont bien adaptés à la mise en œuvre de ces applications middleware. Les agents peuvent être utilisés pour effectuer la traduction de données et mettre en œuvre des interfaces de systèmes de données qui répondent à une grande variété d’exigences.
Dans de nombreuses applications, les développeurs système ont un code hérité qui remplit une fonction unique nécessaire dans leurs nouvelles applications. Un agent logiciel peut être utilisé pour appeler et exécuter ce code hérité, en tirant parti de la valeur de la base de code existante. Notez que l’implémentation de l’agent logiciel doit fournir le support approprié pour permettre l’exécution du logiciel natif et du code hérité.
Les agents sont-ils difficiles à construire ?
Les agents logiciels sophistiqués peuvent être très difficiles à construire si vous les construisez à partir de zéro. Vous aurez besoin de compétences et de connaissances spécialisées dans divers domaines, notamment l’architecture des agents, les technologies de communication, les systèmes de raisonnement, la représentation des connaissances, les langages et protocoles de communication des agents. Si vous souhaitez ajouter des capacités d’apprentissage automatique ou de planification de machines, vous aurez également besoin de compétences dans ces domaines. Si vous ne possédez pas ces compétences et connaissances spécialisées, vous devez utiliser une boîte à outils de construction d’agents. Les boîtes à outils de construction d’agents permettent aux développeurs de logiciels sans expertise d’agent de créer rapidement et facilement des agents logiciels.
Quels types d’outils sont disponibles pour m’aider à créer des agents ?
La meilleure façon de commencer à construire un système basé sur un agent est d’utiliser une boîte à outils intégrée telle que AgentBuilder. AgentBuilder fournit tous les outils dont vous avez besoin pour construire des agents logiciels. En utilisant AgentBuilder, un développeur de logiciels n’a besoin que d’une expertise dans le domaine problématique. AgentBuilder prend en charge toutes les phases du développement logiciel de l’agent, de l’analyse du système au débogage et au test du système. AgentBuilder fournit un environnement de programmation graphique dans lequel vous pouvez définir rapidement et facilement des agences et des agents, puis spécifier le comportement de chaque agent. AgentBuilder est entièrement codé en Java et produit des agents logiciels basés sur Java.
Leave a Reply