Introduction
Mobile agent computing is an extension of the earlier idea of "process migration." Mobile agent technology offers several potential benefits over conventional client-server computing that could help improve classic distributed systems designs, which are usually based on the well-known remote procedure call (RPC) or its object-oriented equivalent, remote method invocation (RMI).
Mobile software agents enable a shift in the communications paradigm of distributed systems from what is called "data shipping" to "function shipping." Key to this shift is the higher level of abstraction that a mobile software agent can provide compared to a RPC or a RMI call because its code is autonomous. This autonomy should theoretically reduce network load and communication overhead in distributed applications as well as facilitate the development of applications for potentially unreliable, networked computing environments.
Furthermore, and perhaps even more importantly, a widespread agent-enabled infrastructure provides a common platform for distributed applications of arbitrary purpose. Consider the PostScript example given by Chess, Harrison, and Kershenbaum [5] to illustrate the advantages a standardized mobile agent execution environment offers. PostScript documents are programs executed by a PostScript interpreter and sent to print servers that only accept passive input text, e.g., Microsoft Word files. The drawback of the latter method is obvious: for every new document format, all print servers in the world would have to be updated. The example is easily transferred to mobile agent computing: mobile agents as a general-purpose computing platform do not require any specific functions to be implemented in the servers, such as full-text retrieval methods or database interfaces.
Distributed applications based on RPC-like techniques might not be easy to adapt to large-scale, heterogeneous, and potentially unreliable environments, like the Internet, because implementation of RPC-style semantics relies on relatively static and reliable system structures. Combining mobile agent technology with well-established mechanisms might potentially lead to systems much better suited to the needs of Internet-like computing environments [7].
To be able to clearly distinguish what in this context is referred to as "conventional" client-server technology from mobile agent technology, some terms need first be defined.
Agent
As defined by the Object Management Group (OMG), an organization that develops standards for component-based software systems [12], an agent "is a computer program that acts autonomously on behalf of a person or organization."
Mobile Agent
A mobile agent is an object that is "not bound to the system where it begins execution. It has the unique ability to transport itself from one system within a network to another." [12]
Place
A place is "a context where an agent can execute." [12]. Furthermore, the terms agent platform and agent system will be used synonymously according to the OMG definition [12]:
"An agent system is a platform that can create, interpret, execute, transfer, and terminate agents. Like an agent, an agent system is associated with an authority that identifies the person or organization for whom the agent system acts."
Because mobile agent technology is a general-purpose computing platform, it has been called a "solution in search of a problem." In the following, we will examine the advantages that such a platform offers for distributed and parallel computing and the problems that prevent its widespread success. Subsequently, a brief overview of state-of-the-art agent systems is provided, together with an examination of how these systems address the continuing challenges of mobile agent computing.
Mobile agents as a design paradigm for distributed systems
The concept of transmitting executable programs between potentially heterogeneous execution environments introduces a new paradigm for the implementation of distributed applications for large-scale, potentially unreliable, networked environments. In traditional client-server systems that use only RPC, the data to be manipulated, such as text, relational data, and images, is moved between procedures already residing on the client and the server. Agent-based computing, however, facilitates the transportation of the procedure itself (that is, the algorithm to be applied) to the client by means of a mobile agent, which can lead to less traffic [13].
Also interesting, is the possibility of implementing dynamic application programming interfaces (API) over agents through the use of an agent communication language; such a language has been proposed by the Foundation for Intelligent Physical Agents (FIPA) [6]. Such capability would allow possible introduction and removal of services that need not be fully specified a priori in either the client or the server.
Characteristics of mobile agent systems
What attributes uniquely distinguish the mobile agent idea from other distributed computing concepts? There is no agreed upon definition to date; however, there are key characteristics of mobile agent systems that facilitate advantages in the development of distributed systems.