- Shopping Bag ( 0 items )
Mobile agents are software nomads that act as your personal representative, working autonomously through networks. They are able to visit network nodes directly using available computing power and are not limited by platform. This emerging field is now poised to become a cornerstone for new Web-based ubiquitous computing environments. Mobile Agents provides a practical introduction to mobile agent technology and surveys the state of the art in mobile agent research. Students and researchers can use the book as an introduction to the concepts and possibilities of this field and as an overview of ongoing research. Developers can use it to identify the capabilities of the technology to decide if mobile agents are the right solution for them. Practioners can also gain hands-on experience in programming mobile agents through exploration of the source code for a complete mobile agent environment available through the companion website.Summarizes the state of the art in mobile agent research
Until some years ago, the term distributed system was mainly used to describe a network of several computer systems with separated memory that are connected to each other by a dedicated network. The computers used in such a distributed system are almost homogeneous, which means that they have the same type of processor and the same type of operating system. The network is more or less static: Computers are only rarely switched off, network connections between hosts are always reliable and provide constant bandwidths, each computer has a fixed IP address, and network packet routing is done via local switches. This type of network is still typical for most applications.
Currently, we see rapidly evolving network and computer technologies. The Internet as a network of networks with heterogeneous computers has become widely accepted as a very important medium for any kind of information exchange. The number of people and companies providing services on the Internet increases continuously and is even surpassed by the number of Internet users. Many different types of services are offered on the Internet, first of all electronic mail and electronic file exchange. Without any doubt, the most successful Internet service is the World Wide Web. Whereas in the beginning the Web was only a medium to publish your data on your Web site, we now see novel applications in the Web that involve a growing amount of computation, dynamics, and interdependencies.
Most of these applications are part of the electronic commerce domain, for example, online shops or electronic marketplaces. However, they are still built using a traditional design technique called client-server, in which a single powerful computer system (server) holds data to be shared over the network and less powerful computer systems (clients) access the server using a network. In Internet applications the server not only holds data but also executes application code in the form of Java servlets or some other kind of server-based language. In this paradigm the client is responsible only for the graphical user interface, which is, in Internet applications, some kind of Web interface using HTML pages.
We believe that what we know as a distributed system has to be expanded. Again, the Web can be considered a predecessor of these future distributed systems, as we notice an exponential growth of services available on the Internet already. In the future we will see hundreds of millions of people getting online by different means, using hundreds of millions of services on the Internet. Only in the network's core, the portion that remains stable for most of the time it exists, will connections be of copper or fiber; on the edges of the network, wireless connections based on new standards such as Bluetooth, WLAN, and UMTS will become popular. Bandwidth in the center of the network will increase dramatically in the future, and it will cover upcoming demands for the transmission of large amounts of data as needed, for example, in video streaming. On the outskirts of the network, however, available bandwidth will not increase as quickly as in the center. People still use, and perhaps will continue to use, Internet connections via ISDN or xDSL. Therefore, the bandwidth gap between backbone and enduser connection will increase. Because backbone connections are frequently renewed compared with the local bandwidths, this trend will continue in the future.
Two major trends can already be seen entering the mainstream of interest. Pervasive computing means that everything might become a node in a distributed system. As computers become smaller and smaller, they can be found not only on desks but also in cars to regulate speed control, on wrists to show the time and control pulse, and in refrigerators to monitor the temperature.
In the future, even more devices and appliances will be equipped with small computers, for example, your coffee machine might be able to learn that you always have two cups of coffee at 6:30 AM and make them for you, an intelligent light switch could recognize you coming into a room and switch on the light the way you prefer it, or intelligent cloth might monitor your vital functions and notify you (or your doctor) in case of any serious event. These computer systems are characterized by limited resources, especially in regard to memory and processing power.
Moreover, all these tiny computer systems will be able to communicate to each other using spontaneous ad hoc networks: Your refrigerator will inform your personal digital assistant (PDA) to ask for fresh groceries; your PDA will order them in the supermarket, should you be there anyway to pick up other items, or will contact your preferred market via a remote message (or better, an agent that will be able to negotiate the best price and quality) should you run out of time; finally, your refrigerator will be notified that the groceries were delivered, perhaps by the PDA of the delivery service. Your T-shirt will set up a meeting with your physician if your heart rate and blood pressure go through the roof too often, or it might cut the chips and the donuts from your shopping list, even though your refrigerator wanted to order them for you. All these transactions will have to use, at least partially, wireless networks, and they will be characterized by small bandwidth and low reliability. (Thus, if you are lucky, your chips will never be successfully cut from the list, but it could also mean that your doctor appointment was never set up!)
The second trend we want to mention here is nomadic computing, which means that users move from place to place while working, logging into the system from very different computer systems (e.g., first from a system in the office over the company-wide LAN, later from home over an ISDN dial-up connection). Nevertheless, users want to see nearly the same working environment, the same applications, and, above all, the same data. In addition, nomadic users demand a seamless integration of different devices, making it possible to change the working environment from a desktop computer to a PDA in a few seconds.
All these new trends require new network-centric programming techniques that are based on a true peer-to-peer principle. The client-server design pattern, successfully used for distributed systems in LANs, is not able to face all the challenges of future distributed systems described previously and is, in its basic concept, still a centralized paradigm.
As we mentioned, many technologies have the potential to solve some of the new problems encountered, such as proxy-based concepts. However, most of them are just variations of the centralized approach or invoke, by definition, network centered penalties. Thus, they will, as we see it, not be able to manage the task at hand and lack the elegance and natural fit necessary to survive in a dynamic and fully distributed world of networked information sources.
Because something is possible does not mean that it is appropriate for the task at hand; we usually do not program large applications on the level of assembler code anymore, even though we could. Today we use objectoriented methods and languages, because they come much closer to the concepts and needs of our customers and our own, relatively high, level of thinking during systems development. In a similar fashion you could look at mobile code as a paradigm that inherently accepts distribution and networking as a basic concept and, thus, fits our new network-centric projects well, giving us the chance to reach a new level of abstraction and quality. This argument, above all technical details and discussions, is what drives our belief in the mobile agent approach.
Mobile agents are a special type of mobile code. Mobile code is a technique in which code is transferred from the computer system that stores the code files to the computer system that will execute the code. A well-known example of mobile code is Java applets, which are small programs available in a portable and interpretable byte code format. Applets are transferred from a Web server to a Web browser in order to be executed as part of an HTML page.
A mobile agent is a program that can migrate from a starting host to many other hosts in a network of heterogeneous computer systems and fulfill a task specified by its owner. It works autonomously and communicates with other agents and host systems. During the self-initiated migration, the agent carries all its code and data, and in some systems it also carries some kind of execution state.
One difference between Java applets and mobile agents is the fact that mobile agents initiate the migration process, whereas the migration of Java applets is initiated from other software components (e.g., the Web browser). Another difference is that Java applets migrate only from a server to a client and do not leave the client to migrate to another client or back to the server. An applet's lifetime is bound to the lifetime of the Web page it is part of and dies when the browser terminates or another Web page is requested. In contrast to this, mobile agents usually migrate more than once. Think of a mobile agent that travels to several hosts to collect prices for a desired product.
As a consequence, the software components we design will have to be as dynamic and mobile as the end users and the networks. They will have to be proactive and act in a very autonomous fashion, or even better "intelligently." The concept of software agents emerges from these demands.
We start our exploration of mobile agents at the origin of the notion agent, and we compare the already widespread term of intelligent agents to our understanding of mobile agents. When looking at the history of mobile agents we will learn that this research topic has its roots in distributed computing rather than in artificial intelligence.
After reading this chapter, you will have a basic understanding of the most importanttechnicaltermsandwillhaveageneralideaofthemainadvantages of mobile agents compared with other, more traditional paradigms to design distributed systems, such as client-server.
2.1 A First Look at Mobile Agents 7 2.2 A Short History of Mobile Agents 17 2.3 Similar but Different Concepts 24 2.4 Why Are Mobile Agents a Good Idea? 26 2.5 Possible Application Domains of Mobile Agents 27
2.1 A First Look at Mobile Agents
In this section we try to converge on the idea of mobile agents from two sides. First, we discuss software agents as a concept developed in the area of artificial intelligence in the mid-1970s. People from artificial intelligence disciplines define software agents as having some mandatory features, which do not include mobility. Sometimes, it is mentioned that there might arise some benefits from using mobile agents in the future; otherwise it is claimed that agent mobility is a pretty useless feature. This view can be best described by the statement that mobile agents are a solution in search of a problem.
Second, we try to define mobile agents from the viewpoint of software engineering and distributed systems. We will see that mobile agents in our understanding do not have much to do with artificial intelligence but are to be considered another design paradigm for a special type of distributed systems. From this viewpoint, emphasis lies on research of the consequences of the mobility of code, and it is these consequences that we focus on in this book.
Naturally, both research communities can benefit from each other. Some work has already been done to add intelligent agents with mobility as a common feature, and recently people have begun to work to make mobile agents more intelligent, for example, to help them plan their itineraries. Hopefully, both branches of research will join each other eventually.
Excerpted from Mobile Agents by Peter Braun Wilhelm Rossak Copyright © 2005 by Elsevier Inc. (USA) and dpunkt.verlag (Germany). Excerpted by permission of MORGAN KAUFMANN. All rights reserved. No part of this excerpt may be reproduced or reprinted without permission in writing from the publisher.
Excerpts are provided by Dial-A-Book Inc. solely for the personal use of visitors to this web site.