Error messageThe spam filter installed on this site is currently unavailable. Per site policy, we are unable to accept new submissions until that problem is resolved. Please try resubmitting the form in a couple of minutes.
Designing and developing complex systems it is a task with lots of hidden dangers. Concepts that seem to be linear and easy to manage in simple systems, turn to be hard to control while increasing in components and complexity.
The main challenge of developing modern computational systems is facing all the problems related to the distributed components execution which interact simultaneously.
What developers require to face these needs are new meta-models, technologies and methodologies which allow them to design solutions that don’t involve the implementation of intricate and low-level mechanisms.
Developers therefore need abstractions that encapsulate much of the complexity of interaction and make the design of distributed systems simpler.
To this end, in the professional field, the most widespread model is certainly the actor-based system. There are many platforms that allow you to develop an actor model in almost all the popular programming languages.
In the academic field, however, it seems already passed (or at least extended) by one of its most well-evolved descendant, the agent-oriented model. The multi-agent systems, that initially were born in the artificial intelligence field, are now proposed as a possible programming paradigm for concurrent and distributed systems. Whether it's an evolution of the Object Oriented Programming or a real revolution, is still under discussion.
Although uncommon in the industry (but much discussed in academic circles) the agent-oriented programming already has a wide ecosystem of frameworks and libraries.
In collaboration with Professor Alessandro Ricci em> and researcher Stefano Mariani em> of the Department of Computer Science and Engineering of Bologna (DISI), we (TwinLogix) have explored different possibilities and made the decision of using one of these innovative technologies. Our choice fell on JADE.
JADE b> (Java Agent Development Framework) is a Java-based framework for the development of applications agents in compliance with the FIPA specifications for interoperability of multi-agent systems. Conceived in collaboration with various universities and Telecom Italia Labs, JADE is nowadays one of the pioneers in agent programming in the industry field.
Although it does not fully implement the classical agents model and is actually more like an hybrid with the actors one, the abstractions which it introduces appear to be already so much innovative. The salient features of the JADE agents are the following:
- each agent is executed by a single thread, the competition is between em> agents.
- the interaction between agents is entirely entrusted to the exchange of FIPA messages.
- the business logic of each agent is structured in terms of behaviours (in series, parallel, state machine, etc.).
- Behaviours represent both the proactive and reactive part of an agent.
- agents support the hard mobility (both state and code.)
Below it is shown the life cycle of a behavior.
What we did in Twinlogix, as a first step, was to apply the agent oriented programming model, using JADE, to a concrete problem, that is the creation of a data processing and advanced reporting system.
Starting from the existing system, which suffered from structural limitations due to application complexity and the connotation of concurrent and distributed software, we reimplemented all the architectural part, rethinking it in terms of agents.
After a comprehensible period of learning, we became aware that, since its first prototype, JADE’s results were outstanding.
Reasoning with higher-level abstractions helps to find the solution in a manner closer to the problem domain, leaving out complicated low-level mechanisms. The implementation is faster and the system more maintainable.
From the technical point of view, the platform that we have obtained, for the moment it seems very stable and the tools provided in support of developers are appropriate to the complexity of the problem. The solution we implemented was recently brought into production and we are still excited!
Now we just have to figure out which other horizons can be opened to other areas of application whereby we deal with every day, thanks to the use of these innovative technologies.
Wooldridge, M. J. (2002).
An Introduction to MultiAgent Systems.
John Wiley & Sons Ltd., Chichester, UK.
Omicini, A. and Poggi, A. (2006).
Intelligenza Artificiale, III(1-2):76–83.
Special Issue: The First 50 Years of Artificial Intelligence.