The agent metaphor and the agent-based approach to systems design constitute a promising new paradigm for building complex distributed systems. However, until now, the majority of the agent-based applications available have been built by researchers who specialize in agent-based computing and distributed artificial intelligence. If agent-based computing is to become anything more than a niche technology practiced by the few, then the base of people who can successfully apply the approach needs to be broadened dramatically. A major step in this broadening endeavor is the development of methodologies for agent-oriented software engineering accessible to and attractive for professional software engineers in their daily work. Against this background, this book presents one of the first coherent attempts to develop such a methodology for a broad class of agent-based systems. The author provides a clear introduction to the key issues in the field of agent-oriented software engineering.