Software agents

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]  Jeffrey S. Rosenschein,et al.  Deals Among Rational Agents , 1985, IJCAI.

[2]  Randall Davis,et al.  Negotiation as a Metaphor for Distributed Problem Solving , 1988, Artificial Intelligence.

[3]  Gio Wiederhold,et al.  The Architecture of Future Information Systems (Abstract) , 1989, DASFAA.

[4]  Timothy W. Finin,et al.  Enabling Technology for Knowledge Sharing , 1991, AI Mag..

[5]  Thomas R. Gruber,et al.  Ontolingua: a mechanism to support portable ontologies , 1991 .

[6]  Timothy W. Finin,et al.  An Overview of KQML: A Knowledge Query and Manipulation Language , 1991 .

[7]  Edmund H. Durfee,et al.  A decision-theoretic approach to coordinating multiagent interactions , 1991, IJCAI 1991.

[8]  Eithan Ephrati,et al.  The Clarke Tax as a Consensus Mechanism Among Automated Agents , 1991, AAAI.

[9]  Gio Wiederhold,et al.  Mediators in the architecture of future information systems , 1992, Computer.

[10]  Yoav Shoham,et al.  Agent-Oriented Programming , 1992, Artif. Intell..

[11]  Mark R. Cutkosky,et al.  PACT: an experiment in integrating concurrent engineering systems , 1993, Computer.

[12]  Michael P. Wellman A Market-Oriented Programming Environment and its Application to Distributed Multicommodity Flow Problems , 1993, J. Artif. Intell. Res..

[13]  Victor R. Lesser,et al.  Understanding the Role of Negotiation in Distributed Search Among Heterogereous Agents , 1993, IJCAI.

[14]  Sarit Kraus,et al.  Agents Contracting Tasks in Non-Collaborative Environments , 1993, AAAI.

[15]  James C. Spohrer,et al.  KidSim: programming agents without a programming language , 1994, CACM.

[16]  Donald A. Norman,et al.  How might people interact with agents , 1994, CACM.

[17]  Christine Guilfoyle,et al.  Intelligent Agents: the New Revolution in Software , 1994 .

[18]  Nicholas R. Jennings,et al.  ADEPT-Advanced Decision Environment for Process Tasks: Overview & Architecture , 1994 .

[19]  Pattie Maes,et al.  Agents that reduce work and information overload , 1994, CACM.

[20]  Nicholas R. Jennings,et al.  Intelligent agents: theory and practice , 1995, The Knowledge Engineering Review.