If agents are to negotiate automatically with one another they must share a negotiation mechanism, specifying what possible
actions each party can take at any given time, when negotiation terminates, and what is the structure of the resulting agreements.
Current standardization activities such as FIPA [2] and WS-Agreement [3] represent this as a negotiation protocol specifying
the flow of messages. However, they omit other aspects of the rules of negotiation (such as obliging a participant to improve
on a previous offer), requiring these to be represented implicitly in an agent’s design, potentially resulting incompatibility,
maintenance and re-usability problems. In this chapter, we propose an alternative approach, allowing all of a mechanism to
be formal and explicit. We present (i) a taxonomy of declarative rules which can be used to capture a wide variety of negotiation
mechanisms in a principled and well-structured way; (ii) a simple interaction protocol, which is able to support any mechanism
which can be captured using the declarative rules; (iii) a software framework for negotiation that allows agents to effectively
participate in negotiations defined using our rule taxonomy and protocol and (iv) a language for expressing aspects of the
negotiation based on OWL-Lite [4]. We provide examples of some of the mechanisms that the framework can support.
This chapter is an updated and extended version of [1] C. Bartolini, C. Preist, N.R. Jennings Architecting for Reuse: A Software Framework for Automated Negotiation, in F. Giunchiglia, J. Odell, G. Weiß (Eds.) Agent-Oriented Software Engineering III, Springer-Verlag LNCS 2585/2003.