Software Agents

TitleSoftware Agents
Publication TypeWorking Paper
AuthorsGenesereth, M., and S. Ketchpel
Year of Publication1994
NumberWP032
Date Published04/1994
Abstract

The software world is one of great richness and diversity. Many thousands of software products are available to users today, providing a wide variety of information and services in a wide variety of domains. While most of these programs provide their users with significant value when used in isolation, there is increasing demand for programs that can interoperate - to exchange information and services with other programs and thereby solve problems that cannot be solved alone.

Part of what makes interoperation difficult is heterogeneity. Programs are written by different people, at different times, in different languages; and, as a result, they often provide different interfaces. The difficulties created by heterogeneity are exacerbated by dynamics in the software environment. Programs are frequently rewritten; new programs are added; old programs removed.

Agent-based software engineering was invented to facilitate the creation of software able to interoperate in such settings. In this approach to software development, application programs are written as software agents, i.e. software "components" that communicate with their peers by exchanging messages in an expressive agent communication language.

Agents can be as simple as subroutines; but typically they are larger entities with some sort of persistent control (e.g. distinct control threads within a single address space, distinct processes on a single machine, or separate processes on different machines).

The salient feature of the language used by agents is its expressiveness. It allows for the exchange of data and logical information, individual commands and scripts (i.e. programs). Using this language, agents can communicate complex information and goals, directly or indirectly "programming" each other in useful ways.

Agent-based software engineering is often compared to object-oriented programming. Like an "object", an agent provides a message-based interface independent of its internal data structures and algorithms. The primary difference between the two approaches lies in the language of the interface. In general object-oriented programming, the meaning of a message can vary from one object to another. In agent-based software engineering, agents
use a common language with an agent-independent semantics.

The concept of agent-based software engineering raises a number of important questions.

(1) What is an appropriate agent communication language?
(2) How do we build agents capable of communicating in this language?
(3) What communication "architectures" are conducive to cooperation?

In the next three sections of this paper, we discuss these questions and describe some emerging technologies that provide answers. In the final section, we mention some additional issues and summarize the key points of the paper.

KeywordsAgent-Based Software Engineering, Interoperability, Software
AttachmentSize
WP032.pdf1 MB

Last modified Wed, 23 Mar, 2011 at 16:49