WP032: Software Agents

Placeholder Show Content

Abstract/Contents

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.

Description

Type of resource text
Date created April 1994

Creators/Contributors

Author Genesereth, Michael R.
Author Ketchpel, Steven P.

Subjects

Subject CIFE
Subject Center for Integrated Facility Engineering
Subject Stanford University
Subject Agent-Based Software Engineering
Subject Interoperability
Subject Software
Genre Technical report

Bibliographic information

Access conditions

Use and reproduction
User agrees that, where applicable, content will not be used to identify or to otherwise infringe the privacy or confidentiality rights of individuals. Content distributed via the Stanford Digital Repository may be subject to additional license and use restrictions applied by the depositor.

Preferred citation

Preferred Citation
Genesereth, Michael R. and Ketchpel, Steven P.. (1994). WP032: Software Agents. Stanford Digital Repository. Available at: http://purl.stanford.edu/vw005hk4754

Collection

CIFE Publications

Contact information

Loading usage metrics...