Beyond the Design Stance:
The Intention of Agent-Based Engineering
Edmonds and Joann Bryson
Date: 21st October 2003
CPM Report No.: CPM-03-126
Note: "Design Stance" is
probably not the correct term here, and certainly not one consistent
with Dennett's usage in "The Design Stance". It is dropped from
the mature version of the paper (CPM report 128).
This paper is a manifesto in progress.
We are two researchers who frequently use agents in anger to do our
jobs. Yet we have been having trouble finding value in most of the
papers that get published in the field of Multi Agent Systems (MAS).
This paper represents our attempt to understand why not. We will start
with the most basic question: Why do people use Multi Agent Systems?
One answer is that it’s not clear they do. We still don’t see very many
industrial applications of agent technology beyond robotics and AI for
computer games, and neither of those use anything like what we
generally know as MAS. But there are several good reasons that someone
- Because a system needs to be agile and responsive to
unpredictable requests and opportunities. This is what the agent-based
approach has been promising and providing since at least 1986 (Brooks,
1986), but does not require multiple agents.
- Because parts of this system are distributed across an
environment in such a way that communication between parts needs to be
taken into consideration. The simple function call is not a good
abstraction either due to delays (which would remove the
responsiveness) or unreliability (which might freeze an entire program
when only part of its functionality is absent, thus reducing
opportunism and recovery options.) This is the main engineering reason
to think of a system as composed of more than one agent, and to worry
about agent communication protocols.
- Because programmers, like all people (Cosmides and Tooby, 1992),
are actually pretty good at thinking about entities as social agents
with intentions and obligations. Since old programming methods didn’t
work very well in the dynamic, responsive and distributed environment,
the agent-based approach has been developed to make it easier for
programmers to get this right.
Our concern is that these solid
engineering reasons for developing MAS-based software engineering
methodologies seem to have been getting lost in recent years. Instead,
the agent community seems to be wandering in a morass of formal systems
and theoretical papers. For five years there was a fairly successful
series of conferences (beginning with Johnson, 1997) which emphasised
working agents and the techniques required to build them, but this has
been engulfed into the largely theoretical AAMAS conference, where the
vast majority of consistently working systems described seem to be in
the minority of papers dedicated to robotics - normally considered a
far more difficult engineering domain than straight software.
So what has happened? We believe that
for some reason the Agents community has regressed back from the
discoveries of eXtreme and agile software toward the older design
stance, oddly neglecting the theoretical work proving that such
approaches are impossible (Harel, 2003).
We begin by discussing the Design
Stance - the over-reliance on upfront specifications (also known as
creationism) - and why it seems completely contradictory that this has
infested the MAS community. We then discuss the nine main tools
of software systems engineering, how they are currently being used by
MAS, and suggestions about how we think their use could be improved.