Traditional software engineering approaches and metaphors fall short when applied to
areas of growing relevance such as electronic commerce, enterprise resource planning,
and mobile computing: such areas, in fact, generally call for open architectures that
may evolve dynamically over time so as to accommodate new components and meet new
requirements. This is probably one of the main reasons that the agent metaphor and the
agent-oriented paradigm are gaining momentum in these areas.
This thesis deals with the engineering of complex software systems in terms of the
agent paradigm. This paradigm is based on the notions of agent and systems of interacting agents as fundamental abstractions for designing, developing and managing at
runtime typically distributed software systems. However, today the engineer often works
with technologies that do not support the abstractions used in the design of the systems.
For this reason the research on methodologies becomes the basic point in the scientific
activity. Currently most agent-oriented methodologies are supported by small teams of
academic researchers, and as a result, most of them are in an early stage and still in the
first context of mostly \academic" approaches for agent-oriented systems development.
Moreover, such methodologies are not well documented and very often defined and presented only by focusing on specific aspects of the methodology. The role played by meta-
models becomes fundamental for comparing and evaluating the methodologies. In fact a
meta-model specifies the concepts, rules and relationships used to define methodologies.
Although it is possible to describe a methodology without an explicit meta-model, formalising the underpinning ideas of the methodology in question is valuable when checking its
consistency or planning extensions or modifications. A good meta-model must address all
the different aspects of a methodology, i.e. the process to be followed, the work products
to be generated and those responsible for making all this happen. In turn, specifying
the work products that must be developed implies dening the basic modelling building
blocks from which they are built.
As a building block, the agent abstraction alone is not enough to fully model all the
aspects related to multi-agent systems in a natural way. In particular, different perspectives exist on the role that environment plays within agent systems: however, it is
clear at least that all non-agent elements of a multi-agent system are typically considered to be part of the multi-agent system environment. The key role of environment
as a first-class abstraction in the engineering of multi-agent system is today generally
acknowledged in the multi-agent system community, so environment should be explicitly
accounted for in the engineering of multi-agent system, working as a new design dimension
for agent-oriented methodologies. At least two main ingredients shape the environment:
environment abstractions - entities of the environment encapsulating some functions -,
and topology abstractions - entities of environment that represent the (either logical or
physical) spatial structure. In addition, the engineering of non-trivial multi-agent systems requires principles and mechanisms for supporting the management of the system representation complexity. These principles lead to the adoption of a multi-layered description, which could be used by designers to provide different levels of abstraction over
multi-agent systems.
The research in these fields has lead to the formulation of a new version of the SODA
methodology where environment abstractions and layering principles are exploited for en-
gineering multi-agent systems