Introduction
Over the past three decades, software engineers have derived a progressively better understanding of the characteristics of complexity in software. It is now widely recognised that *interaction* is probably the most important single characteristic of complex software. Software architectures that contain many dynamically interacting components, each with their own thread of control, and engaging in complex coordination protocols, are typically orders of magnitude more complex to correctly and efficiently engineer than those that simply compute a function of some input through a single thread of control.
Unfortunately, it turns out that many (if not most) real-world applications have precisely these characteristics. As a consequence, a major research topic in computer science over at least the past two decades has been the development of tools and techniques to model, understand, and implement systems in which interaction is the norm. Indeed, many researchers now believe that in future, computation itself will be understood as chiefly as a process of interaction.
Since the 1980s, software agents and multi-agent systems have grown into what is now one of the most active areas of research and development activity in computing generally. There are many reasons for the current intensity of interest, but certainly one of the most important is that the concept of an agent as an autonomous system, capable of interacting with other agents in order to satisfy its design objectives, is a natural one for software designers. Just as we can understand many systems as being composed of essentially passive objects, which have state, and upon which we can perform operations, so we can understand many others as being made up of interacting, semi-autonomous agents.
Concept Idea
The MAFIA project (Multi-Agent Framework of Intelligent Agents), is a framework for developing agent-oriented applications. This type of applications is most useful when dealing with distributed applications.

Figure 1: Traditional Multi-Agent Systems
Many of the currently available multi agent frameworks rely on a facilitator agent, that is an agent that works as a central unit, where all services provided by the several existing agents are registered (Figure 1).

Figure 2: MAFIA Multi-Agent Systems
The idea for this project is to advance beyond this limitation. All agents should work as an agent that provides functionalities and as a facilitator for other agents. Basically the idea is to apply the system used in nowadays peer-to-peer applications but for finding required functionalities (Figure 2).
This framework is developed in Java, enabling the developers who use this framework to take advantage of Java benefits like high portability. This framework is intended to be created for programmers. The main advantage for this project’s end-users (programmers) will be an easy to use framework for creating multi-agent systems. The programmer should only be required to create agents and the framework is left with the task of making these agents interact.
The software this framework will allow to be developed can be used to, for example, enable proactivity in hand-held devices. Any type of distributed application can also benefit from using this framework, since it resolves all interaction issues. The agents can also be used to enable inter-application interaction. An agent can be created to provide other agents the functionality of an application.
Main Features
The MAFIA project will provide a framework for developing multi-agent systems through an agent oriented approach. Its main features will be:
The framework will provide easy to develop distributed programming.
Facilitator-less agents: the agents will be truly independent, not relying on any facilitator agent enabling them to know what services are available.
New agents providing new features can be added at any time. The client agent simply has to search the new functionality and call it.
Easy to develop agents: Each agent should perform small tasks. An interface for creating agents is provided.
Agent communication is provided by the framework. The programmer simply has to define each agent’s functionality.
Automatic agent interaction. Any agent that requires a feature will call all known agents to see if they can resolve it. These in their turn will forward this request to their known agents.
Prototype Material
The MAFIA project will work like an API for the development of agents. The MAFIA architecture will resemble itself to the architecture illustrated in Figure 3.

Figure 3: MAFIA Architecture
The MAFIA framework will be composed of two main modules, one that will be responsible for the communication between the several agents and another that will be responsible for creating the base classes for the creation of agents.





