Software technologies are evolving rapidly, thanks to the driving forces of new application areas such as Enterprise Resource Planning, the World-Wide Web, and Electronic Commerce. This evolution places new demands on software, including ever more open architectures, ability to migrate across computing platforms, and interface with unforseeable operating environments. To meet such demands, software engineers are embracing an agent-oriented programming paradigm. Agents are software systems which show varying degrees of autonomy, possess social skills e.g., ones for communication and negotiation, are able to perceive and react to their environment, generate and execute plans to meet goals, can also be proactive. The foundations of such a programming paradigm are being investigated in research areas such as Distributed AI (DAI), while the paradigm itself is gaining a foothold in industries ranging from Telecommunications (e.g., Mitel) to the Internet and Electronic Commerce. This paradigm promises to give software whose architecture can change at run-time to meet unforseen requirements, also software that has an open-ended repertory of methods for meeting a given functionality.
We are interested in developing a software development methodology for
agent-based software systems. The key concepts used during software development,
according to our methodology, will be those of agent and goal. We propose
that our methodology spans early phases of software development ranging
from requirements analysis to design. We note that the notions of agent
and goal are used in the Requirements Engineering literature (e.g., [ISRE99])
but focus narrowly on requirements and assume that goals and agents have
been turned into software functionalities and qualities by the time requirements
engineering is complete. Also, these concepts play a prominent role in
DAI, but the focus is on agent programming, with no attention paid to requirements
analysis or design.