13-09-2013, 04:55 PM
Software Agents
Software Agents.pdf (Size: 177.67 KB / Downloads: 18)
An Introduction to Software Agents
Since the beginning of recorded history, people have been fascinated with
the idea of non-human agencies.1 Popular notions about androids, hu-
manoids, robots, cyborgs, and science fiction creatures permeate our cul-
ture, forming the unconscious backdrop against which software agents are per-
ceived. The word “robot,” derived from the Czech word for drudgery, became
popular following Karel Capek’s 1921 play RUR: Rossum Universal Robots.
While Capek’s robots were factory workers, the public has also at times em-
braced the romantic dream of robots as “digital butlers” who, like the mechani-
cal maid in the animated feature “The Jetsons,” would someday putter about
the living room performing mundane household tasks. Despite such innocuous
beginnings, the dominant public image of artificially intelligent embodied crea-
tures often has been more a nightmare than a dream. Would the awesome
power of robots reverse the master-slave relationship with humans? Everyday
experiences of computer users with the mysteries of ordinary software, riddled
with annoying bugs, incomprehensible features, and dangerous viruses rein-
force the fear that the software powering autonomous creatures would pose
even more problems. The more intelligent the robot, the more capable of pursu-
ing its own self-interest rather than its master’s. The more humanlike the robot,
the more likely to exhibit human frailties and eccentricities. Such latent con-
cerns cannot be ignored in the design of software agents—indeed, there is more
than a grain of truth in each of them!
What Is a Software Agent?
This section summarizes the two definitions of an agent that have been at-
tempted: agent as an ascription, and agent as a description.
‘Agent’ as an Ascription
As previously noted, one of the most striking things about recent research and
development in software agents is how little commonality there is between dif-
ferent approaches. Yet there is something that we intuitively recognize as a
“family resemblance” among them. Since this resemblance cannot have to do
with similarity in the details of implementation, architecture, or theory, it must
be to a great degree a function of the eye of the beholder.3 “Agent is that agent
does”4 is a slogan that captures, albeit simplistically, the essence of the insight
that agency cannot ultimately be characterized by listing a collection of at-
tributes but rather consists fundamentally as an attribution on the part of some
person (Van de Velde 1995).5
This insight helps us understand why coming up with a once-and-for-all
definition of agenthood is so difficult: one person’s “intelligent agent” is another
person’s “smart object”; and today’s “smart object” is tomorrow’s “dumb pro-
gram.” The key distinction is in our expectations and our point of view. The
claim of many agent proponents is that just as some algorithms can be more eas-
ily expressed and understood in an object-oriented representation than in a pro-
cedural one (Kaehler and Patterson 1986), so it sometimes may be easier for de-
velopers and users to interpret the behavior of their programs in terms of agents
rather than as more run-of-the-mill sorts of objects (Dennett 1987).6
‘Agent’ As a Description
A more specific definition of “software agent” that many agent researchers
might find acceptable is: a software entity which functions continuously and au-
tonomously in a particular environment, often inhabited by other agents and
processes (Shoham 1997). The requirement for continuity and autonomy de-
rives from our desire that an agent be able to carry out activities in a flexible and
intelligent manner that is responsive to changes in the environment without re-
quiring constant human guidance or intervention. Ideally, an agent that func-
tions continuously in an environment over a long period of time would be able
to learn from its experience. In addition, we expect an agent that inhabits an en-
vironment with other agents and processes to be able to communicate and coop-
erate with them, and perhaps move from place to place in doing so.
Why Software Agents?
While the original work on agents was instigated by researchers intent on study-
ing computational models of distributed intelligence, a new wave of interest has
been fueled by two additional concerns of a practical nature: 1) simplifying the
complexities of distributed computing and 2) overcoming the limitations of cur-
rent user interface approaches.13 Both of these can essentially be seen as a contin-
uation of the trend toward greater abstraction of interfaces to computing ser-
vices. On the one hand, there is a desire to further abstract the details of
hardware, software, and communication patterns by replacing today’s program-
to-program interfaces with more powerful, general, and uniform agent-to-agent
interfaces; on the other hand there is a desire to further abstract the details of the
human-to-program interface by delegating to agents the details of specifying and
carrying out complex tasks. Grosof (Harrison, Chess, and Kershenbaum 1995)
argues that while it is true that point solutions not requiring agents could be de-
vised to address many if not all of the issues raised by such problems, the aggre-
gate advantage of agent technology is that it can address all of them at once.
In the following two subsections, I discuss how agents could be used to ad-
dress the two main concerns I have mentioned. Following this, I sketch a vision
of how “agent-enabled” system architectures of the future could provide an un-
precedented level of functionality to people.