Progress in software engineering over the past two decades has pri-
marily been made through the development of increasingly power-
ful and natural abstractions with which to model and develop com-
plex systems. Procedural abstraction, abstract data types, and, most
recently, objects, are all examples of such abstractions. It is our
belief that agents represent a similar advance in abstraction: they
may be used by software developers to more naturally understand,
model, and develop an important class of complex distributed sys-
tems.
If agents are to realise their potential as a software engineer-
ing paradigm, then it is necessary to develop software engineering
techniques that are specifically tailored to them. Existing software
development techniques (for example, object-oriented analysis and
design [1, 5]) will simply be unsuitable for this task. There is a fun-
damental mismatch between the concepts used by object-oriented
developers (and indeed, by other mainstream software engineer-
ing paradigms) and the agent-oriented view [20, 22]. In particular,
extant approaches fail to adequately capture an agent’s flexible, au-
tonomous problem-solving behaviour, the richness of an agent’s in-
teractions, and the complexity of an agent system’s organisational
structures. For these reasons, this paper outlines a methodology
that has been specifically tailored to the analysis and design of
agent-based systems.
The remainder of this paper is structured as follows. We begin,
in the following sub-section, by discussing the characteristics of
applications for which we believe our analysis and design method-
ology is appropriate. Section 2 gives an overview of the main con-
cepts used by the methodology. Agent-based analysis is discussed