Introducción
La próxima ola de innovación tecnológica debe integrar organizaciones vinculadas y múltiples plataformas de aplicaciones. Los desarrolladores deben construir sistemas de gestión de la información unificados que utilicen la world wide web y tecnologías de software avanzadas. Los agentes de software, uno de los nuevos desarrollos más interesantes en la tecnología de software informático, se pueden utilizar para construir sistemas empresariales integrados de forma rápida y sencilla. La idea de tener un agente de software que pueda realizar tareas complejas en nuestro nombre es intuitivamente atractiva. El siguiente paso natural es utilizar múltiples agentes de software que se comunican y cooperan entre sí para resolver problemas complejos e implementar sistemas complejos. Los agentes de software proporcionan un nuevo y poderoso método para implementar estos sistemas de información de próxima generación.
¿Qué es un Agente?
Un agente es simplemente otro tipo de abstracción de software, una abstracción de la misma manera que los métodos, funciones y objetos son abstracciones de software. Un objeto es una abstracción de alto nivel que describe métodos y atributos de un componente de software. Un agente, sin embargo, es una abstracción de software de nivel extremadamente alto que proporciona una forma conveniente y poderosa de describir una entidad de software compleja. En lugar de definirse en términos de métodos y atributos, un agente se define en términos de su comportamiento. Esto es importante porque programar un sistema basado en agentes es principalmente una cuestión de especificar el comportamiento del agente en lugar de identificar clases, métodos y atributos. Es mucho más fácil y natural especificar el comportamiento que escribir código.
Hay un conjunto mínimo de características comunes que tipifican un agente de software. Un agente de software es autónomo; el agente es capaz de operar como un proceso independiente y realizar acciones sin la intervención del usuario. Un agente de software es comunicativo; se comunica con el usuario, otros agentes de software u otros procesos de software. Un agente de software es perceptivo; es capaz de percibir y responder a los cambios en su entorno.
Los agentes de software, como las personas, pueden poseer diferentes niveles de competencia para realizar una tarea en particular. Por ejemplo, un agente de software de correo electrónico podría ser bastante tonto y capaz de reenviar solo correos electrónicos a unas pocas ubicaciones específicas. Un segundo agente de correo electrónico más inteligente podría tener la capacidad de detectar y eliminar automáticamente el spam. Si bien los agentes de software deben ser autónomos, comunicativos y perceptivos, pueden tener diferentes niveles de competencia (inteligencia) determinados por sus programas, es decir, sus especificaciones de comportamiento.
¿Qué es una Agencia?los agentes de software, al igual que las personas, pueden ser más útiles cuando trabajan con otros agentes de software para realizar una tarea. Una colección de agentes de software que se comunican y cooperan entre sí se denomina agencia. Los diseñadores de sistemas que utilizan agentes deben tener en cuenta las capacidades de cada agente individual y la forma en que varios agentes pueden trabajar juntos. El enfoque basado en agentes permite al diseñador del sistema implementar el sistema utilizando múltiples agentes, con cada agente especializado para una tarea en particular. Por ejemplo, una aplicación de comercio electrónico puede tener agentes compradores, agentes vendedores, agentes de almacenamiento, agentes de bases de datos, agentes de correo electrónico, etc. Todos estos agentes necesitan comunicarse entre sí y deben tener la capacidad de trabajar juntos para lograr un conjunto común de objetivos.
¿Por qué son importantes los agentes?
Los desarrolladores de software y diseñadores de sistemas utilizan abstracciones de alto nivel en la construcción de software complejo por una razón: para gestionar la complejidad. Una abstracción se centra en las propiedades importantes y esenciales de un problema y oculta los componentes incidentales de ese problema. Los agentes proporcionan una nueva forma de gestionar la complejidad porque proporcionan una nueva forma de describir un sistema o proceso complejo. Utilizando agentes, es fácil definir un sistema en términos de procesos mediados por agentes.
Considere, por ejemplo, los problemas de diseño del sistema involucrados en la construcción de una solicitud de aprobación de préstamos que vincula a los bancos sucursales, el banco principal, las compañías de suscripción de préstamos y las compañías de informes de crédito, y automatiza gran parte del proceso de aprobación de préstamos. La construcción de este sistema utilizando la tecnología actual es una tarea compleja y difícil porque la descomposición del sistema obliga al desarrollador a lidiar con conceptos de nivel relativamente bajo (por ejemplo, solicitudes de préstamos, saldos de cuentas, calificaciones crediticias) al definir la arquitectura general del sistema. Además, se debe dedicar un tiempo considerable de diseño a definir el protocolo de comunicaciones y las interfaces que permitirán al banco intercambiar datos con las agencias de informes de crédito y los aseguradores de préstamos. En un diseño de sistema orientado a agentes, la solución del sistema puede incluir un agente de servicio al cliente, un agente de análisis de solicitudes de préstamos,un agente de suscripción, etc. El enfoque se centra en el comportamiento de cada uno de estos agentes y la comunicación entre los agentes. El problema se hace mucho más fácil porque el nivel de abstracción es mucho mayor y el problema de programación se convierte en uno de especificar el comportamiento del agente.

Varios Agentes de Software Para Aplicaciones Empresariales
Una solución basada en agente es útil y atractivo, ya que los distintos agentes que se utilizan en la solución intrínsecamente sabemos cómo hacer muchas cosas. Por ejemplo, los agentes saben cómo comunicarse con otros agentes. El desarrollador del sistema ya no tiene que diseñar protocolos de comunicación y formatos de mensaje. El agente proporciona esta capacidad como parte del mecanismo básico del agente. Los agentes tienen la capacidad inherente de construir modelos de su entorno, monitorear el estado de ese entorno, razonar y tomar decisiones basadas en ese estado. Todo lo que el desarrollador de software necesita hacer es simplemente especificar lo que los agentes deben hacer en cualquier situación dada.
¿Cuándo debo usar agentes?los agentes de software son adecuados para su uso en una amplia variedad de aplicaciones. Pueden hacer que sea mucho más fácil construir muchos tipos de sistemas complejos. Sin embargo, el diseñador del sistema debe recordar que los agentes no son la bala de plata tan buscada que los desarrolladores han estado buscando. Los agentes de software son apropiados para su uso en la implementación de ciertos tipos de aplicaciones; en otros ámbitos problemáticos, otras tecnologías serán más apropiadas. El desarrollador debe analizar cuidadosamente los requisitos del sistema para determinar si los agentes son un mecanismo de implementación apropiado.Los agentes
son adecuados para su uso en aplicaciones que implican computación distribuida o comunicación entre componentes. La tecnología de agente es adecuada para su uso en aplicaciones que razonan sobre los mensajes u objetos recibidos a través de una red. Esto explica por qué los enfoques basados en agentes son tan populares en aplicaciones que utilizan Internet. Los sistemas multiagente también son adecuados para aplicaciones que requieren capacidades de procesamiento simultáneas distribuidas.
Dado que los agentes mantienen una descripción de su propio estado de procesamiento y el estado del mundo que los rodea, son ideales para aplicaciones de automatización. Los agentes autónomos son capaces de operar sin intervención ni intervención del usuario. Estos agentes se pueden utilizar en aplicaciones como automatización de plantas y procesos, gestión de flujos de trabajo, robótica, etc.
Los agentes no están restringidos al uso en aplicaciones donde los agentes individuales se comunican entre sí a través de una LAN o Internet. En algunas aplicaciones, tiene sentido utilizar varios agentes que se ejecutan en una máquina y se comunican entre sí utilizando alguna forma de comunicación entre procesos (por ejemplo, RMI). Por ejemplo, un controlador de fábrica integrado puede consistir en un agente de interfaz de usuario, un agente de interfaz de base de datos, un agente de interfaz de máquina herramienta y un agente de supervisión y control de procesos. Todos estos agentes podrían ejecutarse simultáneamente en el mismo procesador o distribuirse fácilmente entre varios procesadores.
Nuevamente, los agentes son más adecuados para aplicaciones que requieren comunicaciones entre componentes, detección o monitoreo del entorno, u operación autónoma. Dado que los agentes tienen la capacidad de razonar (es decir, sacar inferencias), pueden realizar fácilmente secuencias de operaciones complejas basadas en los mensajes que reciben, sus propias creencias internas y sus metas y objetivos generales.
¿Qué tipo de sistemas puedo construir utilizando agentes y tecnología de agentes?Los agentes
son ideales para una amplia variedad de aplicaciones. Son especialmente adecuados para:
- automatización de procesos y flujos de trabajo
- comercio electrónico
- solución distribuida de problemas
- Aplicaciones de Internet
Si los agentes son adecuados para su uso en la implementación de mi sistema, ¿cuántos agentes necesito?Para parafrasear a Albert Einstein, un buen diseño basado en agentes utilizará tantos agentes como se requieran y no más. Al igual que las aplicaciones tradicionales, las aplicaciones basadas en agentes requieren un análisis y diseño cuidadosos. Si bien es tentador que cada función de procesamiento sea realizada por un agente, generalmente es una mala idea. El diseñador debe tener en cuenta cuestiones como los requisitos de transferencia de datos de comunicaciones, el ancho de banda de comunicaciones disponible, la potencia de procesamiento, la memoria y otras limitaciones de recursos informáticos al desarrollar una arquitectura de sistema.
¿Qué tan inteligentes deben ser los agentes?Los agentes pueden construirse con una amplia gama de capacidades. Una de las ventajas del enfoque basado en agentes es que muchas veces una función de procesamiento compleja se puede dividir en varias más pequeñas y simples. Dado que cada agente individual puede diseñarse para ser un experto en resolver un problema específico o realizar una tarea en particular, puede crear sistemas que exhiban comportamientos complejos utilizando una colección de agentes relativamente simples.
A veces, sin embargo, necesitamos crear agentes que sean bastante inteligentes. Con el enfoque basado en agentes, puede implementar agentes con capacidades intelectuales sofisticadas, como la capacidad de razonar, aprender o planificar. Además, los agentes de software inteligentes pueden utilizar grandes cantidades de conocimiento sobre su dominio de problemas. Esto significa que la arquitectura del agente subyacente debe soportar el razonamiento sofisticado, el aprendizaje, la planificación y la representación del conocimiento.
¿Puedo usar agentes con sistemas heredados o código heredado?Los agentes de software proporcionan un mecanismo ideal para integrar sistemas heredados con nuevos sistemas de datos. Los agentes son muy adecuados para implementar estas aplicaciones de middleware. Los agentes se pueden utilizar para realizar traducciones de datos e implementar interfaces de sistemas de datos que cumplan con una amplia variedad de requisitos.
En muchas aplicaciones, los desarrolladores de sistemas tienen código heredado que realiza alguna función única que se necesita en sus nuevas aplicaciones. Se puede utilizar un agente de software para invocar y ejecutar este código heredado, aprovechando el valor de la base de código existente. Tenga en cuenta que la implementación del agente de software debe proporcionar el soporte adecuado para permitir la ejecución de software nativo y código heredado.
¿Son difíciles de construir los agentes?
Los agentes de software sofisticados pueden ser muy difíciles de construir si los está construyendo desde cero. Necesitará habilidades y conocimientos especializados en una variedad de áreas que incluyen arquitectura de agentes, tecnología de comunicaciones, sistemas de razonamiento, representación de conocimientos, lenguajes y protocolos de comunicación de agentes. Si desea agregar capacidades de aprendizaje automático o planificación de máquinas, también necesitará habilidades en estas áreas. Si no posee estas habilidades y conocimientos especializados, debe usar un kit de herramientas de construcción de agentes. Los kits de herramientas de construcción de agentes permiten a los desarrolladores de software sin experiencia en agentes crear agentes de software de forma rápida y sencilla.
¿Qué tipo de herramientas están disponibles para ayudarme a crear agentes?
La mejor manera de comenzar a construir un sistema basado en agentes es usar un conjunto de herramientas integrado como AgentBuilder. AgentBuilder proporciona todas las herramientas que necesita para construir agentes de software. Al usar AgentBuilder, un desarrollador de software solo necesita experiencia en el dominio de problemas. AgentBuilder proporciona soporte para todas las fases del desarrollo de software de agente, desde el análisis del sistema hasta la depuración y prueba del sistema. AgentBuilder proporciona un entorno de programación gráfica en el que puede definir agencias y agentes de forma rápida y sencilla y, a continuación, especificar el comportamiento de los agentes individuales. AgentBuilder está codificado completamente en Java y produce agentes de software basados en Java.
Leave a Reply