Progress in software engineering over the past two decades has primarily been made through the development of increasingly powerful and natural abstractions with which to model and develop complex 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 systems.
If agents are to realise their potential as a software engineering 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 fundamental mismatch between the concepts used by object-oriented
developers (and indeed, by other mainstream software engineering paradigms) and the agent-oriented view [20, 22]. In particular,extant approaches fail to adequately capture an agent’s flexible, autonomous problem-solving behaviour, the richness of an agent’s interactions, 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 haracteristics of applications for which we believe our analysis and design methodology is appropriate. Section 2 gives an overview of the main concepts used by the methodology. Agent-based analysis is discussed