Our discussion of the mobile environment will be incomplete if we do not mention some important applications of agents in mobile computing. Agent is a term used to describe autonomous, " intelligent " programs that can be deployed through a network to provide services to a mobile user . The AOIS (agentoriented information systems community) defines an agent thus: a system that is capable of perceiving events in its environment, of representing information about the current state of affairs, and of acting in its environment guided by perceptions and stored information. Agents consist of information objects and an associated script that knows what to do with the information and how to deal with the environment. They behave like actors and have intentions and actions. Agents are autonomous and they have a built-in control to act only if they want to. In addition, agents are flexible and proactive and have multithreaded control.
Agents can be classified according to their functionalities as: collaborative agents that compete or cooperate; interface agents that act as personal assistants; mobile agents that migrate among hosts to enhance efficiency of computation and improve the network throughput; information agents that manage, manipulate, and collate information from many distributed sources; reactive agents that respond to stimulus and respond in an environment where they are embedded; smart agents that learn from their actions; and hybrid agents that can combine any of the functionalities of the above agents.
From a computing viewpoint, an agent (Dani & Radha Krishna, 2001; Dignum & Sierra, 2001; Feng & Zhu, 2001; Knabe, 1996; Silva & Krause, 1997; Wooldridge et al., 1996) is an encapsulation of code, data, and execution context that is able to migrate autonomously and purposefully within a computer network during the execution. An agent is able to react to external events. It may be persistent in the sense that it can suspend execution and keep local data in stable storage. After resuming activity an agent's execution is continued . The agent system provides for better performance by reducing the communication load. To develop such a system, the language implementation must handle architectural heterogeneity between communicating machines. That is, before an agent is transferred to a location it must be converted into a form so that it is platform independent, preserves its current agent state, and preserves its integrity. Also the agents should be able to access resources on remote execution sites yet providing security. What we need is to support the transmission and execution of mobile agents. By sending agent to execute at the remote nodes, servers and clients can install these special purpose interfaces with whatever properties they require.
Agents provided with a power of attorney (specified by rule-based or event-driven systems or a script) can handle mobile transactions since they can be designed to have the following properties:
Delegation : A user or a program can delegate tasks to an agent with a power of attorney to act on their behalf by providing terms of reference and time deadlines.
Autonomy : An agent can make its own decisions based on rules, goals, policies, and preferences set by its owner.
Communication : Agents can interact with the host environment and owners .
Cooperation : Agents can cooperate with each other to achieve common goals.
Equity : Agents can support the peer-peer model for distributed computing.
Flexibility : Agents can vary their roles; they may act as clients or servers, observers or seekers.
Intelligence : Agents have the ability to reason and learn from interactions with other agents, owners, and environment.
Mobility : Agents can move across networks and accomplish tasks assigned. Due to the above properties, agents can perform several functions in enterprise integration scenarios. They can capture the semantic constraints and apply them in order to execute or enact workflows in integritypreserving manner. In this way agents can carry out the business processes in an enterprise. An agent can initiate concurrent transactions with many databases. If one or both fail, the agent can retry the failed transaction a certain number of times until a time deadline, or can retry alternative sources and attempt transactions there or negotiate with the user. The agents can form a cooperative information system and interact with each other. Thus the agent approach is flexible. But we need suitable tools and formal approaches to design the agents. Currently agent toolkits are being designed by the Foundation for Intelligent Physical Agents (http://www.fipa.org).