The popularity of the Internet has ushered in a new era of communication and collaboration. Software agents are being developed to provide a framework for organizing and interpreting the vast amount of information available on the Internet. Agent development has also increased in popularity because the Web has become the prominent channel for user and business communication. This popularity has also blurred the distinction between traditional software and agent-based modules. Agent technology has also been affected by the growth of e-commerce. A new breed of software agent is attempting to increase the efficiency of transactions across electronic markets and exchanges. Often we think of business-to-business (B2B) and business-to-consumer (B2C) as two separate models of participation and communication. However, B2B and B2C are not discrete models, but rather exist on a continuum. Agents can be used to acquire knowledge about customers, partners, and product preferences. As a result, the capability to leverage software agents at key points, such as in distribution, manufacturing, sales, and customer relationship management, is compelling. Imagine a business engaged in distributing products and services over the Web. A tremendous amount of marketing research is involved in determining the effectiveness of distribution channels. Many companies are looking for more effective data capture and analysis techniques. Software agents provide one solution. Software agents are also envisioned to play a significant role in P2P systems. Jini and JavaSpaces can provide a foundation for building P2P agent frameworks. The benefits include the following:
Simple Agent FrameworksThe distinction and refinement of what is and what is not an agent has generated a lot of press and discussion. A considerable amount of effort has been focused on classifying types of software agents. Researchers often use role-based classification in an attempt to elucidate agent definition. Accordingly, we have search agents, navigation agents, management agents, domain-specific agents, as well as development and help agents. Although the line between agent and software program can be hard to determine, other characteristics of agents help to delineate the distinction:
In the paper "Software Agents: An Overview," (http://agents.umbc.edu/introduction/ao/4.shtml) Hyacinth Nwana provides a typology for classifying agents. The three attributes or characteristics of agents are identified as autonomy, learning, and cooperation. Figure 15.5. A model for classifying software agents.Mobile AgentsAutonomous agents are often defined as systems that can act on behalf of the user and exhibit capabilities to learn and cooperate with their environment. Typically, an agenda or goal drives an agent's behavior. A mobile agent can move across machines and networks to carry out this mission. There is a significant amount of work being done to provide mobile agents for network management. It is easy to envision the benefits gained by network managers using mobile agents to relay conditions and instructions to network elements. Jini provides a foundation for many of the requirements for mobile agents. As discussed previously in Chapter 4, "P2P As a Framework for Distributed Computing," the capability to move code from machine to machine through downloadable proxies is a key enabler of the Jini framework. You can quickly define an interface for a remote agent and a mobile agent by exploiting RMI interface semantics. For instance, extending Remote provides an interface that is accessed remotely through a stub reference by the caller: public interface RemoteAgent extends java.rmi.Remote { public void tell(Sender sender, Receiver receiver, String speechAct) throws RemoteException; } On the other hand, extending Serializable provides a mechanism to move the object to the caller: public interface MobileAgent extends java.io.Serializable { public void tell(Sender sender, Receiver receiver, String speechAct) throws RemoteException; } You can even pass references from caller to receiver and implement powerful callback mechanisms. |