Agent Oriented Software Engineering
The basic principles and lessons of software, knowledge, and development process engineering, as well as the same scientific rigour pervading these research areas, have to be applied to the development and deployment of multi-agent systems. At present, the majority of existing agent applications are developed in an ad-hoc fashion; the most common problems that affect the development activities are: little or no rigorous design methodology, limited specification of the requirements, ad-hoc design of the agents/the multi-agent system as a whole, and little attention to non-functional requirements such as mobility, scalability, performance issues, security, standards. These problems turn to be a limitation for the widespread appliance of the agent-oriented (AO) approach as they would be for any new software technology. In fact, a good quality software product calls for a clear and formal defined development process. However, in the software engineering (SE) field, it is widely recognised that an ideal general-purpose design methodology does not exist. The AO methodologies proposed in literature are typically special purpose methodologies with the aim of engineering specific kinds of complex systems. The constructions from scratch of a new methodology is a very complex and time-consuming task that some designers still face without trying to adequately take profit of the existing results in the field. Conversely, when developing a new methodology, several agent developers/designers prefer to use phases, models or elements coming from existing design processes in order to build up a personalised approach for their own problem. This issue can be faced by adopting the situational method engineering paradigm (SME). SME provides means for constructing ad-hoc software processes following an approach based on the reuse of portions of existing design processes, the so called process fragments. So, the reuse of process fragments of well-known methodologies has become a crucial issue for developing new design processes. In this tutorial we aim at introducing basic concepts of SE in the context of agent-based systems and at introducing the field of AO methodologies and processes. In particular we focus on the techniques for composing process fragments in order to create a new AO design processes.